Merge pull request #8553 from poettering/take-take
introduce TAKE_FD() and TAKE_PTR() macros
This commit is contained in:
commit
97a33b126c
14
coccinelle/take-fd.cocci
Normal file
14
coccinelle/take-fd.cocci
Normal file
|
@ -0,0 +1,14 @@
|
|||
@@
|
||||
local idexpression p;
|
||||
expression q;
|
||||
@@
|
||||
- p = q;
|
||||
- q = -1;
|
||||
- return p;
|
||||
+ return TAKE_FD(q);
|
||||
@@
|
||||
expression p, q;
|
||||
@@
|
||||
- p = q;
|
||||
- q = -1;
|
||||
+ p = TAKE_FD(q);
|
14
coccinelle/take-ptr.cocci
Normal file
14
coccinelle/take-ptr.cocci
Normal file
|
@ -0,0 +1,14 @@
|
|||
@@
|
||||
local idexpression p;
|
||||
expression q;
|
||||
@@
|
||||
- p = q;
|
||||
- q = NULL;
|
||||
- return p;
|
||||
+ return TAKE_PTR(q);
|
||||
@@
|
||||
expression p, q;
|
||||
@@
|
||||
- p = q;
|
||||
- q = NULL;
|
||||
+ p = TAKE_PTR(q);
|
|
@ -130,3 +130,12 @@ void* greedy_realloc0(void **p, size_t *allocated, size_t need, size_t size);
|
|||
_new_ = alloca_align(_size_, (align)); \
|
||||
(void*)memset(_new_, 0, _size_); \
|
||||
})
|
||||
|
||||
/* Takes inspiration from Rusts's Option::take() method: reads and returns a pointer, but at the same time resets it to
|
||||
* NULL. See: https://doc.rust-lang.org/std/option/enum.Option.html#method.take */
|
||||
#define TAKE_PTR(ptr) \
|
||||
({ \
|
||||
typeof(ptr) _ptr_ = (ptr); \
|
||||
(ptr) = NULL; \
|
||||
_ptr_; \
|
||||
})
|
||||
|
|
|
@ -103,8 +103,7 @@ int capability_set_to_string_alloc(uint64_t set, char **s) {
|
|||
|
||||
str[n > 0 ? n - 1 : 0] = '\0'; /* truncate the last space, if it's there */
|
||||
|
||||
*s = str;
|
||||
str = NULL;
|
||||
*s = TAKE_PTR(str);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1424,10 +1424,9 @@ int cg_pid_get_path_shifted(pid_t pid, const char *root, char **cgroup) {
|
|||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (c == raw) {
|
||||
*cgroup = raw;
|
||||
raw = NULL;
|
||||
} else {
|
||||
if (c == raw)
|
||||
*cgroup = TAKE_PTR(raw);
|
||||
else {
|
||||
char *n;
|
||||
|
||||
n = strdup(c);
|
||||
|
@ -2010,8 +2009,7 @@ int cg_slice_to_path(const char *unit, char **ret) {
|
|||
if (!strextend(&s, e, NULL))
|
||||
return -ENOMEM;
|
||||
|
||||
*ret = s;
|
||||
s = NULL;
|
||||
*ret = TAKE_PTR(s);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -2301,8 +2299,7 @@ int cg_mask_to_string(CGroupMask mask, char **ret) {
|
|||
assert(s);
|
||||
|
||||
s[n] = 0;
|
||||
*ret = s;
|
||||
s = NULL;
|
||||
*ret = TAKE_PTR(s);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -194,8 +194,7 @@ finish:
|
|||
|
||||
finish_force_next:
|
||||
s[sz] = 0;
|
||||
*ret = s;
|
||||
s = NULL;
|
||||
*ret = TAKE_PTR(s);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -484,10 +484,7 @@ int acquire_data_fd(const void *data, size_t size, unsigned flags) {
|
|||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = fd;
|
||||
fd = -1;
|
||||
|
||||
return r;
|
||||
return TAKE_FD(fd);
|
||||
}
|
||||
|
||||
try_pipe:
|
||||
|
@ -524,10 +521,7 @@ try_pipe:
|
|||
|
||||
(void) fd_nonblock(pipefds[0], false);
|
||||
|
||||
r = pipefds[0];
|
||||
pipefds[0] = -1;
|
||||
|
||||
return r;
|
||||
return TAKE_FD(pipefds[0]);
|
||||
}
|
||||
|
||||
try_dev_shm:
|
||||
|
|
|
@ -105,3 +105,11 @@ int rearrange_stdio(int original_input_fd, int original_output_fd, int original_
|
|||
static inline int make_null_stdio(void) {
|
||||
return rearrange_stdio(-1, -1, -1);
|
||||
}
|
||||
|
||||
/* Like TAKE_PTR() but for file descriptors, resetting them to -1 */
|
||||
#define TAKE_FD(fd) \
|
||||
({ \
|
||||
int _fd_ = (fd); \
|
||||
(fd) = -1; \
|
||||
_fd_; \
|
||||
})
|
||||
|
|
|
@ -330,8 +330,7 @@ int read_full_stream(FILE *f, char **contents, size_t *size) {
|
|||
}
|
||||
|
||||
buf[l] = 0;
|
||||
*contents = buf;
|
||||
buf = NULL; /* do not free */
|
||||
*contents = TAKE_PTR(buf);
|
||||
|
||||
if (size)
|
||||
*size = l;
|
||||
|
@ -1432,8 +1431,7 @@ int open_tmpfile_linkable(const char *target, int flags, char **ret_path) {
|
|||
if (fd < 0)
|
||||
return -errno;
|
||||
|
||||
*ret_path = tmp;
|
||||
tmp = NULL;
|
||||
*ret_path = TAKE_PTR(tmp);
|
||||
|
||||
return fd;
|
||||
}
|
||||
|
@ -1519,8 +1517,7 @@ int read_nul_string(FILE *f, char **ret) {
|
|||
return -ENOMEM;
|
||||
}
|
||||
|
||||
*ret = x;
|
||||
x = NULL;
|
||||
*ret = TAKE_PTR(x);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -458,10 +458,8 @@ int get_files_in_directory(const char *path, char ***list) {
|
|||
n++;
|
||||
}
|
||||
|
||||
if (list) {
|
||||
*list = l;
|
||||
l = NULL; /* avoid freeing */
|
||||
}
|
||||
if (list)
|
||||
*list = TAKE_PTR(l);
|
||||
|
||||
return n;
|
||||
}
|
||||
|
@ -732,8 +730,7 @@ int chase_symlinks(const char *path, const char *original_root, unsigned flags,
|
|||
}
|
||||
|
||||
safe_close(fd);
|
||||
fd = fd_parent;
|
||||
fd_parent = -1;
|
||||
fd = TAKE_FD(fd_parent);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
@ -838,10 +835,9 @@ int chase_symlinks(const char *path, const char *original_root, unsigned flags,
|
|||
}
|
||||
|
||||
/* If this is not a symlink, then let's just add the name we read to what we already verified. */
|
||||
if (!done) {
|
||||
done = first;
|
||||
first = NULL;
|
||||
} else {
|
||||
if (!done)
|
||||
done = TAKE_PTR(first);
|
||||
else {
|
||||
/* If done is "/", as first also contains slash at the head, then remove this redundant slash. */
|
||||
if (streq(done, "/"))
|
||||
*done = '\0';
|
||||
|
@ -852,8 +848,7 @@ int chase_symlinks(const char *path, const char *original_root, unsigned flags,
|
|||
|
||||
/* And iterate again, but go one directory further down. */
|
||||
safe_close(fd);
|
||||
fd = child;
|
||||
child = -1;
|
||||
fd = TAKE_FD(child);
|
||||
}
|
||||
|
||||
if (!done) {
|
||||
|
@ -863,22 +858,15 @@ int chase_symlinks(const char *path, const char *original_root, unsigned flags,
|
|||
return -ENOMEM;
|
||||
}
|
||||
|
||||
if (ret) {
|
||||
*ret = done;
|
||||
done = NULL;
|
||||
}
|
||||
if (ret)
|
||||
*ret = TAKE_PTR(done);
|
||||
|
||||
if (flags & CHASE_OPEN) {
|
||||
int q;
|
||||
|
||||
/* Return the O_PATH fd we currently are looking to the caller. It can translate it to a proper fd by
|
||||
* opening /proc/self/fd/xyz. */
|
||||
|
||||
assert(fd >= 0);
|
||||
q = fd;
|
||||
fd = -1;
|
||||
|
||||
return q;
|
||||
return TAKE_FD(fd);
|
||||
}
|
||||
|
||||
return exists;
|
||||
|
|
|
@ -341,8 +341,7 @@ int get_keymaps(char ***ret) {
|
|||
|
||||
strv_sort(l);
|
||||
|
||||
*ret = l;
|
||||
l = NULL;
|
||||
*ret = TAKE_PTR(l);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -168,8 +168,5 @@ int memfd_new_and_map(const char *name, size_t sz, void **p) {
|
|||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = fd;
|
||||
fd = -1;
|
||||
|
||||
return r;
|
||||
return TAKE_FD(fd);
|
||||
}
|
||||
|
|
|
@ -81,10 +81,8 @@ int name_to_handle_at_loop(
|
|||
|
||||
if (name_to_handle_at(fd, path, h, &mnt_id, flags) >= 0) {
|
||||
|
||||
if (ret_handle) {
|
||||
*ret_handle = h;
|
||||
h = NULL;
|
||||
}
|
||||
if (ret_handle)
|
||||
*ret_handle = TAKE_PTR(h);
|
||||
|
||||
if (ret_mnt_id)
|
||||
*ret_mnt_id = mnt_id;
|
||||
|
@ -951,8 +949,7 @@ int mount_option_mangle(
|
|||
}
|
||||
|
||||
*ret_mount_flags = mount_flags;
|
||||
*ret_remaining_options = ret;
|
||||
ret = NULL;
|
||||
*ret_remaining_options = TAKE_PTR(ret);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -324,8 +324,7 @@ int parse_syscall_and_errno(const char *in, char **name, int *error) {
|
|||
return -EINVAL;
|
||||
|
||||
*error = e;
|
||||
*name = n;
|
||||
n = NULL;
|
||||
*name = TAKE_PTR(n);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -290,8 +290,7 @@ char **path_strv_resolve(char **l, const char *root) {
|
|||
r = chase_symlinks(t, root, 0, &u);
|
||||
if (r == -ENOENT) {
|
||||
if (root) {
|
||||
u = orig;
|
||||
orig = NULL;
|
||||
u = TAKE_PTR(orig);
|
||||
free(t);
|
||||
} else
|
||||
u = t;
|
||||
|
|
|
@ -204,10 +204,8 @@ int proc_cmdline_get_key(const char *key, unsigned flags, char **value) {
|
|||
}
|
||||
}
|
||||
|
||||
if (value) {
|
||||
*value = ret;
|
||||
ret = NULL;
|
||||
}
|
||||
if (value)
|
||||
*value = TAKE_PTR(ret);
|
||||
|
||||
return found;
|
||||
}
|
||||
|
|
|
@ -623,8 +623,7 @@ int get_process_environ(pid_t pid, char **env) {
|
|||
} else
|
||||
outcome[sz] = '\0';
|
||||
|
||||
*env = outcome;
|
||||
outcome = NULL;
|
||||
*env = TAKE_PTR(outcome);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -48,8 +48,7 @@ int secure_bits_to_string_alloc(int i, char **s) {
|
|||
if (len != 0)
|
||||
str[len - 1] = '\0';
|
||||
|
||||
*s = str;
|
||||
str = NULL;
|
||||
*s = TAKE_PTR(str);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -985,8 +985,7 @@ int getpeersec(int fd, char **ret) {
|
|||
if (isempty(s))
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
*ret = s;
|
||||
s = NULL;
|
||||
*ret = TAKE_PTR(s);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -341,8 +341,7 @@ int strv_split_extract(char ***t, const char *s, const char *separators, Extract
|
|||
if (!GREEDY_REALLOC(l, allocated, n + 2))
|
||||
return -ENOMEM;
|
||||
|
||||
l[n++] = word;
|
||||
word = NULL;
|
||||
l[n++] = TAKE_PTR(word);
|
||||
|
||||
l[n] = NULL;
|
||||
}
|
||||
|
@ -353,8 +352,7 @@ int strv_split_extract(char ***t, const char *s, const char *separators, Extract
|
|||
return -ENOMEM;
|
||||
}
|
||||
|
||||
*t = l;
|
||||
l = NULL;
|
||||
*t = TAKE_PTR(l);
|
||||
|
||||
return (int) n;
|
||||
}
|
||||
|
|
|
@ -496,10 +496,7 @@ int acquire_terminal(
|
|||
fd = safe_close(fd);
|
||||
}
|
||||
|
||||
r = fd;
|
||||
fd = -1;
|
||||
|
||||
return r;
|
||||
return TAKE_FD(fd);
|
||||
}
|
||||
|
||||
int release_terminal(void) {
|
||||
|
@ -707,10 +704,9 @@ int vtnr_from_tty(const char *tty) {
|
|||
tty = active;
|
||||
}
|
||||
|
||||
if (tty == active) {
|
||||
*ret = active;
|
||||
active = NULL;
|
||||
} else {
|
||||
if (tty == active)
|
||||
*ret = TAKE_PTR(active);
|
||||
else {
|
||||
char *tmp;
|
||||
|
||||
tmp = strdup(tty);
|
||||
|
@ -778,8 +774,7 @@ int get_kernel_consoles(char ***ret) {
|
|||
goto fallback;
|
||||
}
|
||||
|
||||
*ret = l;
|
||||
l = NULL;
|
||||
*ret = TAKE_PTR(l);
|
||||
|
||||
return 0;
|
||||
|
||||
|
@ -788,8 +783,7 @@ fallback:
|
|||
if (r < 0)
|
||||
return r;
|
||||
|
||||
*ret = l;
|
||||
l = NULL;
|
||||
*ret = TAKE_PTR(l);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -363,8 +363,7 @@ int unit_name_unescape(const char *f, char **ret) {
|
|||
|
||||
*t = 0;
|
||||
|
||||
*ret = r;
|
||||
r = NULL;
|
||||
*ret = TAKE_PTR(r);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -275,10 +275,9 @@ static int parse_xml_node(Context *context, const char *prefix, unsigned n_depth
|
|||
|
||||
free(node_path);
|
||||
|
||||
if (name[0] == '/') {
|
||||
node_path = name;
|
||||
name = NULL;
|
||||
} else {
|
||||
if (name[0] == '/')
|
||||
node_path = TAKE_PTR(name);
|
||||
else {
|
||||
|
||||
if (endswith(prefix, "/"))
|
||||
node_path = strappend(prefix, name);
|
||||
|
|
|
@ -1381,8 +1381,7 @@ int unit_set_cgroup_path(Unit *u, const char *path) {
|
|||
|
||||
unit_release_cgroup(u);
|
||||
|
||||
u->cgroup_path = p;
|
||||
p = NULL;
|
||||
u->cgroup_path = TAKE_PTR(p);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -424,10 +424,8 @@ static int property_get_syscall_filter(
|
|||
if (r < 0)
|
||||
return -ENOMEM;
|
||||
}
|
||||
} else {
|
||||
s = name;
|
||||
name = NULL;
|
||||
}
|
||||
} else
|
||||
s = TAKE_PTR(name);
|
||||
|
||||
r = strv_consume(&l, s);
|
||||
if (r < 0)
|
||||
|
@ -1125,8 +1123,7 @@ int bus_set_transient_exec_command(
|
|||
return -ENOMEM;
|
||||
}
|
||||
|
||||
c->argv = argv;
|
||||
argv = NULL;
|
||||
c->argv = TAKE_PTR(argv);
|
||||
|
||||
c->flags = b ? EXEC_COMMAND_IGNORE_FAILURE : 0;
|
||||
|
||||
|
|
|
@ -274,8 +274,7 @@ int bus_job_coldplug_bus_track(Job *j) {
|
|||
|
||||
assert(j);
|
||||
|
||||
deserialized_clients = j->deserialized_clients;
|
||||
j->deserialized_clients = NULL;
|
||||
deserialized_clients = TAKE_PTR(j->deserialized_clients);
|
||||
|
||||
if (strv_isempty(deserialized_clients))
|
||||
return 0;
|
||||
|
|
|
@ -501,8 +501,7 @@ static int bus_job_enumerate(sd_bus *bus, const char *path, void *userdata, char
|
|||
|
||||
assert(hashmap_size(m->jobs) == k);
|
||||
|
||||
*nodes = l;
|
||||
l = NULL;
|
||||
*nodes = TAKE_PTR(l);
|
||||
|
||||
return k;
|
||||
}
|
||||
|
@ -526,8 +525,7 @@ static int bus_unit_enumerate(sd_bus *bus, const char *path, void *userdata, cha
|
|||
k++;
|
||||
}
|
||||
|
||||
*nodes = l;
|
||||
l = NULL;
|
||||
*nodes = TAKE_PTR(l);
|
||||
|
||||
return k;
|
||||
}
|
||||
|
|
|
@ -319,10 +319,7 @@ static int pick_uid(char **suggested_paths, const char *name, uid_t *ret_uid) {
|
|||
(void) make_uid_symlinks(candidate, name, true); /* also add direct lookup symlinks */
|
||||
|
||||
*ret_uid = candidate;
|
||||
r = lock_fd;
|
||||
lock_fd = -1;
|
||||
|
||||
return r;
|
||||
return TAKE_FD(lock_fd);
|
||||
|
||||
next:
|
||||
;
|
||||
|
@ -770,8 +767,7 @@ int dynamic_user_lookup_uid(Manager *m, uid_t uid, char **ret) {
|
|||
if (check_uid != uid) /* lock file doesn't match our own idea */
|
||||
return -ESRCH;
|
||||
|
||||
*ret = user;
|
||||
user = NULL;
|
||||
*ret = TAKE_PTR(user);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1733,8 +1733,7 @@ static int build_environment(
|
|||
our_env[n_env++] = NULL;
|
||||
assert(n_env <= 12);
|
||||
|
||||
*ret = our_env;
|
||||
our_env = NULL;
|
||||
*ret = TAKE_PTR(our_env);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1763,8 +1762,7 @@ static int build_pass_environment(const ExecContext *c, char ***ret) {
|
|||
x = NULL;
|
||||
}
|
||||
|
||||
*ret = pass_env;
|
||||
pass_env = NULL;
|
||||
*ret = TAKE_PTR(pass_env);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -2290,9 +2288,7 @@ static int compile_bind_mounts(
|
|||
|
||||
*ret_bind_mounts = bind_mounts;
|
||||
*ret_n_bind_mounts = n;
|
||||
*ret_empty_directories = empty_directories;
|
||||
|
||||
empty_directories = NULL;
|
||||
*ret_empty_directories = TAKE_PTR(empty_directories);
|
||||
|
||||
return (int) n;
|
||||
|
||||
|
@ -2696,8 +2692,7 @@ static int compile_suggested_paths(const ExecContext *c, const ExecParameters *p
|
|||
}
|
||||
}
|
||||
|
||||
*ret = list;
|
||||
list = NULL;
|
||||
*ret = TAKE_PTR(list);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1248,8 +1248,7 @@ int config_parse_exec_cpu_affinity(const char *unit,
|
|||
}
|
||||
|
||||
if (!c->cpuset) {
|
||||
c->cpuset = cpuset;
|
||||
cpuset = NULL;
|
||||
c->cpuset = TAKE_PTR(cpuset);
|
||||
c->cpuset_ncpus = (unsigned) ncpus;
|
||||
return 0;
|
||||
}
|
||||
|
@ -1257,8 +1256,7 @@ int config_parse_exec_cpu_affinity(const char *unit,
|
|||
if (c->cpuset_ncpus < (unsigned) ncpus) {
|
||||
CPU_OR_S(CPU_ALLOC_SIZE(c->cpuset_ncpus), cpuset, c->cpuset, cpuset);
|
||||
CPU_FREE(c->cpuset);
|
||||
c->cpuset = cpuset;
|
||||
cpuset = NULL;
|
||||
c->cpuset = TAKE_PTR(cpuset);
|
||||
c->cpuset_ncpus = (unsigned) ncpus;
|
||||
return 0;
|
||||
}
|
||||
|
@ -2089,8 +2087,7 @@ int config_parse_user_group(
|
|||
return -ENOEXEC;
|
||||
}
|
||||
|
||||
n = k;
|
||||
k = NULL;
|
||||
n = TAKE_PTR(k);
|
||||
}
|
||||
|
||||
free(*user);
|
||||
|
@ -2320,10 +2317,8 @@ int config_parse_environ(
|
|||
"Failed to resolve specifiers, ignoring: %s", word);
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
k = word;
|
||||
word = NULL;
|
||||
}
|
||||
} else
|
||||
k = TAKE_PTR(word);
|
||||
|
||||
if (!env_assignment_is_valid(k)) {
|
||||
log_syntax(unit, LOG_ERR, filename, line, 0,
|
||||
|
@ -2390,10 +2385,8 @@ int config_parse_pass_environ(
|
|||
"Failed to resolve specifiers, ignoring: %s", word);
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
k = word;
|
||||
word = NULL;
|
||||
}
|
||||
} else
|
||||
k = TAKE_PTR(word);
|
||||
|
||||
if (!env_name_is_valid(k)) {
|
||||
log_syntax(unit, LOG_ERR, filename, line, 0,
|
||||
|
@ -2469,10 +2462,8 @@ int config_parse_unset_environ(
|
|||
"Failed to resolve specifiers, ignoring: %s", word);
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
k = word;
|
||||
word = NULL;
|
||||
}
|
||||
} else
|
||||
k = TAKE_PTR(word);
|
||||
|
||||
if (!env_assignment_is_valid(k) && !env_name_is_valid(k)) {
|
||||
log_syntax(unit, LOG_ERR, filename, line, 0,
|
||||
|
@ -3515,8 +3506,7 @@ int config_parse_device_allow(
|
|||
if (!a)
|
||||
return log_oom();
|
||||
|
||||
a->path = path;
|
||||
path = NULL;
|
||||
a->path = TAKE_PTR(path);
|
||||
a->r = !!strchr(m, 'r');
|
||||
a->w = !!strchr(m, 'w');
|
||||
a->m = !!strchr(m, 'm');
|
||||
|
@ -3615,8 +3605,7 @@ int config_parse_io_device_weight(
|
|||
if (!w)
|
||||
return log_oom();
|
||||
|
||||
w->path = path;
|
||||
path = NULL;
|
||||
w->path = TAKE_PTR(path);
|
||||
|
||||
w->weight = u;
|
||||
|
||||
|
@ -3701,8 +3690,7 @@ int config_parse_io_limit(
|
|||
if (!l)
|
||||
return log_oom();
|
||||
|
||||
l->path = path;
|
||||
path = NULL;
|
||||
l->path = TAKE_PTR(path);
|
||||
for (ttype = 0; ttype < _CGROUP_IO_LIMIT_TYPE_MAX; ttype++)
|
||||
l->limits[ttype] = cgroup_io_limit_defaults[ttype];
|
||||
|
||||
|
@ -3804,8 +3792,7 @@ int config_parse_blockio_device_weight(
|
|||
if (!w)
|
||||
return log_oom();
|
||||
|
||||
w->path = path;
|
||||
path = NULL;
|
||||
w->path = TAKE_PTR(path);
|
||||
|
||||
w->weight = u;
|
||||
|
||||
|
@ -3885,8 +3872,7 @@ int config_parse_blockio_bandwidth(
|
|||
if (!b)
|
||||
return log_oom();
|
||||
|
||||
b->path = path;
|
||||
path = NULL;
|
||||
b->path = TAKE_PTR(path);
|
||||
b->rbps = CGROUP_LIMIT_MAX;
|
||||
b->wbps = CGROUP_LIMIT_MAX;
|
||||
|
||||
|
|
|
@ -844,8 +844,7 @@ static int manager_setup_notify(Manager *m) {
|
|||
if (r < 0)
|
||||
return log_error_errno(errno, "SO_PASSCRED failed: %m");
|
||||
|
||||
m->notify_fd = fd;
|
||||
fd = -1;
|
||||
m->notify_fd = TAKE_FD(fd);
|
||||
|
||||
log_debug("Using notification socket %s", m->notify_socket);
|
||||
}
|
||||
|
|
|
@ -315,10 +315,8 @@ int mount_cgroup_controllers(char ***join_controllers) {
|
|||
options = strv_join(*k, ",");
|
||||
if (!options)
|
||||
return log_oom();
|
||||
} else {
|
||||
options = controller;
|
||||
controller = NULL;
|
||||
}
|
||||
} else
|
||||
options = TAKE_PTR(controller);
|
||||
|
||||
where = strappend("/sys/fs/cgroup/", options);
|
||||
if (!where)
|
||||
|
|
|
@ -2554,8 +2554,7 @@ static int service_deserialize_exec_command(Unit *u, const char *key, const char
|
|||
state = STATE_EXEC_COMMAND_PATH;
|
||||
break;
|
||||
case STATE_EXEC_COMMAND_PATH:
|
||||
path = arg;
|
||||
arg = NULL;
|
||||
path = TAKE_PTR(arg);
|
||||
state = STATE_EXEC_COMMAND_ARGS;
|
||||
|
||||
if (!path_is_absolute(path))
|
||||
|
|
|
@ -1238,10 +1238,7 @@ static int fifo_address_create(
|
|||
goto fail;
|
||||
}
|
||||
|
||||
r = fd;
|
||||
fd = -1;
|
||||
|
||||
return r;
|
||||
return TAKE_FD(fd);
|
||||
|
||||
fail:
|
||||
mac_selinux_create_file_clear();
|
||||
|
@ -1251,7 +1248,6 @@ fail:
|
|||
static int special_address_create(const char *path, bool writable) {
|
||||
_cleanup_close_ int fd = -1;
|
||||
struct stat st;
|
||||
int r;
|
||||
|
||||
assert(path);
|
||||
|
||||
|
@ -1266,16 +1262,12 @@ static int special_address_create(const char *path, bool writable) {
|
|||
if (!S_ISREG(st.st_mode) && !S_ISCHR(st.st_mode))
|
||||
return -EEXIST;
|
||||
|
||||
r = fd;
|
||||
fd = -1;
|
||||
|
||||
return r;
|
||||
return TAKE_FD(fd);
|
||||
}
|
||||
|
||||
static int usbffs_address_create(const char *path) {
|
||||
_cleanup_close_ int fd = -1;
|
||||
struct stat st;
|
||||
int r;
|
||||
|
||||
assert(path);
|
||||
|
||||
|
@ -1290,10 +1282,7 @@ static int usbffs_address_create(const char *path) {
|
|||
if (!S_ISREG(st.st_mode))
|
||||
return -EEXIST;
|
||||
|
||||
r = fd;
|
||||
fd = -1;
|
||||
|
||||
return r;
|
||||
return TAKE_FD(fd);
|
||||
}
|
||||
|
||||
static int mq_address_create(
|
||||
|
@ -1306,7 +1295,6 @@ static int mq_address_create(
|
|||
struct stat st;
|
||||
mode_t old_mask;
|
||||
struct mq_attr _attr, *attr = NULL;
|
||||
int r;
|
||||
|
||||
assert(path);
|
||||
|
||||
|
@ -1338,10 +1326,7 @@ static int mq_address_create(
|
|||
st.st_gid != getgid())
|
||||
return -EEXIST;
|
||||
|
||||
r = fd;
|
||||
fd = -1;
|
||||
|
||||
return r;
|
||||
return TAKE_FD(fd);
|
||||
}
|
||||
|
||||
static int socket_symlink(Socket *s) {
|
||||
|
|
|
@ -709,10 +709,8 @@ static int set_complete_move(Set **s, Set **other) {
|
|||
|
||||
if (*s)
|
||||
return set_move(*s, *other);
|
||||
else {
|
||||
*s = *other;
|
||||
*other = NULL;
|
||||
}
|
||||
else
|
||||
*s = TAKE_PTR(*other);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -726,10 +724,8 @@ static int hashmap_complete_move(Hashmap **s, Hashmap **other) {
|
|||
|
||||
if (*s)
|
||||
return hashmap_move(*s, *other);
|
||||
else {
|
||||
*s = *other;
|
||||
*other = NULL;
|
||||
}
|
||||
else
|
||||
*s = TAKE_PTR(*other);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -4017,8 +4013,7 @@ static int user_from_unit_name(Unit *u, char **ret) {
|
|||
return r;
|
||||
|
||||
if (valid_user_group_name(n)) {
|
||||
*ret = n;
|
||||
n = NULL;
|
||||
*ret = TAKE_PTR(n);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -4220,7 +4215,7 @@ char* unit_escape_setting(const char *s, UnitWriteFlags flags, char **buf) {
|
|||
char* unit_concat_strv(char **l, UnitWriteFlags flags) {
|
||||
_cleanup_free_ char *result = NULL;
|
||||
size_t n = 0, allocated = 0;
|
||||
char **i, *ret;
|
||||
char **i;
|
||||
|
||||
/* Takes a list of strings, escapes them, and concatenates them. This may be used to format command lines in a
|
||||
* way suitable for ExecStart= stanzas */
|
||||
|
@ -4255,10 +4250,7 @@ char* unit_concat_strv(char **l, UnitWriteFlags flags) {
|
|||
|
||||
result[n] = 0;
|
||||
|
||||
ret = result;
|
||||
result = NULL;
|
||||
|
||||
return ret;
|
||||
return TAKE_PTR(result);
|
||||
}
|
||||
|
||||
int unit_write_setting(Unit *u, UnitWriteFlags flags, const char *name, const char *data) {
|
||||
|
|
|
@ -584,8 +584,7 @@ static int compose_open_fds(pid_t pid, char **open_fds) {
|
|||
if (errno > 0)
|
||||
return -errno;
|
||||
|
||||
*open_fds = buffer;
|
||||
buffer = NULL;
|
||||
*open_fds = TAKE_PTR(buffer);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -764,8 +764,7 @@ static int save_core(sd_journal *j, FILE *file, char **path, bool *unlink_temp)
|
|||
return log_error_errno(errno, "File \"%s\" is not readable: %m", filename);
|
||||
|
||||
if (path && !endswith(filename, ".xz") && !endswith(filename, ".lz4")) {
|
||||
*path = filename;
|
||||
filename = NULL;
|
||||
*path = TAKE_PTR(filename);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -184,8 +184,7 @@ int coredump_make_stack_trace(int fd, const char *executable, char **ret) {
|
|||
|
||||
c.f = safe_fclose(c.f);
|
||||
|
||||
*ret = buf;
|
||||
buf = NULL;
|
||||
*ret = TAKE_PTR(buf);
|
||||
|
||||
r = 0;
|
||||
|
||||
|
|
|
@ -402,8 +402,7 @@ static int get_password(const char *vol, const char *src, usec_t until, bool acc
|
|||
*p = c;
|
||||
}
|
||||
|
||||
*ret = passwords;
|
||||
passwords = NULL;
|
||||
*ret = TAKE_PTR(passwords);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -45,8 +45,7 @@ static int environment_dirs(char ***ret) {
|
|||
if (r < 0)
|
||||
return r;
|
||||
|
||||
*ret = dirs;
|
||||
dirs = NULL;
|
||||
*ret = TAKE_PTR(dirs);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -575,8 +575,7 @@ static int prompt_root_password(void) {
|
|||
continue;
|
||||
}
|
||||
|
||||
arg_root_password = a;
|
||||
a = NULL;
|
||||
arg_root_password = TAKE_PTR(a);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -326,13 +326,10 @@ int raw_export_start(RawExport *e, const char *path, int fd, ImportCompressType
|
|||
|
||||
/* Try to take a reflink snapshot of the file, if we can t make the export atomic */
|
||||
tfd = reflink_snapshot(sfd, path);
|
||||
if (tfd >= 0) {
|
||||
e->input_fd = tfd;
|
||||
tfd = -1;
|
||||
} else {
|
||||
e->input_fd = sfd;
|
||||
sfd = -1;
|
||||
}
|
||||
if (tfd >= 0)
|
||||
e->input_fd = TAKE_FD(tfd);
|
||||
else
|
||||
e->input_fd = TAKE_FD(sfd);
|
||||
|
||||
r = import_compress_init(&e->compress, compress);
|
||||
if (r < 0)
|
||||
|
|
|
@ -117,13 +117,9 @@ int import_fork_tar_x(const char *path, pid_t *ret) {
|
|||
_exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
pipefd[0] = safe_close(pipefd[0]);
|
||||
r = pipefd[1];
|
||||
pipefd[1] = -1;
|
||||
|
||||
*ret = pid;
|
||||
|
||||
return r;
|
||||
return TAKE_FD(pipefd[1]);
|
||||
}
|
||||
|
||||
int import_fork_tar_c(const char *path, pid_t *ret) {
|
||||
|
@ -165,11 +161,7 @@ int import_fork_tar_c(const char *path, pid_t *ret) {
|
|||
_exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
pipefd[1] = safe_close(pipefd[1]);
|
||||
r = pipefd[0];
|
||||
pipefd[0] = -1;
|
||||
|
||||
*ret = pid;
|
||||
|
||||
return r;
|
||||
return TAKE_FD(pipefd[0]);
|
||||
}
|
||||
|
|
|
@ -210,8 +210,7 @@ static int raw_import_maybe_convert_qcow2(RawImport *i) {
|
|||
free_and_replace(i->temp_path, t);
|
||||
|
||||
safe_close(i->output_fd);
|
||||
i->output_fd = converted_fd;
|
||||
converted_fd = -1;
|
||||
i->output_fd = TAKE_FD(converted_fd);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -453,8 +453,7 @@ static int transfer_start(Transfer *t) {
|
|||
}
|
||||
|
||||
pipefd[1] = safe_close(pipefd[1]);
|
||||
t->log_fd = pipefd[0];
|
||||
pipefd[0] = -1;
|
||||
t->log_fd = TAKE_FD(pipefd[0]);
|
||||
|
||||
t->stdin_fd = safe_close(t->stdin_fd);
|
||||
|
||||
|
@ -1083,8 +1082,7 @@ static int transfer_node_enumerator(sd_bus *bus, const char *path, void *userdat
|
|||
k++;
|
||||
}
|
||||
|
||||
*nodes = l;
|
||||
l = NULL;
|
||||
*nodes = TAKE_PTR(l);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -124,8 +124,7 @@ int pull_find_old_etags(
|
|||
return r;
|
||||
}
|
||||
|
||||
*etags = l;
|
||||
l = NULL;
|
||||
*etags = TAKE_PTR(l);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -272,8 +272,7 @@ static int raw_pull_maybe_convert_qcow2(RawPull *i) {
|
|||
free_and_replace(i->temp_path, t);
|
||||
|
||||
safe_close(i->raw_job->disk_fd);
|
||||
i->raw_job->disk_fd = converted_fd;
|
||||
converted_fd = -1;
|
||||
i->raw_job->disk_fd = TAKE_FD(converted_fd);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -441,9 +441,7 @@ _public_ int sd_journal_stream_fd(const char *identifier, int priority, int leve
|
|||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = fd;
|
||||
fd = -1;
|
||||
return r;
|
||||
return TAKE_FD(fd);
|
||||
}
|
||||
|
||||
_public_ int sd_journal_print_with_location(int priority, const char *file, const char *line, const char *func, const char *format, ...) {
|
||||
|
|
|
@ -220,8 +220,7 @@ static void context_detach_window(Context *c) {
|
|||
if (!c->window)
|
||||
return;
|
||||
|
||||
w = c->window;
|
||||
c->window = NULL;
|
||||
w = TAKE_PTR(c->window);
|
||||
LIST_REMOVE(by_window, w->contexts, c);
|
||||
|
||||
if (!w->contexts && !w->keep_always) {
|
||||
|
|
|
@ -103,10 +103,7 @@ int arp_network_bind_raw_socket(int ifindex, be32_t address, const struct ether_
|
|||
if (r < 0)
|
||||
return -errno;
|
||||
|
||||
r = s;
|
||||
s = -1;
|
||||
|
||||
return r;
|
||||
return TAKE_FD(s);
|
||||
}
|
||||
|
||||
static int arp_send_packet(int fd, int ifindex,
|
||||
|
|
|
@ -123,10 +123,7 @@ static int _bind_raw_socket(int ifindex, union sockaddr_union *link,
|
|||
if (r < 0)
|
||||
return -errno;
|
||||
|
||||
r = s;
|
||||
s = -1;
|
||||
|
||||
return r;
|
||||
return TAKE_FD(s);
|
||||
}
|
||||
|
||||
int dhcp_network_bind_raw_socket(int ifindex, union sockaddr_union *link,
|
||||
|
@ -211,10 +208,7 @@ int dhcp_network_bind_udp_socket(int ifindex, be32_t address, uint16_t port) {
|
|||
if (r < 0)
|
||||
return -errno;
|
||||
|
||||
r = s;
|
||||
s = -1;
|
||||
|
||||
return r;
|
||||
return TAKE_FD(s);
|
||||
}
|
||||
|
||||
int dhcp_network_send_raw_socket(int s, const union sockaddr_union *link,
|
||||
|
|
|
@ -253,10 +253,8 @@ int dhcp_option_parse(DHCPMessage *message, size_t len, dhcp_option_callback_t c
|
|||
if (message_type == 0)
|
||||
return -ENOMSG;
|
||||
|
||||
if (_error_message && IN_SET(message_type, DHCP_NAK, DHCP_DECLINE)) {
|
||||
*_error_message = error_message;
|
||||
error_message = NULL;
|
||||
}
|
||||
if (_error_message && IN_SET(message_type, DHCP_NAK, DHCP_DECLINE))
|
||||
*_error_message = TAKE_PTR(error_message);
|
||||
|
||||
return message_type;
|
||||
}
|
||||
|
|
|
@ -67,9 +67,7 @@ int dhcp6_network_bind_udp_socket(int index, struct in6_addr *local_address) {
|
|||
if (r < 0)
|
||||
return -errno;
|
||||
|
||||
r = s;
|
||||
s = -1;
|
||||
return r;
|
||||
return TAKE_FD(s);
|
||||
}
|
||||
|
||||
int dhcp6_network_send_udp_socket(int s, struct in6_addr *server_address,
|
||||
|
|
|
@ -617,8 +617,7 @@ int dhcp6_option_parse_domainname(const uint8_t *optval, uint16_t optlen, char *
|
|||
idx++;
|
||||
}
|
||||
|
||||
*str_arr = names;
|
||||
names = NULL;
|
||||
*str_arr = TAKE_PTR(names);
|
||||
|
||||
return idx;
|
||||
|
||||
|
|
|
@ -98,9 +98,7 @@ static int icmp6_bind_router_message(const struct icmp6_filter *filter,
|
|||
if (r < 0)
|
||||
return -errno;
|
||||
|
||||
r = s;
|
||||
s = -1;
|
||||
return r;
|
||||
return TAKE_FD(s);
|
||||
}
|
||||
|
||||
int icmp6_bind_router_solicitation(int index) {
|
||||
|
|
|
@ -92,8 +92,5 @@ int lldp_network_bind_raw_socket(int ifindex) {
|
|||
if (r < 0)
|
||||
return -errno;
|
||||
|
||||
r = fd;
|
||||
fd = -1;
|
||||
|
||||
return r;
|
||||
return TAKE_FD(fd);
|
||||
}
|
||||
|
|
|
@ -276,10 +276,9 @@ int config_parse_ifalias(const char *unit,
|
|||
}
|
||||
|
||||
free(*s);
|
||||
if (*n) {
|
||||
*s = n;
|
||||
n = NULL;
|
||||
} else
|
||||
if (*n)
|
||||
*s = TAKE_PTR(n);
|
||||
else
|
||||
*s = NULL;
|
||||
|
||||
return 0;
|
||||
|
@ -437,8 +436,7 @@ int deserialize_in_addrs(struct in_addr **ret, const char *string) {
|
|||
size++;
|
||||
}
|
||||
|
||||
*ret = addresses;
|
||||
addresses = NULL;
|
||||
*ret = TAKE_PTR(addresses);
|
||||
|
||||
return size;
|
||||
}
|
||||
|
@ -491,8 +489,7 @@ int deserialize_in6_addrs(struct in6_addr **ret, const char *string) {
|
|||
size++;
|
||||
}
|
||||
|
||||
*ret = addresses;
|
||||
addresses = NULL;
|
||||
*ret = TAKE_PTR(addresses);
|
||||
|
||||
return size;
|
||||
}
|
||||
|
@ -585,8 +582,7 @@ int deserialize_dhcp_routes(struct sd_dhcp_route **ret, size_t *ret_size, size_t
|
|||
|
||||
*ret_size = size;
|
||||
*ret_allocated = allocated;
|
||||
*ret = routes;
|
||||
routes = NULL;
|
||||
*ret = TAKE_PTR(routes);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -807,8 +807,7 @@ int dhcp_lease_parse_search_domains(const uint8_t *option, size_t len, char ***d
|
|||
pos = next_chunk;
|
||||
}
|
||||
|
||||
*domains = names;
|
||||
names = NULL;
|
||||
*domains = TAKE_PTR(names);
|
||||
|
||||
return cnt;
|
||||
}
|
||||
|
|
|
@ -1470,8 +1470,7 @@ static struct node *bus_node_allocate(sd_bus *bus, const char *path) {
|
|||
return NULL;
|
||||
|
||||
n->parent = parent;
|
||||
n->path = s;
|
||||
s = NULL; /* do not free */
|
||||
n->path = TAKE_PTR(s);
|
||||
|
||||
r = hashmap_put(bus->nodes, n->path, n);
|
||||
if (r < 0) {
|
||||
|
|
|
@ -1342,8 +1342,7 @@ int bus_set_address_user(sd_bus *b) {
|
|||
if (asprintf(&s, DEFAULT_USER_BUS_ADDRESS_FMT, ee) < 0)
|
||||
return -ENOMEM;
|
||||
|
||||
b->address = s;
|
||||
s = NULL;
|
||||
b->address = TAKE_PTR(s);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -141,8 +141,7 @@ _public_ int sd_listen_fds_with_names(int unset_environment, char ***names) {
|
|||
return r;
|
||||
}
|
||||
|
||||
*names = l;
|
||||
l = NULL;
|
||||
*names = TAKE_PTR(l);
|
||||
|
||||
return n_fds;
|
||||
}
|
||||
|
|
|
@ -1297,8 +1297,7 @@ int device_get_id_filename(sd_device *device, const char **ret) {
|
|||
}
|
||||
}
|
||||
|
||||
device->id_filename = id;
|
||||
id = NULL;
|
||||
device->id_filename = TAKE_PTR(id);
|
||||
}
|
||||
|
||||
*ret = device->id_filename;
|
||||
|
|
|
@ -325,8 +325,7 @@ _public_ int sd_uid_get_display(uid_t uid, char **session) {
|
|||
if (isempty(s))
|
||||
return -ENODATA;
|
||||
|
||||
*session = s;
|
||||
s = NULL;
|
||||
*session = TAKE_PTR(s);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -355,8 +354,7 @@ static int file_of_seat(const char *seat, char **_p) {
|
|||
if (!p)
|
||||
return -ENOMEM;
|
||||
|
||||
*_p = p;
|
||||
p = NULL;
|
||||
*_p = TAKE_PTR(p);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -529,8 +527,7 @@ _public_ int sd_session_get_state(const char *session, char **state) {
|
|||
if (isempty(s))
|
||||
return -EIO;
|
||||
|
||||
*state = s;
|
||||
s = NULL;
|
||||
*state = TAKE_PTR(s);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -575,8 +572,7 @@ static int session_get_string(const char *session, const char *field, char **val
|
|||
if (isempty(s))
|
||||
return -ENODATA;
|
||||
|
||||
*value = s;
|
||||
s = NULL;
|
||||
*value = TAKE_PTR(s);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -681,10 +677,8 @@ _public_ int sd_seat_get_active(const char *seat, char **session, uid_t *uid) {
|
|||
return r;
|
||||
}
|
||||
|
||||
if (session && s) {
|
||||
*session = s;
|
||||
s = NULL;
|
||||
}
|
||||
if (session && s)
|
||||
*session = TAKE_PTR(s);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -909,10 +903,9 @@ _public_ int sd_get_machine_names(char ***machines) {
|
|||
*b = NULL;
|
||||
}
|
||||
|
||||
if (machines) {
|
||||
*machines = l;
|
||||
l = NULL;
|
||||
}
|
||||
if (machines)
|
||||
*machines = TAKE_PTR(l);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
|
@ -933,8 +926,7 @@ _public_ int sd_machine_get_class(const char *machine, char **class) {
|
|||
if (!c)
|
||||
return -EIO;
|
||||
|
||||
*class = c;
|
||||
c = NULL;
|
||||
*class = TAKE_PTR(c);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -803,8 +803,7 @@ static int netlink_container_parse(sd_netlink_message *m,
|
|||
attributes[type].net_byteorder = RTA_FLAGS(rta) & NLA_F_NET_BYTEORDER;
|
||||
}
|
||||
|
||||
container->attributes = attributes;
|
||||
attributes = NULL;
|
||||
container->attributes = TAKE_PTR(attributes);
|
||||
container->n_attributes = count;
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -51,8 +51,7 @@ _public_ int sd_network_get_operational_state(char **state) {
|
|||
if (isempty(s))
|
||||
return -ENODATA;
|
||||
|
||||
*state = s;
|
||||
s = NULL;
|
||||
*state = TAKE_PTR(s);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -81,8 +80,7 @@ static int network_get_strv(const char *key, char ***ret) {
|
|||
strv_uniq(a);
|
||||
r = strv_length(a);
|
||||
|
||||
*ret = a;
|
||||
a = NULL;
|
||||
*ret = TAKE_PTR(a);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
@ -121,8 +119,7 @@ static int network_link_get_string(int ifindex, const char *field, char **ret) {
|
|||
if (isempty(s))
|
||||
return -ENODATA;
|
||||
|
||||
*ret = s;
|
||||
s = NULL;
|
||||
*ret = TAKE_PTR(s);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -154,8 +151,7 @@ static int network_link_get_strv(int ifindex, const char *key, char ***ret) {
|
|||
strv_uniq(a);
|
||||
r = strv_length(a);
|
||||
|
||||
*ret = a;
|
||||
a = NULL;
|
||||
*ret = TAKE_PTR(a);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
@ -263,8 +259,7 @@ static int network_link_get_ifindexes(int ifindex, const char *key, int **ret) {
|
|||
if (ifis)
|
||||
ifis[c] = 0; /* Let's add a 0 ifindex to the end, to be nice */
|
||||
|
||||
*ret = ifis;
|
||||
ifis = NULL;
|
||||
*ret = TAKE_PTR(ifis);
|
||||
|
||||
return c;
|
||||
}
|
||||
|
|
|
@ -69,7 +69,6 @@ struct udev_enumerate {
|
|||
**/
|
||||
_public_ struct udev_enumerate *udev_enumerate_new(struct udev *udev) {
|
||||
_cleanup_free_ struct udev_enumerate *udev_enumerate = NULL;
|
||||
struct udev_enumerate *ret;
|
||||
int r;
|
||||
|
||||
assert_return_errno(udev, NULL, EINVAL);
|
||||
|
@ -97,10 +96,7 @@ _public_ struct udev_enumerate *udev_enumerate_new(struct udev *udev) {
|
|||
|
||||
udev_list_init(udev, &udev_enumerate->devices_list, false);
|
||||
|
||||
ret = udev_enumerate;
|
||||
udev_enumerate = NULL;
|
||||
|
||||
return ret;
|
||||
return TAKE_PTR(udev_enumerate);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -278,8 +278,7 @@ int locale_write_data(Context *c, char ***settings) {
|
|||
if (r < 0)
|
||||
return r;
|
||||
|
||||
*settings = l;
|
||||
l = NULL;
|
||||
*settings = TAKE_PTR(l);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -539,8 +538,7 @@ int find_converted_keymap(const char *x11_layout, const char *x11_variant, char
|
|||
log_debug("Found converted keymap %s at %s",
|
||||
n, uncompressed ? p : pz);
|
||||
|
||||
*new_keymap = n;
|
||||
n = NULL;
|
||||
*new_keymap = TAKE_PTR(n);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -560,8 +560,7 @@ void seat_complete_switch(Seat *s) {
|
|||
if (!s->pending_switch)
|
||||
return;
|
||||
|
||||
session = s->pending_switch;
|
||||
s->pending_switch = NULL;
|
||||
session = TAKE_PTR(s->pending_switch);
|
||||
|
||||
seat_set_active(s, session);
|
||||
}
|
||||
|
|
|
@ -1145,8 +1145,7 @@ void session_restore_vt(Session *s) {
|
|||
* little dance to avoid having the terminal be available
|
||||
* for reuse before we've cleaned it up.
|
||||
*/
|
||||
old_fd = s->vtfd;
|
||||
s->vtfd = -1;
|
||||
old_fd = TAKE_FD(s->vtfd);
|
||||
|
||||
vt = session_open_vt(s);
|
||||
safe_close(old_fd);
|
||||
|
@ -1271,8 +1270,7 @@ int session_set_controller(Session *s, const char *sender, bool force, bool prep
|
|||
}
|
||||
|
||||
session_release_controller(s, true);
|
||||
s->controller = name;
|
||||
name = NULL;
|
||||
s->controller = TAKE_PTR(name);
|
||||
session_save(s);
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -438,8 +438,7 @@ static int parse_fdname(const char *fdname, char **session_id, dev_t *dev) {
|
|||
return r;
|
||||
|
||||
*dev = makedev(major, minor);
|
||||
*session_id = id;
|
||||
id = NULL;
|
||||
*session_id = TAKE_PTR(id);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1475,8 +1475,7 @@ int machine_node_enumerator(sd_bus *bus, const char *path, void *userdata, char
|
|||
return r;
|
||||
}
|
||||
|
||||
*nodes = l;
|
||||
l = NULL;
|
||||
*nodes = TAKE_PTR(l);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -766,16 +766,14 @@ static int find_mount_points(const char *what, char ***list) {
|
|||
if (!GREEDY_REALLOC(l, bufsize, n + 2))
|
||||
return log_oom();
|
||||
|
||||
l[n++] = where;
|
||||
where = NULL;
|
||||
l[n++] = TAKE_PTR(where);
|
||||
}
|
||||
|
||||
if (!GREEDY_REALLOC(l, bufsize, n + 1))
|
||||
return log_oom();
|
||||
|
||||
l[n] = NULL;
|
||||
*list = l;
|
||||
l = NULL; /* avoid freeing */
|
||||
*list = TAKE_PTR(l);
|
||||
|
||||
return n;
|
||||
}
|
||||
|
@ -827,8 +825,7 @@ static int find_loop_device(const char *backing_file, char **loop_dev) {
|
|||
if (!l)
|
||||
return -ENXIO;
|
||||
|
||||
*loop_dev = l;
|
||||
l = NULL; /* avoid freeing */
|
||||
*loop_dev = TAKE_PTR(l);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -488,8 +488,7 @@ int netdev_get_mac(const char *ifname, struct ether_addr **ret) {
|
|||
mac->ether_addr_octet[0] &= 0xfe; /* clear multicast bit */
|
||||
mac->ether_addr_octet[0] |= 0x02; /* set local assignment bit (IEEE802) */
|
||||
|
||||
*ret = mac;
|
||||
mac = NULL;
|
||||
*ret = TAKE_PTR(mac);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -228,8 +228,7 @@ static int on_resolve_retry(sd_event_source *s, usec_t usec, void *userdata) {
|
|||
|
||||
w->resolve_retry_event_source = sd_event_source_unref(w->resolve_retry_event_source);
|
||||
|
||||
w->unresolved_endpoints = w->failed_endpoints;
|
||||
w->failed_endpoints = NULL;
|
||||
w->unresolved_endpoints = TAKE_PTR(w->failed_endpoints);
|
||||
|
||||
resolve_endpoints(netdev);
|
||||
|
||||
|
|
|
@ -82,8 +82,7 @@ int link_node_enumerator(sd_bus *bus, const char *path, void *userdata, char ***
|
|||
}
|
||||
|
||||
l[c] = NULL;
|
||||
*nodes = l;
|
||||
l = NULL;
|
||||
*nodes = TAKE_PTR(l);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -122,8 +122,7 @@ int network_node_enumerator(sd_bus *bus, const char *path, void *userdata, char
|
|||
return r;
|
||||
}
|
||||
|
||||
*nodes = l;
|
||||
l = NULL;
|
||||
*nodes = TAKE_PTR(l);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -72,8 +72,7 @@ int network_config_section_new(const char *filename, unsigned line, NetworkConfi
|
|||
strcpy(cs->filename, filename);
|
||||
cs->line = line;
|
||||
|
||||
*s = cs;
|
||||
cs = NULL;
|
||||
*s = TAKE_PTR(cs);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -126,8 +126,7 @@ int prefix_new(Prefix **ret) {
|
|||
if (sd_radv_prefix_new(&prefix->radv_prefix) < 0)
|
||||
return -ENOMEM;
|
||||
|
||||
*ret = prefix;
|
||||
prefix = NULL;
|
||||
*ret = TAKE_PTR(prefix);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -344,8 +343,7 @@ static int radv_get_ip6dns(Network *network, struct in6_addr **dns,
|
|||
}
|
||||
|
||||
if (addresses) {
|
||||
*dns = addresses;
|
||||
addresses = NULL;
|
||||
*dns = TAKE_PTR(addresses);
|
||||
|
||||
*n_dns = n_addresses;
|
||||
}
|
||||
|
|
|
@ -857,8 +857,7 @@ static int routing_policy_rule_read_full_file(const char *state_file, char **ret
|
|||
if (size <= 0)
|
||||
return -ENODATA;
|
||||
|
||||
*ret = s;
|
||||
s = NULL;
|
||||
*ret = TAKE_PTR(s);
|
||||
|
||||
return size;
|
||||
}
|
||||
|
|
|
@ -308,8 +308,7 @@ int overlay_mount_parse(CustomMount **l, unsigned *n, const char *s, bool read_o
|
|||
!source_path_is_valid(lower[1]))
|
||||
return -EINVAL;
|
||||
|
||||
upper = lower[1];
|
||||
lower[1] = NULL;
|
||||
upper = TAKE_PTR(lower[1]);
|
||||
|
||||
destination = strdup(upper[0] == '+' ? upper+1 : upper); /* take the destination without "+" prefix */
|
||||
if (!destination)
|
||||
|
@ -321,8 +320,7 @@ int overlay_mount_parse(CustomMount **l, unsigned *n, const char *s, bool read_o
|
|||
* the "upper", and all before that the "lower" directories. */
|
||||
|
||||
destination = lower[k - 1];
|
||||
upper = lower[k - 2];
|
||||
lower[k - 2] = NULL;
|
||||
upper = TAKE_PTR(lower[k - 2]);
|
||||
|
||||
STRV_FOREACH(i, lower)
|
||||
if (!source_path_is_valid(*i))
|
||||
|
|
|
@ -1175,8 +1175,7 @@ static int parse_argv(int argc, char *argv[]) {
|
|||
* accept this here, and silently make "--ephemeral --template=" equivalent to "--ephemeral
|
||||
* --directory=". */
|
||||
|
||||
arg_directory = arg_template;
|
||||
arg_template = NULL;
|
||||
arg_directory = TAKE_PTR(arg_template);
|
||||
}
|
||||
|
||||
if (arg_template && !(arg_directory || arg_machine)) {
|
||||
|
|
|
@ -325,7 +325,7 @@ static int dns_scope_socket(
|
|||
union sockaddr_union sa = {};
|
||||
socklen_t salen;
|
||||
static const int one = 1;
|
||||
int ret, r, ifindex;
|
||||
int r, ifindex;
|
||||
|
||||
assert(s);
|
||||
|
||||
|
@ -409,10 +409,7 @@ static int dns_scope_socket(
|
|||
if (r < 0 && errno != EINPROGRESS)
|
||||
return -errno;
|
||||
|
||||
ret = fd;
|
||||
fd = -1;
|
||||
|
||||
return ret;
|
||||
return TAKE_FD(fd);
|
||||
}
|
||||
|
||||
int dns_scope_socket_udp(DnsScope *s, DnsServer *server, uint16_t port) {
|
||||
|
|
|
@ -56,8 +56,7 @@ int dns_search_domain_new(
|
|||
d->n_ref = 1;
|
||||
d->manager = m;
|
||||
d->type = type;
|
||||
d->name = normalized;
|
||||
normalized = NULL;
|
||||
d->name = TAKE_PTR(normalized);
|
||||
|
||||
switch (type) {
|
||||
|
||||
|
|
|
@ -447,10 +447,8 @@ static int manager_dns_stub_udp_fd(Manager *m) {
|
|||
return r;
|
||||
|
||||
(void) sd_event_source_set_description(m->dns_stub_udp_event_source, "dns-stub-udp");
|
||||
m->dns_stub_udp_fd = fd;
|
||||
fd = -1;
|
||||
|
||||
return m->dns_stub_udp_fd;
|
||||
return m->dns_stub_udp_fd = TAKE_FD(fd);
|
||||
}
|
||||
|
||||
static int on_dns_stub_stream_packet(DnsStream *s) {
|
||||
|
@ -542,10 +540,8 @@ static int manager_dns_stub_tcp_fd(Manager *m) {
|
|||
return r;
|
||||
|
||||
(void) sd_event_source_set_description(m->dns_stub_tcp_event_source, "dns-stub-tcp");
|
||||
m->dns_stub_tcp_fd = fd;
|
||||
fd = -1;
|
||||
|
||||
return m->dns_stub_tcp_fd;
|
||||
return m->dns_stub_tcp_fd = TAKE_FD(fd);
|
||||
}
|
||||
|
||||
int manager_dns_stub_start(Manager *m) {
|
||||
|
|
|
@ -36,8 +36,7 @@ void dns_zone_item_probe_stop(DnsZoneItem *i) {
|
|||
if (!i->probe_transaction)
|
||||
return;
|
||||
|
||||
t = i->probe_transaction;
|
||||
i->probe_transaction = NULL;
|
||||
t = TAKE_PTR(i->probe_transaction);
|
||||
|
||||
set_remove(t->notify_zone_items, i);
|
||||
set_remove(t->notify_zone_items_done, i);
|
||||
|
|
|
@ -139,8 +139,7 @@ int dnssd_node_enumerator(sd_bus *bus, const char *path, void *userdata, char **
|
|||
}
|
||||
|
||||
l[c] = NULL;
|
||||
*nodes = l;
|
||||
l = NULL;
|
||||
*nodes = TAKE_PTR(l);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -198,8 +198,7 @@ int dnssd_render_instance_name(DnssdService *s, char **ret_name) {
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
*ret_name = name;
|
||||
name = NULL;
|
||||
*ret_name = TAKE_PTR(name);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -319,8 +318,7 @@ int dnssd_txt_item_new_from_string(const char *key, const char *value, DnsTxtIte
|
|||
}
|
||||
i->length = length;
|
||||
|
||||
*ret_item = i;
|
||||
i = NULL;
|
||||
*ret_item = TAKE_PTR(i);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -345,8 +343,7 @@ int dnssd_txt_item_new_from_data(const char *key, const void *data, const size_t
|
|||
}
|
||||
i->length = length;
|
||||
|
||||
*ret_item = i;
|
||||
i = NULL;
|
||||
*ret_item = TAKE_PTR(i);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -496,8 +496,7 @@ int bus_link_method_set_dnssec_negative_trust_anchors(sd_bus_message *message, v
|
|||
}
|
||||
|
||||
set_free_free(l->dnssec_negative_trust_anchors);
|
||||
l->dnssec_negative_trust_anchors = ns;
|
||||
ns = NULL;
|
||||
l->dnssec_negative_trust_anchors = TAKE_PTR(ns);
|
||||
|
||||
(void) link_save_user(l);
|
||||
|
||||
|
@ -621,8 +620,7 @@ int link_node_enumerator(sd_bus *bus, const char *path, void *userdata, char ***
|
|||
}
|
||||
|
||||
l[c] = NULL;
|
||||
*nodes = l;
|
||||
l = NULL;
|
||||
*nodes = TAKE_PTR(l);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -440,8 +440,7 @@ static int link_update_dnssec_negative_trust_anchors(Link *l) {
|
|||
return r;
|
||||
|
||||
set_free_free(l->dnssec_negative_trust_anchors);
|
||||
l->dnssec_negative_trust_anchors = ns;
|
||||
ns = NULL;
|
||||
l->dnssec_negative_trust_anchors = TAKE_PTR(ns);
|
||||
|
||||
return 0;
|
||||
|
||||
|
@ -1293,8 +1292,7 @@ int link_load_user(Link *l) {
|
|||
if (r < 0)
|
||||
goto fail;
|
||||
|
||||
l->dnssec_negative_trust_anchors = ns;
|
||||
ns = NULL;
|
||||
l->dnssec_negative_trust_anchors = TAKE_PTR(ns);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -396,11 +396,8 @@ static int determine_hostname(char **full_hostname, char **llmnr_hostname, char
|
|||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to determine mDNS hostname: %m");
|
||||
|
||||
*llmnr_hostname = n;
|
||||
n = NULL;
|
||||
|
||||
*full_hostname = h;
|
||||
h = NULL;
|
||||
*llmnr_hostname = TAKE_PTR(n);
|
||||
*full_hostname = TAKE_PTR(h);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -445,11 +442,8 @@ static int make_fallback_hostnames(char **full_hostname, char **llmnr_hostname,
|
|||
if (!h)
|
||||
return log_oom();
|
||||
|
||||
*llmnr_hostname = n;
|
||||
n = NULL;
|
||||
|
||||
*mdns_hostname = m;
|
||||
m = NULL;
|
||||
*llmnr_hostname = TAKE_PTR(n);
|
||||
*mdns_hostname = TAKE_PTR(m);
|
||||
|
||||
*full_hostname = h;
|
||||
|
||||
|
|
|
@ -730,8 +730,7 @@ int ask_password_agent(
|
|||
if (keyname)
|
||||
(void) add_to_keyring_and_log(keyname, flags, l);
|
||||
|
||||
*ret = l;
|
||||
l = NULL;
|
||||
*ret = TAKE_PTR(l);
|
||||
r = 0;
|
||||
|
||||
finish:
|
||||
|
|
|
@ -1094,8 +1094,7 @@ static int map_basic(sd_bus *bus, const char *member, sd_bus_message *m, sd_bus_
|
|||
return r;
|
||||
|
||||
strv_free(*p);
|
||||
*p = l;
|
||||
l = NULL;
|
||||
*p = TAKE_PTR(l);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -189,8 +189,7 @@ int show_cgroup_by_path(
|
|||
free(last);
|
||||
}
|
||||
|
||||
last = k;
|
||||
k = NULL;
|
||||
last = TAKE_PTR(k);
|
||||
}
|
||||
|
||||
if (r < 0)
|
||||
|
|
|
@ -295,8 +295,7 @@ int dns_label_escape_new(const char *p, size_t l, char **ret) {
|
|||
if (r < 0)
|
||||
return r;
|
||||
|
||||
*ret = s;
|
||||
s = NULL;
|
||||
*ret = TAKE_PTR(s);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
@ -601,8 +600,7 @@ int dns_name_endswith(const char *name, const char *suffix) {
|
|||
|
||||
/* Not the same, let's jump back, and try with the next label again */
|
||||
s = suffix;
|
||||
n = saved_n;
|
||||
saved_n = NULL;
|
||||
n = TAKE_PTR(saved_n);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -249,8 +249,7 @@ int efi_get_variable(
|
|||
((char*) buf)[st.st_size - 4] = 0;
|
||||
((char*) buf)[st.st_size - 4 + 1] = 0;
|
||||
|
||||
*value = buf;
|
||||
buf = NULL;
|
||||
*value = TAKE_PTR(buf);
|
||||
*size = (size_t) st.st_size - 4;
|
||||
|
||||
if (attribute)
|
||||
|
@ -563,8 +562,7 @@ int efi_get_boot_order(uint16_t **order) {
|
|||
l / sizeof(uint16_t) > INT_MAX)
|
||||
return -EINVAL;
|
||||
|
||||
*order = buf;
|
||||
buf = NULL;
|
||||
*order = TAKE_PTR(buf);
|
||||
return (int) (l / sizeof(uint16_t));
|
||||
}
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
#include "sd-daemon.h"
|
||||
|
||||
#include "alloc-util.h"
|
||||
#include "dirent-util.h"
|
||||
#include "fd-util.h"
|
||||
#include "fdset.h"
|
||||
|
@ -168,8 +169,7 @@ int fdset_new_fill(FDSet **_s) {
|
|||
}
|
||||
|
||||
r = 0;
|
||||
*_s = s;
|
||||
s = NULL;
|
||||
*_s = TAKE_PTR(s);
|
||||
|
||||
finish:
|
||||
/* We won't close the fds here! */
|
||||
|
|
|
@ -169,10 +169,8 @@ answer:
|
|||
|
||||
*filtered = f;
|
||||
}
|
||||
if (value) {
|
||||
*value = v;
|
||||
v = NULL;
|
||||
}
|
||||
if (value)
|
||||
*value = TAKE_PTR(v);
|
||||
|
||||
return !!n;
|
||||
}
|
||||
|
@ -201,8 +199,7 @@ int fstab_extract_values(const char *opts, const char *name, char ***values) {
|
|||
return r;
|
||||
}
|
||||
|
||||
*values = res;
|
||||
res = NULL;
|
||||
*values = TAKE_PTR(res);
|
||||
|
||||
return !!*values;
|
||||
}
|
||||
|
|
|
@ -153,8 +153,7 @@ int raw_strip_suffixes(const char *p, char **ret) {
|
|||
break;
|
||||
}
|
||||
|
||||
*ret = q;
|
||||
q = NULL;
|
||||
*ret = TAKE_PTR(q);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -50,10 +50,8 @@ static int specifier_prefix_and_instance(char specifier, void *data, void *userd
|
|||
if (!ans)
|
||||
return -ENOMEM;
|
||||
*ret = ans;
|
||||
} else {
|
||||
*ret = prefix;
|
||||
prefix = NULL;
|
||||
}
|
||||
} else
|
||||
*ret = TAKE_PTR(prefix);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1422,8 +1422,7 @@ static int unit_file_search(
|
|||
r = unit_file_load_or_readlink(c, info, path, paths->root_dir, flags);
|
||||
|
||||
if (r >= 0) {
|
||||
info->path = path;
|
||||
path = NULL;
|
||||
info->path = TAKE_PTR(path);
|
||||
result = r;
|
||||
found_unit = true;
|
||||
break;
|
||||
|
@ -1446,8 +1445,7 @@ static int unit_file_search(
|
|||
|
||||
r = unit_file_load_or_readlink(c, info, path, paths->root_dir, flags);
|
||||
if (r >= 0) {
|
||||
info->path = path;
|
||||
path = NULL;
|
||||
info->path = TAKE_PTR(path);
|
||||
result = r;
|
||||
found_unit = true;
|
||||
break;
|
||||
|
@ -1754,8 +1752,7 @@ static int install_info_symlink_wants(
|
|||
if (r < 0)
|
||||
return r;
|
||||
|
||||
path = instance.path;
|
||||
instance.path = NULL;
|
||||
path = TAKE_PTR(instance.path);
|
||||
|
||||
if (instance.type == UNIT_FILE_TYPE_MASKED) {
|
||||
unit_file_changes_add(changes, n_changes, -ERFKILL, path, NULL);
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue