]> Kevux Git Server - fll/commitdiff
Progress: Continue string and convert changes.
authorKevin Day <thekevinday@gmail.com>
Thu, 2 Sep 2021 01:22:40 +0000 (20:22 -0500)
committerKevin Day <thekevinday@gmail.com>
Thu, 2 Sep 2021 03:31:01 +0000 (22:31 -0500)
Handle some loose ends in the FSS read programs.

Update fss_status_code and status_code.

19 files changed:
level_3/fss_basic_list_read/c/fss_basic_list_read.c
level_3/fss_basic_read/c/fss_basic_read.c
level_3/fss_basic_read/c/private-fss_basic_read.c
level_3/fss_embedded_list_read/c/fss_embedded_list_read.c
level_3/fss_embedded_list_read/c/private-fss_embedded_list_read.c
level_3/fss_extended_list_read/c/fss_extended_list_read.c
level_3/fss_extended_list_read/c/private-fss_extended_list_read.c
level_3/fss_extended_read/c/fss_extended_read.c
level_3/fss_extended_read/c/private-fss_extended_read.c
level_3/fss_status_code/c/fss_status_code.c
level_3/fss_status_code/c/fss_status_code.h
level_3/fss_status_code/c/private-fss_status_code.c
level_3/fss_status_code/data/build/dependencies
level_3/fss_status_code/data/build/settings
level_3/status_code/c/private-status_code.c
level_3/status_code/c/status_code.c
level_3/status_code/c/status_code.h
level_3/status_code/data/build/dependencies
level_3/status_code/data/build/settings

index 99c6ff4fbfc5180f49462220b9f11fd55f265928..4500997b75a00f4c7f25fc0ed2404d50a254933f 100644 (file)
@@ -597,7 +597,7 @@ extern "C" {
       fss_basic_list_read_data_delete_simple(&data);
     }
     else {
-      fll_print_format("%c%[%sYou failed to specify one or more files.%]%c", main->error.to.stream, main->error.context, main->error.prefix, main->error.context, f_string_eol_s[0]);
+      fll_print_format("%c%[%sYou failed to specify one or more files.%]%c", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context, f_string_eol_s[0]);
       status = F_status_set_error(F_parameter);
     }
 
index 7ae6323fcd377c9db26d3da825896e1307f33cd1..579a687ce411e526366f62d8f00a27e8c6fe7ad9 100644 (file)
@@ -597,7 +597,7 @@ extern "C" {
       fss_basic_read_data_delete_simple(&data);
     }
     else {
-      fll_print_format("%c%[%sYou failed to specify one or more files.%]%c", main->error.to.stream, main->error.context, main->error.prefix, main->error.context, f_string_eol_s[0]);
+      fll_print_format("%c%[%sYou failed to specify one or more files.%]%c", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context, f_string_eol_s[0]);
       status = F_status_set_error(F_parameter);
     }
 
index 0b3542f37b791c7de5f7a81e3f0cb1bee6a0ad26..605bce04b3145601c9022f2aa30b05fdc6f745a1 100644 (file)
@@ -345,7 +345,11 @@ extern "C" {
     // This standard does not support multiple content groups.
     if ((data->option & fss_basic_read_data_option_select) && data->select) {
       if (main->parameters[fss_basic_read_parameter_total].result == f_console_result_found) {
+        flockfile(main->output.stream);
+
         fss_basic_read_print_zero(main);
+
+        funlockfile(main->output.stream);
       }
 
       return F_none;
@@ -394,7 +398,11 @@ extern "C" {
 
     if (data->depths.array[0].value_at >= data->objects.used) {
       if (data->option & (fss_basic_read_data_option_columns | fss_basic_read_data_option_total)) {
+        flockfile(main->output.stream);
+
         fss_basic_read_print_zero(main);
+
+        funlockfile(main->output.stream);
       }
 
       return F_none;
@@ -404,7 +412,11 @@ extern "C" {
     if (data->option & fss_basic_read_data_option_line) {
       if (data->line) {
         if (data->option & fss_basic_read_data_option_total) {
+          flockfile(main->output.stream);
+
           fss_basic_read_print_zero(main);
+
+          funlockfile(main->output.stream);
         }
 
         return F_none;
@@ -427,22 +439,30 @@ extern "C" {
           if (data->line) break;
 
           if (data->option & fss_basic_read_data_option_total) {
+            flockfile(main->output.stream);
+
             fss_basic_read_print_one(main);
+
+            funlockfile(main->output.stream);
           }
           else {
             fss_basic_read_print_at(i, *delimits, except_none, main, data);
           }
         }
         else if (data->option & fss_basic_read_data_option_columns) {
-          fprintf(main->output.stream, "%llu%c", data->contents.array[i].used, f_string_eol_s[0]);
+          fll_print_format("%ul%c", main->output.stream, data->contents.array[i].used, f_string_eol_s[0]);
         }
         else if (data->option & fss_basic_read_data_option_total) {
+          flockfile(main->output.stream);
+
           if (data->contents.array[i].used) {
             fss_basic_read_print_one(main);
           }
           else {
             fss_basic_read_print_zero(main);
           }
+
+          funlockfile(main->output.stream);
         }
         else {
           fss_basic_read_print_at(i, *delimits, except_none, main, data);
@@ -455,7 +475,11 @@ extern "C" {
     } // for
 
     if (data->option & fss_basic_read_data_option_total) {
+      flockfile(main->output.stream);
+
       fss_basic_read_print_zero(main);
+
+      funlockfile(main->output.stream);
     }
 
     return F_none;
@@ -466,8 +490,12 @@ extern "C" {
   f_status_t fss_basic_read_process_columns(fss_basic_read_main_t * const main, fss_basic_read_data_t *data, bool names[]) {
 
     if (!(data->option & fss_basic_read_data_option_content)) {
+      flockfile(main->output.stream);
+
       fss_basic_read_print_zero(main);
 
+      funlockfile(main->output.stream);
+
       return F_none;
     }
 
@@ -482,7 +510,7 @@ extern "C" {
       }
     } // for
 
-    fprintf(main->output.stream, "%llu%c", max, f_string_eol_s[0]);
+    fll_print_format("%ul%c", main->output.stream, max, f_string_eol_s[0]);
 
     return F_none;
   }
@@ -504,8 +532,12 @@ extern "C" {
         if (!data->contents.array[i].used) {
           if (data->option & fss_basic_read_data_option_empty) {
             if (line == data->line) {
+              flockfile(main->output.stream);
+
               fss_basic_read_print_set_end(main);
 
+              funlockfile(main->output.stream);
+
               break;
             }
 
@@ -642,6 +674,8 @@ extern "C" {
       ++total;
     } // for
 
+    flockfile(main->output.stream);
+
     if (data->option & fss_basic_read_data_option_line) {
       if (data->line < total) {
         fss_basic_read_print_one(main);
@@ -651,9 +685,11 @@ extern "C" {
       }
     }
     else {
-      fprintf(main->output.stream, "%llu%c", total, f_string_eol_s[0]);
+      fl_print_format("%ul%c", main->output.stream, total, f_string_eol_s[0]);
     }
 
+    funlockfile(main->output.stream);
+
     return F_none;
   }
 #endif // _di_fss_basic_read_process_total_
index 7e601f65ba3632887b83fcf493091b88eac4ef33..9e4c92458a64e238b53d18b0f3075e5d80027483 100644 (file)
@@ -446,7 +446,7 @@ extern "C" {
             // Skip past empty files.
             if (!main->quantity.total) {
               if (main->parameters[fss_embedded_list_read_parameter_total].result == f_console_result_found) {
-                fprintf(main->output.stream, "0%c", f_string_eol_s[0]);
+                fll_print_format("0%c", main->output.stream, f_string_eol_s[0]);
               }
 
               f_file_stream_close(F_true, &file);
@@ -487,7 +487,7 @@ extern "C" {
       macro_f_fss_comments_t_delete_simple(comments);
     }
     else {
-      fll_print_format("%c%[%sYou failed to specify one or more files.%]%c", main->error.to.stream, main->error.context, main->error.prefix, main->error.context, f_string_eol_s[0]);
+      fll_print_format("%c%[%sYou failed to specify one or more files.%]%c", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context, f_string_eol_s[0]);
       status = F_status_set_error(F_parameter);
     }
 
index 92412d4872fa962474fab87028db1d2b04d21d7d..0aa8e05e746779f1041686bf12b5c2f0735bb428 100644 (file)
@@ -495,7 +495,7 @@ extern "C" {
           ++total;
         } // for
 
-        fl_print_format("%lu%c", main->output.stream, total, f_string_eol_s[0]);
+        fll_print_format("%lu%c", main->output.stream, total, f_string_eol_s[0]);
 
         return F_none;
       }
index a4c8b18d89ae0b376b95e7e7de0004cf2fca6867..08a67b6c90535df7efac2f5d0056de858428bb9a 100644 (file)
@@ -595,7 +595,7 @@ extern "C" {
       fss_extended_list_read_data_delete_simple(&data);
     }
     else {
-      fll_print_format("%c%[%sYou failed to specify one or more files.%]%c", main->error.to.stream, main->error.context, main->error.prefix, main->error.context, f_string_eol_s[0]);
+      fll_print_format("%c%[%sYou failed to specify one or more files.%]%c", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context, f_string_eol_s[0]);
       status = F_status_set_error(F_parameter);
     }
 
index 34fbde0d42ec032630b98b5cb00b44c754778cdf..2ed16c0e9891bc3caf506ab96c264a6dc0a1310c 100644 (file)
@@ -463,7 +463,11 @@ extern "C" {
 
     if (data->depths.array[0].value_at >= data->objects.used) {
       if (data->option & (fss_extended_list_read_data_option_columns | fss_extended_list_read_data_option_total)) {
+        flockfile(main->output.stream);
+
         fss_extended_list_read_print_zero(main);
+
+        funlockfile(main->output.stream);
       }
 
       return F_none;
@@ -488,16 +492,20 @@ extern "C" {
           if (status == F_success) return F_none;
         }
         else if (data->option & fss_extended_list_read_data_option_columns) {
-          fprintf(main->output.stream, "%llu%c", data->contents.array[i].used, f_string_eol_s[0]);
+          fll_print_format("%ul%c", main->output.stream, data->contents.array[i].used, f_string_eol_s[0]);
         }
         else if (data->option & fss_extended_list_read_data_option_total) {
           if ((data->option & fss_extended_list_read_data_option_object) && !(data->option & fss_extended_list_read_data_option_content)) {
+            flockfile(main->output.stream);
+
             if (data->contents.array[i].used) {
               fss_extended_list_read_print_one(main);
             }
             else {
               fss_extended_list_read_print_zero(main);
             }
+
+            funlockfile(main->output.stream);
           }
           else {
             f_array_length_t total = 0;
@@ -539,7 +547,7 @@ extern "C" {
               }
             } // for
 
-            fprintf(main->output.stream, "%llu%c", total, f_string_eol_s[0]);
+            fll_print_format("%ul%c", main->output.stream, total, f_string_eol_s[0]);
           }
         }
         else {
@@ -553,7 +561,11 @@ extern "C" {
     } // for
 
     if (data->option & fss_extended_list_read_data_option_total) {
+      flockfile(main->output.stream);
+
       fss_extended_list_read_print_zero(main);
+
+      funlockfile(main->output.stream);
     }
 
     return F_none;
@@ -564,8 +576,12 @@ extern "C" {
   f_status_t fss_extended_list_read_process_columns(fss_extended_list_read_main_t * const main, fss_extended_list_read_data_t *data, bool names[]) {
 
     if (!(data->option & fss_extended_list_read_data_option_content)) {
+      flockfile(main->output.stream);
+
       fss_extended_list_read_print_zero(main);
 
+      funlockfile(main->output.stream);
+
       return F_none;
     }
 
@@ -580,7 +596,7 @@ extern "C" {
       }
     } // for
 
-    fprintf(main->output.stream, "%llu%c", max, f_string_eol_s[0]);
+    fll_print_format("%ul%c", main->output.stream, max, f_string_eol_s[0]);
 
     return F_none;
   }
@@ -590,7 +606,10 @@ extern "C" {
   f_status_t fss_extended_list_read_process_at_line(const f_array_length_t at, const f_array_lengths_t delimits_object, const f_array_lengths_t delimits_content, fss_extended_list_read_main_t * const main, fss_extended_list_read_data_t *data, f_array_length_t *line) {
 
     if (data->option & fss_extended_list_read_data_option_object) {
+
       if (*line == data->line) {
+        flockfile(main->output.stream);
+
         if (data->option & fss_extended_list_read_data_option_total) {
           fss_extended_list_read_print_one(main);
         }
@@ -598,6 +617,8 @@ extern "C" {
           fss_extended_list_read_print_at_object(main, data, at, delimits_object);
         }
 
+        funlockfile(main->output.stream);
+
         return F_success;
       }
 
@@ -627,6 +648,8 @@ extern "C" {
           if (*line == data->line) {
             range.stop = i;
 
+            flockfile(main->output.stream);
+
             if (data->option & fss_extended_list_read_data_option_total) {
               fss_extended_list_read_print_one(main);
             }
@@ -634,6 +657,8 @@ extern "C" {
               f_print_except_in_dynamic_partial(data->buffer, range, delimits_content, data->comments, main->output.stream);
             }
 
+            funlockfile(main->output.stream);
+
             return F_success;
           }
 
@@ -650,6 +675,8 @@ extern "C" {
         ++(*line);
 
         if (*line == data->line) {
+          flockfile(main->output.stream);
+
           if (data->option & fss_extended_list_read_data_option_total) {
             fss_extended_list_read_print_one(main);
           }
@@ -657,9 +684,11 @@ extern "C" {
             range.stop = data->contents.array[at].array[0].stop;
 
             f_print_except_in_dynamic_partial(data->buffer, range, delimits_content, data->comments, main->output.stream);
-            fprintf(main->output.stream, "%c", f_string_eol_s[0]);
+            f_print_character(f_string_eol_s[0], main->output.stream);
           }
 
+          funlockfile(main->output.stream);
+
           return F_success;
         }
       }
@@ -828,6 +857,8 @@ extern "C" {
       }
     } // for
 
+    flockfile(main->output.stream);
+
     if (data->option & fss_extended_list_read_data_option_line) {
       if (data->line < total) {
         fss_extended_list_read_print_one(main);
@@ -837,9 +868,11 @@ extern "C" {
       }
     }
     else {
-      fprintf(main->output.stream, "%llu%c", total, f_string_eol_s[0]);
+      fl_print_format("%ul%c", main->output.stream, total, f_string_eol_s[0]);
     }
 
+    funlockfile(main->output.stream);
+
     return F_none;
   }
 #endif // _di_fss_extended_list_read_process_total_
index b66588fb500047ab99ae7c1c4c723cf3e18bb6e6..f5058c428344d05fbfe35f7fa6e516e28afee466 100644 (file)
@@ -595,7 +595,7 @@ extern "C" {
       fss_extended_read_data_delete_simple(&data);
     }
     else {
-      fll_print_format("%c%[%sYou failed to specify one or more files.%]%c", main->error.to.stream, main->error.context, main->error.prefix, main->error.context, f_string_eol_s[0]);
+      fll_print_format("%c%[%sYou failed to specify one or more files.%]%c", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context, f_string_eol_s[0]);
       status = F_status_set_error(F_parameter);
     }
 
index a0db80c94d523386779fdf3cd7b261388446ce18..cd9c248bc3c551985e026f8323c7dcc4f6b6af09 100644 (file)
@@ -357,30 +357,46 @@ extern "C" {
 
     if (data->option & fss_extended_read_data_option_select) {
       if (data->option & fss_extended_read_data_option_object) {
+        flockfile(main->output.stream);
+
         fss_extended_read_print_one(main);
 
+        funlockfile(main->output.stream);
+
         return F_success;
       }
 
       if (data->select < data->contents.array[at].used) {
         if (data->contents.array[at].array[data->select].start <= data->contents.array[at].array[data->select].stop || (data->option & fss_extended_read_data_option_empty)) {
+          flockfile(main->output.stream);
+
           fss_extended_read_print_one(main);
 
+          funlockfile(main->output.stream);
+
           return F_success;
         }
       }
     }
     else if ((data->option & fss_extended_read_data_option_object) || (data->option & fss_extended_read_data_option_empty)) {
+      flockfile(main->output.stream);
+
       fss_extended_read_print_one(main);
 
+      funlockfile(main->output.stream);
+
       return F_success;
     }
     else if (data->contents.array[at].used) {
       for (f_array_length_t j = 0; j < data->contents.array[at].used; ++j) {
 
         if (data->contents.array[at].array[j].start <= data->contents.array[at].array[j].stop) {
+          flockfile(main->output.stream);
+
           fss_extended_read_print_one(main);
 
+          funlockfile(main->output.stream);
+
           return F_success;
         }
       } // for
@@ -428,7 +444,6 @@ extern "C" {
       f_print_character(fss_extended_read_pipe_content_end, main->output.stream);
     }
     else {
-      fprintf(main->output.stream, "%c", f_fss_eol);
       f_print_character(f_fss_eol, main->output.stream);
     }
   }
@@ -491,7 +506,11 @@ extern "C" {
 
     if (data->depths.array[0].value_at >= data->objects.used) {
       if (data->option & (fss_extended_read_data_option_columns | fss_extended_read_data_option_total)) {
+        flockfile(main->output.stream);
+
         fss_extended_read_print_zero(main);
+
+        funlockfile(main->output.stream);
       }
 
       return F_none;
@@ -501,7 +520,11 @@ extern "C" {
     if (data->option & fss_extended_read_data_option_line) {
       if (data->line) {
         if (data->option & fss_extended_read_data_option_total) {
+          flockfile(main->output.stream);
+
           fss_extended_read_print_zero(main);
+
+          funlockfile(main->output.stream);
         }
 
         return F_none;
@@ -534,7 +557,7 @@ extern "C" {
           }
         }
         else if (data->option & fss_extended_read_data_option_columns) {
-          fprintf(main->output.stream, "%llu%c", data->contents.array[i].used, f_string_eol_s[0]);
+          fll_print_format("%ul%c", main->output.stream, data->contents.array[i].used, f_string_eol_s[0]);
         }
         else if (data->option & fss_extended_read_data_option_total) {
           if (fss_extended_read_print_at_total(i, main, data) == F_none) {
@@ -552,7 +575,11 @@ extern "C" {
     } // for
 
     if (data->option & fss_extended_read_data_option_total) {
+      flockfile(main->output.stream);
+
       fss_extended_read_print_zero(main);
+
+      funlockfile(main->output.stream);
     }
 
     return F_none;
@@ -563,8 +590,12 @@ extern "C" {
   f_status_t fss_extended_read_process_columns(fss_extended_read_main_t * const main, fss_extended_read_data_t *data, bool names[]) {
 
     if (!(data->option & fss_extended_read_data_option_content)) {
+      flockfile(main->output.stream);
+
       fss_extended_read_print_zero(main);
 
+      funlockfile(main->output.stream);
+
       return F_none;
     }
 
@@ -579,7 +610,7 @@ extern "C" {
       }
     } // for
 
-    fprintf(main->output.stream, "%llu%c", max, f_string_eol_s[0]);
+    fll_print_format("%ul%c", main->output.stream, max, f_string_eol_s[0]);
 
     return F_none;
   }
@@ -602,8 +633,12 @@ extern "C" {
         if (!data->contents.array[i].used) {
           if (data->option & fss_extended_read_data_option_empty) {
             if (line == data->line) {
+              flockfile(main->output.stream);
+
               fss_extended_read_print_set_end(main);
 
+              funlockfile(main->output.stream);
+
               break;
             }
 
@@ -769,6 +804,8 @@ extern "C" {
       } // for
     }
 
+    flockfile(main->output.stream);
+
     if (data->option & fss_extended_read_data_option_line) {
       if (data->line < total) {
         fss_extended_read_print_one(main);
@@ -778,52 +815,14 @@ extern "C" {
       }
     }
     else {
-      fprintf(main->output.stream, "%llu%c", total, f_string_eol_s[0]);
+      fl_print_format("%ul%c", main->output.stream, total, f_string_eol_s[0]);
     }
 
-    return F_none;
-  }
-#endif // _di_fss_extended_read_process_total_
-
-
-
-#ifndef _di_fss_extended_read_process_total_content_
-  f_status_t fss_extended_read_process_total_content(const f_array_length_t at, fss_extended_read_main_t * const main, fss_extended_read_data_t *data, f_array_length_t *total) {
-
-    if (data->option & fss_extended_read_data_option_select) {
-      if (data->option & fss_extended_read_data_option_object) {
-        fss_extended_read_print_one(main);
-
-        return F_success;
-      }
-
-      if (data->select < data->contents.array[at].used) {
-        if (data->contents.array[at].array[data->select].start <= data->contents.array[at].array[data->select].stop || (data->option & fss_extended_read_data_option_empty)) {
-          fss_extended_read_print_one(main);
-
-          return F_success;
-        }
-      }
-    }
-    else if ((data->option & fss_extended_read_data_option_object) || (data->option & fss_extended_read_data_option_empty)) {
-      fss_extended_read_print_one(main);
-
-      return F_success;
-    }
-    else if (data->contents.array[at].used) {
-      for (f_array_length_t j = 0; j < data->contents.array[at].used; ++j) {
-
-        if (data->contents.array[at].array[j].start <= data->contents.array[at].array[j].stop) {
-          fss_extended_read_print_one(main);
-
-          return F_success;
-        }
-      } // for
-    }
+    funlockfile(main->output.stream);
 
     return F_none;
   }
-#endif // _di_fss_extended_read_process_total_content_
+#endif // _di_fss_extended_read_process_total_
 
 #ifdef __cplusplus
 } // extern "C"
index 18390880ecc73329277883da0cc0b224dabfd944..91cd9dd3ece8a9983c98d444dc82ec97c7066456 100644 (file)
@@ -9,6 +9,8 @@ extern "C" {
 #ifndef _di_fss_status_code_print_help_
   f_status_t fss_status_code_print_help(const f_file_t output, const f_color_context_t context) {
 
+    flockfile(output.stream);
+
     fll_program_print_help_header(output, context, fss_status_code_name_long, fss_status_code_version);
 
     fll_program_print_help_option(output, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "    Print this help message.");
@@ -21,7 +23,7 @@ extern "C" {
     fll_program_print_help_option(output, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Enable debugging, inceasing verbosity beyond normal output.");
     fll_program_print_help_option(output, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number.");
 
-    fprintf(output.stream, "%c", f_string_eol_s[0]);
+    f_print_character(f_string_eol_s[0], output.stream);
 
     fll_program_print_help_option(output, context, fss_status_code_short_is_fine, fss_status_code_long_is_fine, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "   Print F_true if the error code is not an error, F_false otherwise.");
     fll_program_print_help_option(output, context, fss_status_code_short_is_warning, fss_status_code_long_is_warning, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "Print F_true if the error code is a warning, F_false otherwise.");
@@ -30,6 +32,8 @@ extern "C" {
 
     fll_program_print_help_usage(output, context, fss_status_code_name, "status code(s)");
 
+    funlockfile(output.stream);
+
     return F_none;
   }
 #endif // _di_fss_status_code_print_help_
@@ -50,9 +54,12 @@ extern "C" {
         if (main->context.set.error.before) {
           main->error.context = main->context.set.error;
           main->error.notable = main->context.set.notable;
+
+          main->warning.context = main->context.set.warning;
+          main->warning.notable = main->context.set.notable;
         }
         else {
-          f_color_set_t *sets[] = { &main->error.context, &main->error.notable, 0 };
+          f_color_set_t *sets[] = { &main->error.context, &main->error.notable, &main->warning.context, &main->warning.notable, 0 };
 
           fll_program_parameter_process_empty(&main->context, sets);
         }
@@ -78,15 +85,19 @@ extern "C" {
 
         if (choice == fss_status_code_parameter_verbosity_quiet) {
           main->error.verbosity = f_console_verbosity_quiet;
+          main->warning.verbosity = f_console_verbosity_quiet;
         }
         else if (choice == fss_status_code_parameter_verbosity_normal) {
           main->error.verbosity = f_console_verbosity_normal;
+          main->warning.verbosity = f_console_verbosity_normal;
         }
         else if (choice == fss_status_code_parameter_verbosity_verbose) {
           main->error.verbosity = f_console_verbosity_verbose;
+          main->warning.verbosity = f_console_verbosity_verbose;
         }
         else if (choice == fss_status_code_parameter_verbosity_debug) {
           main->error.verbosity = f_console_verbosity_debug;
+          main->warning.verbosity = f_console_verbosity_debug;
         }
       }
 
@@ -109,39 +120,51 @@ extern "C" {
 
     if (main->parameters[fss_status_code_parameter_is_error].result == f_console_result_found) {
       if (main->parameters[fss_status_code_parameter_is_warning].result == f_console_result_found) {
-        f_color_print(main->error.to.stream, main->context.set.error, "%sThe parameter '", fll_error_print_error);
-        f_color_print(main->error.to.stream, main->context.set.notable, "%s%s", f_console_symbol_long_enable_s, fss_status_code_long_is_error);
-        f_color_print(main->error.to.stream, main->context.set.error, "' cannot be used with the parameter ");
-        f_color_print(main->error.to.stream, main->context.set.notable, "%s%s", f_console_symbol_long_enable_s, fss_status_code_long_is_warning);
-        f_color_print(main->error.to.stream, main->context.set.error, ".%c", f_string_eol_s[0]);
+        flockfile(main->output.stream);
+
+        fl_print_format("%c%[%sThe parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context);
+        fl_print_format("%[%s%s%]", main->error.to.stream, main->error.notable, f_console_symbol_long_enable_s, fss_status_code_long_is_error, main->error.notable);
+        fl_print_format("%[' cannot be used with the parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context);
+        fl_print_format("%[%s%s%]", main->error.to.stream, main->error.notable, f_console_symbol_long_enable_s, fss_status_code_long_is_warning, main->error.notable);
+        fl_print_format("%['.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]);
+
+        funlockfile(main->output.stream);
 
         fss_status_code_main_delete(main);
         return F_status_set_error(status);
       }
       else if (main->parameters[fss_status_code_parameter_is_fine].result == f_console_result_found) {
-        f_color_print(main->error.to.stream, main->context.set.error, "%sThe parameter '", fll_error_print_error);
-        f_color_print(main->error.to.stream, main->context.set.notable, "%s%s", f_console_symbol_long_enable_s, fss_status_code_long_is_error);
-        f_color_print(main->error.to.stream, main->context.set.error, "' cannot be used with the parameter ");
-        f_color_print(main->error.to.stream, main->context.set.notable, "%s%s", f_console_symbol_long_enable_s, fss_status_code_long_is_fine);
-        f_color_print(main->error.to.stream, main->context.set.error, ".%c", f_string_eol_s[0]);
+        flockfile(main->output.stream);
+
+        fl_print_format("%c%[%sThe parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context);
+        fl_print_format("%[%s%s%]", main->error.to.stream, main->error.notable, f_console_symbol_long_enable_s, fss_status_code_long_is_error, main->error.notable);
+        fl_print_format("%[' cannot be used with the parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context);
+        fl_print_format("%[%s%s%]", main->error.to.stream, main->error.notable, f_console_symbol_long_enable_s, fss_status_code_long_is_fine, main->error.notable);
+        fl_print_format("%['.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]);
+
+        funlockfile(main->output.stream);
 
         fss_status_code_main_delete(main);
         return F_status_set_error(status);
       }
     }
     else if (main->parameters[fss_status_code_parameter_is_warning].result == f_console_result_found && main->parameters[fss_status_code_parameter_is_fine].result == f_console_result_found) {
-      f_color_print(main->error.to.stream, main->context.set.error, "%sThe parameter '", fll_error_print_error);
-      f_color_print(main->error.to.stream, main->context.set.notable, "%s%s", f_console_symbol_long_enable_s, fss_status_code_long_is_warning);
-      f_color_print(main->error.to.stream, main->context.set.error, "' cannot be used with the parameter ");
-      f_color_print(main->error.to.stream, main->context.set.notable, "%s%s", f_console_symbol_long_enable_s, fss_status_code_long_is_fine);
-      f_color_print(main->error.to.stream, main->context.set.error, ".%c", f_string_eol_s[0]);
+      flockfile(main->output.stream);
+
+      fl_print_format("%c%[%sThe parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context);
+      fl_print_format("%[%s%s%]", main->error.to.stream, main->error.notable, f_console_symbol_long_enable_s, fss_status_code_long_is_warning, main->error.notable);
+      fl_print_format("%[' cannot be used with the parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context);
+      fl_print_format("%[%s%s%]", main->error.to.stream, main->error.notable, f_console_symbol_long_enable_s, fss_status_code_long_is_fine, main->error.notable);
+      fl_print_format("%['.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]);
+
+      funlockfile(main->output.stream);
 
       fss_status_code_main_delete(main);
       return F_status_set_error(status);
     }
 
     if (main->remaining.used == 0 && !main->process_pipe) {
-      f_color_print(main->error.to.stream, main->context.set.error, "%sYou failed to specify an error code.%c", fll_error_print_error, f_string_eol_s[0]);
+      fll_print_format("%[You failed to specify an error code.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]);
 
       fss_status_code_main_delete(main);
       return F_status_set_error(F_parameter);
index 34a8220212035c75273ac44363befe11e156f018..dfc4892e1fd3396eef36afeb558316442a27edec 100644 (file)
 // fll-1 includes
 #include <fll/level_1/console.h>
 #include <fll/level_1/conversion.h>
+#include <fll/level_1/print.h>
 #include <fll/level_1/status.h>
 #include <fll/level_1/string.h>
 
 // fll-2 includes
 #include <fll/level_2/error.h>
 #include <fll/level_2/fss_status.h>
+#include <fll/level_2/print.h>
 #include <fll/level_2/program.h>
 #include <fll/level_2/status.h>
 
@@ -121,6 +123,7 @@ extern "C" {
 
     f_file_t output;
     fll_error_print_t error;
+    fll_error_print_t warning;
 
     f_color_context_t context;
   } fss_status_code_main_t;
@@ -132,6 +135,7 @@ extern "C" {
       F_false, \
       macro_f_file_t_initialize2(f_type_output, f_type_descriptor_output, f_file_flag_write_only), \
       fll_error_print_t_initialize, \
+      macro_fll_error_print_t_initialize_warning(), \
       f_color_context_t_initialize, \
     }
 #endif // _di_fss_status_code_main_t_
index 4b1f433cf5b1a578baba606d029721f1acc13448..803f74647266329586fcd747a368c6b68a8ece06 100644 (file)
@@ -8,6 +8,7 @@ extern "C" {
 
 #ifndef _di_fss_status_code_process_check_
   f_status_t fss_status_code_process_check(const fss_status_code_main_t main, const f_string_t value) {
+
     f_number_unsigned_t number = 0;
 
     f_status_t status = fss_status_code_convert_number(main, value, &number);
@@ -15,27 +16,33 @@ extern "C" {
 
     if (main.parameters[fss_status_code_parameter_is_error].result == f_console_result_found) {
       if (F_status_is_error(number)) {
-        printf("%s\n", FL_status_string_true);
+        f_print_terminated(FL_status_string_true, main.output.stream);
       }
       else {
-        printf("%s\n", FL_status_string_false);
+        f_print_terminated(FL_status_string_false, main.output.stream);
       }
+
+      f_print_character(f_string_eol_s[0], main.output.stream);
     }
     else if (main.parameters[fss_status_code_parameter_is_warning].result == f_console_result_found) {
       if (F_status_is_warning(number)) {
-        printf("%s\n", FL_status_string_true);
+        f_print_terminated(FL_status_string_true, main.output.stream);
       }
       else {
-        printf("%s\n", FL_status_string_false);
+        f_print_terminated(FL_status_string_false, main.output.stream);
       }
+
+      f_print_character(f_string_eol_s[0], main.output.stream);
     }
     else if (main.parameters[fss_status_code_parameter_is_fine].result == f_console_result_found) {
       if (F_status_is_fine(number)) {
-        printf("%s\n", FL_status_string_true);
+        f_print_terminated(FL_status_string_true, main.output.stream);
       }
       else {
-        printf("%s\n", FL_status_string_false);
+        f_print_terminated(FL_status_string_false, main.output.stream);
       }
+
+      f_print_character(f_string_eol_s[0], main.output.stream);
     }
 
     return F_none;
@@ -44,6 +51,7 @@ extern "C" {
 
 #ifndef _di_fss_status_code_process_number_
   f_status_t fss_status_code_process_number(const fss_status_code_main_t main, const f_string_t value) {
+
     f_status_t status = F_none;
 
     {
@@ -54,13 +62,13 @@ extern "C" {
       status = fl_conversion_string_to_number_unsigned(value, range, &number);
 
       if (status == F_none) {
-        f_color_print(main.output.stream, main.context.set.error, "invalid name%c", f_string_eol_s[0]);
+        fll_print_format("%[invalid name%]%c", main.output.stream, main.context.set.error, main.context.set.error, f_string_eol_s[0]);
 
         return F_status_set_error(F_parameter);
       }
 
       if (status == F_data_not || F_status_set_fine(status) == F_parameter) {
-        f_color_print(main.output.stream, main.context.set.error, "invalid main%c", f_string_eol_s[0]);
+        fll_print_format("%[invalid main%]%c", main.output.stream, main.context.set.error, main.context.set.error, f_string_eol_s[0]);
 
         return status;
       }
@@ -77,10 +85,10 @@ extern "C" {
 
       if (F_status_is_error(status)) {
         if (F_status_set_fine(status) == F_data) {
-          f_color_print(main.output.stream, main.context.set.error, "unknown name%c", f_string_eol_s[0]);
+          fll_print_format("%[unknown name%]%c", main.output.stream, main.context.set.error, main.context.set.error, f_string_eol_s[0]);
         }
         else {
-          f_color_print(main.output.stream, main.context.set.error, "failed to convert%c", f_string_eol_s[0]);
+          fll_print_format("%[failed to convert%]%c", main.output.stream, main.context.set.error, main.context.set.error, f_string_eol_s[0]);
         }
 
         return status;
@@ -88,12 +96,12 @@ extern "C" {
     }
 
     if (status == F_data) {
-      f_color_print(main.output.stream, main.context.set.warning, "unknown code%c", f_string_eol_s[0]);
+      fll_print_format("%[unknown code%]%c", main.output.stream, main.context.set.error, main.context.set.error, f_string_eol_s[0]);
 
       return F_none;
     }
 
-    printf("%u\n", code);
+    fll_print_format("%ui%c", main.output.stream, code, f_string_eol_s[0]);
 
     return F_none;
   }
@@ -101,6 +109,7 @@ extern "C" {
 
 #ifndef _di_fss_status_code_process_normal_
   f_status_t fss_status_code_process_normal(const fss_status_code_main_t main, const f_string_t value) {
+
     f_number_unsigned_t number = 0;
 
     f_status_t status = fss_status_code_convert_number(main, value, &number);
@@ -113,16 +122,16 @@ extern "C" {
 
     if (F_status_is_error(status)) {
       if (F_status_set_fine(status) == F_data) {
-        f_color_print(main.output.stream, main.context.set.error, "unknown code%c", f_string_eol_s[0]);
+        fll_print_format("%[unknown code%]%c", main.output.stream, main.context.set.error, main.context.set.error, f_string_eol_s[0]);
       }
       else {
-        f_color_print(main.output.stream, main.context.set.error, "failed to convert%c", f_string_eol_s[0]);
+        fll_print_format("%[failed to convert%]%c", main.output.stream, main.context.set.error, main.context.set.error, f_string_eol_s[0]);
       }
 
       return status;
     }
 
-    printf("%s\n", string);
+    fll_print_format("%S%c", main.output.stream, string, f_string_eol_s[0]);
 
     return F_none;
   }
@@ -130,22 +139,23 @@ extern "C" {
 
 #ifndef _di_fss_status_code_convert_number_
   f_status_t fss_status_code_convert_number(const fss_status_code_main_t main, const f_string_t value, f_number_unsigned_t *number) {
+
     const f_string_range_t range = macro_f_string_range_t_initialize(strlen(value));
 
     f_status_t status = fl_conversion_string_to_number_unsigned(value, range, number);
 
     if (*number > F_status_size_max_with_signal) {
-      f_color_print(main.output.stream, main.context.set.error, "out of range%c", f_string_eol_s[0]);
+      fll_print_format("%[out of range%]%c", main.output.stream, main.context.set.error, main.context.set.error, f_string_eol_s[0]);
 
       return status;
     }
 
     if (F_status_is_error(status)) {
       if (F_status_set_fine(status) == F_number_negative) {
-        f_color_print(main.output.stream, main.context.set.error, "out of range%c", f_string_eol_s[0]);
+        fll_print_format("%[out of range%]%c", main.output.stream, main.context.set.error, main.context.set.error, f_string_eol_s[0]);
       }
       else {
-        f_color_print(main.output.stream, main.context.set.error, "invalid number%c", f_string_eol_s[0]);
+        fll_print_format("%[invalid number%]%c", main.output.stream, main.context.set.error, main.context.set.error, f_string_eol_s[0]);
       }
 
       return status;
index a8d92267741f4d79e770ab66143f95541eecb2b5..808aad1d716874763d72d34765c5a607121d1db8 100644 (file)
@@ -17,9 +17,12 @@ f_print
 fl_console
 fl_conversion
 fl_fss
+fl_print
 fl_status
+fl_string
 fll_error
 fll_file
 fll_fss
+fll_print
 fll_program
 fll_status
index b131479079a56bdde7fa12aac9e8832e5522e417..4ac98f24292ec1de75f551aaa2d43d24fc2463ff 100644 (file)
@@ -20,7 +20,7 @@ build_compiler gcc
 build_indexer ar
 build_language c
 build_libraries -lc
-build_libraries-individual -lfll_error -lfll_file -lfll_fss -lfll_program -lfll_status -lfl_console -lfl_conversion -lfl_directory -lfl_fss -lfl_status -lfl_string -lf_color -lf_console -lf_conversion -lf_directory -lf_environment -lf_file -lf_fss -lf_memory -lf_path -lf_pipe -lf_print -lf_string -lf_type_array -lf_utf
+build_libraries-individual -lfll_error -lfll_file -lfll_fss -lfll_print -lfll_program -lfll_status -lfl_console -lfl_conversion -lfl_directory -lfl_fss -lfl_print -lfl_status -lfl_string -lf_color -lf_console -lf_conversion -lf_directory -lf_environment -lf_file -lf_fss -lf_memory -lf_path -lf_pipe -lf_print -lf_string -lf_type_array -lf_utf
 build_libraries-level -lfll_2 -lfll_1 -lfll_0
 build_libraries-monolithic -lfll
 build_sources_library fss_status_code.c private-common.c private-fss_status_code.c
@@ -51,7 +51,7 @@ defines_all
 defines_static
 defines_shared
 
-flags_all -z now -g -fdiagnostics-color=always -Wno-logical-not-parentheses -Wno-logical-op-parentheses -Wno-parentheses
+flags_all -O2 -z now -g -fdiagnostics-color=always -Wno-logical-not-parentheses -Wno-logical-op-parentheses -Wno-parentheses
 flags_shared
 flags_static
 flags_library -fPIC
index 5ebe0365e4b18e8bd3c071cc72ef859b345f7103..49eb2d28af9358c375e2dbdd232915bbd5dbce38 100644 (file)
@@ -8,6 +8,7 @@ extern "C" {
 
 #ifndef _di_status_code_process_check_
   f_status_t status_code_process_check(const status_code_main_t main, const f_string_t value) {
+
     f_number_unsigned_t number = 0;
     f_status_t status = status_code_convert_number(main, value, &number);
 
@@ -17,27 +18,33 @@ extern "C" {
 
     if (main.parameters[status_code_parameter_is_error].result == f_console_result_found) {
       if (F_status_is_error(number)) {
-        printf("%s\n", FL_status_string_true);
+        f_print_terminated(FL_status_string_true, main.output.stream);
       }
       else {
-        printf("%s\n", FL_status_string_false);
+        f_print_terminated(FL_status_string_false, main.output.stream);
       }
+
+      f_print_character(f_string_eol_s[0], main.output.stream);
     }
     else if (main.parameters[status_code_parameter_is_warning].result == f_console_result_found) {
       if (F_status_is_warning(number)) {
-        printf("%s\n", FL_status_string_true);
+        f_print_terminated(FL_status_string_true, main.output.stream);
       }
       else {
-        printf("%s\n", FL_status_string_false);
+        f_print_terminated(FL_status_string_false, main.output.stream);
       }
+
+      f_print_character(f_string_eol_s[0], main.output.stream);
     }
     else if (main.parameters[status_code_parameter_is_fine].result == f_console_result_found) {
       if (F_status_is_fine(number)) {
-        printf("%s\n", FL_status_string_true);
+        f_print_terminated(FL_status_string_true, main.output.stream);
       }
       else {
-        printf("%s\n", FL_status_string_false);
+        f_print_terminated(FL_status_string_false, main.output.stream);
       }
+
+      f_print_character(f_string_eol_s[0], main.output.stream);
     }
 
     return F_none;
@@ -46,6 +53,7 @@ extern "C" {
 
 #ifndef _di_status_code_process_number_
   f_status_t status_code_process_number(const status_code_main_t main, const f_string_t value) {
+
     f_status_t status = F_none;
 
     {
@@ -56,13 +64,13 @@ extern "C" {
       status = fl_conversion_string_to_number_unsigned(value, range, &number);
 
       if (status == F_none) {
-        f_color_print(main.output.stream, main.context.set.error, "invalid name%c", f_string_eol_s[0]);
+        fll_print_format("%[invalid name%]%c", main.output.stream, main.context.set.error, main.context.set.error, f_string_eol_s[0]);
 
         return F_status_set_error(F_parameter);
       }
 
       if (status == F_data_not || F_status_set_fine(status) == F_parameter) {
-        f_color_print(main.output.stream, main.context.set.error, "invalid main%c", f_string_eol_s[0]);
+        fll_print_format("%[invalid main%]%c", main.output.stream, main.context.set.error, main.context.set.error, f_string_eol_s[0]);
 
         return status;
       }
@@ -74,22 +82,22 @@ extern "C" {
 
     if (F_status_is_error(status)) {
       if (F_status_set_fine(status) == F_data) {
-        f_color_print(main.output.stream, main.context.set.error, "unknown name%c", f_string_eol_s[0]);
+        fll_print_format("%[unknown name%]%c", main.output.stream, main.context.set.error, main.context.set.error, f_string_eol_s[0]);
       }
       else {
-        f_color_print(main.output.stream, main.context.set.error, "failed to convert%c", f_string_eol_s[0]);
+        fll_print_format("%[failed to convert%]%c", main.output.stream, main.context.set.error, main.context.set.error, f_string_eol_s[0]);
       }
 
       return status;
     }
 
     if (status == F_data) {
-      f_color_print(main.output.stream, main.context.set.warning, "unknown code%c", f_string_eol_s[0]);
+      fll_print_format("%[unknown code%]%c", main.output.stream, main.context.set.error, main.context.set.error, f_string_eol_s[0]);
 
       return F_none;
     }
 
-    printf("%u\n", code);
+    fll_print_format("%ui%c", main.output.stream, code, f_string_eol_s[0]);
 
     return F_none;
   }
@@ -97,6 +105,7 @@ extern "C" {
 
 #ifndef _di_status_code_process_normal_
   f_status_t status_code_process_normal(const status_code_main_t main, const f_string_t value) {
+
     f_number_unsigned_t number = 0;
     f_status_t status = status_code_convert_number(main, value, &number);
 
@@ -111,16 +120,16 @@ extern "C" {
 
     if (F_status_is_error(status)) {
       if (F_status_set_fine(status) == F_data) {
-        f_color_print(main.output.stream, main.context.set.error, "unknown code%c", f_string_eol_s[0]);
+        fll_print_format("%[unknown code%]%c", main.output.stream, main.context.set.error, main.context.set.error, f_string_eol_s[0]);
       }
       else {
-        f_color_print(main.output.stream, main.context.set.error, "failed to convert%c", f_string_eol_s[0]);
+        fll_print_format("%[failed to convert%]%c", main.output.stream, main.context.set.error, main.context.set.error, f_string_eol_s[0]);
       }
 
       return status;
     }
 
-    printf("%s\n", string);
+    fll_print_format("%S%c", main.output.stream, string, f_string_eol_s[0]);
 
     return F_none;
   }
@@ -128,22 +137,23 @@ extern "C" {
 
 #ifndef _di_status_code_convert_number_
   f_status_t status_code_convert_number(const status_code_main_t main, const f_string_t value, f_number_unsigned_t *number) {
+
     const f_string_range_t range = macro_f_string_range_t_initialize(strlen(value));
 
     f_status_t status = fl_conversion_string_to_number_unsigned(value, range, number);
 
     if (*number > F_status_size_max_with_signal) {
-      f_color_print(main.output.stream, main.context.set.error, "out of range%c", f_string_eol_s[0]);
+      fll_print_format("%[out of range%]%c", main.output.stream, main.context.set.error, main.context.set.error, f_string_eol_s[0]);
 
       return status;
     }
 
     if (F_status_is_error(status)) {
       if (F_status_set_fine(status) == F_number_negative) {
-        f_color_print(main.output.stream, main.context.set.error, "out of range%c", f_string_eol_s[0]);
+        fll_print_format("%[out of range%]%c", main.output.stream, main.context.set.error, main.context.set.error, f_string_eol_s[0]);
       }
       else {
-        f_color_print(main.output.stream, main.context.set.error, "invalid number%c", f_string_eol_s[0]);
+        fll_print_format("%[invalid number%]%c", main.output.stream, main.context.set.error, main.context.set.error, f_string_eol_s[0]);
       }
 
       return status;
index fdf2d0510b2eaf9de5e249c4e5c100401e67061e..427503108008b899f85b8981a6c0dc68c891ee25 100644 (file)
@@ -9,6 +9,8 @@ extern "C" {
 #ifndef _di_status_code_print_help_
   f_status_t status_code_print_help(const f_file_t output, const f_color_context_t context) {
 
+    flockfile(output.stream);
+
     fll_program_print_help_header(output, context, status_code_name_long, status_code_version);
 
     fll_program_print_help_option(output, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "    Print this help message.");
@@ -21,7 +23,7 @@ extern "C" {
     fll_program_print_help_option(output, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Enable debugging, inceasing verbosity beyond normal output.");
     fll_program_print_help_option(output, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number.");
 
-    fprintf(output.stream, "%c", f_string_eol_s[0]);
+    f_print_character(f_string_eol_s[0], output.stream);
 
     fll_program_print_help_option(output, context, status_code_short_is_fine, status_code_long_is_fine, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "   Print F_true if the error code is not an error, F_false otherwise.");
     fll_program_print_help_option(output, context, status_code_short_is_warning, status_code_long_is_warning, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "Print F_true if the error code is a warning, F_false otherwise.");
@@ -30,6 +32,8 @@ extern "C" {
 
     fll_program_print_help_usage(output, context, status_code_name, "status code(s)");
 
+    funlockfile(output.stream);
+
     return F_none;
   }
 #endif // _di_status_code_print_help_
@@ -50,9 +54,12 @@ extern "C" {
         if (main->context.set.error.before) {
           main->error.context = main->context.set.error;
           main->error.notable = main->context.set.notable;
+
+          main->warning.context = main->context.set.warning;
+          main->warning.notable = main->context.set.notable;
         }
         else {
-          f_color_set_t *sets[] = { &main->error.context, &main->error.notable, 0 };
+          f_color_set_t *sets[] = { &main->error.context, &main->error.notable, &main->warning.context, &main->warning.notable, 0 };
 
           fll_program_parameter_process_empty(&main->context, sets);
         }
@@ -78,15 +85,19 @@ extern "C" {
 
         if (choice == status_code_parameter_verbosity_quiet) {
           main->error.verbosity = f_console_verbosity_quiet;
+          main->warning.verbosity = f_console_verbosity_quiet;
         }
         else if (choice == status_code_parameter_verbosity_normal) {
           main->error.verbosity = f_console_verbosity_normal;
+          main->warning.verbosity = f_console_verbosity_normal;
         }
         else if (choice == status_code_parameter_verbosity_verbose) {
           main->error.verbosity = f_console_verbosity_verbose;
+          main->warning.verbosity = f_console_verbosity_verbose;
         }
         else if (choice == status_code_parameter_verbosity_debug) {
           main->error.verbosity = f_console_verbosity_debug;
+          main->warning.verbosity = f_console_verbosity_debug;
         }
       }
 
@@ -109,39 +120,51 @@ extern "C" {
 
     if (main->parameters[status_code_parameter_is_error].result == f_console_result_found) {
       if (main->parameters[status_code_parameter_is_warning].result == f_console_result_found) {
-        f_color_print(main->error.to.stream, main->context.set.error, "%sThe parameter '", fll_error_print_error);
-        f_color_print(main->error.to.stream, main->context.set.notable, "%s%s", f_console_symbol_long_enable_s, status_code_long_is_error);
-        f_color_print(main->error.to.stream, main->context.set.error, "' cannot be used with the parameter ");
-        f_color_print(main->error.to.stream, main->context.set.notable, "%s%s", f_console_symbol_long_enable_s, status_code_long_is_warning);
-        f_color_print(main->error.to.stream, main->context.set.error, ".%c", f_string_eol_s[0]);
+        flockfile(main->output.stream);
+
+        fl_print_format("%c%[%sThe parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context);
+        fl_print_format("%[%s%s%]", main->error.to.stream, main->error.notable, f_console_symbol_long_enable_s, status_code_long_is_error, main->error.notable);
+        fl_print_format("%[' cannot be used with the parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context);
+        fl_print_format("%[%s%s%]", main->error.to.stream, main->error.notable, f_console_symbol_long_enable_s, status_code_long_is_warning, main->error.notable);
+        fl_print_format("%['.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]);
+
+        funlockfile(main->output.stream);
 
         status_code_main_delete(main);
         return F_status_set_error(status);
       }
       else if (main->parameters[status_code_parameter_is_fine].result == f_console_result_found) {
-        f_color_print(main->error.to.stream, main->context.set.error, "%sThe parameter '", fll_error_print_error);
-        f_color_print(main->error.to.stream, main->context.set.notable, "%s%s", f_console_symbol_long_enable_s, status_code_long_is_error);
-        f_color_print(main->error.to.stream, main->context.set.error, "' cannot be used with the parameter ");
-        f_color_print(main->error.to.stream, main->context.set.notable, "%s%s", f_console_symbol_long_enable_s, status_code_long_is_fine);
-        f_color_print(main->error.to.stream, main->context.set.error, ".%c", f_string_eol_s[0]);
+        flockfile(main->output.stream);
+
+        fl_print_format("%c%[%sThe parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context);
+        fl_print_format("%[%s%s%]", main->error.to.stream, main->error.notable, f_console_symbol_long_enable_s, status_code_long_is_error, main->error.notable);
+        fl_print_format("%[' cannot be used with the parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context);
+        fl_print_format("%[%s%s%]", main->error.to.stream, main->error.notable, f_console_symbol_long_enable_s, status_code_long_is_fine, main->error.notable);
+        fl_print_format("%['.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]);
+
+        funlockfile(main->output.stream);
 
         status_code_main_delete(main);
         return F_status_set_error(status);
       }
     }
     else if (main->parameters[status_code_parameter_is_warning].result == f_console_result_found && main->parameters[status_code_parameter_is_fine].result == f_console_result_found) {
-      f_color_print(main->error.to.stream, main->context.set.error, "%sThe parameter '", fll_error_print_error);
-      f_color_print(main->error.to.stream, main->context.set.notable, "%s%s", f_console_symbol_long_enable_s, status_code_long_is_warning);
-      f_color_print(main->error.to.stream, main->context.set.error, "' cannot be used with the parameter ");
-      f_color_print(main->error.to.stream, main->context.set.notable, "%s%s", f_console_symbol_long_enable_s, status_code_long_is_fine);
-      f_color_print(main->error.to.stream, main->context.set.error, ".%c", f_string_eol_s[0]);
+      flockfile(main->output.stream);
+
+      fl_print_format("%c%[%sThe parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context);
+      fl_print_format("%[%s%s%]", main->error.to.stream, main->error.notable, f_console_symbol_long_enable_s, status_code_long_is_warning, main->error.notable);
+      fl_print_format("%[' cannot be used with the parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context);
+      fl_print_format("%[%s%s%]", main->error.to.stream, main->error.notable, f_console_symbol_long_enable_s, status_code_long_is_fine, main->error.notable);
+      fl_print_format("%['.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]);
+
+      funlockfile(main->output.stream);
 
       status_code_main_delete(main);
       return F_status_set_error(status);
     }
 
     if (main->remaining.used == 0 && !main->process_pipe) {
-      f_color_print(main->error.to.stream, main->context.set.error, "%sYou failed to specify a status code.%c", fll_error_print_error, f_string_eol_s[0]);
+      fll_print_format("%[You failed to specify a status code.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]);
 
       status_code_main_delete(main);
       return F_status_set_error(F_parameter);
@@ -155,6 +178,8 @@ extern "C" {
       }
 
       if (main->remaining.used > 0) {
+        flockfile(main->output.stream);
+
         for (f_array_length_t i = 0; i < main->remaining.used; ++i) {
 
           status2 = status_code_process_check(*main, arguments.argv[main->remaining.array[i]]);
@@ -163,6 +188,8 @@ extern "C" {
             status = status2;
           }
         } // for
+
+        funlockfile(main->output.stream);
       }
     }
     else if (main->parameters[status_code_parameter_number].result == f_console_result_found) {
index b8b0d699747216e9ad9c7993d97d98220dcecc2c..6bc93ef5bf8c8e5f1763b63fda0f282c23673c85 100644 (file)
 // fll-1 includes
 #include <fll/level_1/console.h>
 #include <fll/level_1/conversion.h>
+#include <fll/level_1/print.h>
 #include <fll/level_1/status.h>
 #include <fll/level_1/string.h>
 
 // fll-2 includes
 #include <fll/level_2/error.h>
+#include <fll/level_2/print.h>
 #include <fll/level_2/program.h>
 #include <fll/level_2/status.h>
 
@@ -120,6 +122,7 @@ extern "C" {
 
     f_file_t output;
     fll_error_print_t error;
+    fll_error_print_t warning;
 
     f_color_context_t context;
   } status_code_main_t;
@@ -131,6 +134,7 @@ extern "C" {
       F_false, \
       macro_f_file_t_initialize2(f_type_output, f_type_descriptor_output, f_file_flag_write_only), \
       fll_error_print_t_initialize, \
+      macro_fll_error_print_t_initialize_warning(), \
       f_color_context_t_initialize, \
     }
 #endif // _di_status_code_main_t_
index 0f7a8c51d27935ae20e40527674bc445bdbd8f36..4ad511e667ae22ba650c5ae69a1eb8a2cca22498 100644 (file)
@@ -13,7 +13,10 @@ f_pipe
 f_print
 fl_console
 fl_conversion
+fl_print
 fl_status
+fl_string
 fll_error
+fll_print
 fll_program
 fll_status
index f41a59cbefed6c818a89f31c00177d999c0b8951..b5d63a5d67694dfd14c45029c97a7fe9d79b8143 100644 (file)
@@ -20,7 +20,7 @@ build_compiler gcc
 build_indexer ar
 build_language c
 build_libraries -lc
-build_libraries-individual -lfll_error -lfll_program -lfll_status -lfl_console -lfl_conversion -lfl_status -lfl_string -lf_color -lf_console -lf_conversion -lf_file -lf_memory -lf_path -lf_pipe -lf_print -lf_string -lf_type_array -lf_utf
+build_libraries-individual -lfll_error -lfll_print -lfll_program -lfll_status -lfl_console -lfl_conversion -lfl_print -lfl_status -lfl_string -lf_color -lf_console -lf_conversion -lf_file -lf_memory -lf_path -lf_pipe -lf_print -lf_string -lf_type_array -lf_utf
 build_libraries-level -lfll_2 -lfll_1 -lfll_0
 build_libraries-monolithic -lfll
 build_sources_library status_code.c private-common.c private-status_code.c
@@ -51,7 +51,7 @@ defines_all
 defines_static
 defines_shared
 
-flags_all -z now -g -fdiagnostics-color=always -Wno-logical-not-parentheses -Wno-logical-op-parentheses -Wno-parentheses
+flags_all -O2 -z now -g -fdiagnostics-color=always -Wno-logical-not-parentheses -Wno-logical-op-parentheses -Wno-parentheses
 flags_shared
 flags_static
 flags_library -fPIC