Merge pull request #4911 from keszybz/fixlets
A few simple fixes / improvements
This commit is contained in:
+26
-26
@@ -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;
|
||||
|
||||
+13
-13
@@ -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) {
|
||||
|
||||
int mount_propagation_flags_from_string(const char *name, unsigned long *ret) {
|
||||
|
||||
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;
|
||||
|
||||
*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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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")) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
+22
-10
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user