Add systemd-analyze verb to list runtime unit properties (#37665)
This commit is contained in:
+66
-39
@@ -12,7 +12,6 @@
|
||||
#include "sd-json.h"
|
||||
|
||||
#include "alloc-util.h"
|
||||
#include "analyze-verify-util.h"
|
||||
#include "analyze.h"
|
||||
#include "analyze-architectures.h"
|
||||
#include "analyze-blame.h"
|
||||
@@ -46,8 +45,10 @@
|
||||
#include "analyze-unit-files.h"
|
||||
#include "analyze-unit-paths.h"
|
||||
#include "analyze-verify.h"
|
||||
#include "analyze-verify-util.h"
|
||||
#include "build.h"
|
||||
#include "bus-error.h"
|
||||
#include "bus-unit-util.h"
|
||||
#include "bus-util.h"
|
||||
#include "calendarspec.h"
|
||||
#include "dissect-image.h"
|
||||
@@ -66,6 +67,7 @@
|
||||
#include "string-util.h"
|
||||
#include "strv.h"
|
||||
#include "time-util.h"
|
||||
#include "unit-def.h"
|
||||
#include "unit-name.h"
|
||||
#include "verbs.h"
|
||||
|
||||
@@ -159,6 +161,29 @@ void time_parsing_hint(const char *p, bool calendar, bool timestamp, bool timesp
|
||||
"Use 'systemd-analyze timespan \"%s\"' instead?", p);
|
||||
}
|
||||
|
||||
static int verb_transient_settings(int argc, char *argv[], void *userdata) {
|
||||
assert(argc >= 2);
|
||||
|
||||
pager_open(arg_pager_flags);
|
||||
|
||||
bool first = true;
|
||||
STRV_FOREACH(arg, strv_skip(argv, 1)) {
|
||||
UnitType t;
|
||||
|
||||
t = unit_type_from_string(*arg);
|
||||
if (t < 0)
|
||||
return log_error_errno(t, "Invalid unit type '%s'.", *arg);
|
||||
|
||||
if (!first)
|
||||
puts("");
|
||||
|
||||
bus_dump_transient_settings(t);
|
||||
first = false;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int help(int argc, char *argv[], void *userdata) {
|
||||
_cleanup_free_ char *link = NULL, *dot_link = NULL;
|
||||
int r;
|
||||
@@ -200,6 +225,7 @@ static int help(int argc, char *argv[], void *userdata) {
|
||||
" architectures [NAME...] List known architectures\n"
|
||||
" smbios11 List strings passed via SMBIOS Type #11\n"
|
||||
" chid List local CHIDs\n"
|
||||
" transient-settings TYPE... List transient settings for unit TYPE\n"
|
||||
"\n%3$sExpression Evaluation:%4$s\n"
|
||||
" condition CONDITION... Evaluate conditions and asserts\n"
|
||||
" compare-versions VERSION1 [OP] VERSION2\n"
|
||||
@@ -639,46 +665,47 @@ static int run(int argc, char *argv[]) {
|
||||
_cleanup_(umount_and_freep) char *mounted_dir = NULL;
|
||||
|
||||
static const Verb verbs[] = {
|
||||
{ "help", VERB_ANY, VERB_ANY, 0, help },
|
||||
{ "time", VERB_ANY, 1, VERB_DEFAULT, verb_time },
|
||||
{ "blame", VERB_ANY, 1, 0, verb_blame },
|
||||
{ "critical-chain", VERB_ANY, VERB_ANY, 0, verb_critical_chain },
|
||||
{ "plot", VERB_ANY, 1, 0, verb_plot },
|
||||
{ "dot", VERB_ANY, VERB_ANY, 0, verb_dot },
|
||||
{ "help", VERB_ANY, VERB_ANY, 0, help },
|
||||
{ "time", VERB_ANY, 1, VERB_DEFAULT, verb_time },
|
||||
{ "blame", VERB_ANY, 1, 0, verb_blame },
|
||||
{ "critical-chain", VERB_ANY, VERB_ANY, 0, verb_critical_chain },
|
||||
{ "plot", VERB_ANY, 1, 0, verb_plot },
|
||||
{ "dot", VERB_ANY, VERB_ANY, 0, verb_dot },
|
||||
/* ↓ The following seven verbs are deprecated, from here … ↓ */
|
||||
{ "log-level", VERB_ANY, 2, 0, verb_log_control },
|
||||
{ "log-target", VERB_ANY, 2, 0, verb_log_control },
|
||||
{ "set-log-level", 2, 2, 0, verb_log_control },
|
||||
{ "get-log-level", VERB_ANY, 1, 0, verb_log_control },
|
||||
{ "set-log-target", 2, 2, 0, verb_log_control },
|
||||
{ "get-log-target", VERB_ANY, 1, 0, verb_log_control },
|
||||
{ "service-watchdogs", VERB_ANY, 2, 0, verb_service_watchdogs },
|
||||
{ "log-level", VERB_ANY, 2, 0, verb_log_control },
|
||||
{ "log-target", VERB_ANY, 2, 0, verb_log_control },
|
||||
{ "set-log-level", 2, 2, 0, verb_log_control },
|
||||
{ "get-log-level", VERB_ANY, 1, 0, verb_log_control },
|
||||
{ "set-log-target", 2, 2, 0, verb_log_control },
|
||||
{ "get-log-target", VERB_ANY, 1, 0, verb_log_control },
|
||||
{ "service-watchdogs", VERB_ANY, 2, 0, verb_service_watchdogs },
|
||||
/* ↑ … until here ↑ */
|
||||
{ "dump", VERB_ANY, VERB_ANY, 0, verb_dump },
|
||||
{ "cat-config", 2, VERB_ANY, 0, verb_cat_config },
|
||||
{ "unit-files", VERB_ANY, VERB_ANY, 0, verb_unit_files },
|
||||
{ "unit-paths", 1, 1, 0, verb_unit_paths },
|
||||
{ "exit-status", VERB_ANY, VERB_ANY, 0, verb_exit_status },
|
||||
{ "syscall-filter", VERB_ANY, VERB_ANY, 0, verb_syscall_filters },
|
||||
{ "capability", VERB_ANY, VERB_ANY, 0, verb_capabilities },
|
||||
{ "filesystems", VERB_ANY, VERB_ANY, 0, verb_filesystems },
|
||||
{ "condition", VERB_ANY, VERB_ANY, 0, verb_condition },
|
||||
{ "compare-versions", 3, 4, 0, verb_compare_versions },
|
||||
{ "verify", 2, VERB_ANY, 0, verb_verify },
|
||||
{ "calendar", 2, VERB_ANY, 0, verb_calendar },
|
||||
{ "timestamp", 2, VERB_ANY, 0, verb_timestamp },
|
||||
{ "timespan", 2, VERB_ANY, 0, verb_timespan },
|
||||
{ "security", VERB_ANY, VERB_ANY, 0, verb_security },
|
||||
{ "inspect-elf", 2, VERB_ANY, 0, verb_elf_inspection },
|
||||
{ "malloc", VERB_ANY, VERB_ANY, 0, verb_malloc },
|
||||
{ "fdstore", 2, VERB_ANY, 0, verb_fdstore },
|
||||
{ "image-policy", 2, 2, 0, verb_image_policy },
|
||||
{ "has-tpm2", VERB_ANY, 1, 0, verb_has_tpm2 },
|
||||
{ "pcrs", VERB_ANY, VERB_ANY, 0, verb_pcrs },
|
||||
{ "srk", VERB_ANY, 1, 0, verb_srk },
|
||||
{ "architectures", VERB_ANY, VERB_ANY, 0, verb_architectures },
|
||||
{ "smbios11", VERB_ANY, 1, 0, verb_smbios11 },
|
||||
{ "chid", VERB_ANY, VERB_ANY, 0, verb_chid },
|
||||
{ "dump", VERB_ANY, VERB_ANY, 0, verb_dump },
|
||||
{ "cat-config", 2, VERB_ANY, 0, verb_cat_config },
|
||||
{ "unit-files", VERB_ANY, VERB_ANY, 0, verb_unit_files },
|
||||
{ "unit-paths", 1, 1, 0, verb_unit_paths },
|
||||
{ "exit-status", VERB_ANY, VERB_ANY, 0, verb_exit_status },
|
||||
{ "syscall-filter", VERB_ANY, VERB_ANY, 0, verb_syscall_filters },
|
||||
{ "capability", VERB_ANY, VERB_ANY, 0, verb_capabilities },
|
||||
{ "filesystems", VERB_ANY, VERB_ANY, 0, verb_filesystems },
|
||||
{ "condition", VERB_ANY, VERB_ANY, 0, verb_condition },
|
||||
{ "compare-versions", 3, 4, 0, verb_compare_versions },
|
||||
{ "verify", 2, VERB_ANY, 0, verb_verify },
|
||||
{ "calendar", 2, VERB_ANY, 0, verb_calendar },
|
||||
{ "timestamp", 2, VERB_ANY, 0, verb_timestamp },
|
||||
{ "timespan", 2, VERB_ANY, 0, verb_timespan },
|
||||
{ "security", VERB_ANY, VERB_ANY, 0, verb_security },
|
||||
{ "inspect-elf", 2, VERB_ANY, 0, verb_elf_inspection },
|
||||
{ "malloc", VERB_ANY, VERB_ANY, 0, verb_malloc },
|
||||
{ "fdstore", 2, VERB_ANY, 0, verb_fdstore },
|
||||
{ "image-policy", 2, 2, 0, verb_image_policy },
|
||||
{ "has-tpm2", VERB_ANY, 1, 0, verb_has_tpm2 },
|
||||
{ "pcrs", VERB_ANY, VERB_ANY, 0, verb_pcrs },
|
||||
{ "srk", VERB_ANY, 1, 0, verb_srk },
|
||||
{ "architectures", VERB_ANY, VERB_ANY, 0, verb_architectures },
|
||||
{ "smbios11", VERB_ANY, 1, 0, verb_smbios11 },
|
||||
{ "chid", VERB_ANY, VERB_ANY, 0, verb_chid },
|
||||
{ "transient-settings", 2, VERB_ANY, 0, verb_transient_settings },
|
||||
{}
|
||||
};
|
||||
|
||||
|
||||
+24
-20
@@ -2048,34 +2048,38 @@ int cg_has_coredump_receive(const char *path) {
|
||||
}
|
||||
|
||||
const uint64_t cgroup_io_limit_defaults[_CGROUP_IO_LIMIT_TYPE_MAX] = {
|
||||
[CGROUP_IO_RBPS_MAX] = CGROUP_LIMIT_MAX,
|
||||
[CGROUP_IO_WBPS_MAX] = CGROUP_LIMIT_MAX,
|
||||
[CGROUP_IO_RIOPS_MAX] = CGROUP_LIMIT_MAX,
|
||||
[CGROUP_IO_WIOPS_MAX] = CGROUP_LIMIT_MAX,
|
||||
[CGROUP_IO_RBPS_MAX] = CGROUP_LIMIT_MAX,
|
||||
[CGROUP_IO_WBPS_MAX] = CGROUP_LIMIT_MAX,
|
||||
[CGROUP_IO_RIOPS_MAX] = CGROUP_LIMIT_MAX,
|
||||
[CGROUP_IO_WIOPS_MAX] = CGROUP_LIMIT_MAX,
|
||||
};
|
||||
|
||||
static const char* const cgroup_io_limit_type_table[_CGROUP_IO_LIMIT_TYPE_MAX] = {
|
||||
[CGROUP_IO_RBPS_MAX] = "IOReadBandwidthMax",
|
||||
[CGROUP_IO_WBPS_MAX] = "IOWriteBandwidthMax",
|
||||
[CGROUP_IO_RIOPS_MAX] = "IOReadIOPSMax",
|
||||
[CGROUP_IO_WIOPS_MAX] = "IOWriteIOPSMax",
|
||||
[CGROUP_IO_RBPS_MAX] = "IOReadBandwidthMax",
|
||||
[CGROUP_IO_WBPS_MAX] = "IOWriteBandwidthMax",
|
||||
[CGROUP_IO_RIOPS_MAX] = "IOReadIOPSMax",
|
||||
[CGROUP_IO_WIOPS_MAX] = "IOWriteIOPSMax",
|
||||
};
|
||||
|
||||
DEFINE_STRING_TABLE_LOOKUP(cgroup_io_limit_type, CGroupIOLimitType);
|
||||
|
||||
void cgroup_io_limits_list(void) {
|
||||
DUMP_STRING_TABLE(cgroup_io_limit_type, CGroupIOLimitType, _CGROUP_IO_LIMIT_TYPE_MAX);
|
||||
}
|
||||
|
||||
static const char *const cgroup_controller_table[_CGROUP_CONTROLLER_MAX] = {
|
||||
[CGROUP_CONTROLLER_CPU] = "cpu",
|
||||
[CGROUP_CONTROLLER_CPUACCT] = "cpuacct",
|
||||
[CGROUP_CONTROLLER_CPUSET] = "cpuset",
|
||||
[CGROUP_CONTROLLER_IO] = "io",
|
||||
[CGROUP_CONTROLLER_BLKIO] = "blkio",
|
||||
[CGROUP_CONTROLLER_MEMORY] = "memory",
|
||||
[CGROUP_CONTROLLER_DEVICES] = "devices",
|
||||
[CGROUP_CONTROLLER_PIDS] = "pids",
|
||||
[CGROUP_CONTROLLER_BPF_FIREWALL] = "bpf-firewall",
|
||||
[CGROUP_CONTROLLER_BPF_DEVICES] = "bpf-devices",
|
||||
[CGROUP_CONTROLLER_BPF_FOREIGN] = "bpf-foreign",
|
||||
[CGROUP_CONTROLLER_BPF_SOCKET_BIND] = "bpf-socket-bind",
|
||||
[CGROUP_CONTROLLER_CPU] = "cpu",
|
||||
[CGROUP_CONTROLLER_CPUACCT] = "cpuacct",
|
||||
[CGROUP_CONTROLLER_CPUSET] = "cpuset",
|
||||
[CGROUP_CONTROLLER_IO] = "io",
|
||||
[CGROUP_CONTROLLER_BLKIO] = "blkio",
|
||||
[CGROUP_CONTROLLER_MEMORY] = "memory",
|
||||
[CGROUP_CONTROLLER_DEVICES] = "devices",
|
||||
[CGROUP_CONTROLLER_PIDS] = "pids",
|
||||
[CGROUP_CONTROLLER_BPF_FIREWALL] = "bpf-firewall",
|
||||
[CGROUP_CONTROLLER_BPF_DEVICES] = "bpf-devices",
|
||||
[CGROUP_CONTROLLER_BPF_FOREIGN] = "bpf-foreign",
|
||||
[CGROUP_CONTROLLER_BPF_SOCKET_BIND] = "bpf-socket-bind",
|
||||
[CGROUP_CONTROLLER_BPF_RESTRICT_NETWORK_INTERFACES] = "bpf-restrict-network-interfaces",
|
||||
};
|
||||
|
||||
|
||||
@@ -97,6 +97,7 @@ extern const uint64_t cgroup_io_limit_defaults[_CGROUP_IO_LIMIT_TYPE_MAX];
|
||||
|
||||
const char* cgroup_io_limit_type_to_string(CGroupIOLimitType t) _const_;
|
||||
CGroupIOLimitType cgroup_io_limit_type_from_string(const char *s) _pure_;
|
||||
void cgroup_io_limits_list(void);
|
||||
|
||||
/* Special values for the io.bfq.weight attribute */
|
||||
#define CGROUP_BFQ_WEIGHT_INVALID UINT64_MAX
|
||||
|
||||
+1
-1
@@ -152,7 +152,7 @@ static inline unsigned long ALIGN_POWER2(unsigned long u) {
|
||||
} while (false)
|
||||
|
||||
#define STRV_MAKE(...) ((char**) ((const char*[]) { __VA_ARGS__, NULL }))
|
||||
#define STRV_MAKE_EMPTY ((char*[1]) { NULL })
|
||||
#define STRV_EMPTY ((char*[1]) { NULL })
|
||||
#define STRV_MAKE_CONST(...) ((const char* const*) ((const char*[]) { __VA_ARGS__, NULL }))
|
||||
|
||||
/* Pointers range from NULL to POINTER_MAX */
|
||||
|
||||
@@ -343,6 +343,11 @@ static const char* const rlimit_table[_RLIMIT_MAX] = {
|
||||
|
||||
DEFINE_STRING_TABLE_LOOKUP(rlimit, int);
|
||||
|
||||
void rlimits_list(const char *prefix) {
|
||||
FOREACH_ELEMENT(field, rlimit_table)
|
||||
printf("%s%s\n", strempty(prefix), *field);
|
||||
}
|
||||
|
||||
int rlimit_from_string_harder(const char *s) {
|
||||
const char *suffix;
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
const char* rlimit_to_string(int i) _const_;
|
||||
int rlimit_from_string(const char *s) _pure_;
|
||||
int rlimit_from_string_harder(const char *s) _pure_;
|
||||
void rlimits_list(const char *prefix);
|
||||
|
||||
int setrlimit_closest(int resource, const struct rlimit *rlim);
|
||||
int setrlimit_closest_all(const struct rlimit * const *rlim, int *which_failed);
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "alloc-util.h"
|
||||
#include "bus-label.h"
|
||||
#include "glyph-util.h"
|
||||
@@ -331,6 +333,10 @@ static const char* const unit_dependency_table[_UNIT_DEPENDENCY_MAX] = {
|
||||
|
||||
DEFINE_STRING_TABLE_LOOKUP(unit_dependency, UnitDependency);
|
||||
|
||||
void unit_types_list(void) {
|
||||
DUMP_STRING_TABLE(unit_dependency, UnitDependency, _UNIT_DEPENDENCY_MAX);
|
||||
}
|
||||
|
||||
static const char* const notify_access_table[_NOTIFY_ACCESS_MAX] = {
|
||||
[NOTIFY_NONE] = "none",
|
||||
[NOTIFY_MAIN] = "main",
|
||||
|
||||
@@ -304,6 +304,7 @@ const char* unit_dbus_interface_from_name(const char *name);
|
||||
|
||||
const char* unit_type_to_string(UnitType i) _const_;
|
||||
UnitType unit_type_from_string(const char *s) _pure_;
|
||||
void unit_types_list(void);
|
||||
|
||||
const char* unit_load_state_to_string(UnitLoadState i) _const_;
|
||||
UnitLoadState unit_load_state_from_string(const char *s) _pure_;
|
||||
|
||||
+2199
-2264
File diff suppressed because it is too large
Load Diff
@@ -51,3 +51,5 @@ int unit_freezer_new(const char *name, UnitFreezer **ret);
|
||||
|
||||
int unit_freezer_freeze(UnitFreezer *f);
|
||||
int unit_freezer_thaw(UnitFreezer *f);
|
||||
|
||||
void bus_dump_transient_settings(UnitType t);
|
||||
|
||||
@@ -1402,6 +1402,10 @@ ConditionType condition_type_from_string(const char *s) {
|
||||
return _condition_type_from_string(s);
|
||||
}
|
||||
|
||||
void condition_types_list(void) {
|
||||
DUMP_STRING_TABLE(_condition_type, ConditionType, _CONDITION_TYPE_MAX);
|
||||
}
|
||||
|
||||
static const char* const _assert_type_table[_CONDITION_TYPE_MAX] = {
|
||||
[CONDITION_ARCHITECTURE] = "AssertArchitecture",
|
||||
[CONDITION_FIRMWARE] = "AssertFirmware",
|
||||
@@ -1453,6 +1457,10 @@ ConditionType assert_type_from_string(const char *s) {
|
||||
return _assert_type_from_string(s);
|
||||
}
|
||||
|
||||
void assert_types_list(void) {
|
||||
DUMP_STRING_TABLE(_assert_type, ConditionType, _CONDITION_TYPE_MAX);
|
||||
}
|
||||
|
||||
static const char* const condition_result_table[_CONDITION_RESULT_MAX] = {
|
||||
[CONDITION_UNTESTED] = "untested",
|
||||
[CONDITION_SUCCEEDED] = "succeeded",
|
||||
|
||||
@@ -88,9 +88,11 @@ void condition_dump_list(Condition *c, FILE *f, const char *prefix, condition_to
|
||||
|
||||
const char* condition_type_to_string(ConditionType t) _const_;
|
||||
ConditionType condition_type_from_string(const char *s) _pure_;
|
||||
void condition_types_list(void);
|
||||
|
||||
const char* assert_type_to_string(ConditionType t) _const_;
|
||||
ConditionType assert_type_from_string(const char *s) _pure_;
|
||||
void assert_types_list(void);
|
||||
|
||||
const char* condition_result_to_string(ConditionResult r) _const_;
|
||||
ConditionResult condition_result_from_string(const char *s) _pure_;
|
||||
|
||||
@@ -56,6 +56,7 @@ simple_tests += files(
|
||||
'test-blockdev-util.c',
|
||||
'test-bootspec.c',
|
||||
'test-build-path.c',
|
||||
'test-bus-unit-util.c',
|
||||
'test-bus-util.c',
|
||||
'test-calendarspec.c',
|
||||
'test-cgroup-util.c',
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
|
||||
#include "bus-unit-util.h"
|
||||
#include "unit-def.h"
|
||||
#include "tests.h"
|
||||
|
||||
TEST(bus_dump_transient_settings) {
|
||||
/* -1 is for generic unit, natural numbers are for specific unit types */
|
||||
for (UnitType t = 0; t < _UNIT_TYPE_MAX; t++) {
|
||||
log_info("==================== %s ====================", t < 0 ? "unit" : unit_type_to_string(t));
|
||||
bus_dump_transient_settings(t);
|
||||
}
|
||||
}
|
||||
|
||||
DEFINE_TEST_MAIN(LOG_DEBUG);
|
||||
@@ -171,14 +171,14 @@ TEST(config_parse_unsigned) {
|
||||
}
|
||||
|
||||
TEST(config_parse_strv) {
|
||||
test_config_parse_strv_one("", false, STRV_MAKE_EMPTY);
|
||||
test_config_parse_strv_one("", false, STRV_EMPTY);
|
||||
test_config_parse_strv_one("foo", false, STRV_MAKE("foo"));
|
||||
test_config_parse_strv_one("foo bar foo", false, STRV_MAKE("foo", "bar", "foo"));
|
||||
test_config_parse_strv_one("\"foo bar\" foo", false, STRV_MAKE("foo bar", "foo"));
|
||||
test_config_parse_strv_one("\xc3\x80", false, STRV_MAKE("\xc3\x80"));
|
||||
test_config_parse_strv_one("\xc3\x7f", false, STRV_MAKE("\xc3\x7f"));
|
||||
|
||||
test_config_parse_strv_one("", true, STRV_MAKE_EMPTY);
|
||||
test_config_parse_strv_one("", true, STRV_EMPTY);
|
||||
test_config_parse_strv_one("foo", true, STRV_MAKE("foo"));
|
||||
test_config_parse_strv_one("foo bar foo", true, STRV_MAKE("foo", "bar"));
|
||||
test_config_parse_strv_one("\"foo bar\" foo", true, STRV_MAKE("foo bar", "foo"));
|
||||
|
||||
@@ -42,22 +42,22 @@ TEST(strv_parse_nulstr_full) {
|
||||
STRV_MAKE("hoge", "hoge2", "hoge3", "", "hoge5", "", "xxx"));
|
||||
|
||||
strv_parse_nulstr_full_one(((const char[0]) {}), 0,
|
||||
STRV_MAKE_EMPTY, STRV_MAKE_EMPTY);
|
||||
STRV_EMPTY, STRV_EMPTY);
|
||||
|
||||
strv_parse_nulstr_full_one(((const char[1]) { 0 }), 1,
|
||||
STRV_MAKE(""), STRV_MAKE_EMPTY);
|
||||
STRV_MAKE(""), STRV_EMPTY);
|
||||
|
||||
strv_parse_nulstr_full_one(((const char[1]) { 'x' }), 1,
|
||||
STRV_MAKE("x"), STRV_MAKE("x"));
|
||||
|
||||
strv_parse_nulstr_full_one(((const char[2]) { 0, 0 }), 2,
|
||||
STRV_MAKE("", ""), STRV_MAKE_EMPTY);
|
||||
STRV_MAKE("", ""), STRV_EMPTY);
|
||||
|
||||
strv_parse_nulstr_full_one(((const char[2]) { 'x', 0 }), 2,
|
||||
STRV_MAKE("x"), STRV_MAKE("x"));
|
||||
|
||||
strv_parse_nulstr_full_one(((const char[3]) { 0, 0, 0 }), 3,
|
||||
STRV_MAKE("", "", ""), STRV_MAKE_EMPTY);
|
||||
STRV_MAKE("", "", ""), STRV_EMPTY);
|
||||
|
||||
strv_parse_nulstr_full_one(((const char[3]) { 'x', 0, 0 }), 3,
|
||||
STRV_MAKE("x", ""), STRV_MAKE("x"));
|
||||
|
||||
@@ -244,7 +244,7 @@ TEST(proc_cmdline_key_startswith) {
|
||||
|
||||
TEST(proc_cmdline_filter_pid1_args) {
|
||||
test_proc_cmdline_filter_pid1_args_one("systemd\0",
|
||||
STRV_MAKE_EMPTY);
|
||||
STRV_EMPTY);
|
||||
|
||||
/* short option */
|
||||
test_proc_cmdline_filter_pid1_args_one("systemd\0"
|
||||
|
||||
@@ -110,7 +110,7 @@ TEST(serialize_strv) {
|
||||
log_info("/* %s (%s) */", __func__, fn);
|
||||
|
||||
assert_se(serialize_strv(f, "strv1", NULL) == 0);
|
||||
assert_se(serialize_strv(f, "strv2", STRV_MAKE_EMPTY) == 0);
|
||||
assert_se(serialize_strv(f, "strv2", STRV_EMPTY) == 0);
|
||||
assert_se(serialize_strv(f, "strv3", strv) == 1);
|
||||
assert_se(serialize_strv(f, "strv4", STRV_MAKE(long_string)) == -EINVAL);
|
||||
|
||||
|
||||
@@ -139,7 +139,7 @@ int main(int argc, char *argv[]) {
|
||||
assert_se(test_socket_bind(m, "socket_bind_test.service", netcat_path, "2000", STRV_MAKE("ipv6:2001-2002"), STRV_MAKE("any")) >= 0);
|
||||
assert_se(test_socket_bind(m, "socket_bind_test.service", netcat_path, "6666", STRV_MAKE("ipv4:6666", "6667"), STRV_MAKE("any")) >= 0);
|
||||
assert_se(test_socket_bind(m, "socket_bind_test.service", netcat_path, "6666", STRV_MAKE("6667", "6668", ""), STRV_MAKE("any")) >= 0);
|
||||
assert_se(test_socket_bind(m, "socket_bind_test.service", netcat_path, "7777", STRV_MAKE_EMPTY, STRV_MAKE_EMPTY) >= 0);
|
||||
assert_se(test_socket_bind(m, "socket_bind_test.service", netcat_path, "7777", STRV_EMPTY, STRV_EMPTY) >= 0);
|
||||
assert_se(test_socket_bind(m, "socket_bind_test.service", netcat_path, "8888", STRV_MAKE("any"), STRV_MAKE("any")) >= 0);
|
||||
assert_se(test_socket_bind(m, "socket_bind_test.service", netcat_path, "8888", STRV_MAKE("ipv6:tcp:8888-8889"), STRV_MAKE("any")) >= 0);
|
||||
assert_se(test_socket_bind(m, "socket_bind_test.service", netcat_path, "10000", STRV_MAKE("ipv6:udp:9999-10000"), STRV_MAKE("any")) >= 0);
|
||||
|
||||
@@ -496,7 +496,7 @@ TEST(foreach_word_quoted) {
|
||||
true);
|
||||
|
||||
check("test\\",
|
||||
STRV_MAKE_EMPTY,
|
||||
STRV_EMPTY,
|
||||
true);
|
||||
}
|
||||
|
||||
|
||||
@@ -224,9 +224,9 @@ static void test_strv_unquote_one(const char *quoted, char **list) {
|
||||
|
||||
TEST(strv_unquote) {
|
||||
test_strv_unquote_one(" foo=bar \"waldo\" zzz ", STRV_MAKE("foo=bar", "waldo", "zzz"));
|
||||
test_strv_unquote_one("", STRV_MAKE_EMPTY);
|
||||
test_strv_unquote_one(" ", STRV_MAKE_EMPTY);
|
||||
test_strv_unquote_one(" ", STRV_MAKE_EMPTY);
|
||||
test_strv_unquote_one("", STRV_EMPTY);
|
||||
test_strv_unquote_one(" ", STRV_EMPTY);
|
||||
test_strv_unquote_one(" ", STRV_EMPTY);
|
||||
test_strv_unquote_one(" x", STRV_MAKE("x"));
|
||||
test_strv_unquote_one("x ", STRV_MAKE("x"));
|
||||
test_strv_unquote_one(" x ", STRV_MAKE("x"));
|
||||
@@ -774,7 +774,7 @@ TEST(strv_foreach_backwards) {
|
||||
STRV_FOREACH_BACKWARDS(check, (char**) NULL)
|
||||
assert_not_reached();
|
||||
|
||||
STRV_FOREACH_BACKWARDS(check, STRV_MAKE_EMPTY)
|
||||
STRV_FOREACH_BACKWARDS(check, STRV_EMPTY)
|
||||
assert_not_reached();
|
||||
|
||||
unsigned count = 0;
|
||||
@@ -1049,7 +1049,7 @@ TEST(strv_fnmatch) {
|
||||
_cleanup_strv_free_ char **v = NULL;
|
||||
size_t pos;
|
||||
|
||||
assert_se(!strv_fnmatch(STRV_MAKE_EMPTY, "a"));
|
||||
assert_se(!strv_fnmatch(STRV_EMPTY, "a"));
|
||||
|
||||
v = strv_new("xxx", "*\\*", "yyy");
|
||||
assert_se(!strv_fnmatch_full(v, "\\", 0, NULL));
|
||||
|
||||
@@ -43,7 +43,7 @@ TEST(verbs) {
|
||||
test_dispatch_one(STRV_MAKE("copy-to", "foo", "bar", "baz", "quux", "qaax"), verbs, -EINVAL);
|
||||
|
||||
/* no verb, but a default is set */
|
||||
test_dispatch_one(STRV_MAKE_EMPTY, verbs, 0);
|
||||
test_dispatch_one(STRV_EMPTY, verbs, 0);
|
||||
}
|
||||
|
||||
TEST(verbs_no_default) {
|
||||
|
||||
Reference in New Issue
Block a user