analyze: split out cat-config verb

This commit is contained in:
Lennart Poettering
2022-02-21 17:22:23 +01:00
parent ba474dada8
commit c649b343b4
5 changed files with 55 additions and 37 deletions
+46
View File
@@ -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;
}
+4
View File
@@ -0,0 +1,4 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int cat_config(int argc, char *argv[], void *userdata);
+2 -37
View File
@@ -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;
+1
View File
@@ -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;
+2
View File
@@ -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