]> Kevux Git Server - fll/commitdiff
Bugfix: bash/linux does not support setting high bits on return codes
authorKevin Day <thekevinday@gmail.com>
Fri, 26 Jul 2019 01:49:29 +0000 (20:49 -0500)
committerKevin Day <thekevinday@gmail.com>
Fri, 26 Jul 2019 01:53:43 +0000 (20:53 -0500)
These bits are generally reserved for process-specific behavior.
Explicitly return 0 for success and 1 for failure.
The firewall program already does this.

The return codes from the main functions of each project will continue to utilize all of the bits as designed.
This will allow for projects that link to the library to get the actual return codes while simultaneously being compatible with Linux and Bash.

Later versions may provide alternative ways to get the error code from within the shell.
For example, if a specific return code environment variable is set, then the program could populate that environment variable on exit (clearing it on start).

level_3/fss_basic_list_read/c/main.c
level_3/fss_basic_list_write/c/main.c
level_3/fss_basic_read/c/main.c
level_3/fss_basic_write/c/main.c
level_3/fss_extended_read/c/main.c
level_3/fss_extended_write/c/main.c
level_3/fss_return_code/c/main.c
level_3/return_code/c/main.c

index 0cd7ee3448a6f8656c547e761c737f513c8439fd..5f5130fce3aeb4c635589f4077cb68ba611cb8dd 100644 (file)
@@ -7,5 +7,9 @@ int main(f_const f_array_length argc, f_const f_string argv[]) {
     data.process_pipe = f_true;
   }
 
-  return fss_basic_list_read_main(argc, argv, &data);
+  if (f_error_is_error(fss_basic_list_read_main(argc, argv, &data))) {
+    return 1;
+  }
+
+  return 0;
 }
index feaa3e99b3eaeb56170f801d025f03671516550e..5132d141effb6213a3a51e1cd7d05458cd538a09 100644 (file)
@@ -7,5 +7,9 @@ int main(f_const f_array_length argc, f_const f_string argv[]) {
     data.process_pipe = f_true;
   }
 
-  return fss_basic_list_write_main(argc, argv, &data);
+  if (f_error_is_error(fss_basic_list_write_main(argc, argv, &data))) {
+    return 1;
+  }
+
+  return 0;
 }
index 1c27146ad88f605a0bd74e795a02a335af5dbf55..a8826cd7419cb4d785d3b7c881cc85f6b79f9d1b 100644 (file)
@@ -7,5 +7,9 @@ int main(f_const f_array_length argc, f_const f_string argv[]) {
     data.process_pipe = f_true;
   }
 
-  return fss_basic_read_main(argc, argv, &data);
+  if (f_error_is_error(fss_basic_read_main(argc, argv, &data))) {
+    return 1;
+  }
+
+  return 0;
 }
index af17f394df9ecf6c93de07921c423babddd00b0c..3af35be699ab8db92e2a90e1f6323b54b50c3406 100644 (file)
@@ -7,5 +7,9 @@ int main(f_const f_array_length argc, f_const f_string argv[]) {
     data.process_pipe = f_true;
   }
 
-  return fss_basic_write_main(argc, argv, &data);
+  if (f_error_is_error(fss_basic_write_main(argc, argv, &data))) {
+    return 1;
+  }
+
+  return 0;
 }
index b79163a7f9acd36bb751154cea17eed43974a4ea..ee3ed3994a9aa550b2a07d00bc448a7144049104 100644 (file)
@@ -7,5 +7,9 @@ int main(f_const f_array_length argc, f_const f_string argv[]) {
     data.process_pipe = f_true;
   }
 
-  return fss_extended_read_main(argc, argv, &data);
+  if (f_error_is_error(fss_extended_read_main(argc, argv, &data))) {
+    return 1;
+  }
+
+  return 0;
 }
index ceacde71e0f74416ce720142b8499d825fcf5271..969fc3ca2a85ba70696c10245c8e81362cf0c5eb 100644 (file)
@@ -7,5 +7,9 @@ int main(f_const f_array_length argc, f_const f_string argv[]) {
     data.process_pipe = f_true;
   }
 
-  return fss_extended_write_main(argc, argv, &data);
+  if (f_error_is_error(fss_extended_write_main(argc, argv, &data))) {
+    return 1;
+  }
+
+  return 0;
 }
index fe72b7db3c8ae7a54b40209f61561e86ce462a76..904588967f0224be3feaba4651c0135a33a969b4 100644 (file)
@@ -7,5 +7,9 @@ int main(f_const f_array_length argc, f_const f_string argv[]) {
     data.process_pipe = f_true;
   }
 
-  return fss_return_code_main(argc, argv, &data);
+  if (f_error_is_error(fss_return_code_main(argc, argv, &data))) {
+    return 1;
+  }
+
+  return 0;
 }
index facd2617db402c019d84e68cd5f46583ae2641d0..639ef6129a6417a3084facbcaf7c5deb6d40a6b2 100644 (file)
@@ -7,5 +7,9 @@ int main(f_const f_array_length argc, f_const f_string argv[]) {
     data.process_pipe = f_true;
   }
 
-  return return_code_main(argc, argv, &data);
+  if (f_error_is_error(return_code_main(argc, argv, &data))) {
+    return 1;
+  }
+
+  return 0;
 }