diff options
-rw-r--r-- | src/basic/log.c | 52 | ||||
-rw-r--r-- | src/basic/mount-util.c | 26 | ||||
-rw-r--r-- | src/basic/mount-util.h | 2 | ||||
-rw-r--r-- | src/core/dbus-execute.c | 2 | ||||
-rw-r--r-- | src/core/load-fragment.c | 16 | ||||
-rw-r--r-- | src/core/main.c | 1 | ||||
-rw-r--r-- | src/debug-generator/debug-generator.c | 12 | ||||
-rw-r--r-- | src/journal/test-compress.c | 4 | ||||
-rw-r--r-- | src/shared/bus-unit-util.c | 12 | ||||
-rw-r--r-- | src/system-update-generator/system-update-generator.c | 6 | ||||
-rw-r--r-- | src/test/test-install-root.c | 3 | ||||
-rw-r--r-- | src/test/test-mount-util.c | 32 |
12 files changed, 83 insertions, 85 deletions
diff --git a/src/basic/log.c b/src/basic/log.c index 71d5a0baa2..557212c022 100644 --- a/src/basic/log.c +++ b/src/basic/log.c @@ -243,13 +243,13 @@ int log_open(void) { return 0; } - if ((log_target != LOG_TARGET_AUTO && log_target != LOG_TARGET_SAFE) || + if (!IN_SET(log_target, LOG_TARGET_AUTO, LOG_TARGET_SAFE) || getpid() == 1 || isatty(STDERR_FILENO) <= 0) { - if (log_target == LOG_TARGET_AUTO || - log_target == LOG_TARGET_JOURNAL_OR_KMSG || - log_target == LOG_TARGET_JOURNAL) { + if (IN_SET(log_target, LOG_TARGET_AUTO, + LOG_TARGET_JOURNAL_OR_KMSG, + LOG_TARGET_JOURNAL)) { r = log_open_journal(); if (r >= 0) { log_close_syslog(); @@ -258,8 +258,8 @@ int log_open(void) { } } - if (log_target == LOG_TARGET_SYSLOG_OR_KMSG || - log_target == LOG_TARGET_SYSLOG) { + if (IN_SET(log_target, LOG_TARGET_SYSLOG_OR_KMSG, + LOG_TARGET_SYSLOG)) { r = log_open_syslog(); if (r >= 0) { log_close_journal(); @@ -268,11 +268,11 @@ int log_open(void) { } } - if (log_target == LOG_TARGET_AUTO || - log_target == LOG_TARGET_SAFE || - log_target == LOG_TARGET_JOURNAL_OR_KMSG || - log_target == LOG_TARGET_SYSLOG_OR_KMSG || - log_target == LOG_TARGET_KMSG) { + if (IN_SET(log_target, LOG_TARGET_AUTO, + LOG_TARGET_SAFE, + LOG_TARGET_JOURNAL_OR_KMSG, + LOG_TARGET_SYSLOG_OR_KMSG, + LOG_TARGET_KMSG)) { r = log_open_kmsg(); if (r >= 0) { log_close_journal(); @@ -588,9 +588,9 @@ static int log_dispatch( if ((e = strpbrk(buffer, NEWLINE))) *(e++) = 0; - if (log_target == LOG_TARGET_AUTO || - log_target == LOG_TARGET_JOURNAL_OR_KMSG || - log_target == LOG_TARGET_JOURNAL) { + if (IN_SET(log_target, LOG_TARGET_AUTO, + LOG_TARGET_JOURNAL_OR_KMSG, + LOG_TARGET_JOURNAL)) { k = write_to_journal(level, error, file, line, func, object_field, object, extra_field, extra, buffer); if (k < 0) { @@ -600,8 +600,8 @@ static int log_dispatch( } } - if (log_target == LOG_TARGET_SYSLOG_OR_KMSG || - log_target == LOG_TARGET_SYSLOG) { + if (IN_SET(log_target, LOG_TARGET_SYSLOG_OR_KMSG, + LOG_TARGET_SYSLOG)) { k = write_to_syslog(level, error, file, line, func, buffer); if (k < 0) { @@ -612,11 +612,11 @@ static int log_dispatch( } if (k <= 0 && - (log_target == LOG_TARGET_AUTO || - log_target == LOG_TARGET_SAFE || - log_target == LOG_TARGET_SYSLOG_OR_KMSG || - log_target == LOG_TARGET_JOURNAL_OR_KMSG || - log_target == LOG_TARGET_KMSG)) { + IN_SET(log_target, LOG_TARGET_AUTO, + LOG_TARGET_SAFE, + LOG_TARGET_SYSLOG_OR_KMSG, + LOG_TARGET_JOURNAL_OR_KMSG, + LOG_TARGET_KMSG)) { k = write_to_kmsg(level, error, file, line, func, buffer); if (k < 0) { @@ -881,9 +881,9 @@ int log_struct_internal( if ((level & LOG_FACMASK) == 0) level = log_facility | LOG_PRI(level); - if ((log_target == LOG_TARGET_AUTO || - log_target == LOG_TARGET_JOURNAL_OR_KMSG || - log_target == LOG_TARGET_JOURNAL) && + if (IN_SET(log_target, LOG_TARGET_AUTO, + LOG_TARGET_JOURNAL_OR_KMSG, + LOG_TARGET_JOURNAL) && journal_fd >= 0) { char header[LINE_MAX]; struct iovec iovec[17] = {}; @@ -1078,8 +1078,8 @@ int log_show_location_from_string(const char *e) { } bool log_on_console(void) { - if (log_target == LOG_TARGET_CONSOLE || - log_target == LOG_TARGET_CONSOLE_PREFIXED) + if (IN_SET(log_target, LOG_TARGET_CONSOLE, + LOG_TARGET_CONSOLE_PREFIXED)) return true; return syslog_fd < 0 && kmsg_fd < 0 && journal_fd < 0; diff --git a/src/basic/mount-util.c b/src/basic/mount-util.c index 8970050408..840e94a553 100644 --- a/src/basic/mount-util.c +++ b/src/basic/mount-util.c @@ -693,13 +693,12 @@ int umount_verbose(const char *what) { const char *mount_propagation_flags_to_string(unsigned long flags) { switch (flags & (MS_SHARED|MS_SLAVE|MS_PRIVATE)) { - + case 0: + return ""; case MS_SHARED: return "shared"; - case MS_SLAVE: return "slave"; - case MS_PRIVATE: return "private"; } @@ -707,17 +706,18 @@ const char *mount_propagation_flags_to_string(unsigned long flags) { return NULL; } -unsigned long mount_propagation_flags_from_string(const char *name) { - if (isempty(name)) - return 0; - - if (streq(name, "shared")) - return MS_SHARED; - if (streq(name, "slave")) - return MS_SLAVE; - if (streq(name, "private")) - return MS_PRIVATE; +int mount_propagation_flags_from_string(const char *name, unsigned long *ret) { + if (isempty(name)) + *ret = 0; + else if (streq(name, "shared")) + *ret = MS_SHARED; + else if (streq(name, "slave")) + *ret = MS_SLAVE; + else if (streq(name, "private")) + *ret = MS_PRIVATE; + else + return -EINVAL; return 0; } diff --git a/src/basic/mount-util.h b/src/basic/mount-util.h index c8049198d4..1615c94e9a 100644 --- a/src/basic/mount-util.h +++ b/src/basic/mount-util.h @@ -63,4 +63,4 @@ int mount_verbose( int umount_verbose(const char *where); const char *mount_propagation_flags_to_string(unsigned long flags); -unsigned long mount_propagation_flags_from_string(const char *name); +int mount_propagation_flags_from_string(const char *name, unsigned long *ret); diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c index b3fc0ff5c3..9960b7a811 100644 --- a/src/core/dbus-execute.c +++ b/src/core/dbus-execute.c @@ -1671,7 +1671,7 @@ int bus_exec_context_set_transient_property( if (mode != UNIT_CHECK) { c->mount_flags = flags; - unit_write_drop_in_private_format(u, mode, name, "%s=%s", name, strempty(mount_propagation_flags_to_string(flags))); + unit_write_drop_in_private_format(u, mode, name, "%s=%s", name, mount_propagation_flags_to_string(flags)); } return 1; diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index f325d853c6..bc0cf73d39 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -1278,25 +1278,17 @@ int config_parse_exec_mount_flags( void *userdata) { - unsigned long flags; ExecContext *c = data; + int r; assert(filename); assert(lvalue); assert(rvalue); assert(data); - if (isempty(rvalue)) - flags = 0; - else { - flags = mount_propagation_flags_from_string(rvalue); - if (flags == 0) { - log_syntax(unit, LOG_ERR, filename, line, 0, "Failed to parse mount flag %s, ignoring.", rvalue); - return 0; - } - } - - c->mount_flags = flags; + r = mount_propagation_flags_from_string(rvalue, &c->mount_flags); + if (r < 0) + log_syntax(unit, LOG_ERR, filename, line, 0, "Failed to parse mount flag %s, ignoring.", rvalue); return 0; } diff --git a/src/core/main.c b/src/core/main.c index 5f9b1acad3..02992c7324 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -904,7 +904,6 @@ static int parse_argv(int argc, char *argv[]) { break; case ARG_UNIT: - r = free_and_strdup(&arg_default_unit, optarg); if (r < 0) return log_error_errno(r, "Failed to set default unit %s: %m", optarg); diff --git a/src/debug-generator/debug-generator.c b/src/debug-generator/debug-generator.c index 1ee3471355..28ebe36b38 100644 --- a/src/debug-generator/debug-generator.c +++ b/src/debug-generator/debug-generator.c @@ -135,8 +135,9 @@ static int generate_wants_symlinks(void) { STRV_FOREACH(u, arg_wants) { _cleanup_free_ char *p = NULL, *f = NULL; + const char *target = arg_default_unit ?: SPECIAL_DEFAULT_TARGET; - p = strjoin(arg_dest, "/", arg_default_unit, ".wants/", *u); + p = strjoin(arg_dest, "/", target, ".wants/", *u); if (!p) return log_oom(); @@ -172,12 +173,6 @@ int main(int argc, char *argv[]) { umask(0022); - r = free_and_strdup(&arg_default_unit, SPECIAL_DEFAULT_TARGET); - if (r < 0) { - log_error_errno(r, "Failed to set default unit %s: %m", SPECIAL_DEFAULT_TARGET); - goto finish; - } - r = parse_proc_cmdline(parse_proc_cmdline_item, NULL, false); if (r < 0) log_warning_errno(r, "Failed to parse kernel command line, ignoring: %m"); @@ -197,6 +192,7 @@ int main(int argc, char *argv[]) { r = q; finish: - return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; + arg_default_unit = mfree(arg_default_unit); + return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; } diff --git a/src/journal/test-compress.c b/src/journal/test-compress.c index 72cadf1771..0469393f3b 100644 --- a/src/journal/test-compress.c +++ b/src/journal/test-compress.c @@ -216,7 +216,11 @@ static void test_lz4_decompress_partial(void) { memset(huge, 'x', HUGE_SIZE); memcpy(huge, "HUGE=", 5); +#if LZ4_VERSION_NUMBER >= 10700 + r = LZ4_compress_default(huge, buf, HUGE_SIZE, buf_size); +#else r = LZ4_compress_limitedOutput(huge, buf, HUGE_SIZE, buf_size); +#endif assert_se(r >= 0); compressed = r; log_info("Compressed %i → %zu", HUGE_SIZE, compressed); diff --git a/src/shared/bus-unit-util.c b/src/shared/bus-unit-util.c index b030b3b9d1..829be2c6da 100644 --- a/src/shared/bus-unit-util.c +++ b/src/shared/bus-unit-util.c @@ -579,15 +579,9 @@ int bus_append_unit_property_assignment(sd_bus_message *m, const char *assignmen else if (streq(field, "MountFlags")) { unsigned long f; - if (isempty(eq)) - f = 0; - else { - f = mount_propagation_flags_from_string(eq); - if (f == 0) { - log_error("Failed to parse mount propagation type: %s", eq); - return -EINVAL; - } - } + r = mount_propagation_flags_from_string(eq, &f); + if (r < 0) + return log_error_errno(r, "Failed to parse mount propagation flags: %s", eq); r = sd_bus_message_append(m, "v", "t", f); } else if (STR_IN_SET(field, "BindPaths", "BindReadOnlyPaths")) { diff --git a/src/system-update-generator/system-update-generator.c b/src/system-update-generator/system-update-generator.c index a3d677f068..6ffb169b21 100644 --- a/src/system-update-generator/system-update-generator.c +++ b/src/system-update-generator/system-update-generator.c @@ -22,12 +22,12 @@ #include "fs-util.h" #include "log.h" +#include "special.h" #include "string-util.h" #include "util.h" /* - * Implements the logic described in - * http://freedesktop.org/wiki/Software/systemd/SystemUpdates + * Implements the logic described in systemd.offline-updates(7). */ static const char *arg_dest = "/tmp"; @@ -43,7 +43,7 @@ static int generate_symlink(void) { return -EINVAL; } - p = strjoina(arg_dest, "/default.target"); + p = strjoina(arg_dest, "/" SPECIAL_DEFAULT_TARGET); if (symlink(SYSTEM_DATA_UNIT_PATH "/system-update.target", p) < 0) return log_error_errno(errno, "Failed to create symlink %s: %m", p); diff --git a/src/test/test-install-root.c b/src/test/test-install-root.c index a98de76b43..d0bc8004f3 100644 --- a/src/test/test-install-root.c +++ b/src/test/test-install-root.c @@ -22,6 +22,7 @@ #include "install.h" #include "mkdir.h" #include "rm-rf.h" +#include "special.h" #include "string-util.h" static void test_basic_mask_and_enable(const char *root) { @@ -338,7 +339,7 @@ static void test_default(const char *root) { assert_se(n_changes == 1); assert_se(changes[0].type == UNIT_FILE_SYMLINK); assert_se(streq(changes[0].source, "/usr/lib/systemd/system/test-default-real.target")); - p = strjoina(root, SYSTEM_CONFIG_UNIT_PATH"/default.target"); + p = strjoina(root, SYSTEM_CONFIG_UNIT_PATH "/" SPECIAL_DEFAULT_TARGET); assert_se(streq(changes[0].path, p)); unit_file_changes_free(changes, n_changes); changes = NULL; n_changes = 0; diff --git a/src/test/test-mount-util.c b/src/test/test-mount-util.c index da7f35623b..7c5929d009 100644 --- a/src/test/test-mount-util.c +++ b/src/test/test-mount-util.c @@ -23,23 +23,35 @@ #include "mount-util.h" #include "string-util.h" -static void test_mount_propagation_flags(const char *name, unsigned long f) { - assert(mount_propagation_flags_from_string(name) == f); +static void test_mount_propagation_flags(const char *name, int ret, unsigned long expected) { + long unsigned flags; - if (f != 0) - assert_se(streq_ptr(mount_propagation_flags_to_string(f), name)); + assert(mount_propagation_flags_from_string(name, &flags) == ret); + + if (ret >= 0) { + const char *c; + + assert_se(flags == expected); + + c = mount_propagation_flags_to_string(flags); + if (isempty(name)) + assert_se(isempty(c)); + else + assert_se(streq(c, name)); + } } int main(int argc, char *argv[]) { log_set_max_level(LOG_DEBUG); - test_mount_propagation_flags("shared", MS_SHARED); - test_mount_propagation_flags("slave", MS_SLAVE); - test_mount_propagation_flags("private", MS_PRIVATE); - test_mount_propagation_flags(NULL, 0); - test_mount_propagation_flags("", 0); - test_mount_propagation_flags("xxxx", 0); + test_mount_propagation_flags("shared", 0, MS_SHARED); + test_mount_propagation_flags("slave", 0, MS_SLAVE); + test_mount_propagation_flags("private", 0, MS_PRIVATE); + test_mount_propagation_flags(NULL, 0, 0); + test_mount_propagation_flags("", 0, 0); + test_mount_propagation_flags("xxxx", -EINVAL, 0); + test_mount_propagation_flags(" ", -EINVAL, 0); return 0; } |