@@ -0,0 +1,6 @@
|
||||
@@
|
||||
expression n, m;
|
||||
expression list s;
|
||||
@@
|
||||
- n = strjoina(m, s, NULL);
|
||||
+ n = strjoina(m, s);
|
||||
+4
-3
@@ -792,10 +792,11 @@ int update_reboot_parameter_and_warn(const char *param) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
RUN_WITH_UMASK(0022)
|
||||
RUN_WITH_UMASK(0022) {
|
||||
r = write_string_file("/run/systemd/reboot-param", param, WRITE_STRING_FILE_CREATE);
|
||||
if (r < 0)
|
||||
return log_warning_errno(r, "Failed to write reboot parameter file: %m");
|
||||
if (r < 0)
|
||||
return log_warning_errno(r, "Failed to write reboot parameter file: %m");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -259,11 +259,12 @@ int machine_id_setup(const char *root, sd_id128_t machine_id) {
|
||||
/* Hmm, we couldn't write it? So let's write it to
|
||||
* /run/machine-id as a replacement */
|
||||
|
||||
RUN_WITH_UMASK(0022)
|
||||
RUN_WITH_UMASK(0022) {
|
||||
r = write_string_file(run_machine_id, id, WRITE_STRING_FILE_CREATE);
|
||||
if (r < 0) {
|
||||
(void) unlink(run_machine_id);
|
||||
return log_error_errno(r, "Cannot write %s: %m", run_machine_id);
|
||||
if (r < 0) {
|
||||
(void) unlink(run_machine_id);
|
||||
return log_error_errno(r, "Cannot write %s: %m", run_machine_id);
|
||||
}
|
||||
}
|
||||
|
||||
/* And now, let's mount it over */
|
||||
|
||||
+11
-11
@@ -2518,12 +2518,11 @@ int unit_install_bus_match(Unit *u, sd_bus *bus, const char *name) {
|
||||
return -EBUSY;
|
||||
|
||||
match = strjoina("type='signal',"
|
||||
"sender='org.freedesktop.DBus',"
|
||||
"path='/org/freedesktop/DBus',"
|
||||
"interface='org.freedesktop.DBus',"
|
||||
"member='NameOwnerChanged',"
|
||||
"arg0='", name, "'",
|
||||
NULL);
|
||||
"sender='org.freedesktop.DBus',"
|
||||
"path='/org/freedesktop/DBus',"
|
||||
"interface='org.freedesktop.DBus',"
|
||||
"member='NameOwnerChanged',"
|
||||
"arg0='", name, "'");
|
||||
|
||||
return sd_bus_add_match(bus, &u->match_bus_slot, match, signal_name_owner_changed, u);
|
||||
}
|
||||
@@ -3437,7 +3436,7 @@ int unit_write_drop_in_private(Unit *u, UnitSetPropertiesMode mode, const char *
|
||||
if (!IN_SET(mode, UNIT_PERSISTENT, UNIT_RUNTIME))
|
||||
return 0;
|
||||
|
||||
ndata = strjoina("[", UNIT_VTABLE(u)->private_section, "]\n", data, NULL);
|
||||
ndata = strjoina("[", UNIT_VTABLE(u)->private_section, "]\n", data);
|
||||
|
||||
return unit_write_drop_in(u, mode, name, ndata);
|
||||
}
|
||||
@@ -3480,11 +3479,12 @@ int unit_make_transient(Unit *u) {
|
||||
/* Let's open the file we'll write the transient settings into. This file is kept open as long as we are
|
||||
* creating the transient, and is closed in unit_load(), as soon as we start loading the file. */
|
||||
|
||||
RUN_WITH_UMASK(0022)
|
||||
RUN_WITH_UMASK(0022) {
|
||||
f = fopen(path, "we");
|
||||
if (!f) {
|
||||
free(path);
|
||||
return -errno;
|
||||
if (!f) {
|
||||
free(path);
|
||||
return -errno;
|
||||
}
|
||||
}
|
||||
|
||||
if (u->transient_file)
|
||||
|
||||
@@ -1095,7 +1095,7 @@ static int process_kernel(int argc, char* argv[]) {
|
||||
IOVEC_SET_STRING(iovec[n_iovec++], core_environ);
|
||||
}
|
||||
|
||||
core_timestamp = strjoina("COREDUMP_TIMESTAMP=", context[CONTEXT_TIMESTAMP], "000000", NULL);
|
||||
core_timestamp = strjoina("COREDUMP_TIMESTAMP=", context[CONTEXT_TIMESTAMP], "000000");
|
||||
IOVEC_SET_STRING(iovec[n_iovec++], core_timestamp);
|
||||
|
||||
IOVEC_SET_STRING(iovec[n_iovec++], "MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1");
|
||||
|
||||
@@ -513,7 +513,7 @@ static int session_start_scope(Session *s) {
|
||||
if (!scope)
|
||||
return log_oom();
|
||||
|
||||
description = strjoina("Session ", s->id, " of user ", s->user->name, NULL);
|
||||
description = strjoina("Session ", s->id, " of user ", s->user->name);
|
||||
|
||||
r = manager_start_scope(
|
||||
s->manager,
|
||||
|
||||
@@ -730,7 +730,7 @@ int bus_machine_method_open_shell(sd_bus_message *message, void *userdata, sd_bu
|
||||
return r;
|
||||
|
||||
/* Name and mode */
|
||||
unit = strjoina("container-shell@", p, ".service", NULL);
|
||||
unit = strjoina("container-shell@", p, ".service");
|
||||
r = sd_bus_message_append(tm, "ss", unit, "fail");
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@@ -1734,7 +1734,7 @@ static int dnssec_nsec_covers_wildcard(DnsResourceRecord *rr, const char *name)
|
||||
if (r <= 0)
|
||||
return r;
|
||||
|
||||
wc = strjoina("*.", common_suffix, NULL);
|
||||
wc = strjoina("*.", common_suffix);
|
||||
return dns_name_between(dns_resource_key_name(rr->key), wc, rr->nsec.next_domain_name);
|
||||
}
|
||||
|
||||
|
||||
@@ -2050,8 +2050,8 @@ static void log_job_error_with_service_result(const char* service, const char *r
|
||||
_cleanup_free_ char *t;
|
||||
|
||||
t = strv_join((char**) extra_args, " ");
|
||||
systemctl = strjoina("systemctl ", t ?: "<args>", NULL);
|
||||
journalctl = strjoina("journalctl ", t ?: "<args>", NULL);
|
||||
systemctl = strjoina("systemctl ", t ? : "<args>");
|
||||
journalctl = strjoina("journalctl ", t ? : "<args>");
|
||||
}
|
||||
|
||||
if (!isempty(result)) {
|
||||
|
||||
+10
-16
@@ -249,7 +249,7 @@ static int acquire_generator_dirs(
|
||||
if (!e)
|
||||
return -ENXIO;
|
||||
|
||||
prefix = strjoina(e, "/systemd/", NULL);
|
||||
prefix = strjoina(e, "/systemd/");
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -451,7 +451,7 @@ int lookup_paths_init(
|
||||
*transient = NULL,
|
||||
*persistent_control = NULL, *runtime_control = NULL;
|
||||
bool append = false; /* Add items from SYSTEMD_UNIT_PATH before normal directories */
|
||||
char **l = NULL;
|
||||
_cleanup_strv_free_ char **paths = NULL;
|
||||
const char *e;
|
||||
int r;
|
||||
|
||||
@@ -506,13 +506,12 @@ int lookup_paths_init(
|
||||
/* FIXME: empty components in other places should be
|
||||
* rejected. */
|
||||
|
||||
r = path_split_and_make_absolute(e, &l);
|
||||
r = path_split_and_make_absolute(e, &paths);
|
||||
if (r < 0)
|
||||
return r;
|
||||
} else
|
||||
l = NULL;
|
||||
}
|
||||
|
||||
if (!l || append) {
|
||||
if (!paths || append) {
|
||||
/* Let's figure something out. */
|
||||
|
||||
_cleanup_strv_free_ char **add = NULL;
|
||||
@@ -587,14 +586,9 @@ int lookup_paths_init(
|
||||
if (!add)
|
||||
return -ENOMEM;
|
||||
|
||||
if (l) {
|
||||
r = strv_extend_strv(&l, add, false);
|
||||
if (r < 0)
|
||||
r = strv_extend_strv(&paths, add, true);
|
||||
if (r < 0)
|
||||
return r;
|
||||
} else {
|
||||
l = add;
|
||||
add = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
r = patch_root_prefix(&persistent_config, root);
|
||||
@@ -626,12 +620,12 @@ int lookup_paths_init(
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = patch_root_prefix_strv(l, root);
|
||||
r = patch_root_prefix_strv(paths, root);
|
||||
if (r < 0)
|
||||
return -ENOMEM;
|
||||
|
||||
p->search_path = strv_uniq(l);
|
||||
l = NULL;
|
||||
p->search_path = strv_uniq(paths);
|
||||
paths = NULL;
|
||||
|
||||
p->persistent_config = persistent_config;
|
||||
p->runtime_config = runtime_config;
|
||||
|
||||
@@ -3254,7 +3254,7 @@ static int kill_unit(int argc, char *argv[], void *userdata) {
|
||||
|
||||
/* --fail was specified */
|
||||
if (streq(arg_job_mode, "fail"))
|
||||
kill_who = strjoina(arg_kill_who, "-fail", NULL);
|
||||
kill_who = strjoina(arg_kill_who, "-fail");
|
||||
|
||||
r = expand_names(bus, strv_skip(argv, 1), NULL, &names);
|
||||
if (r < 0)
|
||||
@@ -6087,8 +6087,7 @@ static int find_paths_to_edit(sd_bus *bus, char **names, char ***paths) {
|
||||
return r;
|
||||
|
||||
STRV_FOREACH(name, names) {
|
||||
_cleanup_free_ char *path = NULL;
|
||||
char *new_path, *tmp_path;
|
||||
_cleanup_free_ char *path = NULL, *new_path = NULL, *tmp_path = NULL;
|
||||
|
||||
r = unit_find_paths(bus, *name, &lp, &path, NULL);
|
||||
if (r < 0)
|
||||
@@ -6111,6 +6110,7 @@ static int find_paths_to_edit(sd_bus *bus, char **names, char ***paths) {
|
||||
r = strv_push_pair(paths, new_path, tmp_path);
|
||||
if (r < 0)
|
||||
return log_oom();
|
||||
new_path = tmp_path = NULL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -358,7 +358,7 @@ static void test_strv_extend_strv_concat(void) {
|
||||
}
|
||||
|
||||
static void test_strv_extend_strv(void) {
|
||||
_cleanup_strv_free_ char **a = NULL, **b = NULL;
|
||||
_cleanup_strv_free_ char **a = NULL, **b = NULL, **n = NULL;
|
||||
|
||||
a = strv_new("abc", "def", "ghi", NULL);
|
||||
b = strv_new("jkl", "mno", "abc", "pqr", NULL);
|
||||
@@ -373,8 +373,14 @@ static void test_strv_extend_strv(void) {
|
||||
assert_se(streq(a[3], "jkl"));
|
||||
assert_se(streq(a[4], "mno"));
|
||||
assert_se(streq(a[5], "pqr"));
|
||||
|
||||
assert_se(strv_length(a) == 6);
|
||||
|
||||
assert_se(strv_extend_strv(&n, b, false) >= 0);
|
||||
assert_se(streq(n[0], "jkl"));
|
||||
assert_se(streq(n[1], "mno"));
|
||||
assert_se(streq(n[2], "abc"));
|
||||
assert_se(streq(n[3], "pqr"));
|
||||
assert_se(strv_length(n) == 4);
|
||||
}
|
||||
|
||||
static void test_strv_extend(void) {
|
||||
|
||||
Reference in New Issue
Block a user