diff options
author | Lennart Poettering <lennart@poettering.net> | 2022-02-21 13:40:45 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2022-02-21 17:22:23 +0100 |
commit | c649b343b4bcf9937a33caa7ace8cdf041db162e (patch) | |
tree | 85ebbee8a79e287037c56a60087d1703d5b103aa | |
parent | analyze: split out "plot" verb (diff) | |
download | systemd-c649b343b4bcf9937a33caa7ace8cdf041db162e.tar.xz systemd-c649b343b4bcf9937a33caa7ace8cdf041db162e.zip |
analyze: split out cat-config verb
-rw-r--r-- | src/analyze/analyze-cat-config.c | 46 | ||||
-rw-r--r-- | src/analyze/analyze-cat-config.h | 4 | ||||
-rw-r--r-- | src/analyze/analyze.c | 39 | ||||
-rw-r--r-- | src/analyze/analyze.h | 1 | ||||
-rw-r--r-- | src/analyze/meson.build | 2 |
5 files changed, 55 insertions, 37 deletions
diff --git a/src/analyze/analyze-cat-config.c b/src/analyze/analyze-cat-config.c new file mode 100644 index 0000000000..e7cc33132e --- /dev/null +++ b/src/analyze/analyze-cat-config.c @@ -0,0 +1,46 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ + +#include "analyze.h" +#include "analyze-cat-config.h" +#include "conf-files.h" +#include "def.h" +#include "nulstr-util.h" +#include "path-util.h" +#include "pretty-print.h" +#include "strv.h" + +int cat_config(int argc, char *argv[], void *userdata) { + char **arg, **list; + int r; + + pager_open(arg_pager_flags); + + list = strv_skip(argv, 1); + STRV_FOREACH(arg, list) { + const char *t = NULL; + + if (arg != list) + print_separator(); + + if (path_is_absolute(*arg)) { + const char *dir; + + NULSTR_FOREACH(dir, CONF_PATHS_NULSTR("")) { + t = path_startswith(*arg, dir); + if (t) + break; + } + + if (!t) + return log_error_errno(SYNTHETIC_ERRNO(EINVAL), + "Path %s does not start with any known prefix.", *arg); + } else + t = *arg; + + r = conf_files_cat(arg_root, t); + if (r < 0) + return r; + } + + return 0; +} diff --git a/src/analyze/analyze-cat-config.h b/src/analyze/analyze-cat-config.h new file mode 100644 index 0000000000..8c16c2da2a --- /dev/null +++ b/src/analyze/analyze-cat-config.h @@ -0,0 +1,4 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ +#pragma once + +int cat_config(int argc, char *argv[], void *userdata); diff --git a/src/analyze/analyze.c b/src/analyze/analyze.c index 90d1eb1349..dc3bf9c17e 100644 --- a/src/analyze/analyze.c +++ b/src/analyze/analyze.c @@ -16,6 +16,7 @@ #include "analyze-blame.h" #include "analyze-calendar.h" #include "analyze-capability.h" +#include "analyze-cat-config.h" #include "analyze-condition.h" #include "analyze-dot.h" #include "analyze-dump.h" @@ -87,7 +88,7 @@ UnitFileScope arg_scope = UNIT_FILE_SYSTEM; static RecursiveErrors arg_recursive_errors = RECURSIVE_ERRORS_YES; static bool arg_man = true; static bool arg_generators = false; -static char *arg_root = NULL; +char *arg_root = NULL; static char *arg_image = NULL; static char *arg_security_policy = NULL; static bool arg_offline = false; @@ -434,42 +435,6 @@ static int analyze_time(int argc, char *argv[], void *userdata) { return 0; } -static int cat_config(int argc, char *argv[], void *userdata) { - char **arg, **list; - int r; - - pager_open(arg_pager_flags); - - list = strv_skip(argv, 1); - STRV_FOREACH(arg, list) { - const char *t = NULL; - - if (arg != list) - print_separator(); - - if (path_is_absolute(*arg)) { - const char *dir; - - NULSTR_FOREACH(dir, CONF_PATHS_NULSTR("")) { - t = path_startswith(*arg, dir); - if (t) - break; - } - - if (!t) - return log_error_errno(SYNTHETIC_ERRNO(EINVAL), - "Path %s does not start with any known prefix.", *arg); - } else - t = *arg; - - r = conf_files_cat(arg_root, t); - if (r < 0) - return r; - } - - return 0; -} - static int verb_log_control(int argc, char *argv[], void *userdata) { _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; int r; diff --git a/src/analyze/analyze.h b/src/analyze/analyze.h index 97b43da0ca..7d4b0d408f 100644 --- a/src/analyze/analyze.h +++ b/src/analyze/analyze.h @@ -20,6 +20,7 @@ extern PagerFlags arg_pager_flags; extern BusTransport arg_transport; extern const char *arg_host; extern UnitFileScope arg_scope; +extern char *arg_root; extern unsigned arg_iterations; extern usec_t arg_base_time; extern bool arg_quiet; diff --git a/src/analyze/meson.build b/src/analyze/meson.build index 7b4bf4eee7..3f7eb9522e 100644 --- a/src/analyze/meson.build +++ b/src/analyze/meson.build @@ -7,6 +7,8 @@ systemd_analyze_sources = files(''' analyze-calendar.h analyze-capability.c analyze-capability.h + analyze-cat-config.c + analyze-cat-config.h analyze-condition.c analyze-condition.h analyze-dot.c |