]> Kevux Git Server - fll/commitdiff
Update: improve return code error conversion and support converting strings to numbers
authorKevin Day <thekevinday@gmail.com>
Thu, 29 Aug 2019 19:26:54 +0000 (14:26 -0500)
committerKevin Day <thekevinday@gmail.com>
Thu, 29 Aug 2019 19:26:54 +0000 (14:26 -0500)
30 files changed:
level_0/f_colors/data/build/dependencies
level_0/f_console/data/build/dependencies
level_0/f_conversion/data/build/dependencies
level_0/f_errors/c/errors.h
level_0/f_fss/data/build/dependencies
level_0/f_print/data/build/dependencies
level_0/f_serialized/data/build/dependencies
level_0/f_utf/data/build/dependencies
level_1/fl_errors/c/errors.c
level_1/fl_errors/c/errors.h
level_1/fl_errors/data/build/dependencies
level_1/fl_errors/data/build/settings
level_1/fl_fss/c/fss_errors.h
level_1/fl_strings/data/build/dependencies
level_2/fll_errors/c/errors.c [new file with mode: 0644]
level_2/fll_errors/c/errors.h [new file with mode: 0644]
level_2/fll_errors/data/build/dependencies [new file with mode: 0644]
level_2/fll_errors/data/build/settings [new file with mode: 0644]
level_2/fll_fss/c/fss_errors.c
level_2/fll_fss/c/fss_errors.h
level_2/fll_fss/data/build/dependencies
level_2/fll_fss/data/build/settings
level_3/fss_return_code/c/fss_return_code.c
level_3/fss_return_code/c/fss_return_code.h
level_3/fss_return_code/data/build/dependencies
level_3/fss_return_code/data/build/settings
level_3/return_code/c/return_code.c
level_3/return_code/c/return_code.h
level_3/return_code/data/build/dependencies
level_3/return_code/data/build/settings

index 0c32bf16216243f1bea8a9c61efc47fadbf03e0c..98ec83401bf4b736a6cab2c4a7cd3a8573302beb 100644 (file)
@@ -1,2 +1,3 @@
 f_types
+f_memory
 f_strings
index 90e12bc50925d49367a22b4c528800bc67934a3f..9594c4ed1103486b9389eb37c5d6661310feaa25 100644 (file)
@@ -1,3 +1,4 @@
 f_types
 f_errors
+f_memory
 f_strings
index 90e12bc50925d49367a22b4c528800bc67934a3f..9594c4ed1103486b9389eb37c5d6661310feaa25 100644 (file)
@@ -1,3 +1,4 @@
 f_types
 f_errors
+f_memory
 f_strings
index 911a89c0f4f16d451764b162607f5263b5c0969d..bf4556101c8088b6a1a692a5cc0f42f70ad90474 100644 (file)
@@ -205,8 +205,6 @@ enum {
     f_signal_pollable_event,
     f_signal_power_failure,
     f_signal_bad_system_call,
-
-    // these will be renamed if new names are given for the remaining system calls (up to 64).
     f_signal_reserved_32,
     f_signal_reserved_33,
     f_signal_reserved_34,
@@ -279,6 +277,10 @@ enum {
     f_invalid_buffer,
     f_invalid_process,
     f_invalid_utf,
+    f_invalid_on_eof,
+    f_invalid_on_eol,
+    f_invalid_on_eos,
+    f_invalid_on_stop,
   #endif // _di_f_errors_invalid_
 
   #ifndef _di_f_errors_busy_
index 90e12bc50925d49367a22b4c528800bc67934a3f..9594c4ed1103486b9389eb37c5d6661310feaa25 100644 (file)
@@ -1,3 +1,4 @@
 f_types
 f_errors
+f_memory
 f_strings
index 90e12bc50925d49367a22b4c528800bc67934a3f..9594c4ed1103486b9389eb37c5d6661310feaa25 100644 (file)
@@ -1,3 +1,4 @@
 f_types
 f_errors
+f_memory
 f_strings
index 0c32bf16216243f1bea8a9c61efc47fadbf03e0c..98ec83401bf4b736a6cab2c4a7cd3a8573302beb 100644 (file)
@@ -1,2 +1,3 @@
 f_types
+f_memory
 f_strings
index 90e12bc50925d49367a22b4c528800bc67934a3f..9594c4ed1103486b9389eb37c5d6661310feaa25 100644 (file)
@@ -1,3 +1,4 @@
 f_types
 f_errors
+f_memory
 f_strings
index acf77e6981ad3ea51e76c94590051251855ef583..140b6fbbb8c6281f8905d452df6e5c8c5ccc8339 100644 (file)
@@ -15,641 +15,652 @@ extern "C" {
     switch (umasked_error) {
       #ifndef _di_fl_errors_booleans_
         case f_false:
-          *string = "f_false";
+          *string = fl_errors_string_false;
           break;
         case f_true:
-          *string = "f_true";
+          *string = fl_errors_string_true;
           break;
       #endif // _di_fl_errors_booleans_
 
       #ifndef _di_fl_errors_signals_
         // f_signal_hangup is not used because it has the same code as f_true.
         case f_signal_interrupt:
-          *string = "f_signal_interrupt";
+          *string = fl_errors_string_signal_interrupt;
           break;
         case f_signal_quit:
-          *string = "f_signal_quit";
+          *string = fl_errors_string_signal_quit;
           break;
         case f_signal_illegal:
-          *string = "f_signal_illegal";
+          *string = fl_errors_string_signal_illegal;
           break;
         case f_signal_trap:
-          *string = "f_signal_trap";
+          *string = fl_errors_string_signal_trap;
           break;
         case f_signal_abort:
-          *string = "f_signal_abort";
+          *string = fl_errors_string_signal_abort;
           break;
         case f_signal_bus_error:
-          *string = "f_signal_bus_error";
+          *string = fl_errors_string_signal_bus_error;
           break;
         case f_signal_floating_point_exception:
-          *string = "f_signal_floating_point_exception";
+          *string = fl_errors_string_signal_floating_point_exception;
           break;
         case f_signal_kill:
-          *string = "f_signal_kill";
+          *string = fl_errors_string_signal_kill;
           break;
         case f_signal_user_1:
-          *string = "f_signal_user_1";
+          *string = fl_errors_string_signal_user_1;
           break;
         case f_signal_segmentation_fault:
-          *string = "f_signal_segmentation_fault";
+          *string = fl_errors_string_signal_segmentation_fault;
           break;
         case f_signal_user_2:
-          *string = "f_signal_user_2";
+          *string = fl_errors_string_signal_user_2;
           break;
         case f_signal_broken_pipe:
-          *string = "f_signal_broken_pipe";
+          *string = fl_errors_string_signal_broken_pipe;
           break;
         case f_signal_alarm_clock:
-          *string = "f_signal_alarm_clock";
+          *string = fl_errors_string_signal_alarm_clock;
           break;
         case f_signal_termination:
-          *string = "f_signal_termination";
+          *string = fl_errors_string_signal_termination;
           break;
         case f_signal_stack_fault:
-          *string = "f_signal_stack_fault";
+          *string = fl_errors_string_signal_stack_fault;
           break;
         case f_signal_child:
-          *string = "f_signal_child";
+          *string = fl_errors_string_signal_child;
           break;
         case f_signal_continue:
-          *string = "f_signal_continue";
+          *string = fl_errors_string_signal_continue;
           break;
         case f_signal_stop:
-          *string = "f_signal_stop";
+          *string = fl_errors_string_signal_stop;
           break;
         case f_signal_keyboard_stop:
-          *string = "f_signal_keyboard_stop";
+          *string = fl_errors_string_signal_keyboard_stop;
           break;
         case f_signal_tty_in:
-          *string = "f_signal_tty_in";
+          *string = fl_errors_string_signal_tty_in;
           break;
         case f_signal_tty_out:
-          *string = "f_signal_tty_out";
+          *string = fl_errors_string_signal_tty_out;
           break;
         case f_signal_urgent:
-          *string = "f_signal_urgent";
+          *string = fl_errors_string_signal_urgent;
           break;
         case f_signal_cpu_limit:
-          *string = "f_signal_cpu_limit";
+          *string = fl_errors_string_signal_cpu_limit;
           break;
         case f_signal_file_size_limit:
-          *string = "f_signal_file_size_limit";
+          *string = fl_errors_string_signal_file_size_limit;
           break;
         case f_signal_virtual_alarm_clock:
-          *string = "f_signal_virtual_alarm_clock";
+          *string = fl_errors_string_signal_virtual_alarm_clock;
           break;
         case f_signal_profile_alarm_clock:
-          *string = "f_signal_profile_alarm_clock";
+          *string = fl_errors_string_signal_profile_alarm_clock;
           break;
         case f_signal_window_size_change:
-          *string = "f_signal_window_size_change";
+          *string = fl_errors_string_signal_window_size_change;
           break;
         case f_signal_pollable_event:
-          *string = "f_signal_pollable_event";
+          *string = fl_errors_string_signal_pollable_event;
           break;
         case f_signal_power_failure:
-          *string = "f_signal_power_failure";
+          *string = fl_errors_string_signal_power_failure;
           break;
         case f_signal_bad_system_call:
-          *string = "f_signal_bad_system_call";
+          *string = fl_errors_string_signal_bad_system_call;
           break;
         case f_signal_reserved_32:
-          *string = "f_signal_reserved_32";
+          *string = fl_errors_string_signal_reserved_32;
           break;
         case f_signal_reserved_33:
-          *string = "f_signal_reserved_33";
+          *string = fl_errors_string_signal_reserved_33;
           break;
         case f_signal_reserved_34:
-          *string = "f_signal_reserved_34";
+          *string = fl_errors_string_signal_reserved_34;
           break;
         case f_signal_reserved_35:
-          *string = "f_signal_reserved_35";
+          *string = fl_errors_string_signal_reserved_35;
           break;
         case f_signal_reserved_36:
-          *string = "f_signal_reserved_36";
+          *string = fl_errors_string_signal_reserved_36;
           break;
         case f_signal_reserved_37:
-          *string = "f_signal_reserved_37";
+          *string = fl_errors_string_signal_reserved_37;
           break;
         case f_signal_reserved_38:
-          *string = "f_signal_reserved_38";
+          *string = fl_errors_string_signal_reserved_38;
           break;
         case f_signal_reserved_39:
-          *string = "f_signal_reserved_39";
+          *string = fl_errors_string_signal_reserved_39;
           break;
         case f_signal_reserved_40:
-          *string = "f_signal_reserved_40";
+          *string = fl_errors_string_signal_reserved_40;
           break;
         case f_signal_reserved_41:
-          *string = "f_signal_reserved_41";
+          *string = fl_errors_string_signal_reserved_41;
           break;
         case f_signal_reserved_42:
-          *string = "f_signal_reserved_42";
+          *string = fl_errors_string_signal_reserved_42;
           break;
         case f_signal_reserved_43:
-          *string = "f_signal_reserved_43";
+          *string = fl_errors_string_signal_reserved_43;
           break;
         case f_signal_reserved_44:
-          *string = "f_signal_reserved_44";
+          *string = fl_errors_string_signal_reserved_44;
           break;
         case f_signal_reserved_45:
-          *string = "f_signal_reserved_45";
+          *string = fl_errors_string_signal_reserved_45;
           break;
         case f_signal_reserved_46:
-          *string = "f_signal_reserved_46";
+          *string = fl_errors_string_signal_reserved_46;
           break;
         case f_signal_reserved_47:
-          *string = "f_signal_reserved_47";
+          *string = fl_errors_string_signal_reserved_47;
           break;
         case f_signal_reserved_48:
-          *string = "f_signal_reserved_48";
+          *string = fl_errors_string_signal_reserved_48;
           break;
         case f_signal_reserved_49:
-          *string = "f_signal_reserved_49";
+          *string = fl_errors_string_signal_reserved_49;
           break;
         case f_signal_reserved_50:
-          *string = "f_signal_reserved_50";
+          *string = fl_errors_string_signal_reserved_50;
           break;
         case f_signal_reserved_51:
-          *string = "f_signal_reserved_51";
+          *string = fl_errors_string_signal_reserved_51;
           break;
         case f_signal_reserved_52:
-          *string = "f_signal_reserved_52";
+          *string = fl_errors_string_signal_reserved_52;
           break;
         case f_signal_reserved_53:
-          *string = "f_signal_reserved_53";
+          *string = fl_errors_string_signal_reserved_53;
           break;
         case f_signal_reserved_54:
-          *string = "f_signal_reserved_54";
+          *string = fl_errors_string_signal_reserved_54;
           break;
         case f_signal_reserved_55:
-          *string = "f_signal_reserved_55";
+          *string = fl_errors_string_signal_reserved_55;
           break;
         case f_signal_reserved_56:
-          *string = "f_signal_reserved_56";
+          *string = fl_errors_string_signal_reserved_56;
           break;
         case f_signal_reserved_57:
-          *string = "f_signal_reserved_57";
+          *string = fl_errors_string_signal_reserved_57;
           break;
         case f_signal_reserved_58:
-          *string = "f_signal_reserved_58";
+          *string = fl_errors_string_signal_reserved_58;
           break;
         case f_signal_reserved_59:
-          *string = "f_signal_reserved_59";
+          *string = fl_errors_string_signal_reserved_59;
           break;
         case f_signal_reserved_60:
-          *string = "f_signal_reserved_60";
+          *string = fl_errors_string_signal_reserved_60;
           break;
         case f_signal_reserved_61:
-          *string = "f_signal_reserved_61";
+          *string = fl_errors_string_signal_reserved_61;
           break;
         case f_signal_reserved_62:
-          *string = "f_signal_reserved_62";
+          *string = fl_errors_string_signal_reserved_62;
           break;
         case f_signal_reserved_63:
-          *string = "f_signal_reserved_63";
+          *string = fl_errors_string_signal_reserved_63;
           break;
         case f_signal_reserved_64:
-          *string = "f_signal_reserved_64";
+          *string = fl_errors_string_signal_reserved_64;
           break;
       #endif // _di_fl_errors_signals_
 
       #ifndef _di_fl_errors_basic_
         case f_none:
-          *string = "f_none";
+          *string = fl_errors_string_none;
           break;
         case f_maybe:
-          *string = "f_maybe";
+          *string = fl_errors_string_maybe;
           break;
         case f_dummy:
-          *string = "f_dummy";
+          *string = fl_errors_string_dummy;
           break;
         case f_warn:
-          *string = "f_warn";
+          *string = fl_errors_string_warn;
           break;
         case f_critical:
-          *string = "f_critical";
+          *string = fl_errors_string_critical;
           break;
         case f_unknown:
-          *string = "f_unknown";
+          *string = fl_errors_string_unknown;
           break;
         case f_unsupported:
-          *string = "f_unsupported";
+          *string = fl_errors_string_unsupported;
           break;
         case f_no_data:
-          *string = "f_no_data";
+          *string = fl_errors_string_no_data;
           break;
         case f_out_of_memory:
-          *string = "f_out_of_memory";
+          *string = fl_errors_string_out_of_memory;
           break;
         case f_input_error:
-          *string = "f_input_error";
+          *string = fl_errors_string_input_error;
           break;
         case f_output_error:
-          *string = "f_output_error";
+          *string = fl_errors_string_output_error;
           break;
         case f_input_output_error:
-          *string = "f_input_output_error";
+          *string = fl_errors_string_input_output_error;
           break;
         case f_does_not_exist:
-          *string = "f_does_not_exist";
+          *string = fl_errors_string_does_not_exist;
           break;
         case f_not_connected:
-          *string = "f_not_connected";
+          *string = fl_errors_string_not_connected;
           break;
         case f_failure:
-          *string = "f_failure";
+          *string = fl_errors_string_failure;
           break;
         case f_interrupted:
-          *string = "f_interrupted";
+          *string = fl_errors_string_interrupted;
           break;
         case f_loop:
-          *string = "f_loop";
+          *string = fl_errors_string_loop;
           break;
       #endif // _di_fl_errors_basic_
 
       #ifdef _di_fl_errors_invalid_
         case f_invalid:
-          *string = "f_invalid";
+          *string = fl_errors_string_invalid;
           break;
         case f_invalid_parameter:
-          *string = "f_invalid_parameter";
+          *string = fl_errors_string_invalid_parameter;
           break;
         case f_invalid_syntax:
-          *string = "f_invalid_syntax";
+          *string = fl_errors_string_invalid_syntax;
           break;
         case f_invalid_data:
-          *string = "f_invalid_data";
+          *string = fl_errors_string_invalid_data;
           break;
         case f_invalid_file:
-          *string = "f_invalid_file";
+          *string = fl_errors_string_invalid_file;
           break;
         case f_invalid_directory:
-          *string = "f_invalid_directory";
+          *string = fl_errors_string_invalid_directory;
           break;
         case f_invalid_socket:
-          *string = "f_invalid_socket";
+          *string = fl_errors_string_invalid_socket;
           break;
         case f_invalid_device:
-          *string = "f_invalid_device";
+          *string = fl_errors_string_invalid_device;
           break;
         case f_invalid_link:
-          *string = "f_invalid_link";
+          *string = fl_errors_string_invalid_link;
           break;
         case f_invalid_pipe:
-          *string = "f_invalid_pipe";
+          *string = fl_errors_string_invalid_pipe;
           break;
         case f_invalid_address:
-          *string = "f_invalid_address";
+          *string = fl_errors_string_invalid_address;
           break;
         case f_invalid_port:
-          *string = "f_invalid_port";
+          *string = fl_errors_string_invalid_port;
           break;
         case f_invalid_value:
-          *string = "f_invalid_value";
+          *string = fl_errors_string_invalid_value;
           break;
         case f_invalid_buffer:
-          *string = "f_invalid_buffer";
+          *string = fl_errors_string_invalid_buffer;
           break;
         case f_invalid_process:
-          *string = "f_invalid_process";
+          *string = fl_errors_string_invalid_process;
           break;
         case f_invalid_utf:
-          *string = "f_invalid_utf";
+          *string = fl_errors_string_invalid_utf;
+          break;
+        case f_invalid_on_eof:
+          *string = fl_errors_string_invalid_on_eof;
+          break;
+        case f_invalid_on_eol:
+          *string = fl_errors_string_invalid_on_eol;
+          break;
+        case f_invalid_on_eos:
+          *string = fl_errors_string_invalid_on_eos;
+          break;
+        case f_invalid_on_stop:
+          *string = fl_errors_string_invalid_on_stop;
           break;
       #endif // _di_fl_errors_invalid_
 
       #ifndef _di_fl_errors_busy_
         case f_busy:
-          *string = "f_busy";
+          *string = fl_errors_string_busy;
           break;
         case f_busy_address:
-          *string = "f_busy_address";
+          *string = fl_errors_string_busy_address;
           break;
         case f_busy_port:
-          *string = "f_busy_port";
+          *string = fl_errors_string_busy_port;
           break;
         case f_busy_socket:
-          *string = "f_busy_socket";
+          *string = fl_errors_string_busy_socket;
           break;
         case f_busy_device:
-          *string = "f_busy_device";
+          *string = fl_errors_string_busy_device;
           break;
         case f_busy_pipe:
-          *string = "f_busy_pipe";
+          *string = fl_errors_string_busy_pipe;
           break;
         case f_busy_buffer:
-          *string = "f_busy_buffer";
+          *string = fl_errors_string_busy_buffer;
           break;
         case f_busy_process:
-          *string = "f_busy_process";
+          *string = fl_errors_string_busy_process;
           break;
       #endif // _di_fl_errors_busy_
 
       #ifndef _di_fl_errors_unavailable_
         case f_unavailable:
-          *string = "f_unavailable";
+          *string = fl_errors_string_unavailable;
           break;
         case f_unavailable_address:
-          *string = "f_unavailable_address";
+          *string = fl_errors_string_unavailable_address;
           break;
         case f_unavailable_port:
-          *string = "f_unavailable_port";
+          *string = fl_errors_string_unavailable_port;
           break;
         case f_unavailable_socket:
-          *string = "f_unavailable_socket";
+          *string = fl_errors_string_unavailable_socket;
           break;
         case f_unavailable_device:
-          *string = "f_unavailable_device";
+          *string = fl_errors_string_unavailable_device;
           break;
         case f_unavailable_pipe:
-          *string = "f_unavailable_pipe";
+          *string = fl_errors_string_unavailable_pipe;
           break;
         case f_unavailable_buffer:
-          *string = "f_unavailable_buffer";
+          *string = fl_errors_string_unavailable_buffer;
           break;
         case f_unavailable_process:
-          *string = "f_unavailable_process";
+          *string = fl_errors_string_unavailable_process;
           break;
       #endif // _di_fl_errors_unavailable_
 
       #ifndef _di_fl_errors_digits_
         case f_underflow:
-          *string = "f_underflow";
+          *string = fl_errors_string_underflow;
           break;
         case f_overflow:
-          *string = "f_overflow";
+          *string = fl_errors_string_overflow;
           break;
         case f_divide_by_zero:
-          *string = "f_divide_by_zero";
+          *string = fl_errors_string_divide_by_zero;
           break;
         case f_cannot_be_negative:
-          *string = "f_cannot_be_negative";
+          *string = fl_errors_string_cannot_be_negative;
           break;
         case f_cannot_be_positive:
-          *string = "f_cannot_be_positive";
+          *string = fl_errors_string_cannot_be_positive;
           break;
         case f_cannot_be_zero:
-          *string = "f_cannot_be_zero";
+          *string = fl_errors_string_cannot_be_zero;
           break;
       #endif // _di_fl_errors_digits_
 
       #ifndef _di_fl_errors_buffers_
         case f_no_data_on_eof:
-          *string = "f_no_data_on_eof";
+          *string = fl_errors_string_no_data_on_eof;
           break;
         case f_no_data_on_eol:
-          *string = "f_no_data_on_eol";
+          *string = fl_errors_string_no_data_on_eol;
           break;
         case f_no_data_on_eos:
-          *string = "f_no_data_on_eos";
+          *string = fl_errors_string_no_data_on_eos;
           break;
         case f_no_data_on_stop:
-          *string = "f_no_data_on_stop";
+          *string = fl_errors_string_no_data_on_stop;
           break;
         case f_none_on_eof:
-          *string = "f_none_on_eof";
+          *string = fl_errors_string_none_on_eof;
           break;
         case f_none_on_eol:
-          *string = "f_none_on_eol";
+          *string = fl_errors_string_none_on_eol;
           break;
         case f_none_on_eos:
-          *string = "f_none_on_eos";
+          *string = fl_errors_string_none_on_eos;
           break;
         case f_none_on_stop:
-          *string = "f_none_on_stop";
+          *string = fl_errors_string_none_on_stop;
           break;
         case f_error_on_eof:
-          *string = "f_error_on_eof";
+          *string = fl_errors_string_error_on_eof;
           break;
         case f_error_on_eol:
-          *string = "f_error_on_eol";
+          *string = fl_errors_string_error_on_eol;
           break;
         case f_error_on_eos:
-          *string = "f_error_on_eos";
+          *string = fl_errors_string_error_on_eos;
           break;
         case f_error_on_stop:
-          *string = "f_error_on_stop";
+          *string = fl_errors_string_error_on_stop;
           break;
         case f_buffer_too_small:
-          *string = "f_buffer_too_small";
+          *string = fl_errors_string_buffer_too_small;
           break;
         case f_buffer_too_large:
-          *string = "f_buffer_too_large";
+          *string = fl_errors_string_buffer_too_large;
           break;
         case f_string_too_small:
-          *string = "f_string_too_small";
+          *string = fl_errors_string_string_too_small;
           break;
         case f_string_too_large:
-          *string = "f_string_too_large";
+          *string = fl_errors_string_string_too_large;
           break;
         case f_unterminated_nest:
-          *string = "f_unterminated_nest";
+          *string = fl_errors_string_unterminated_nest;
           break;
         case f_unterminated_nest_on_eof:
-          *string = "f_unterminated_nest_on_eof";
+          *string = fl_errors_string_unterminated_nest_on_eof;
           break;
         case f_unterminated_nest_on_eol:
-          *string = "f_unterminated_nest_on_eol";
+          *string = fl_errors_string_unterminated_nest_on_eol;
           break;
         case f_unterminated_nest_on_eos:
-          *string = "f_unterminated_nest_on_eos";
+          *string = fl_errors_string_unterminated_nest_on_eos;
           break;
         case f_unterminated_nest_on_stop:
-          *string = "f_unterminated_nest_on_stop";
+          *string = fl_errors_string_unterminated_nest_on_stop;
           break;
         case f_unterminated_group:
-          *string = "f_unterminated_group";
+          *string = fl_errors_string_unterminated_group;
           break;
         case f_unterminated_group_on_eof:
-          *string = "f_unterminated_group_on_eof";
+          *string = fl_errors_string_unterminated_group_on_eof;
           break;
         case f_unterminated_group_on_eol:
-          *string = "f_unterminated_group_on_eol";
+          *string = fl_errors_string_unterminated_group_on_eol;
           break;
         case f_unterminated_group_on_eos:
-          *string = "f_unterminated_group_on_eos";
+          *string = fl_errors_string_unterminated_group_on_eos;
           break;
         case f_unterminated_group_on_stop:
-          *string = "f_unterminated_group_on_stop";
+          *string = fl_errors_string_unterminated_group_on_stop;
           break;
         case f_incomplete_utf_on_eos:
-          *string = "f_incomplete_utf_on_eos";
+          *string = fl_errors_string_incomplete_utf_on_eos;
           break;
         case f_incomplete_utf_on_stop:
-          *string = "f_incomplete_utf_on_stop";
+          *string = fl_errors_string_incomplete_utf_on_stop;
           break;
       #endif // _di_fl_errors_buffers_
 
       #ifndef _di_fl_errors_allocation_
         case f_allocation_error:
-          *string = "f_allocation_error";
+          *string = fl_errors_string_allocation_error;
           break;
         case f_reallocation_error:
-          *string = "f_reallocation_error";
+          *string = fl_errors_string_reallocation_error;
           break;
       #endif // _di_fl_errors_allocation_
 
       #ifndef _di_fl_errors_fork_
         case f_fork_failed:
-          *string = "f_fork_failed";
+          *string = fl_errors_string_fork_failed;
           break;
         case f_too_many_processes:
-          *string = "f_too_many_processes";
+          *string = fl_errors_string_too_many_processes;
           break;
       #endif // _di_fl_errors_fork_
 
       #ifndef _di_fl_errors_file_
         case f_file_seek_error:
-          *string = "f_file_seek_error";
+          *string = fl_errors_string_file_seek_error;
           break;
         case f_file_read_error:
-          *string = "f_file_read_error";
+          *string = fl_errors_string_file_read_error;
           break;
         case f_file_write_error:
-          *string = "f_file_write_error";
+          *string = fl_errors_string_file_write_error;
           break;
         case f_file_flush_error:
-          *string = "f_file_flush_error";
+          *string = fl_errors_string_file_flush_error;
           break;
         case f_file_purge_error:
-          *string = "f_file_purge_error";
+          *string = fl_errors_string_file_purge_error;
           break;
         case f_file_open_error:
-          *string = "f_file_open_error";
+          *string = fl_errors_string_file_open_error;
           break;
         case f_file_close_error:
-          *string = "f_file_close_error";
+          *string = fl_errors_string_file_close_error;
           break;
         case f_file_synchronize_error:
-          *string = "f_file_synchronize_error";
+          *string = fl_errors_string_file_synchronize_error;
           break;
         case f_file_descriptor_error:
-          *string = "f_file_descriptor_error";
+          *string = fl_errors_string_file_descriptor_error;
           break;
         case f_file_not_found:
-          *string = "f_file_not_found";
+          *string = fl_errors_string_file_not_found;
           break;
         case f_file_found:
-          *string = "f_file_found";
+          *string = fl_errors_string_file_found;
           break;
         case f_file_is_empty:
-          *string = "f_file_is_empty";
+          *string = fl_errors_string_file_is_empty;
           break;
         case f_file_not_open:
-          *string = "f_file_not_open";
+          *string = fl_errors_string_file_not_open;
           break;
         case f_file_allocation_error:
-          *string = "f_file_allocation_error";
+          *string = fl_errors_string_file_allocation_error;
           break;
         case f_file_reallocation_error:
-          *string = "f_file_reallocation_error";
+          *string = fl_errors_string_file_reallocation_error;
           break;
         case f_file_stat_error:
-          *string = "f_file_stat_error";
+          *string = fl_errors_string_file_stat_error;
           break;
         case f_file_error:
-          *string = "f_file_error";
+          *string = fl_errors_string_file_error;
           break;
         case f_file_not_utf:
-          *string = "f_file_not_utf";
+          *string = fl_errors_string_file_not_utf;
           break;
       #endif // _di_fl_errors_file_
 
-      // most of these are a guess until I get around to researching & implementing linux directory I/O
       #ifndef _di_fl_errors_directory_
         case f_directory_read_error:
-          *string = "f_directory_read_error";
+          *string = fl_errors_string_directory_read_error;
           break;
         case f_directory_write_error:
-          *string = "f_directory_write_error";
+          *string = fl_errors_string_directory_write_error;
           break;
         case f_directory_flush_error:
-          *string = "f_directory_flush_error";
+          *string = fl_errors_string_directory_flush_error;
           break;
         case f_directory_purge_error:
-          *string = "f_directory_purge_error";
+          *string = fl_errors_string_directory_purge_error;
           break;
         case f_directory_open_error:
-          *string = "f_directory_open_error";
+          *string = fl_errors_string_directory_open_error;
           break;
         case f_directory_close_error:
-          *string = "f_directory_close_error";
+          *string = fl_errors_string_directory_close_error;
           break;
         case f_directory_synchronize_error:
-          *string = "f_directory_synchronize_error";
+          *string = fl_errors_string_directory_synchronize_error;
           break;
         case f_directory_descriptor_error:
-          *string = "f_directory_descriptor_error";
+          *string = fl_errors_string_directory_descriptor_error;
           break;
         case f_directory_not_found:
-          *string = "f_directory_not_found";
+          *string = fl_errors_string_directory_not_found;
           break;
         case f_directory_is_empty:
-          *string = "f_directory_is_empty";
+          *string = fl_errors_string_directory_is_empty;
           break;
         case f_directory_not_open:
-          *string = "f_directory_not_open";
+          *string = fl_errors_string_directory_not_open;
           break;
         case f_directory_allocation_error:
-          *string = "f_directory_allocation_error";
+          *string = fl_errors_string_directory_allocation_error;
           break;
         case f_directory_reallocation_error:
-          *string = "f_directory_reallocation_error";
+          *string = fl_errors_string_directory_reallocation_error;
           break;
         case f_directory_error:
-          *string = "f_directory_error";
+          *string = fl_errors_string_directory_error;
           break;
         case f_directory_not_utf:
-          *string = "f_directory_not_utf";
+          *string = fl_errors_string_directory_not_utf;
           break;
       #endif // _di_fl_errors_directory_
 
       #ifndef _di_fll_error_non_
         case f_less_than:
-          *string = "f_less_than";
+          *string = fl_errors_string_less_than;
           break;
         case f_equal_to:
-          *string = "f_equal_to";
+          *string = fl_errors_string_equal_to;
           break;
         case f_not_equal_to:
-          *string = "f_not_equal_to";
+          *string = fl_errors_string_not_equal_to;
           break;
         case f_greater_than:
-          *string = "f_greater_than";
+          *string = fl_errors_string_greater_than;
           break;
       #endif // _di_fl_errors_non_
 
       #ifndef _di_fl_errors_access_denied_
         case f_access_denied:
-          *string = "f_access_denied";
+          *string = fl_errors_string_access_denied;
           break;
         case f_access_denied_user:
-          *string = "f_access_denied_user";
+          *string = fl_errors_string_access_denied_user;
           break;
         case f_access_denied_group:
-          *string = "f_access_denied_group";
+          *string = fl_errors_string_access_denied_group;
           break;
         case f_access_denied_world:
-          *string = "f_access_denied_world";
+          *string = fl_errors_string_access_denied_world;
           break;
         case f_access_denied_read:
-          *string = "f_access_denied_read";
+          *string = fl_errors_string_access_denied_read;
           break;
         case f_access_denied_write:
-          *string = "f_access_denied_write";
+          *string = fl_errors_string_access_denied_write;
           break;
         case f_access_denied_execute:
-          *string = "f_access_denied_execute";
+          *string = fl_errors_string_access_denied_execute;
           break;
         case f_access_denied_super:
-          *string = "f_access_denied_super";
+          *string = fl_errors_string_access_denied_super;
           break;
       #endif // _di_fl_errors_access_denied_
 
       case f_last_error_code:
-        *string = "f_last_error_code";
+        *string = fl_errors_string_last_error_code;
         break;
 
       default:
index b7597f7e06789618c1c60ec62dcf93fb26356e4c..75d331fc649d8cc8ff6e910bf5818fdb0120f73b 100644 (file)
 #include <level_0/errors.h>
 #include <level_0/strings.h>
 #include <level_0/types.h>
+#include <level_0/utf.h>
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+#ifndef _di_fl_errors_string_
+  #ifndef _di_fll_errors_booleans_
+    #define fl_errors_string_false "f_false"
+    #define fl_errors_string_false_length 8
+
+    #define fl_errors_string_true "f_true"
+    #define fl_errors_string_true_length 7
+  #endif // _di_fll_errors_booleans_
+
+  #ifndef _di_fll_errors_signals_
+    #define fl_errors_string_signal_hangup "f_signal_hangup"
+    #define fl_errors_string_signal_hangup_length 16
+
+    #define fl_errors_string_signal_interrupt "f_signal_interrupt"
+    #define fl_errors_string_signal_interrupt_length 19
+
+    #define fl_errors_string_signal_quit "f_signal_quit"
+    #define fl_errors_string_signal_quit_length 14
+
+    #define fl_errors_string_signal_illegal "f_signal_illegal"
+    #define fl_errors_string_signal_illegal_length 17
+
+    #define fl_errors_string_signal_trap "f_signal_trap"
+    #define fl_errors_string_signal_trap_length 14
+
+    #define fl_errors_string_signal_abort "f_signal_abort"
+    #define fl_errors_string_signal_abort_length 15
+
+    #define fl_errors_string_signal_bus_error "f_signal_bus_error"
+    #define fl_errors_string_signal_bus_error_length 18
+
+    #define fl_errors_string_signal_floating_point_exception "f_signal_floating_point_exception"
+    #define fl_errors_string_signal_floating_point_exception_length 34
+
+    #define fl_errors_string_signal_kill "f_signal_kill"
+    #define fl_errors_string_signal_kill_length 14
+
+    #define fl_errors_string_signal_user_1 "f_signal_user_1"
+    #define fl_errors_string_signal_user_1_length 16
+
+    #define fl_errors_string_signal_segmentation_fault "f_signal_segmentation_fault"
+    #define fl_errors_string_signal_segmentation_fault_length 28
+
+    #define fl_errors_string_signal_user_2 "f_signal_user_2"
+    #define fl_errors_string_signal_user_2_length 16
+
+    #define fl_errors_string_signal_broken_pipe "f_signal_broken_pipe"
+    #define fl_errors_string_signal_broken_pipe_length 21
+
+    #define fl_errors_string_signal_alarm_clock "f_signal_alarm_clock"
+    #define fl_errors_string_signal_alarm_clock_length 21
+
+    #define fl_errors_string_signal_termination "f_signal_termination"
+    #define fl_errors_string_signal_termination_length 21
+
+    #define fl_errors_string_signal_stack_fault "f_signal_stack_fault"
+    #define fl_errors_string_signal_stack_fault_length 21
+
+    #define fl_errors_string_signal_child "f_signal_child"
+    #define fl_errors_string_signal_child_length 15
+
+    #define fl_errors_string_signal_continue "f_signal_continue"
+    #define fl_errors_string_signal_continue_length 18
+
+    #define fl_errors_string_signal_stop "f_signal_stop"
+    #define fl_errors_string_signal_stop_length 14
+
+    #define fl_errors_string_signal_keyboard_stop "f_signal_keyboard_stop"
+    #define fl_errors_string_signal_keyboard_stop_length 23
+
+    #define fl_errors_string_signal_tty_in "f_signal_tty_in"
+    #define fl_errors_string_signal_tty_in_length 16
+
+    #define fl_errors_string_signal_tty_out "f_signal_tty_out"
+    #define fl_errors_string_signal_tty_out_length 17
+
+    #define fl_errors_string_signal_urgent "f_signal_urgent"
+    #define fl_errors_string_signal_urgent_length 16
+
+    #define fl_errors_string_signal_cpu_limit "f_signal_cpu_limit"
+    #define fl_errors_string_signal_cpu_limit_length 19
+
+    #define fl_errors_string_signal_file_size_limit "f_signal_file_size_limit"
+    #define fl_errors_string_signal_file_size_limit_length 25
+
+    #define fl_errors_string_signal_virtual_alarm_clock "f_signal_virtual_alarm_clock"
+    #define fl_errors_string_signal_virtual_alarm_clock_length 29
+
+    #define fl_errors_string_signal_profile_alarm_clock "f_signal_profile_alarm_clock"
+    #define fl_errors_string_signal_profile_alarm_clock_length 29
+
+    #define fl_errors_string_signal_window_size_change "f_signal_window_size_change"
+    #define fl_errors_string_signal_window_size_change_length 28
+
+    #define fl_errors_string_signal_pollable_event "f_signal_pollable_event"
+    #define fl_errors_string_signal_pollable_event_length 24
+
+    #define fl_errors_string_signal_power_failure "f_signal_power_failure"
+    #define fl_errors_string_signal_power_failure_length 23
+
+    #define fl_errors_string_signal_bad_system_call "f_signal_bad_system_call"
+    #define fl_errors_string_signal_bad_system_call_length 25
+
+    #define fl_errors_string_signal_reserved_32 "f_signal_reserved_32"
+    #define fl_errors_string_signal_reserved_32_length 21
+
+    #define fl_errors_string_signal_reserved_33 "f_signal_reserved_33"
+    #define fl_errors_string_signal_reserved_33_length 21
+
+    #define fl_errors_string_signal_reserved_34 "f_signal_reserved_34"
+    #define fl_errors_string_signal_reserved_34_length 21
+
+    #define fl_errors_string_signal_reserved_35 "f_signal_reserved_35"
+    #define fl_errors_string_signal_reserved_35_length 21
+
+    #define fl_errors_string_signal_reserved_36 "f_signal_reserved_36"
+    #define fl_errors_string_signal_reserved_36_length 21
+
+    #define fl_errors_string_signal_reserved_37 "f_signal_reserved_37"
+    #define fl_errors_string_signal_reserved_37_length 21
+
+    #define fl_errors_string_signal_reserved_38 "f_signal_reserved_38"
+    #define fl_errors_string_signal_reserved_38_length 21
+
+    #define fl_errors_string_signal_reserved_39 "f_signal_reserved_39"
+    #define fl_errors_string_signal_reserved_39_length 21
+
+    #define fl_errors_string_signal_reserved_40 "f_signal_reserved_40"
+    #define fl_errors_string_signal_reserved_40_length 21
+
+    #define fl_errors_string_signal_reserved_41 "f_signal_reserved_41"
+    #define fl_errors_string_signal_reserved_41_length 21
+
+    #define fl_errors_string_signal_reserved_42 "f_signal_reserved_42"
+    #define fl_errors_string_signal_reserved_42_length 21
+
+    #define fl_errors_string_signal_reserved_43 "f_signal_reserved_43"
+    #define fl_errors_string_signal_reserved_43_length 21
+
+    #define fl_errors_string_signal_reserved_44 "f_signal_reserved_44"
+    #define fl_errors_string_signal_reserved_44_length 21
+
+    #define fl_errors_string_signal_reserved_45 "f_signal_reserved_45"
+    #define fl_errors_string_signal_reserved_45_length 21
+
+    #define fl_errors_string_signal_reserved_46 "f_signal_reserved_46"
+    #define fl_errors_string_signal_reserved_46_length 21
+
+    #define fl_errors_string_signal_reserved_47 "f_signal_reserved_47"
+    #define fl_errors_string_signal_reserved_47_length 21
+
+    #define fl_errors_string_signal_reserved_48 "f_signal_reserved_48"
+    #define fl_errors_string_signal_reserved_48_length 21
+
+    #define fl_errors_string_signal_reserved_49 "f_signal_reserved_49"
+    #define fl_errors_string_signal_reserved_49_length 21
+
+    #define fl_errors_string_signal_reserved_50 "f_signal_reserved_50"
+    #define fl_errors_string_signal_reserved_50_length 21
+
+    #define fl_errors_string_signal_reserved_51 "f_signal_reserved_51"
+    #define fl_errors_string_signal_reserved_51_length 21
+
+    #define fl_errors_string_signal_reserved_52 "f_signal_reserved_52"
+    #define fl_errors_string_signal_reserved_52_length 21
+
+    #define fl_errors_string_signal_reserved_53 "f_signal_reserved_53"
+    #define fl_errors_string_signal_reserved_53_length 21
+
+    #define fl_errors_string_signal_reserved_54 "f_signal_reserved_54"
+    #define fl_errors_string_signal_reserved_54_length 21
+
+    #define fl_errors_string_signal_reserved_55 "f_signal_reserved_55"
+    #define fl_errors_string_signal_reserved_55_length 21
+
+    #define fl_errors_string_signal_reserved_56 "f_signal_reserved_56"
+    #define fl_errors_string_signal_reserved_56_length 21
+
+    #define fl_errors_string_signal_reserved_57 "f_signal_reserved_57"
+    #define fl_errors_string_signal_reserved_57_length 21
+
+    #define fl_errors_string_signal_reserved_58 "f_signal_reserved_58"
+    #define fl_errors_string_signal_reserved_58_length 21
+
+    #define fl_errors_string_signal_reserved_59 "f_signal_reserved_59"
+    #define fl_errors_string_signal_reserved_59_length 21
+
+    #define fl_errors_string_signal_reserved_60 "f_signal_reserved_60"
+    #define fl_errors_string_signal_reserved_60_length 21
+
+    #define fl_errors_string_signal_reserved_61 "f_signal_reserved_61"
+    #define fl_errors_string_signal_reserved_61_length 21
+
+    #define fl_errors_string_signal_reserved_62 "f_signal_reserved_62"
+    #define fl_errors_string_signal_reserved_62_length 21
+
+    #define fl_errors_string_signal_reserved_63 "f_signal_reserved_63"
+    #define fl_errors_string_signal_reserved_63_length 21
+
+    #define fl_errors_string_signal_reserved_64 "f_signal_reserved_64"
+    #define fl_errors_string_signal_reserved_64_length 21
+  #endif // _di_fll_errors_signals_
+
+  #ifndef _di_fll_errors_basic_
+    #define fl_errors_string_none "f_none"
+    #define fl_errors_string_none_length 7
+
+    #define fl_errors_string_maybe "f_maybe"
+    #define fl_errors_string_maybe_length 8
+
+    #define fl_errors_string_dummy "f_dummy"
+    #define fl_errors_string_dummy_length 8
+
+    #define fl_errors_string_warn "f_warn"
+    #define fl_errors_string_warn_length 7
+
+    #define fl_errors_string_critical "f_critical"
+    #define fl_errors_string_critical_length 11
+
+    #define fl_errors_string_unknown "f_unknown"
+    #define fl_errors_string_unknown_length 10
+
+    #define fl_errors_string_unsupported "f_unsupported"
+    #define fl_errors_string_unsupported_length 14
+
+    #define fl_errors_string_no_data "f_no_data"
+    #define fl_errors_string_no_data_length 10
+
+    #define fl_errors_string_out_of_memory "f_out_of_memory"
+    #define fl_errors_string_out_of_memory_length 16
+
+    #define fl_errors_string_input_error "f_input_error"
+    #define fl_errors_string_input_error_length 14
+
+    #define fl_errors_string_output_error "f_output_error"
+    #define fl_errors_string_output_error_length 15
+
+    #define fl_errors_string_input_output_error "f_input_output_error"
+    #define fl_errors_string_input_output_error_length 21
+
+    #define fl_errors_string_does_not_exist "f_does_not_exist"
+    #define fl_errors_string_does_not_exist_length 17
+
+    #define fl_errors_string_not_connected "f_not_connected"
+    #define fl_errors_string_not_connected_length 16
+
+    #define fl_errors_string_failure "f_failure"
+    #define fl_errors_string_failure_length 10
+
+    #define fl_errors_string_interrupted "f_interrupted"
+    #define fl_errors_string_interrupted_length 14
+
+    #define fl_errors_string_loop "f_loop"
+    #define fl_errors_string_loop_length 7
+  #endif // _di_fll_errors_basic_
+
+  #ifndef _di_fll_errors_invalid_
+    #define fl_errors_string_invalid "f_invalid"
+    #define fl_errors_string_invalid_length 10
+
+    #define fl_errors_string_invalid_parameter "f_invalid_parameter"
+    #define fl_errors_string_invalid_parameter_length 20
+
+    #define fl_errors_string_invalid_syntax "f_invalid_syntax"
+    #define fl_errors_string_invalid_syntax_length 17
+
+    #define fl_errors_string_invalid_data "f_invalid_data"
+    #define fl_errors_string_invalid_data_length 15
+
+    #define fl_errors_string_invalid_file "f_invalid_file"
+    #define fl_errors_string_invalid_file_length 15
+
+    #define fl_errors_string_invalid_directory "f_invalid_directory"
+    #define fl_errors_string_invalid_directory_length 20
+
+    #define fl_errors_string_invalid_socket "f_invalid_socket"
+    #define fl_errors_string_invalid_socket_length 17
+
+    #define fl_errors_string_invalid_device "f_invalid_device"
+    #define fl_errors_string_invalid_device_length 17
+
+    #define fl_errors_string_invalid_link "f_invalid_link"
+    #define fl_errors_string_invalid_link_length 15
+
+    #define fl_errors_string_invalid_pipe "f_invalid_pipe"
+    #define fl_errors_string_invalid_pipe_length 15
+
+    #define fl_errors_string_invalid_address "f_invalid_address"
+    #define fl_errors_string_invalid_address_length 18
+
+    #define fl_errors_string_invalid_port "f_invalid_port"
+    #define fl_errors_string_invalid_port_length 15
+
+    #define fl_errors_string_invalid_value "f_invalid_value"
+    #define fl_errors_string_invalid_value_length 16
+
+    #define fl_errors_string_invalid_buffer "f_invalid_buffer"
+    #define fl_errors_string_invalid_buffer_length 17
+
+    #define fl_errors_string_invalid_process "f_invalid_process"
+    #define fl_errors_string_invalid_process_length 18
+
+    #define fl_errors_string_invalid_utf "f_invalid_utf"
+    #define fl_errors_string_invalid_utf_length 14
+
+    #define fl_errors_string_invalid_on_eof "f_invalid_on_eof"
+    #define fl_errors_string_invalid_on_eof_length 17
+
+    #define fl_errors_string_invalid_on_eol "f_invalid_on_eol"
+    #define fl_errors_string_invalid_on_eol_length 17
+
+    #define fl_errors_string_invalid_on_eos "f_invalid_on_eos"
+    #define fl_errors_string_invalid_on_eos_length 17
+
+    #define fl_errors_string_invalid_on_stop "f_invalid_on_stop"
+    #define fl_errors_string_invalid_on_stop_length 18
+  #endif // _di_fll_errors_invalid_
+
+  #ifndef _di_fll_errors_busy_
+    #define fl_errors_string_busy "f_busy"
+    #define fl_errors_string_busy_length 7
+
+    #define fl_errors_string_busy_address "f_busy_address"
+    #define fl_errors_string_busy_address_length 15
+
+    #define fl_errors_string_busy_port "f_busy_port"
+    #define fl_errors_string_busy_port_length 12
+
+    #define fl_errors_string_busy_socket "f_busy_socket"
+    #define fl_errors_string_busy_socket_length 14
+
+    #define fl_errors_string_busy_device "f_busy_device"
+    #define fl_errors_string_busy_device_length 14
+
+    #define fl_errors_string_busy_pipe "f_busy_pipe"
+    #define fl_errors_string_busy_pipe_length 12
+
+    #define fl_errors_string_busy_buffer "f_busy_buffer"
+    #define fl_errors_string_busy_buffer_length 14
+
+    #define fl_errors_string_busy_process "f_busy_process"
+    #define fl_errors_string_busy_process_length 15
+  #endif // _di_fll_errors_busy_
+
+  #ifndef _di_fll_errors_unavailable_
+    #define fl_errors_string_unavailable "f_unavailable"
+    #define fl_errors_string_unavailable_length 14
+
+    #define fl_errors_string_unavailable_address "f_unavailable_address"
+    #define fl_errors_string_unavailable_address_length 22
+
+    #define fl_errors_string_unavailable_port "f_unavailable_port"
+    #define fl_errors_string_unavailable_port_length 19
+
+    #define fl_errors_string_unavailable_socket "f_unavailable_socket"
+    #define fl_errors_string_unavailable_socket_length 21
+
+    #define fl_errors_string_unavailable_device "f_unavailable_device"
+    #define fl_errors_string_unavailable_device_length 21
+
+    #define fl_errors_string_unavailable_pipe "f_unavailable_pipe"
+    #define fl_errors_string_unavailable_pipe_length 19
+
+    #define fl_errors_string_unavailable_buffer "f_unavailable_buffer"
+    #define fl_errors_string_unavailable_buffer_length 21
+
+    #define fl_errors_string_unavailable_process "f_unavailable_process"
+    #define fl_errors_string_unavailable_process_length 22
+  #endif // _di_fll_errors_unavailable_
+
+  #ifndef _di_fll_errors_digits_
+    #define fl_errors_string_underflow "f_underflow"
+    #define fl_errors_string_underflow_length 12
+
+    #define fl_errors_string_overflow "f_overflow"
+    #define fl_errors_string_overflow_length 11
+
+    #define fl_errors_string_divide_by_zero "f_divide_by_zero"
+    #define fl_errors_string_divide_by_zero_length 17
+
+    #define fl_errors_string_cannot_be_negative "f_cannot_be_negative"
+    #define fl_errors_string_cannot_be_negative_length 21
+
+    #define fl_errors_string_cannot_be_positive "f_cannot_be_positive"
+    #define fl_errors_string_cannot_be_positive_length 21
+
+    #define fl_errors_string_cannot_be_zero "f_cannot_be_zero"
+    #define fl_errors_string_cannot_be_zero_length 17
+  #endif // _di_fll_errors_digits_
+
+  #ifndef _di_fll_errors_buffers_
+    #define fl_errors_string_no_data_on_eof "f_no_data_on_eof"
+    #define fl_errors_string_no_data_on_eof_length 17
+
+    #define fl_errors_string_no_data_on_eol "f_no_data_on_eol"
+    #define fl_errors_string_no_data_on_eol_length 17
+
+    #define fl_errors_string_no_data_on_eos "f_no_data_on_eos"
+    #define fl_errors_string_no_data_on_eos_length 17
+
+    #define fl_errors_string_none_on_eof "f_none_on_eof"
+    #define fl_errors_string_none_on_eof_length 14
+
+    #define fl_errors_string_no_data_on_stop "f_no_data_on_stop"
+    #define fl_errors_string_no_data_on_stop_length 18
+
+    #define fl_errors_string_none_on_eol "f_none_on_eol"
+    #define fl_errors_string_none_on_eol_length 14
+
+    #define fl_errors_string_none_on_eos "f_none_on_eos"
+    #define fl_errors_string_none_on_eos_length 14
+
+    #define fl_errors_string_none_on_stop "f_none_on_stop"
+    #define fl_errors_string_none_on_stop_length 15
+
+    #define fl_errors_string_error_on_eof "f_error_on_eof"
+    #define fl_errors_string_error_on_eof_length 15
+
+    #define fl_errors_string_error_on_eol "f_error_on_eol"
+    #define fl_errors_string_error_on_eol_length 15
+
+    #define fl_errors_string_error_on_eos "f_error_on_eos"
+    #define fl_errors_string_error_on_eos_length 15
+
+    #define fl_errors_string_error_on_stop "f_error_on_stop"
+    #define fl_errors_string_error_on_stop_length 16
+
+    #define fl_errors_string_buffer_too_small "f_buffer_too_small"
+    #define fl_errors_string_buffer_too_small_length 19
+
+    #define fl_errors_string_buffer_too_large "f_buffer_too_large"
+    #define fl_errors_string_buffer_too_large_length 19
+
+    #define fl_errors_string_string_too_small "f_string_too_small"
+    #define fl_errors_string_string_too_small_length 19
+
+    #define fl_errors_string_string_too_large "f_string_too_large"
+    #define fl_errors_string_string_too_large_length 19
+
+    #define fl_errors_string_unterminated_nest "f_unterminated_nest"
+    #define fl_errors_string_unterminated_nest_length 20
+
+    #define fl_errors_string_unterminated_nest_on_eof "f_unterminated_nest_on_eof"
+    #define fl_errors_string_unterminated_nest_on_eof_length 27
+
+    #define fl_errors_string_unterminated_nest_on_eol "f_unterminated_nest_on_eol"
+    #define fl_errors_string_unterminated_nest_on_eol_length 27
+
+    #define fl_errors_string_unterminated_nest_on_eos "f_unterminated_nest_on_eos"
+    #define fl_errors_string_unterminated_nest_on_eos_length 27
+
+    #define fl_errors_string_unterminated_nest_on_stop "f_unterminated_nest_on_stop"
+    #define fl_errors_string_unterminated_nest_on_stop_length 28
+
+    #define fl_errors_string_unterminated_group "f_unterminated_group"
+    #define fl_errors_string_unterminated_group_length 21
+
+    #define fl_errors_string_unterminated_group_on_eof "f_unterminated_group_on_eof"
+    #define fl_errors_string_unterminated_group_on_eof_length 28
+
+    #define fl_errors_string_unterminated_group_on_eol "f_unterminated_group_on_eol"
+    #define fl_errors_string_unterminated_group_on_eol_length 28
+
+    #define fl_errors_string_unterminated_group_on_eos "f_unterminated_group_on_eos"
+    #define fl_errors_string_unterminated_group_on_eos_length 28
+
+    #define fl_errors_string_unterminated_group_on_stop "f_unterminated_group_on_stop"
+    #define fl_errors_string_unterminated_group_on_stop_length 29
+
+    #define fl_errors_string_incomplete_utf_on_eos "f_incomplete_utf_on_eos"
+    #define fl_errors_string_incomplete_utf_on_eos_length 24
+
+    #define fl_errors_string_incomplete_utf_on_stop "f_incomplete_utf_on_stop"
+    #define fl_errors_string_incomplete_utf_on_stop_length 25
+  #endif // _di_fll_errors_buffers_
+
+  #ifndef _di_fll_errors_allocation_
+    #define fl_errors_string_allocation_error "f_allocation_error"
+    #define fl_errors_string_allocation_error_length 19
+
+    #define fl_errors_string_reallocation_error "f_reallocation_error"
+    #define fl_errors_string_reallocation_error_length 21
+  #endif // _di_fll_errors_allocation_
+
+  #ifndef _di_fll_errors_fork_
+    #define fl_errors_string_fork_failed "f_fork_failed"
+    #define fl_errors_string_fork_failed_length 14
+
+    #define fl_errors_string_too_many_processes "f_too_many_processes"
+    #define fl_errors_string_too_many_processes_length 21
+  #endif // _di_fll_errors_fork_
+
+  #ifndef _di_fll_errors_file_
+    #define fl_errors_string_file_seek_error "f_file_seek_error"
+    #define fl_errors_string_file_seek_error_length 18
+
+    #define fl_errors_string_file_read_error "f_file_read_error"
+    #define fl_errors_string_file_read_error_length 18
+
+    #define fl_errors_string_file_write_error "f_file_write_error"
+    #define fl_errors_string_file_write_error_length 19
+
+    #define fl_errors_string_file_flush_error "f_file_flush_error"
+    #define fl_errors_string_file_flush_error_length 19
+
+    #define fl_errors_string_file_purge_error "f_file_purge_error"
+    #define fl_errors_string_file_purge_error_length 19
+
+    #define fl_errors_string_file_open_error "f_file_open_error"
+    #define fl_errors_string_file_open_error_length 18
+
+    #define fl_errors_string_file_close_error "f_file_close_error"
+    #define fl_errors_string_file_close_error_length 19
+
+    #define fl_errors_string_file_synchronize_error "f_file_synchronize_error"
+    #define fl_errors_string_file_synchronize_error_length 25
+
+    #define fl_errors_string_file_descriptor_error "f_file_descriptor_error"
+    #define fl_errors_string_file_descriptor_error_length 24
+
+    #define fl_errors_string_file_not_found "f_file_not_found"
+    #define fl_errors_string_file_not_found_length 17
+
+    #define fl_errors_string_file_found "f_file_found"
+    #define fl_errors_string_file_found_length 13
+
+    #define fl_errors_string_file_is_empty "f_file_is_empty"
+    #define fl_errors_string_file_is_empty_length 16
+
+    #define fl_errors_string_file_not_open "f_file_not_open"
+    #define fl_errors_string_file_not_open_length 16
+
+    #define fl_errors_string_file_allocation_error "f_file_allocation_error"
+    #define fl_errors_string_file_allocation_error_length 24
+
+    #define fl_errors_string_file_reallocation_error "f_file_reallocation_error"
+    #define fl_errors_string_file_reallocation_error_length 26
+
+    #define fl_errors_string_file_stat_error "f_file_stat_error"
+    #define fl_errors_string_file_stat_error_length 18
+
+    #define fl_errors_string_file_error "f_file_error"
+    #define fl_errors_string_file_error_length 13
+
+    #define fl_errors_string_file_not_utf "f_file_not_utf"
+    #define fl_errors_string_file_not_utf_length 15
+  #endif // _di_fll_errors_file_
+
+  #ifndef _di_fll_errors_directory_
+    #define fl_errors_string_directory_read_error "f_directory_read_error"
+    #define fl_errors_string_directory_read_error_length 23
+
+    #define fl_errors_string_directory_write_error "f_directory_write_error"
+    #define fl_errors_string_directory_write_error_length 24
+
+    #define fl_errors_string_directory_flush_error "f_directory_flush_error"
+    #define fl_errors_string_directory_flush_error_length 24
+
+    #define fl_errors_string_directory_purge_error "f_directory_purge_error"
+    #define fl_errors_string_directory_purge_error_length 24
+
+    #define fl_errors_string_directory_open_error "f_directory_open_error"
+    #define fl_errors_string_directory_open_error_length 23
+
+    #define fl_errors_string_directory_close_error "f_directory_close_error"
+    #define fl_errors_string_directory_close_error_length 24
+
+    #define fl_errors_string_directory_synchronize_error "f_directory_synchronize_error"
+    #define fl_errors_string_directory_synchronize_error_length 30
+
+    #define fl_errors_string_directory_descriptor_error "f_directory_descriptor_error"
+    #define fl_errors_string_directory_descriptor_error_length 29
+
+    #define fl_errors_string_directory_not_found "f_directory_not_found"
+    #define fl_errors_string_directory_not_found_length 22
+
+    #define fl_errors_string_directory_is_empty "f_directory_is_empty"
+    #define fl_errors_string_directory_is_empty_length 21
+
+    #define fl_errors_string_directory_not_open "f_directory_not_open"
+    #define fl_errors_string_directory_not_open_length 21
+
+    #define fl_errors_string_directory_allocation_error "f_directory_allocation_error"
+    #define fl_errors_string_directory_allocation_error_length 29
+
+    #define fl_errors_string_directory_reallocation_error "f_directory_reallocation_error"
+    #define fl_errors_string_directory_reallocation_error_length 31
+
+    #define fl_errors_string_directory_error "f_directory_error"
+    #define fl_errors_string_directory_error_length 18
+
+    #define fl_errors_string_directory_not_utf "f_directory_not_utf"
+    #define fl_errors_string_directory_not_utf_length 20
+  #endif // _di_fll_errors_directory_
+
+  #ifndef _di_fll_errors_socket_
+    #define fl_errors_string_socket_connection_client_error "f_socket_connection_client_error"
+    #define fl_errors_string_socket_connection_client_error_length 33
+
+    #define fl_errors_string_socket_connection_target_error "f_socket_connection_target_error"
+    #define fl_errors_string_socket_connection_target_error_length 33
+
+    #define fl_errors_string_socket_receive_error "f_socket_receive_error"
+    #define fl_errors_string_socket_receive_error_length 23
+
+    #define fl_errors_string_socket_send_error "f_socket_send_error"
+    #define fl_errors_string_socket_send_error_length 20
+  #endif // _di_fll_errors_socket_
+
+  #ifndef _di_fll_errors_non_
+    #define fl_errors_string_less_than "f_less_than"
+    #define fl_errors_string_less_than_length 12
+
+    #define fl_errors_string_equal_to "f_equal_to"
+    #define fl_errors_string_equal_to_length 11
+
+    #define fl_errors_string_not_equal_to "f_not_equal_to"
+    #define fl_errors_string_not_equal_to_length 15
+
+    #define fl_errors_string_greater_than "f_greater_than"
+    #define fl_errors_string_greater_than_length 15
+  #endif // _di_fll_errors_non_
+
+  #ifndef _di_fll_errors_access_denied_
+    #define fl_errors_string_access_denied "f_access_denied"
+    #define fl_errors_string_access_denied_length 16
+
+    #define fl_errors_string_access_denied_user "f_access_denied_user"
+    #define fl_errors_string_access_denied_user_length 21
+
+    #define fl_errors_string_access_denied_group "f_access_denied_group"
+    #define fl_errors_string_access_denied_group_length 22
+
+    #define fl_errors_string_access_denied_world "f_access_denied_world"
+    #define fl_errors_string_access_denied_world_length 22
+
+    #define fl_errors_string_access_denied_read "f_access_denied_read"
+    #define fl_errors_string_access_denied_read_length 21
+
+    #define fl_errors_string_access_denied_write "f_access_denied_write"
+    #define fl_errors_string_access_denied_write_length 22
+
+    #define fl_errors_string_access_denied_execute "f_access_denied_execute"
+    #define fl_errors_string_access_denied_execute_length 24
+
+    #define fl_errors_string_access_denied_super "f_access_denied_super"
+    #define fl_errors_string_access_denied_super_length 22
+  #endif // _di_fll_errors_access_denied_
+
+  #define fl_errors_string_last_error_code "f_last_error_code"
+  #define fl_errors_string_last_error_code_length 18
+#endif // _di_fl_errors_string_
+
+/**
+ * Convert error codes to their string representation.
+ *
+ * The error, warning, and signal bits are ignored.
+ *
+ * @param error
+ *   The error code to process.
+ * @param string
+ *   The processed error code.
+ *
+ * @return
+ *   f_none on success.
+ *   f_invalid_data if there status is unknown.
+ *   f_invalid_parameter (with error bit) if a parameter is invalid.
+ */
 #ifndef _di_fl_errors_to_string_
-  /**
-   * Convert error codes to their string equivalents.
-   */
   extern f_return_status fl_errors_to_string(const f_status error, f_string *string);
 #endif // _di_fl_errors_to_string_
 
index 90e12bc50925d49367a22b4c528800bc67934a3f..adbaa10a64988bca48c08c6d3a655a29deba6c39 100644 (file)
@@ -1,3 +1,4 @@
 f_types
 f_errors
 f_strings
+f_utf
index 42d15a31073de3f3d1d45f5e1f41f56672751c6a..5bb293c742b864571288d0b83db9e6d93674a843 100644 (file)
@@ -9,10 +9,10 @@ version_micro 0
 
 build_compiler gcc
 build_linker ar
-build_libraries -lc 
+build_libraries -lc
 build_libraries_fll
 build_sources_library errors.c
-build_sources_program 
+build_sources_program
 build_sources_headers errors.h
 build_sources_bash
 build_sources_settings
index e9002801c3bb8b6c4984f02d7379aaa0582743c9..1a13404400974ed3368266057c7fe398e32cef44 100644 (file)
@@ -50,6 +50,8 @@ enum {
     fl_fss_found_no_content,
     fl_fss_found_object_no_content, // for the case where an object is found but no content could possibly exist
   #endif // _di_fl_fss_errors_success_
+
+  fl_fss_last_error_code,
 }; // enum
 
 #ifdef __cplusplus
index 7d0693b06a8a710281827f1f6cb27289e63069b4..41ae6af816518ca09c88f2bc973d5226c5012b42 100644 (file)
@@ -1,5 +1,5 @@
-f_errors
 f_types
+f_errors
 f_memory
 f_strings
 f_utf
diff --git a/level_2/fll_errors/c/errors.c b/level_2/fll_errors/c/errors.c
new file mode 100644 (file)
index 0000000..f0e1d3c
--- /dev/null
@@ -0,0 +1,1087 @@
+#include <level_2/errors.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _di_fll_errors_from_string_
+  f_return_status fll_errors_from_string(const f_string string, f_status *error) {
+    #ifndef _di_level_1_parameter_checking_
+      if (error == 0) return f_error_set_error(f_invalid_parameter);
+    #endif // _di_level_1_parameter_checking_
+
+    f_status status = f_none;
+    f_string_length length = strlen(string);
+
+    #ifndef _di_fll_errors_booleans_
+      if (fl_compare_strings(string, fl_errors_string_false, length, fl_errors_string_false_length) == f_equal_to) {
+        *error = f_false;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_true, length, fl_errors_string_true_length) == f_equal_to) {
+        *error = f_true;
+        return f_none;
+      }
+    #endif // _di_fll_errors_booleans_
+
+    #ifndef _di_fll_errors_signals_
+      if (fl_compare_strings(string, fl_errors_string_signal_hangup, length, fl_errors_string_signal_hangup_length) == f_equal_to) {
+        *error = f_signal_hangup;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_interrupt, length, fl_errors_string_signal_interrupt_length) == f_equal_to) {
+        *error = f_signal_interrupt;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_quit, length, fl_errors_string_signal_quit_length) == f_equal_to) {
+        *error = f_signal_quit;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_illegal, length, fl_errors_string_signal_illegal_length) == f_equal_to) {
+        *error = f_signal_illegal;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_trap, length, fl_errors_string_signal_trap_length) == f_equal_to) {
+        *error = f_signal_trap;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_abort, length, fl_errors_string_signal_abort_length) == f_equal_to) {
+        *error = f_signal_abort;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_bus_error, length, fl_errors_string_signal_bus_error_length) == f_equal_to) {
+        *error = f_signal_bus_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_floating_point_exception, length, fl_errors_string_signal_floating_point_exception_length) == f_equal_to) {
+        *error = f_signal_floating_point_exception;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_kill, length, fl_errors_string_signal_kill_length) == f_equal_to) {
+        *error = f_signal_kill;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_user_1, length, fl_errors_string_signal_user_1_length) == f_equal_to) {
+        *error = f_signal_user_1;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_segmentation_fault, length, fl_errors_string_signal_segmentation_fault_length) == f_equal_to) {
+        *error = f_signal_segmentation_fault;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_user_2, length, fl_errors_string_signal_user_2_length) == f_equal_to) {
+        *error = f_signal_user_2;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_broken_pipe, length, fl_errors_string_signal_broken_pipe_length) == f_equal_to) {
+        *error = f_signal_broken_pipe;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_alarm_clock, length, fl_errors_string_signal_alarm_clock_length) == f_equal_to) {
+        *error = f_signal_alarm_clock;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_termination, length, fl_errors_string_signal_termination_length) == f_equal_to) {
+        *error = f_signal_termination;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_stack_fault, length, fl_errors_string_signal_stack_fault_length) == f_equal_to) {
+        *error = f_signal_stack_fault;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_child, length, fl_errors_string_signal_child_length) == f_equal_to) {
+        *error = f_signal_child;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_continue, length, fl_errors_string_signal_continue_length) == f_equal_to) {
+        *error = f_signal_continue;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_stop, length, fl_errors_string_signal_stop_length) == f_equal_to) {
+        *error = f_signal_stop;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_keyboard_stop, length, fl_errors_string_signal_keyboard_stop_length) == f_equal_to) {
+        *error = f_signal_keyboard_stop;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_tty_in, length, fl_errors_string_signal_tty_in_length) == f_equal_to) {
+        *error = f_signal_tty_in;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_tty_out, length, fl_errors_string_signal_tty_out_length) == f_equal_to) {
+        *error = f_signal_tty_out;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_urgent, length, fl_errors_string_signal_urgent_length) == f_equal_to) {
+        *error = f_signal_urgent;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_cpu_limit, length, fl_errors_string_signal_cpu_limit_length) == f_equal_to) {
+        *error = f_signal_cpu_limit;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_file_size_limit, length, fl_errors_string_signal_file_size_limit_length) == f_equal_to) {
+        *error = f_signal_file_size_limit;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_virtual_alarm_clock, length, fl_errors_string_signal_virtual_alarm_clock_length) == f_equal_to) {
+        *error = f_signal_virtual_alarm_clock;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_profile_alarm_clock, length, fl_errors_string_signal_profile_alarm_clock_length) == f_equal_to) {
+        *error = f_signal_profile_alarm_clock;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_window_size_change, length, fl_errors_string_signal_window_size_change_length) == f_equal_to) {
+        *error = f_signal_window_size_change;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_pollable_event, length, fl_errors_string_signal_pollable_event_length) == f_equal_to) {
+        *error = f_signal_pollable_event;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_power_failure, length, fl_errors_string_signal_power_failure_length) == f_equal_to) {
+        *error = f_signal_power_failure;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_bad_system_call, length, fl_errors_string_signal_bad_system_call_length) == f_equal_to) {
+        *error = f_signal_bad_system_call;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_32, length, fl_errors_string_signal_reserved_32_length) == f_equal_to) {
+        *error = f_signal_reserved_32;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_33, length, fl_errors_string_signal_reserved_33_length) == f_equal_to) {
+        *error = f_signal_reserved_33;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_34, length, fl_errors_string_signal_reserved_34_length) == f_equal_to) {
+        *error = f_signal_reserved_34;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_35, length, fl_errors_string_signal_reserved_35_length) == f_equal_to) {
+        *error = f_signal_reserved_35;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_36, length, fl_errors_string_signal_reserved_36_length) == f_equal_to) {
+        *error = f_signal_reserved_36;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_37, length, fl_errors_string_signal_reserved_37_length) == f_equal_to) {
+        *error = f_signal_reserved_37;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_38, length, fl_errors_string_signal_reserved_38_length) == f_equal_to) {
+        *error = f_signal_reserved_38;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_39, length, fl_errors_string_signal_reserved_39_length) == f_equal_to) {
+        *error = f_signal_reserved_39;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_40, length, fl_errors_string_signal_reserved_40_length) == f_equal_to) {
+        *error = f_signal_reserved_40;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_41, length, fl_errors_string_signal_reserved_41_length) == f_equal_to) {
+        *error = f_signal_reserved_41;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_42, length, fl_errors_string_signal_reserved_42_length) == f_equal_to) {
+        *error = f_signal_reserved_42;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_43, length, fl_errors_string_signal_reserved_43_length) == f_equal_to) {
+        *error = f_signal_reserved_43;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_44, length, fl_errors_string_signal_reserved_44_length) == f_equal_to) {
+        *error = f_signal_reserved_44;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_45, length, fl_errors_string_signal_reserved_45_length) == f_equal_to) {
+        *error = f_signal_reserved_45;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_46, length, fl_errors_string_signal_reserved_46_length) == f_equal_to) {
+        *error = f_signal_reserved_46;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_47, length, fl_errors_string_signal_reserved_47_length) == f_equal_to) {
+        *error = f_signal_reserved_47;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_48, length, fl_errors_string_signal_reserved_48_length) == f_equal_to) {
+        *error = f_signal_reserved_48;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_49, length, fl_errors_string_signal_reserved_49_length) == f_equal_to) {
+        *error = f_signal_reserved_49;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_50, length, fl_errors_string_signal_reserved_50_length) == f_equal_to) {
+        *error = f_signal_reserved_50;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_51, length, fl_errors_string_signal_reserved_51_length) == f_equal_to) {
+        *error = f_signal_reserved_51;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_52, length, fl_errors_string_signal_reserved_52_length) == f_equal_to) {
+        *error = f_signal_reserved_52;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_53, length, fl_errors_string_signal_reserved_53_length) == f_equal_to) {
+        *error = f_signal_reserved_53;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_54, length, fl_errors_string_signal_reserved_54_length) == f_equal_to) {
+        *error = f_signal_reserved_54;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_55, length, fl_errors_string_signal_reserved_55_length) == f_equal_to) {
+        *error = f_signal_reserved_55;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_56, length, fl_errors_string_signal_reserved_56_length) == f_equal_to) {
+        *error = f_signal_reserved_56;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_57, length, fl_errors_string_signal_reserved_57_length) == f_equal_to) {
+        *error = f_signal_reserved_57;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_58, length, fl_errors_string_signal_reserved_58_length) == f_equal_to) {
+        *error = f_signal_reserved_58;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_59, length, fl_errors_string_signal_reserved_59_length) == f_equal_to) {
+        *error = f_signal_reserved_59;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_60, length, fl_errors_string_signal_reserved_60_length) == f_equal_to) {
+        *error = f_signal_reserved_60;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_61, length, fl_errors_string_signal_reserved_61_length) == f_equal_to) {
+        *error = f_signal_reserved_61;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_62, length, fl_errors_string_signal_reserved_62_length) == f_equal_to) {
+        *error = f_signal_reserved_62;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_63, length, fl_errors_string_signal_reserved_63_length) == f_equal_to) {
+        *error = f_signal_reserved_63;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_signal_reserved_64, length, fl_errors_string_signal_reserved_64_length) == f_equal_to) {
+        *error = f_signal_reserved_64;
+        return f_none;
+      }
+    #endif // _di_fll_errors_signals_
+
+    #ifndef _di_fll_errors_basic_
+      if (fl_compare_strings(string, fl_errors_string_none, length, fl_errors_string_none_length) == f_equal_to) {
+        *error = f_none;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_maybe, length, fl_errors_string_maybe_length) == f_equal_to) {
+        *error = f_maybe;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_dummy, length, fl_errors_string_dummy_length) == f_equal_to) {
+        *error = f_dummy;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_warn, length, fl_errors_string_warn_length) == f_equal_to) {
+        *error = f_warn;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_critical, length, fl_errors_string_critical_length) == f_equal_to) {
+        *error = f_critical;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_unknown, length, fl_errors_string_unknown_length) == f_equal_to) {
+        *error = f_unknown;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_unsupported, length, fl_errors_string_unsupported_length) == f_equal_to) {
+        *error = f_unsupported;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_no_data, length, fl_errors_string_no_data_length) == f_equal_to) {
+        *error = f_no_data;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_out_of_memory, length, fl_errors_string_out_of_memory_length) == f_equal_to) {
+        *error = f_out_of_memory;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_input_error, length, fl_errors_string_input_error_length) == f_equal_to) {
+        *error = f_input_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_output_error, length, fl_errors_string_output_error_length) == f_equal_to) {
+        *error = f_output_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_input_output_error, length, fl_errors_string_input_output_error_length) == f_equal_to) {
+        *error = f_input_output_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_does_not_exist, length, fl_errors_string_does_not_exist_length) == f_equal_to) {
+        *error = f_does_not_exist;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_not_connected, length, fl_errors_string_not_connected_length) == f_equal_to) {
+        *error = f_not_connected;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_failure, length, fl_errors_string_failure_length) == f_equal_to) {
+        *error = f_failure;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_interrupted, length, fl_errors_string_interrupted_length) == f_equal_to) {
+        *error = f_interrupted;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_loop, length, fl_errors_string_loop_length) == f_equal_to) {
+        *error = f_loop;
+        return f_none;
+      }
+    #endif // _di_fll_errors_basic_
+
+    #ifndef _di_fll_errors_invalid_
+      if (fl_compare_strings(string, fl_errors_string_invalid, length, fl_errors_string_invalid_length) == f_equal_to) {
+        *error = f_invalid;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_invalid_parameter, length, fl_errors_string_invalid_parameter_length) == f_equal_to) {
+        *error = f_invalid_parameter;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_invalid_syntax, length, fl_errors_string_invalid_syntax_length) == f_equal_to) {
+        *error = f_invalid_syntax;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_invalid_data, length, fl_errors_string_invalid_data_length) == f_equal_to) {
+        *error = f_invalid_data;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_invalid_file, length, fl_errors_string_invalid_file_length) == f_equal_to) {
+        *error = f_invalid_file;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_invalid_directory, length, fl_errors_string_invalid_directory_length) == f_equal_to) {
+        *error = f_invalid_directory;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_invalid_socket, length, fl_errors_string_invalid_socket_length) == f_equal_to) {
+        *error = f_invalid_socket;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_invalid_device, length, fl_errors_string_invalid_device_length) == f_equal_to) {
+        *error = f_invalid_device;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_invalid_link, length, fl_errors_string_invalid_link_length) == f_equal_to) {
+        *error = f_invalid_link;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_invalid_pipe, length, fl_errors_string_invalid_pipe_length) == f_equal_to) {
+        *error = f_invalid_pipe;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_invalid_address, length, fl_errors_string_invalid_address_length) == f_equal_to) {
+        *error = f_invalid_address;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_invalid_port, length, fl_errors_string_invalid_port_length) == f_equal_to) {
+        *error = f_invalid_port;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_invalid_value, length, fl_errors_string_invalid_value_length) == f_equal_to) {
+        *error = f_invalid_value;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_invalid_buffer, length, fl_errors_string_invalid_buffer_length) == f_equal_to) {
+        *error = f_invalid_buffer;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_invalid_process, length, fl_errors_string_invalid_process_length) == f_equal_to) {
+        *error = f_invalid_process;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_invalid_utf, length, fl_errors_string_invalid_utf_length) == f_equal_to) {
+        *error = f_invalid_utf;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_invalid_on_eof, length, fl_errors_string_invalid_on_eof_length) == f_equal_to) {
+        *error = f_invalid_on_eof;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_invalid_on_eol, length, fl_errors_string_invalid_on_eol_length) == f_equal_to) {
+        *error = f_invalid_on_eol;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_invalid_on_eos, length, fl_errors_string_invalid_on_eos_length) == f_equal_to) {
+        *error = f_invalid_on_eos;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_invalid_on_stop, length, fl_errors_string_invalid_on_stop_length) == f_equal_to) {
+        *error = f_invalid_on_stop;
+        return f_none;
+      }
+    #endif // _di_fll_errors_invalid_
+
+    #ifndef _di_fll_errors_busy_
+      if (fl_compare_strings(string, fl_errors_string_busy, length, fl_errors_string_busy_length) == f_equal_to) {
+        *error = f_busy;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_busy_address, length, fl_errors_string_busy_address_length) == f_equal_to) {
+        *error = f_busy_address;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_busy_port, length, fl_errors_string_busy_port_length) == f_equal_to) {
+        *error = f_busy_port;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_busy_socket, length, fl_errors_string_busy_socket_length) == f_equal_to) {
+        *error = f_busy_socket;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_busy_device, length, fl_errors_string_busy_device_length) == f_equal_to) {
+        *error = f_busy_device;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_busy_pipe, length, fl_errors_string_busy_pipe_length) == f_equal_to) {
+        *error = f_busy_pipe;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_busy_buffer, length, fl_errors_string_busy_buffer_length) == f_equal_to) {
+        *error = f_busy_buffer;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_busy_process, length, fl_errors_string_busy_process_length) == f_equal_to) {
+        *error = f_busy_process;
+        return f_none;
+      }
+    #endif // _di_fll_errors_busy_
+
+    #ifndef _di_fll_errors_unavailable_
+      if (fl_compare_strings(string, fl_errors_string_unavailable, length, fl_errors_string_unavailable_length) == f_equal_to) {
+        *error = f_unavailable;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_unavailable_address, length, fl_errors_string_unavailable_address_length) == f_equal_to) {
+        *error = f_unavailable_address;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_unavailable_port, length, fl_errors_string_unavailable_port_length) == f_equal_to) {
+        *error = f_unavailable_port;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_unavailable_socket, length, fl_errors_string_unavailable_socket_length) == f_equal_to) {
+        *error = f_unavailable_socket;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_unavailable_device, length, fl_errors_string_unavailable_device_length) == f_equal_to) {
+        *error = f_unavailable_device;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_unavailable_pipe, length, fl_errors_string_unavailable_pipe_length) == f_equal_to) {
+        *error = f_unavailable_pipe;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_unavailable_buffer, length, fl_errors_string_unavailable_buffer_length) == f_equal_to) {
+        *error = f_unavailable_buffer;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_unavailable_process, length, fl_errors_string_unavailable_process_length) == f_equal_to) {
+        *error = f_unavailable_process;
+        return f_none;
+      }
+    #endif // _di_fll_errors_unavailable_
+
+    #ifndef _di_fll_errors_digits_
+      if (fl_compare_strings(string, fl_errors_string_underflow, length, fl_errors_string_underflow_length) == f_equal_to) {
+        *error = f_underflow;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_overflow, length, fl_errors_string_overflow_length) == f_equal_to) {
+        *error = f_overflow;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_divide_by_zero, length, fl_errors_string_divide_by_zero_length) == f_equal_to) {
+        *error = f_divide_by_zero;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_cannot_be_negative, length, fl_errors_string_cannot_be_negative_length) == f_equal_to) {
+        *error = f_cannot_be_negative;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_cannot_be_positive, length, fl_errors_string_cannot_be_positive_length) == f_equal_to) {
+        *error = f_cannot_be_positive;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_cannot_be_zero, length, fl_errors_string_cannot_be_zero_length) == f_equal_to) {
+        *error = f_cannot_be_zero;
+        return f_none;
+      }
+    #endif // _di_fll_errors_digits_
+
+    #ifndef _di_fll_errors_buffers_
+      if (fl_compare_strings(string, fl_errors_string_no_data_on_eof, length, fl_errors_string_no_data_on_eof_length) == f_equal_to) {
+        *error = f_no_data_on_eof;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_no_data_on_eol, length, fl_errors_string_no_data_on_eol_length) == f_equal_to) {
+        *error = f_no_data_on_eol;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_no_data_on_eos, length, fl_errors_string_no_data_on_eos_length) == f_equal_to) {
+        *error = f_no_data_on_eos;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_no_data_on_stop, length, fl_errors_string_no_data_on_stop_length) == f_equal_to) {
+        *error = f_no_data_on_stop;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_none_on_eof, length, fl_errors_string_none_on_eof_length) == f_equal_to) {
+        *error = f_none_on_eof;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_none_on_eol, length, fl_errors_string_none_on_eol_length) == f_equal_to) {
+        *error = f_none_on_eol;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_none_on_eos, length, fl_errors_string_none_on_eos_length) == f_equal_to) {
+        *error = f_none_on_eos;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_none_on_stop, length, fl_errors_string_none_on_stop_length) == f_equal_to) {
+        *error = f_none_on_stop;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_error_on_eof, length, fl_errors_string_error_on_eof_length) == f_equal_to) {
+        *error = f_error_on_eof;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_error_on_eol, length, fl_errors_string_error_on_eol_length) == f_equal_to) {
+        *error = f_error_on_eol;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_error_on_eos, length, fl_errors_string_error_on_eos_length) == f_equal_to) {
+        *error = f_error_on_eos;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_error_on_stop, length, fl_errors_string_error_on_stop_length) == f_equal_to) {
+        *error = f_error_on_stop;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_buffer_too_small, length, fl_errors_string_buffer_too_small_length) == f_equal_to) {
+        *error = f_buffer_too_small;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_buffer_too_large, length, fl_errors_string_buffer_too_large_length) == f_equal_to) {
+        *error = f_buffer_too_large;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_string_too_small, length, fl_errors_string_string_too_small_length) == f_equal_to) {
+        *error = f_string_too_small;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_string_too_large, length, fl_errors_string_string_too_large_length) == f_equal_to) {
+        *error = f_string_too_large;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_unterminated_nest, length, fl_errors_string_unterminated_nest_length) == f_equal_to) {
+        *error = f_unterminated_nest;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_unterminated_nest_on_eof, length, fl_errors_string_unterminated_nest_on_eof_length) == f_equal_to) {
+        *error = f_unterminated_nest_on_eof;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_unterminated_nest_on_eol, length, fl_errors_string_unterminated_nest_on_eol_length) == f_equal_to) {
+        *error = f_unterminated_nest_on_eol;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_unterminated_nest_on_eos, length, fl_errors_string_unterminated_nest_on_eos_length) == f_equal_to) {
+        *error = f_unterminated_nest_on_eos;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_unterminated_nest_on_stop, length, fl_errors_string_unterminated_nest_on_stop_length) == f_equal_to) {
+        *error = f_unterminated_nest_on_stop;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_unterminated_group, length, fl_errors_string_unterminated_group_length) == f_equal_to) {
+        *error = f_unterminated_group;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_unterminated_group_on_eof, length, fl_errors_string_unterminated_group_on_eof_length) == f_equal_to) {
+        *error = f_unterminated_group_on_eof;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_unterminated_group_on_eol, length, fl_errors_string_unterminated_group_on_eol_length) == f_equal_to) {
+        *error = f_unterminated_group_on_eol;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_unterminated_group_on_eos, length, fl_errors_string_unterminated_group_on_eos_length) == f_equal_to) {
+        *error = f_unterminated_group_on_eos;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_unterminated_group_on_stop, length, fl_errors_string_unterminated_group_on_stop_length) == f_equal_to) {
+        *error = f_unterminated_group_on_stop;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_incomplete_utf_on_eos, length, fl_errors_string_incomplete_utf_on_eos_length) == f_equal_to) {
+        *error = f_incomplete_utf_on_eos;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_incomplete_utf_on_stop, length, fl_errors_string_incomplete_utf_on_stop_length) == f_equal_to) {
+        *error = f_incomplete_utf_on_stop;
+        return f_none;
+      }
+    #endif // _di_fll_errors_buffers_
+
+    #ifndef _di_fll_errors_allocation_
+      if (fl_compare_strings(string, fl_errors_string_allocation_error, length, fl_errors_string_allocation_error_length) == f_equal_to) {
+        *error = f_allocation_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_reallocation_error, length, fl_errors_string_reallocation_error_length) == f_equal_to) {
+        *error = f_reallocation_error;
+        return f_none;
+      }
+    #endif // _di_fll_errors_allocation_
+
+    #ifndef _di_fll_errors_fork_
+      if (fl_compare_strings(string, fl_errors_string_fork_failed, length, fl_errors_string_fork_failed_length) == f_equal_to) {
+        *error = f_fork_failed;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_too_many_processes, length, fl_errors_string_too_many_processes_length) == f_equal_to) {
+        *error = f_too_many_processes;
+        return f_none;
+      }
+    #endif // _di_fll_errors_fork_
+
+    #ifndef _di_fll_errors_file_
+      if (fl_compare_strings(string, fl_errors_string_file_seek_error, length, fl_errors_string_file_seek_error_length) == f_equal_to) {
+        *error = f_file_seek_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_file_read_error, length, fl_errors_string_file_read_error_length) == f_equal_to) {
+        *error = f_file_read_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_file_write_error, length, fl_errors_string_file_write_error_length) == f_equal_to) {
+        *error = f_file_write_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_file_flush_error, length, fl_errors_string_file_flush_error_length) == f_equal_to) {
+        *error = f_file_flush_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_file_purge_error, length, fl_errors_string_file_purge_error_length) == f_equal_to) {
+        *error = f_file_purge_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_file_open_error, length, fl_errors_string_file_open_error_length) == f_equal_to) {
+        *error = f_file_open_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_file_close_error, length, fl_errors_string_file_close_error_length) == f_equal_to) {
+        *error = f_file_close_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_file_synchronize_error, length, fl_errors_string_file_synchronize_error_length) == f_equal_to) {
+        *error = f_file_synchronize_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_file_descriptor_error, length, fl_errors_string_file_descriptor_error_length) == f_equal_to) {
+        *error = f_file_descriptor_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_file_not_found, length, fl_errors_string_file_not_found_length) == f_equal_to) {
+        *error = f_file_not_found;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_file_found, length, fl_errors_string_file_found_length) == f_equal_to) {
+        *error = f_file_found;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_file_is_empty, length, fl_errors_string_file_is_empty_length) == f_equal_to) {
+        *error = f_file_is_empty;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_file_not_open, length, fl_errors_string_file_not_open_length) == f_equal_to) {
+        *error = f_file_not_open;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_file_allocation_error, length, fl_errors_string_file_allocation_error_length) == f_equal_to) {
+        *error = f_file_allocation_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_file_reallocation_error, length, fl_errors_string_file_reallocation_error_length) == f_equal_to) {
+        *error = f_file_reallocation_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_file_stat_error, length, fl_errors_string_file_stat_error_length) == f_equal_to) {
+        *error = f_file_stat_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_file_error, length, fl_errors_string_file_error_length) == f_equal_to) {
+        *error = f_file_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_file_not_utf, length, fl_errors_string_file_not_utf_length) == f_equal_to) {
+        *error = f_file_not_utf;
+        return f_none;
+      }
+    #endif // _di_fll_errors_file_
+
+    #ifndef _di_fll_errors_directory_
+      if (fl_compare_strings(string, fl_errors_string_directory_read_error, length, fl_errors_string_directory_read_error_length) == f_equal_to) {
+        *error = f_directory_read_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_directory_write_error, length, fl_errors_string_directory_write_error_length) == f_equal_to) {
+        *error = f_directory_write_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_directory_flush_error, length, fl_errors_string_directory_flush_error_length) == f_equal_to) {
+        *error = f_directory_flush_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_directory_purge_error, length, fl_errors_string_directory_purge_error_length) == f_equal_to) {
+        *error = f_directory_purge_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_directory_open_error, length, fl_errors_string_directory_open_error_length) == f_equal_to) {
+        *error = f_directory_open_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_directory_close_error, length, fl_errors_string_directory_close_error_length) == f_equal_to) {
+        *error = f_directory_close_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_directory_synchronize_error, length, fl_errors_string_directory_synchronize_error_length) == f_equal_to) {
+        *error = f_directory_synchronize_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_directory_descriptor_error, length, fl_errors_string_directory_descriptor_error_length) == f_equal_to) {
+        *error = f_directory_descriptor_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_directory_not_found, length, fl_errors_string_directory_not_found_length) == f_equal_to) {
+        *error = f_directory_not_found;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_directory_is_empty, length, fl_errors_string_directory_is_empty_length) == f_equal_to) {
+        *error = f_directory_is_empty;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_directory_not_open, length, fl_errors_string_directory_not_open_length) == f_equal_to) {
+        *error = f_directory_not_open;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_directory_allocation_error, length, fl_errors_string_directory_allocation_error_length) == f_equal_to) {
+        *error = f_directory_allocation_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_directory_reallocation_error, length, fl_errors_string_directory_reallocation_error_length) == f_equal_to) {
+        *error = f_directory_reallocation_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_directory_error, length, fl_errors_string_directory_error_length) == f_equal_to) {
+        *error = f_directory_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_directory_not_utf, length, fl_errors_string_directory_not_utf_length) == f_equal_to) {
+        *error = f_directory_not_utf;
+        return f_none;
+      }
+    #endif // _di_fll_errors_directory_
+
+    #ifndef _di_fll_errors_socket_
+      if (fl_compare_strings(string, fl_errors_string_socket_connection_client_error, length, fl_errors_string_socket_connection_client_error_length) == f_equal_to) {
+        *error = f_socket_connection_client_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_socket_connection_target_error, length, fl_errors_string_socket_connection_target_error_length) == f_equal_to) {
+        *error = f_socket_connection_target_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_socket_receive_error, length, fl_errors_string_socket_receive_error_length) == f_equal_to) {
+        *error = f_socket_receive_error;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_socket_send_error, length, fl_errors_string_socket_send_error_length) == f_equal_to) {
+        *error = f_socket_send_error;
+        return f_none;
+      }
+    #endif // _di_fll_errors_socket_
+
+    #ifndef _di_fll_errors_non_
+      if (fl_compare_strings(string, fl_errors_string_less_than, length, fl_errors_string_less_than_length) == f_equal_to) {
+        *error = f_less_than;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_equal_to, length, fl_errors_string_equal_to_length) == f_equal_to) {
+        *error = f_equal_to;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_not_equal_to, length, fl_errors_string_not_equal_to_length) == f_equal_to) {
+        *error = f_not_equal_to;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_greater_than, length, fl_errors_string_greater_than_length) == f_equal_to) {
+        *error = f_greater_than;
+        return f_none;
+      }
+    #endif // _di_fll_errors_non_
+
+    #ifndef _di_fll_errors_access_denied_
+      if (fl_compare_strings(string, fl_errors_string_access_denied, length, fl_errors_string_access_denied_length) == f_equal_to) {
+        *error = f_access_denied;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_access_denied_user, length, fl_errors_string_access_denied_user_length) == f_equal_to) {
+        *error = f_access_denied_user;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_access_denied_group, length, fl_errors_string_access_denied_group_length) == f_equal_to) {
+        *error = f_access_denied_group;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_access_denied_world, length, fl_errors_string_access_denied_world_length) == f_equal_to) {
+        *error = f_access_denied_world;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_access_denied_read, length, fl_errors_string_access_denied_read_length) == f_equal_to) {
+        *error = f_access_denied_read;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_access_denied_write, length, fl_errors_string_access_denied_write_length) == f_equal_to) {
+        *error = f_access_denied_write;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_access_denied_execute, length, fl_errors_string_access_denied_execute_length) == f_equal_to) {
+        *error = f_access_denied_execute;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fl_errors_string_access_denied_super, length, fl_errors_string_access_denied_super_length) == f_equal_to) {
+        *error = f_access_denied_super;
+        return f_none;
+      }
+    #endif // _di_fll_errors_access_denied_
+
+    if (fl_compare_strings(string, fl_errors_string_last_error_code, length, fl_errors_string_last_error_code_length) == f_equal_to) {
+      *error = f_last_error_code;
+      return f_none;
+    }
+
+    return f_invalid_data;
+  }
+#endif // _di_fll_errors_from_string_
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
diff --git a/level_2/fll_errors/c/errors.h b/level_2/fll_errors/c/errors.h
new file mode 100644 (file)
index 0000000..c765e70
--- /dev/null
@@ -0,0 +1,52 @@
+/**
+ * FLL - Level 2
+ *
+ * Project: Errors
+ * API Version: 0.5
+ * Licenses: lgplv2.1
+ *
+ * Provides error functions, such as those that translate error codes into strings.
+ */
+#ifndef _FLL_errors_h
+#define _FLL_errors_h
+
+// fll-0 includes
+#include <level_0/errors.h>
+#include <level_0/strings.h>
+#include <level_0/types.h>
+#include <level_0/utf.h>
+
+// fll-1 includes
+#include <level_1/strings.h>
+#include <level_1/errors.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Convert status codes from their string equivalents to a status code.
+ *
+ * Error, warning, and signal flags will not be assigned to the error.
+ *
+ * This process the string until either a match or NULL is reached.
+ *
+ * @param string
+ *   The error name to process.
+ * @param error
+ *   The error code a matched string represents.
+ *
+ * @return
+ *   f_none on success.
+ *   f_invalid_data if not found.
+ *   f_invalid_parameter (with error bit) if a parameter is invalid.
+ */
+#ifndef _di_fll_errors_from_string_
+  extern f_return_status fll_errors_from_string(const f_string string, f_status *error);
+#endif // _di_fll_errors_to_string_
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#endif // _FLL_errors_h
diff --git a/level_2/fll_errors/data/build/dependencies b/level_2/fll_errors/data/build/dependencies
new file mode 100644 (file)
index 0000000..de98545
--- /dev/null
@@ -0,0 +1,7 @@
+f_types
+f_errors
+f_memory
+f_strings
+f_utf
+fl_strings
+fl_errors
diff --git a/level_2/fll_errors/data/build/settings b/level_2/fll_errors/data/build/settings
new file mode 100644 (file)
index 0000000..5953c2b
--- /dev/null
@@ -0,0 +1,30 @@
+# fss-0000
+
+project_name fll_errors
+project_level 2
+
+version_major 0
+version_minor 5
+version_micro 0
+
+build_compiler gcc
+build_linker ar
+build_libraries -lc
+build_libraries_fll -lfl_errors -lfl_strings -lf_memory -lf_utf
+build_sources_library errors.c
+build_sources_program
+build_sources_headers errors.h
+build_sources_bash
+build_sources_settings
+build_shared yes
+build_static yes
+
+defines_all
+defines_static
+defines_shared
+
+flags_all -z now
+flags_shared
+flags_static
+flags_library -fPIC
+flags_program -fPIE
index 47b1c44212fc00dfa431a7e8a7940dcf2ce23ae9..1c0597cfba8e689fa6295963ab1f06c2fbd4ae06 100644 (file)
@@ -4,6 +4,85 @@
 extern "C" {
 #endif
 
+#ifndef _di_fll_fss_errors_from_string_
+  f_return_status fll_fss_errors_from_string(const f_string string, f_status *error) {
+    #ifndef _di_level_1_parameter_checking_
+      if (error == 0) return f_error_set_error(f_invalid_parameter);
+    #endif // _di_level_1_parameter_checking_
+
+    f_status status = f_none;
+    f_string_length length = strlen(string);
+
+    #ifndef _di_fll_fss_errors_error_
+      if (fl_compare_strings(string, fll_fss_errors_string_invalid_format, length, fll_fss_errors_string_invalid_format_length) == f_equal_to) {
+        *error = fl_fss_invalid_format;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fll_fss_errors_string_invalid_format_eos, length, fll_fss_errors_string_invalid_format_eos_length) == f_equal_to) {
+        *error = fl_fss_invalid_format_eos;
+        return f_none;
+      }
+    #endif // _di_fll_fss_errors_error_
+
+    #ifndef _di_fll_fss_errors_warning_
+      if (fl_compare_strings(string, fll_fss_errors_string_no_header, length, fll_fss_errors_string_no_header_length) == f_equal_to) {
+        *error = fl_fss_no_header;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fll_fss_errors_string_accepted_but_invalid, length, fll_fss_errors_string_accepted_but_invalid_length) == f_equal_to) {
+        *error = fl_fss_accepted_but_invalid;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fll_fss_errors_string_no_header_eos, length, fll_fss_errors_string_no_header_eos_length) == f_equal_to) {
+        *error = fl_fss_no_header_eos;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fll_fss_errors_string_accepted_but_invalid_eos, length, fll_fss_errors_string_accepted_but_invalid_eos_length) == f_equal_to) {
+        *error = fl_fss_accepted_but_invalid_eos;
+        return f_none;
+      }
+    #endif // _di_fll_fss_errors_warning_
+
+    #ifndef _di_fll_fss_errors_success_
+      if (fl_compare_strings(string, fll_fss_errors_string_found_object, length, fll_fss_errors_string_found_object_length) == f_equal_to) {
+        *error = fl_fss_found_object;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fll_fss_errors_string_found_content, length, fll_fss_errors_string_found_content_length) == f_equal_to) {
+        *error = fl_fss_found_content;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fll_fss_errors_string_found_no_object, length, fll_fss_errors_string_found_no_object_length) == f_equal_to) {
+        *error = fl_fss_found_no_object;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fll_fss_errors_string_found_no_content, length, fll_fss_errors_string_found_no_content_length) == f_equal_to) {
+        *error = fl_fss_found_no_content;
+        return f_none;
+      }
+
+      if (fl_compare_strings(string, fll_fss_errors_string_found_object_no_content, length, fll_fss_errors_string_found_object_no_content_length) == f_equal_to) {
+        *error = fl_fss_found_object_no_content;
+        return f_none;
+      }
+    #endif // _di_fll_fss_errors_success_
+
+    if (fl_compare_strings(string, fll_fss_errors_string_last_error_code, length, fll_fss_errors_string_last_error_code_length) == f_equal_to) {
+      *error = f_last_error_code;
+      return f_none;
+    }
+
+    return f_invalid_data;
+  }
+#endif // _di_fll_fss_errors_from_string_
+
 #ifndef _di_fll_fss_errors_to_string_
   f_return_status fll_fss_errors_to_string(const f_status error, f_string *string) {
     #ifndef _di_level_2_parameter_checking_
@@ -15,45 +94,49 @@ extern "C" {
     switch (unmasked_error) {
       #ifndef _di_fll_fss_errors_error_
         case fl_fss_invalid_format:
-          *string = "fl_fss_invalid_format";
+          *string = fll_fss_errors_string_invalid_format;
           break;
         case fl_fss_invalid_format_eos:
-          *string = "fl_fss_invalid_format_eos";
+          *string = fll_fss_errors_string_invalid_format_eos;
           break;
       #endif // _di_fll_fss_errors_error_
 
       #ifndef _di_fll_fss_errors_warning_
         case fl_fss_no_header:
-          *string = "fl_fss_no_header";
+          *string = fll_fss_errors_string_no_header;
           break;
         case fl_fss_accepted_but_invalid:
-          *string = "fl_fss_accepted_but_invalid";
+          *string = fll_fss_errors_string_accepted_but_invalid;
           break;
         case fl_fss_no_header_eos:
-          *string = "fl_fss_no_header_eos";
+          *string = fll_fss_errors_string_no_header_eos;
           break;
         case fl_fss_accepted_but_invalid_eos:
-          *string = "fl_fss_accepted_but_invalid_eos";
+          *string = fll_fss_errors_string_accepted_but_invalid_eos;
           break;
       #endif // _di_fll_fss_errors_warning_
 
       #ifndef _di_fll_fss_errors_success_
         case fl_fss_found_object:
-          *string = "fl_fss_found_object";
+          *string = fll_fss_errors_string_found_object;
           break;
         case fl_fss_found_content:
-          *string = "fl_fss_found_content";
+          *string = fll_fss_errors_string_found_content;
           break;
         case fl_fss_found_no_object:
-          *string = "fl_fss_found_no_object";
+          *string = fll_fss_errors_string_found_no_object;
           break;
         case fl_fss_found_no_content:
-          *string = "fl_fss_found_no_content";
+          *string = fll_fss_errors_string_found_no_content;
           break;
         case fl_fss_found_object_no_content:
-          *string = "fl_fss_found_object_no_content";
+          *string = fll_fss_errors_string_found_object_no_content;
           break;
       #endif // _di_fll_fss_errors_success_
+
+      case fl_fss_last_error_code:
+        *string = fll_fss_errors_string_last_error_code;
+        break;
     default:
         return fl_errors_to_string(error, string);
     }
index cbcdbe8ec00e231d4e6ef9f954a1930188e63240..0ba946a0a32c2c8facbb66e470b9c272fafec076 100644 (file)
 #include <level_1/fss_basic.h>
 #include <level_1/fss_errors.h>
 #include <level_1/fss_macro.h>
+#include <level_1/strings.h>
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+#ifndef _di_fll_fss_errors_string_
+  #ifndef _di_fll_fss_errors_error_
+    #define fll_fss_errors_string_invalid_format "invalid_format"
+    #define fll_fss_errors_string_invalid_format_length 15
+
+    #define fll_fss_errors_string_invalid_format_eos "invalid_format_eos"
+    #define fll_fss_errors_string_invalid_format_eos_length 19
+  #endif // _di_fll_fss_errors_error_
+
+  #ifndef _di_fll_fss_errors_warning_
+    #define fll_fss_errors_string_no_header "fl_fss_no_header"
+    #define fll_fss_errors_string_no_header_length 17
+
+    #define fll_fss_errors_string_accepted_but_invalid "fl_fss_accepted_but_invalid"
+    #define fll_fss_errors_string_accepted_but_invalid_length 28
+
+    #define fll_fss_errors_string_no_header_eos "fl_fss_no_header_eos"
+    #define fll_fss_errors_string_no_header_eos_length 21
+
+    #define fll_fss_errors_string_accepted_but_invalid_eos "fl_fss_accepted_but_invalid_eos"
+    #define fll_fss_errors_string_accepted_but_invalid_eos_length 32
+  #endif // _di_fll_fss_errors_warning_
+
+  #ifndef _di_fll_fss_errors_success_
+    #define fll_fss_errors_string_found_object "fl_fss_found_object"
+    #define fll_fss_errors_string_found_object_length 20
+
+    #define fll_fss_errors_string_found_content "fl_fss_found_content"
+    #define fll_fss_errors_string_found_content_length 21
+
+    #define fll_fss_errors_string_found_no_object "fl_fss_found_no_object"
+    #define fll_fss_errors_string_found_no_object_length 23
+
+    #define fll_fss_errors_string_found_no_content "fl_fss_found_no_content"
+    #define fll_fss_errors_string_found_no_content_length 24
+
+    #define fll_fss_errors_string_found_object_no_content "fl_fss_found_object_no_content"
+    #define fll_fss_errors_string_found_object_no_content_length 31
+  #endif // _di_fll_fss_errors_success_
+
+  #define fll_fss_errors_string_last_error_code "fl_fss_last_error_code"
+  #define fll_fss_errors_string_last_error_code_length 23
+#endif // _di_fll_fss_errors_string_
+
+/**
+ * Convert FSS status codes from their string equivalents to a status code.
+ *
+ * Error, warning, and signal flags will not be assigned to the error.
+ *
+ * This process the string until either a match or NULL is reached.
+ *
+ * @param string
+ *   The error name to process.
+ * @param error
+ *   The error code a matched string represents.
+ *
+ * @return
+ *   f_none on success.
+ *   f_invalid_data if not found.
+ *   f_invalid_parameter (with error bit) if a parameter is invalid.
+ *
+ * @see fll_errors_from_string
+ */
+#ifndef _di_fll_fss_errors_from_string_
+  extern f_return_status fll_fss_errors_from_string(const f_string string, f_status *error);
+#endif // _di_fll_fss_errors_to_string_
+
 #ifndef _di_fll_fss_errors_to_string_
   /**
    * Convert error codes to their string equivalents.
index c08e52b6e451c6279ea544bfc0c13c9ce1babf73..58b400aafbfc1f1258c8fd89e7bf37c6fdd111ba 100644 (file)
@@ -5,3 +5,4 @@ f_memory
 f_fss
 fl_fss
 fl_errors
+fl_strings
index fcd05611cae2016de39a996f59867f39715fb981..6d6b674cab5153c97cc732b706b768f939618d95 100644 (file)
@@ -10,7 +10,7 @@ version_micro 0
 build_compiler gcc
 build_linker ar
 build_libraries -lc
-build_libraries_fll -lfl_errors -lfl_fss -lf_conversion -lf_file -lf_memory -lf_utf
+build_libraries_fll -lfl_errors -lfl_strings -lfl_fss -lf_conversion -lf_file -lf_memory -lf_utf
 build_sources_library fss_basic.c fss_basic_list.c fss_extended.c fss_errors.c
 build_sources_program
 build_sources_headers fss_basic.h fss_basic_list.h fss_extended.h fss_errors.h
index 66ec08d480bec00974e56a61f649c315a93bcfbf..869e15c8a51070a5605f5c9914bb2e35942b366b 100644 (file)
@@ -74,6 +74,13 @@ extern "C" {
     fl_print_color(f_standard_output, data.context.standout, data.context.reset, fss_return_code_long_context);
     printf("     Guess error state from context of error (ignores masks).");
 
+    printf("\n  %s", f_console_symbol_short_enable);
+    fl_print_color(f_standard_output, data.context.standout, data.context.reset, fss_return_code_short_number);
+
+    printf(", %s", f_console_symbol_long_enable);
+    fl_print_color(f_standard_output, data.context.standout, data.context.reset, fss_return_code_long_number);
+    printf("      Convert status code name to number.");
+
 
     printf("\n\n");
     fl_print_color(f_standard_output, data.context.important, data.context.reset, " Usage: ");
@@ -150,81 +157,116 @@ extern "C" {
     else if (data->parameters[fss_return_code_parameter_version].result == f_console_result_found) {
       fl_program_print_version(fss_return_code_version);
     }
-    else if (data->parameters[fss_return_code_parameter_is_error].result == f_console_result_found && data->remaining.used > 0) {
-      f_array_length counter = 0;
+    else if (data->parameters[fss_return_code_parameter_is_error].result == f_console_result_found) {
+      if (data->remaining.used > 0) {
+        f_array_length counter = 0;
 
-      f_status code = f_none;
+        f_status code = f_none;
 
-      for (; counter < data->remaining.used; counter++) {
-        code = (f_status) atoll(argv[data->remaining.array[counter]]);
+        for (; counter < data->remaining.used; counter++) {
+          code = (f_status) atoll(argv[data->remaining.array[counter]]);
 
-        if (data->parameters[fss_return_code_parameter_context].result == f_console_result_found) {
-          if (fll_fss_errors_is_error(code)) {
-            fss_return_code_delete_data(data);
-            return f_true;
+          if (data->parameters[fss_return_code_parameter_context].result == f_console_result_found) {
+            if (fll_fss_errors_is_error(code)) {
+              fss_return_code_delete_data(data);
+              return f_true;
+            }
           }
-        }
-        else {
-          if (f_error_is_error(code)) {
-            fss_return_code_delete_data(data);
-            return f_true;
+          else {
+            if (f_error_is_error(code)) {
+              fss_return_code_delete_data(data);
+              return f_true;
+            }
           }
-        }
-      } // for
+        } // for
+      }
 
       fss_return_code_delete_data(data);
       return f_false;
     }
-    else if (data->parameters[fss_return_code_parameter_is_warning].result == f_console_result_found && data->remaining.used > 0) {
-      f_array_length counter = 0;
+    else if (data->parameters[fss_return_code_parameter_is_warning].result == f_console_result_found) {
+      if (data->remaining.used > 0) {
+        f_array_length counter = 0;
 
-      f_status code = f_none;
+        f_status code = f_none;
 
-      for (; counter < data->remaining.used; counter++) {
-        code = (f_status) atoll(argv[data->remaining.array[counter]]);
+        for (; counter < data->remaining.used; counter++) {
+          code = (f_status) atoll(argv[data->remaining.array[counter]]);
 
-        if (data->parameters[fss_return_code_parameter_context].result == f_console_result_found) {
-          if (fll_fss_errors_is_warning(code)) {
-            fss_return_code_delete_data(data);
-            return f_true;
+          if (data->parameters[fss_return_code_parameter_context].result == f_console_result_found) {
+            if (fll_fss_errors_is_warning(code)) {
+              fss_return_code_delete_data(data);
+              return f_true;
+            }
           }
-        }
-        else {
-          if (f_error_is_warning(code)) {
-            fss_return_code_delete_data(data);
-            return f_true;
+          else {
+            if (f_error_is_warning(code)) {
+              fss_return_code_delete_data(data);
+              return f_true;
+            }
           }
-        }
-      } // for
+        } // for
+      }
 
       fss_return_code_delete_data(data);
       return f_false;
     }
-    else if (data->parameters[fss_return_code_parameter_is_fine].result == f_console_result_found && data->remaining.used > 0) {
-      f_array_length counter = 0;
+    else if (data->parameters[fss_return_code_parameter_is_fine].result == f_console_result_found) {
+      if (data->remaining.used > 0) {
+        f_array_length counter = 0;
 
-      f_status code = f_none;
+        f_status code = f_none;
 
-      for (; counter < data->remaining.used; counter++) {
-        code = (f_status) atoll(argv[data->remaining.array[counter]]);
+        for (; counter < data->remaining.used; counter++) {
+          code = (f_status) atoll(argv[data->remaining.array[counter]]);
 
-        if (data->parameters[fss_return_code_parameter_context].result == f_console_result_found) {
-          if (fll_fss_errors_is_fine(code)) {
-            fss_return_code_delete_data(data);
-            return f_true;
+          if (data->parameters[fss_return_code_parameter_context].result == f_console_result_found) {
+            if (fll_fss_errors_is_fine(code)) {
+              fss_return_code_delete_data(data);
+              return f_true;
+            }
           }
-        }
-        else {
-          if (f_error_is_fine(code)) {
-            fss_return_code_delete_data(data);
-            return f_true;
+          else {
+            if (f_error_is_fine(code)) {
+              fss_return_code_delete_data(data);
+              return f_true;
+            }
           }
-        }
-      } // for
+        } // for
+      }
 
       fss_return_code_delete_data(data);
       return f_false;
     }
+    else if (data->parameters[fss_return_code_parameter_number].result == f_console_result_found) {
+      if (data->remaining.used > 0) {
+        f_array_length counter = 0;
+        f_status code = f_none;
+
+        for (; counter < data->remaining.used; counter++) {
+          status = fll_errors_from_string(argv[data->remaining.array[counter]], &code);
+
+          if (status == f_invalid_data) {
+            status = fll_fss_errors_from_string(argv[data->remaining.array[counter]], &code);
+          }
+
+          if (f_error_is_error(status)) {
+            break;
+          }
+          else {
+            status = f_none;
+          }
+
+          printf("%u\n", code);
+        } // for
+      }
+      else {
+        status = f_false;
+      }
+
+      fss_return_code_delete_data(data);
+      return status;
+    }
     else if (data->remaining.used > 0 || data->process_pipe) {
       f_array_length counter = 0;
 
index 1551925e1d2d40b1fb5080f8bb254f07b73e0341..cb38d03fb37bab6c24b1cfdcbb923279770641fd 100644 (file)
@@ -30,6 +30,7 @@
 
 // fll-2 includes
 #include <level_2/colors.h>
+#include <level_2/errors.h>
 #include <level_2/fss_errors.h>
 
 #ifdef __cplusplus
@@ -45,7 +46,7 @@ extern "C" {
 
 #ifndef _di_fss_return_code_name_
   #define fss_return_code_name "fss_return_code"
-  #define fss_return_code_name_long "FSS Error Code"
+  #define fss_return_code_name_long "FSS Return Code"
 #endif // _di_fss_return_code_name_
 
 #ifndef _di_fss_return_code_defines_
@@ -53,11 +54,13 @@ extern "C" {
   #define fss_return_code_short_is_warning "w"
   #define fss_return_code_short_is_error   "e"
   #define fss_return_code_short_context    "c"
+  #define fss_return_code_short_number     "n"
 
   #define fss_return_code_long_is_fine    "is_fine"
   #define fss_return_code_long_is_warning "is_warning"
   #define fss_return_code_long_is_error   "is_error"
   #define fss_return_code_long_context    "context"
+  #define fss_return_code_long_number     "number"
 
   enum {
     fss_return_code_parameter_help,
@@ -69,6 +72,7 @@ extern "C" {
     fss_return_code_parameter_is_warning,
     fss_return_code_parameter_is_error,
     fss_return_code_parameter_context,
+    fss_return_code_parameter_number,
   };
 
   #define f_console_parameter_initialize_fss_return_code \
@@ -81,9 +85,10 @@ extern "C" {
       f_console_parameter_initialize(fss_return_code_short_is_warning, fss_return_code_long_is_warning, 0, 0, f_false, f_console_type_normal, 0), \
       f_console_parameter_initialize(fss_return_code_short_is_error, fss_return_code_long_is_error, 0, 0, f_false, f_console_type_normal, 0), \
       f_console_parameter_initialize(fss_return_code_short_context, fss_return_code_long_context, 0, 0, f_false, f_console_type_normal, 0), \
+      f_console_parameter_initialize(fss_return_code_short_number, fss_return_code_long_number, 0, 0, f_false, f_console_type_normal, 0), \
     }
 
-  #define fss_return_code_total_parameters 8
+  #define fss_return_code_total_parameters 9
 #endif // _di_fss_return_code_defines_
 
 #ifndef _di_fss_return_code_data_
index 55693f49feeb67168b0df22b5e54acf344e14c84..793fee0f1f605f0137f6bbd4f8ea0ce8338a0fa2 100644 (file)
@@ -14,5 +14,6 @@ fl_fss
 fl_program
 fl_strings
 fll_colors
+fll_errors
 fll_execute
 fll_fss
index c34203164a9647d6af9b46065303c5e174cc6ab7..5b492019503f94fa5a0b2c3c49cc9a6f272f68da 100644 (file)
@@ -10,7 +10,7 @@ version_micro 0
 build_compiler gcc
 build_linker ar
 build_libraries -lc
-build_libraries_fll -lfll_colors -lfll_fss -lfl_fss -lfl_errors -lfl_colors -lfl_console -lfl_program -lf_print -lf_pipe -lf_conversion -lf_console -lf_memory -lf_utf
+build_libraries_fll -lfll_colors -lfll_errors -lfll_fss -lfl_fss -lfl_errors -lfl_colors -lfl_console -lfl_program -lfl_strings -lf_print -lf_pipe -lf_conversion -lf_console -lf_memory -lf_utf
 #build_libraries_fll-level -lfll_2 -lfll_1 -lfll_0
 #build_libraries_fll-monolithic -lfll
 build_sources_library fss_return_code.c
index 3b326722f24bc9e0169075776dc9f71e7c0b05d8..be861b538a09d684936f5c6695dcbd7642b1a9e8 100644 (file)
@@ -74,6 +74,13 @@ extern "C" {
     fl_print_color(f_standard_output, data.context.standout, data.context.reset, return_code_long_context);
     printf("     Guess error state from context of error (ignores masks).");
 
+    printf("\n  %s", f_console_symbol_short_enable);
+    fl_print_color(f_standard_output, data.context.standout, data.context.reset, return_code_short_number);
+
+    printf(", %s", f_console_symbol_long_enable);
+    fl_print_color(f_standard_output, data.context.standout, data.context.reset, return_code_long_number);
+    printf("      Convert status code name to number.");
+
 
     printf("\n\n");
     fl_print_color(f_standard_output, data.context.important, data.context.reset, " Usage: ");
@@ -150,81 +157,108 @@ extern "C" {
     else if (data->parameters[return_code_parameter_version].result == f_console_result_found) {
       fl_program_print_version(return_code_version);
     }
-    else if (data->parameters[return_code_parameter_is_error].result == f_console_result_found && data->remaining.used > 0) {
-      f_array_length counter = 0;
-
-      f_status code = f_none;
+    else if (data->parameters[return_code_parameter_is_error].result == f_console_result_found) {
+      if (data->remaining.used > 0) {
+        f_array_length counter = 0;
+        f_status code = f_none;
 
-      for (; counter < data->remaining.used; counter++) {
-        code = (f_status) atoll(argv[data->remaining.array[counter]]);
+        for (; counter < data->remaining.used; counter++) {
+          code = (f_status) atoll(argv[data->remaining.array[counter]]);
 
-        if (data->parameters[return_code_parameter_context].result == f_console_result_found) {
-          if (fl_errors_is_error(code)) {
-            return_code_delete_data(data);
-            return f_true;
+          if (data->parameters[return_code_parameter_context].result == f_console_result_found) {
+            if (fl_errors_is_error(code)) {
+              return_code_delete_data(data);
+              return f_true;
+            }
           }
-        }
-        else {
-          if (f_error_is_error(code)) {
-            return_code_delete_data(data);
-            return f_true;
+          else {
+            if (f_error_is_error(code)) {
+              return_code_delete_data(data);
+              return f_true;
+            }
           }
-        }
-      } // for
+        } // for
+      }
 
       return_code_delete_data(data);
       return f_false;
     }
-    else if (data->parameters[return_code_parameter_is_warning].result == f_console_result_found && data->remaining.used > 0) {
-      f_array_length counter = 0;
-
-      f_status code = f_none;
+    else if (data->parameters[return_code_parameter_is_warning].result == f_console_result_found) {
+      if (data->remaining.used > 0) {
+        f_array_length counter = 0;
+        f_status code = f_none;
 
-      for (; counter < data->remaining.used; counter++) {
-        code = (f_status) atoll(argv[data->remaining.array[counter]]);
+        for (; counter < data->remaining.used; counter++) {
+          code = (f_status) atoll(argv[data->remaining.array[counter]]);
 
-        if (data->parameters[return_code_parameter_context].result == f_console_result_found) {
-          if (fl_errors_is_warning(code)) {
-            return_code_delete_data(data);
-            return f_true;
+          if (data->parameters[return_code_parameter_context].result == f_console_result_found) {
+            if (fl_errors_is_warning(code)) {
+              return_code_delete_data(data);
+              return f_true;
+            }
           }
-        }
-        else {
-          if (f_error_is_warning(code)) {
-            return_code_delete_data(data);
-            return f_true;
+          else {
+            if (f_error_is_warning(code)) {
+              return_code_delete_data(data);
+              return f_true;
+            }
           }
-        }
-      } // for
+        } // for
+      }
 
       return_code_delete_data(data);
       return f_false;
     }
-    else if (data->parameters[return_code_parameter_is_fine].result == f_console_result_found && data->remaining.used > 0) {
-      f_array_length counter = 0;
-
-      f_status code = f_none;
+    else if (data->parameters[return_code_parameter_is_fine].result == f_console_result_found) {
+      if (data->remaining.used > 0) {
+        f_array_length counter = 0;
+        f_status code = f_none;
 
-      for (; counter < data->remaining.used; counter++) {
-        code = (f_status) atoll(argv[data->remaining.array[counter]]);
+        for (; counter < data->remaining.used; counter++) {
+          code = (f_status) atoll(argv[data->remaining.array[counter]]);
 
-        if (data->parameters[return_code_parameter_context].result == f_console_result_found) {
-          if (fl_errors_is_fine(code)) {
-            return_code_delete_data(data);
-            return f_true;
+          if (data->parameters[return_code_parameter_context].result == f_console_result_found) {
+            if (fl_errors_is_fine(code)) {
+              return_code_delete_data(data);
+              return f_true;
+            }
           }
-        }
-        else {
-          if (f_error_is_fine(code)) {
-            return_code_delete_data(data);
-            return f_true;
+          else {
+            if (f_error_is_fine(code)) {
+              return_code_delete_data(data);
+              return f_true;
+            }
           }
-        }
-      } // for
+        } // for
+      }
 
       return_code_delete_data(data);
       return f_false;
     }
+    else if (data->parameters[return_code_parameter_number].result == f_console_result_found) {
+      if (data->remaining.used > 0) {
+        f_array_length counter = 0;
+        f_status code = f_none;
+
+        for (; counter < data->remaining.used; counter++) {
+          status = fll_errors_from_string(argv[data->remaining.array[counter]], &code);
+          if (f_error_is_error(status)) {
+            break;
+          }
+          else {
+            status = f_true;
+          }
+
+          printf("%u\n", code);
+        } // for
+      }
+      else {
+        status = f_false;
+      }
+
+      return_code_delete_data(data);
+      return status;
+    }
     else if (data->remaining.used > 0 || data->process_pipe) {
       f_array_length counter = 0;
 
index 0539c75149ae1a6b0d70c570c771329b2c07e438..f13f3358c982fbd41d9108e2d1a1bd82824de81c 100644 (file)
@@ -28,6 +28,7 @@
 
 // fll-2 includes
 #include <level_2/colors.h>
+#include <level_2/errors.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -42,7 +43,7 @@ extern "C" {
 
 #ifndef _di_return_code_name_
   #define return_code_name      "return_code"
-  #define return_code_name_long "Error Code"
+  #define return_code_name_long "Return Code"
 #endif // _di_return_code_name_
 
 #ifndef _di_return_code_defines_
@@ -50,11 +51,13 @@ extern "C" {
   #define return_code_short_is_warning "w"
   #define return_code_short_is_error   "e"
   #define return_code_short_context    "c"
+  #define return_code_short_number     "n"
 
   #define return_code_long_is_fine    "is_fine"
   #define return_code_long_is_warning "is_warning"
   #define return_code_long_is_error   "is_error"
   #define return_code_long_context    "context"
+  #define return_code_long_number     "number"
 
   enum {
     return_code_parameter_help,
@@ -66,6 +69,7 @@ extern "C" {
     return_code_parameter_is_warning,
     return_code_parameter_is_error,
     return_code_parameter_context,
+    return_code_parameter_number,
   };
 
   #define f_console_parameter_initialize_return_code \
@@ -78,9 +82,10 @@ extern "C" {
       f_console_parameter_initialize(return_code_short_is_warning, return_code_long_is_warning, 0, 0, f_false, f_console_type_normal, 0), \
       f_console_parameter_initialize(return_code_short_is_error, return_code_long_is_error, 0, 0, f_false, f_console_type_normal, 0), \
       f_console_parameter_initialize(return_code_short_context, return_code_long_context, 0, 0, f_false, f_console_type_normal, 0), \
+      f_console_parameter_initialize(return_code_short_number, return_code_long_number, 0, 0, f_false, f_console_type_normal, 0), \
     }
 
-  #define return_code_total_parameters 8
+  #define return_code_total_parameters 9
 #endif // _di_return_code_defines_
 
 #ifndef _di_return_code_data_
index e50a1edb706e42f701bd2f7bca972e0785216d7b..3126ffc191d35ad658d6c2ce8d2b3954d6b9c47e 100644 (file)
@@ -10,3 +10,4 @@ fl_file
 fl_program
 fl_strings
 fll_colors
+fll_errors
index 2e6284f8f50354e34b54fd9762dbd8ffa542d519..8423f0934b4ded8891da36403ded1799adf71130 100644 (file)
@@ -10,7 +10,7 @@ version_micro 0
 build_compiler gcc
 build_linker ar
 build_libraries -lc
-build_libraries_fll -lfll_colors -lfl_errors -lfl_colors -lfl_console -lfl_program -lf_print -lf_pipe -lf_conversion -lf_console -lf_memory -lf_utf
+build_libraries_fll -lfll_colors -lfll_errors -lfl_errors -lfl_colors -lfl_console -lfl_program -lfl_strings -lf_print -lf_pipe -lf_conversion -lf_console -lf_memory -lf_utf
 #build_libraries_fll-level -lfll_2 -lfll_1 -lfll_0
 #build_libraries_fll-monolithic -lfll
 build_sources_library return_code.c