]> Kevux Git Server - fll/commitdiff
Feature: Add fll_program_print_error_parameter_too_few() and fll_program_print_error_...
authorKevin Day <Kevin@kevux.org>
Sat, 29 Nov 2025 16:05:13 +0000 (10:05 -0600)
committerKevin Day <Kevin@kevux.org>
Sat, 29 Nov 2025 16:12:16 +0000 (10:12 -0600)
level_2/fll_program/c/program/print.c
level_2/fll_program/c/program/print.h
level_2/fll_program/c/program/string.c
level_2/fll_program/c/program/string.h

index 2e6644a16869ed0119242934da907edc2785bc25..dde3f6a02a8d4947f63e72ddfeb2732812b7f964 100644 (file)
@@ -492,6 +492,58 @@ extern "C" {
   }
 #endif // _di_fll_program_print_error_parameter_support_not_
 
+#ifndef _di_fll_program_print_error_parameter_too_few_
+  f_status_t fll_program_print_error_parameter_too_few(fl_print_t * const print, const f_string_static_t symbol, const f_string_static_t name, const f_number_unsigned_t times) {
+    #ifndef _di_level_2_parameter_checking_
+      if (!print) return F_status_set_error(F_parameter);
+    #endif // _di_level_2_parameter_checking_
+
+    if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
+
+    f_file_stream_lock(print->to);
+
+    fl_print_format(macro_fll_program_s(033_the_parameter_single_quote), print->to, print->set->error, print->prefix, print->set->error);
+    fl_print_format(f_string_format_QQ_single_s.string, print->to, print->notable, symbol, name, print->notable);
+
+    if (times) {
+      fl_print_format(macro_fll_program_s(072_too_few_times), print->to, print->set->error, print->set->error, print->set->notable, times, print->set->notable, print->set->error, print->set->error, f_string_eol_s);
+    }
+    else {
+      fl_print_format(macro_fll_program_s(071_too_few), print->to, print->set->error, print->set->error, f_string_eol_s);
+    }
+
+    f_file_stream_unlock(print->to);
+
+    return F_okay;
+  }
+#endif // _di_fll_program_print_error_parameter_too_few_
+
+#ifndef _di_fll_program_print_error_parameter_too_many_
+  f_status_t fll_program_print_error_parameter_too_many(fl_print_t * const print, const f_string_static_t symbol, const f_string_static_t name, const f_number_unsigned_t times) {
+    #ifndef _di_level_2_parameter_checking_
+      if (!print) return F_status_set_error(F_parameter);
+    #endif // _di_level_2_parameter_checking_
+
+    if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
+
+    f_file_stream_lock(print->to);
+
+    fl_print_format(macro_fll_program_s(033_the_parameter_single_quote), print->to, print->set->error, print->prefix, print->set->error);
+    fl_print_format(f_string_format_QQ_single_s.string, print->to, print->notable, symbol, name, print->notable);
+
+    if (times) {
+      fl_print_format(macro_fll_program_s(070_too_many_times), print->to, print->set->error, print->set->error, print->set->notable, times, print->set->notable, print->set->error, print->set->error, f_string_eol_s);
+    }
+    else {
+      fl_print_format(macro_fll_program_s(069_too_many), print->to, print->set->error, print->set->error, f_string_eol_s);
+    }
+
+    f_file_stream_unlock(print->to);
+
+    return F_okay;
+  }
+#endif // _di_fll_program_print_error_parameter_too_many_
+
 #ifndef _di_fll_program_print_error_parameter_value_too_long_
   f_status_t fll_program_print_error_parameter_value_too_long(fl_print_t * const print, const f_string_static_t symbol, const f_string_static_t name) {
     #ifndef _di_level_2_parameter_checking_
index 07b2f63f732409399b94a42168870cd49d888eee..6ecf9c551a43e8d9e204aff5e5ab373099388574 100644 (file)
@@ -712,6 +712,60 @@ extern "C" {
 #endif // _di_fll_program_print_error_parameter_support_not_
 
 /**
+ * Print error message for when the parameter is specified too few times.
+ *
+ * @param print
+ *   The output structure.
+ *   This locks, uses, and unlocks the file stream.
+ * @param symbol
+ *   The symbol string prepended to the parameter.
+ *   This locks, uses, and unlocks the file stream.
+ *   This is usually f_console_symbol_few_normal_s.
+ * @param name
+ *   The parameter name.
+ * @param times
+ *   (optional) The number of times that is too few.
+ *
+ *   Set to 0 to not print this number.
+ *
+ * @return
+ *   F_okay on success.
+ *   F_output_not on success, but no printing is performed.
+ *
+ *   F_parameter (with error bit) if a parameter is invalid.
+ */
+#ifndef _di_fll_program_print_error_parameter_too_few_
+  extern f_status_t fll_program_print_error_parameter_too_few(fl_print_t * const print, const f_string_static_t symbol, const f_string_static_t name, const f_number_unsigned_t times);
+#endif // _di_fll_program_print_error_parameter_too_few_
+
+/**
+ * Print error message for when the parameter is specified too many times.
+ *
+ * @param print
+ *   The output structure.
+ *   This locks, uses, and unlocks the file stream.
+ * @param symbol
+ *   The symbol string prepended to the parameter.
+ *   This locks, uses, and unlocks the file stream.
+ *   This is usually f_console_symbol_many_normal_s.
+ * @param name
+ *   The parameter name.
+ * @param times
+ *   (optional) The number of times that is too many.
+ *
+ *   Set to 0 to not print this number.
+ *
+ * @return
+ *   F_okay on success.
+ *   F_output_not on success, but no printing is performed.
+ *
+ *   F_parameter (with error bit) if a parameter is invalid.
+ */
+#ifndef _di_fll_program_print_error_parameter_too_many_
+  extern f_status_t fll_program_print_error_parameter_too_many(fl_print_t * const print, const f_string_static_t symbol, const f_string_static_t name, const f_number_unsigned_t times);
+#endif // _di_fll_program_print_error_parameter_too_many_
+
+/**
  * Print error message for when the parameter value is too long.
  *
  * @param print
index 7666a121b354f5b863e9d814f0b9240590dce0c4..903dfb64acbd18f711c1a1d27a124baf2e169622 100644 (file)
@@ -76,6 +76,10 @@ extern "C" {
     " %[[%] options %[]%]",
     " %[[%] %Q %[]%]",
     "%]\n%[Received signal code %]",
+    "%[' is specified too many times.%]%r",
+    "%[' is specified%] %[%ul%] %[too many times.%]%r",
+    "%[' is specified too few times.%]%r",
+    "%[' is specified%] %[%ul%] %[too few times.%]%r",
   };
 #endif // _di_fll_program_s_a_
 
index b8b663dc8e427eb44f1582f9a8963f7d7e7b7fcb..a8dfcbe5dcdf081cbfc1f165d1b64e1a23ec87db 100644 (file)
@@ -106,6 +106,10 @@ extern "C" {
     fll_program_s_066_option_e,
     fll_program_s_067_q_bracket_e,
     fll_program_s_068_receive_signal_e,
+    fll_program_s_069_too_many_e,
+    fll_program_s_070_too_many_times_e,
+    fll_program_s_071_too_few_e,
+    fll_program_s_072_too_few_times_e,
   }; // enum
 #endif // _di_fll_program_s_e_