chiark / gitweb /
manager: add systemd.show_status=auto mode
[elogind.git] / src / shared / exit-status.h
index 3f42c15e3b97d071dd4b9483896a4c51b3e9e8d6..1ecf9d57842c1943f6e442e68c49c344f4249f08 100644 (file)
@@ -22,7 +22,7 @@
 ***/
 
 #include <stdbool.h>
-
+#include "set.h"
 typedef enum ExitStatus {
         /* EXIT_SUCCESS defined by libc */
         /* EXIT_FAILURE defined by libc */
@@ -77,7 +77,24 @@ typedef enum ExitStatusLevel {
         EXIT_STATUS_FULL = EXIT_STATUS_LSB
 } ExitStatusLevel;
 
-const char* exit_status_to_string(ExitStatus status, ExitStatusLevel level);
+typedef struct ExitStatusSet {
+        Set *code;
+        Set *signal;
+} ExitStatusSet;
+
+const char* exit_status_to_string(ExitStatus status, ExitStatusLevel level) _const_;
+
+bool is_clean_exit(int code, int status, ExitStatusSet *success_status);
+bool is_clean_exit_lsb(int code, int status, ExitStatusSet *success_status);
+
+/* Manager status */
+
+typedef enum ShowStatus {
+        SHOW_STATUS_UNSET = -2,
+        SHOW_STATUS_AUTO = -1,
+        SHOW_STATUS_NO = 0,
+        SHOW_STATUS_YES = 1,
+        SHOW_STATUS_TEMPORARY = 2,
+} ShowStatus;
 
-bool is_clean_exit(int code, int status);
-bool is_clean_exit_lsb(int code, int status);
+int parse_show_status(const char *v, ShowStatus *ret);