]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
analyze: split out "exit-status" verb
authorLennart Poettering <lennart@poettering.net>
Mon, 21 Feb 2022 10:00:53 +0000 (11:00 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 21 Feb 2022 16:22:23 +0000 (17:22 +0100)
src/analyze/analyze-exit-status.c [new file with mode: 0644]
src/analyze/analyze-exit-status.h [new file with mode: 0644]
src/analyze/analyze.c
src/analyze/meson.build

diff --git a/src/analyze/analyze-exit-status.c b/src/analyze/analyze-exit-status.c
new file mode 100644 (file)
index 0000000..d3d9ade
--- /dev/null
@@ -0,0 +1,52 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#include "analyze.h"
+#include "analyze-exit-status.h"
+#include "exit-status.h"
+#include "format-table.h"
+
+int dump_exit_status(int argc, char *argv[], void *userdata) {
+        _cleanup_(table_unrefp) Table *table = NULL;
+        int r;
+
+        table = table_new("name", "status", "class");
+        if (!table)
+                return log_oom();
+
+        r = table_set_align_percent(table, table_get_cell(table, 0, 1), 100);
+        if (r < 0)
+                return log_error_errno(r, "Failed to right-align status: %m");
+
+        if (strv_isempty(strv_skip(argv, 1)))
+                for (size_t i = 0; i < ELEMENTSOF(exit_status_mappings); i++) {
+                        if (!exit_status_mappings[i].name)
+                                continue;
+
+                        r = table_add_many(table,
+                                           TABLE_STRING, exit_status_mappings[i].name,
+                                           TABLE_INT, (int) i,
+                                           TABLE_STRING, exit_status_class(i));
+                        if (r < 0)
+                                return table_log_add_error(r);
+                }
+        else
+                for (int i = 1; i < argc; i++) {
+                        int status;
+
+                        status = exit_status_from_string(argv[i]);
+                        if (status < 0)
+                                return log_error_errno(status, "Invalid exit status \"%s\".", argv[i]);
+
+                        assert(status >= 0 && (size_t) status < ELEMENTSOF(exit_status_mappings));
+                        r = table_add_many(table,
+                                           TABLE_STRING, exit_status_mappings[status].name ?: "-",
+                                           TABLE_INT, status,
+                                           TABLE_STRING, exit_status_class(status) ?: "-");
+                        if (r < 0)
+                                return table_log_add_error(r);
+                }
+
+        pager_open(arg_pager_flags);
+
+        return table_print(table, NULL);
+}
diff --git a/src/analyze/analyze-exit-status.h b/src/analyze/analyze-exit-status.h
new file mode 100644 (file)
index 0000000..d26db23
--- /dev/null
@@ -0,0 +1,4 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#pragma once
+
+int dump_exit_status(int argc, char *argv[], void *userdata);
index cb46e273bdbdc135b45af00a494ea0a9c8a2268a..acaf19cf4b1193e07ae5a87f42d7663551033284 100644 (file)
@@ -18,6 +18,7 @@
 #include "analyze-dot.h"
 #include "analyze-dump.h"
 #include "analyze-elf.h"
+#include "analyze-exit-status.h"
 #include "analyze-filesystems.h"
 #include "analyze-security.h"
 #include "analyze-service-watchdogs.h"
@@ -1311,52 +1312,6 @@ static int dump_unit_paths(int argc, char *argv[], void *userdata) {
         return 0;
 }
 
-static int dump_exit_status(int argc, char *argv[], void *userdata) {
-        _cleanup_(table_unrefp) Table *table = NULL;
-        int r;
-
-        table = table_new("name", "status", "class");
-        if (!table)
-                return log_oom();
-
-        r = table_set_align_percent(table, table_get_cell(table, 0, 1), 100);
-        if (r < 0)
-                return log_error_errno(r, "Failed to right-align status: %m");
-
-        if (strv_isempty(strv_skip(argv, 1)))
-                for (size_t i = 0; i < ELEMENTSOF(exit_status_mappings); i++) {
-                        if (!exit_status_mappings[i].name)
-                                continue;
-
-                        r = table_add_many(table,
-                                           TABLE_STRING, exit_status_mappings[i].name,
-                                           TABLE_INT, (int) i,
-                                           TABLE_STRING, exit_status_class(i));
-                        if (r < 0)
-                                return table_log_add_error(r);
-                }
-        else
-                for (int i = 1; i < argc; i++) {
-                        int status;
-
-                        status = exit_status_from_string(argv[i]);
-                        if (status < 0)
-                                return log_error_errno(status, "Invalid exit status \"%s\".", argv[i]);
-
-                        assert(status >= 0 && (size_t) status < ELEMENTSOF(exit_status_mappings));
-                        r = table_add_many(table,
-                                           TABLE_STRING, exit_status_mappings[status].name ?: "-",
-                                           TABLE_INT, status,
-                                           TABLE_STRING, exit_status_class(status) ?: "-");
-                        if (r < 0)
-                                return table_log_add_error(r);
-                }
-
-        pager_open(arg_pager_flags);
-
-        return table_print(table, NULL);
-}
-
 static int dump_capabilities(int argc, char *argv[], void *userdata) {
         _cleanup_(table_unrefp) Table *table = NULL;
         unsigned last_cap;
index c992e20c46ff2dbe83cfb7eb1d1ab3b1a888da53..343f2a8997729afaff7c319be30e298294b59189 100644 (file)
@@ -11,6 +11,8 @@ systemd_analyze_sources = files('''
         analyze-dump.h
         analyze-elf.c
         analyze-elf.h
+        analyze-exit-status.c
+        analyze-exit-status.h
         analyze-filesystems.c
         analyze-filesystems.h
         analyze-security.c