Przeglądaj źródła

LibMain: Add the ability to configure the exit code on error

Some POSIX utilities are specified to return a specific value on error,
which is not 1. `Main::set_return_code_for_errors()` lets you set it to
that value.
Sam Atkins 3 lat temu
rodzic
commit
25c2a76d10

+ 17 - 1
Userland/Libraries/LibMain/Main.cpp

@@ -11,6 +11,22 @@
 #include <string.h>
 #include <time.h>
 
+namespace Main {
+
+static int s_return_code_for_errors = 1;
+
+int return_code_for_errors()
+{
+    return s_return_code_for_errors;
+}
+
+void set_return_code_for_errors(int code)
+{
+    s_return_code_for_errors = code;
+}
+
+}
+
 int main(int argc, char** argv)
 {
     tzset();
@@ -31,7 +47,7 @@ int main(int argc, char** argv)
 #ifdef __serenity__
         dbgln("\033[31;1mExiting with runtime error\033[0m: {}", error);
 #endif
-        return 1;
+        return Main::return_code_for_errors();
     }
     return result.value();
 }

+ 3 - 0
Userland/Libraries/LibMain/Main.h

@@ -19,6 +19,9 @@ struct Arguments {
     Span<StringView> strings;
 };
 
+int return_code_for_errors();
+void set_return_code_for_errors(int);
+
 }
 
 ErrorOr<int> serenity_main(Main::Arguments);