diff --git a/src/basic/string-util.h b/src/basic/string-util.h index c402cd3af04..a68f3c94abc 100644 --- a/src/basic/string-util.h +++ b/src/basic/string-util.h @@ -303,25 +303,4 @@ bool version_is_valid_versionspec(const char *s); ssize_t strlevenshtein(const char *x, const char *y); -static inline int strdup_or_null(const char *s, char **ret) { - char *c; - - assert(ret); - - /* This is a lot like strdup(), but is happy with NULL strings, and does not treat that as error, but - * copies the NULL value. */ - - if (!s) { - *ret = NULL; - return 0; - } - - c = strdup(s); - if (!c) - return -ENOMEM; - - *ret = c; - return 1; -} - char *strrstr(const char *haystack, const char *needle); diff --git a/src/core/unit.c b/src/core/unit.c index c0f802a1375..9c0794b8867 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -5338,7 +5338,7 @@ int unit_set_exec_params(Unit *u, ExecParameters *p) { p->runtime_scope = u->manager->runtime_scope; - r = strdup_or_null(manager_get_confirm_spawn(u->manager), &p->confirm_spawn); + r = strdup_to(&p->confirm_spawn, manager_get_confirm_spawn(u->manager)); if (r < 0) return r; diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index e4c8c9674c0..b4df9d23c2a 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -498,13 +498,8 @@ static int mandatory_mount_drop_unapplicable_options( assert(where); assert(ret_options); - if (!(*flags & (MOUNT_NOAUTO|MOUNT_NOFAIL|MOUNT_AUTOMOUNT))) { - r = strdup_or_null(options, ret_options); - if (r < 0) - return r; - - return 0; - } + if (!(*flags & (MOUNT_NOAUTO|MOUNT_NOFAIL|MOUNT_AUTOMOUNT))) + return strdup_to(ret_options, options); log_debug("Mount '%s' is mandatory, ignoring 'noauto', 'nofail', and 'x-systemd.automount' options.", where); diff --git a/src/kernel-install/kernel-install.c b/src/kernel-install/kernel-install.c index cf1bb5c3af1..6581e80656a 100644 --- a/src/kernel-install/kernel-install.c +++ b/src/kernel-install/kernel-install.c @@ -151,37 +151,37 @@ static int context_copy(const Context *source, Context *ret) { return copy.rfd; } - r = strdup_or_null(source->layout_other, ©.layout_other); + r = strdup_to(©.layout_other, source->layout_other); if (r < 0) return r; - r = strdup_or_null(source->conf_root, ©.conf_root); + r = strdup_to(©.conf_root, source->conf_root); if (r < 0) return r; - r = strdup_or_null(source->boot_root, ©.boot_root); + r = strdup_to(©.boot_root, source->boot_root); if (r < 0) return r; - r = strdup_or_null(source->entry_token, ©.entry_token); + r = strdup_to(©.entry_token, source->entry_token); if (r < 0) return r; - r = strdup_or_null(source->entry_dir, ©.entry_dir); + r = strdup_to(©.entry_dir, source->entry_dir); if (r < 0) return r; - r = strdup_or_null(source->version, ©.version); + r = strdup_to(©.version, source->version); if (r < 0) return r; - r = strdup_or_null(source->kernel, ©.kernel); + r = strdup_to(©.kernel, source->kernel); if (r < 0) return r; r = strv_copy_unless_empty(source->initrds, ©.initrds); if (r < 0) return r; - r = strdup_or_null(source->initrd_generator, ©.initrd_generator); + r = strdup_to(©.initrd_generator, source->initrd_generator); if (r < 0) return r; - r = strdup_or_null(source->uki_generator, ©.uki_generator); + r = strdup_to(©.uki_generator, source->uki_generator); if (r < 0) return r; - r = strdup_or_null(source->staging_area, ©.staging_area); + r = strdup_to(©.staging_area, source->staging_area); if (r < 0) return r; r = strv_copy_unless_empty(source->plugins, ©.plugins); diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index d9c3dae85c5..38cdadcf61b 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -613,12 +613,12 @@ int address_dup(const Address *src, Address **ret) { dest->nft_set_context.n_sets = 0; if (src->family == AF_INET) { - r = strdup_or_null(src->label, &dest->label); + r = strdup_to(&dest->label, src->label); if (r < 0) return r; } - r = strdup_or_null(src->netlabel, &dest->netlabel); + r = strdup_to(&dest->netlabel, src->netlabel); if (r < 0) return r; diff --git a/src/network/networkd-route-metric.c b/src/network/networkd-route-metric.c index 1bae8939346..31a2bdea24c 100644 --- a/src/network/networkd-route-metric.c +++ b/src/network/networkd-route-metric.c @@ -39,7 +39,7 @@ int route_metric_copy(const RouteMetric *src, RouteMetric *dest) { } else dest->metrics_set = NULL; - return strdup_or_null(src->tcp_congestion_control_algo, &dest->tcp_congestion_control_algo); + return strdup_to(&dest->tcp_congestion_control_algo, src->tcp_congestion_control_algo); } void route_metric_hash_func(const RouteMetric *metric, struct siphash *state) { diff --git a/src/network/networkd-route-nexthop.c b/src/network/networkd-route-nexthop.c index 8ba7505987a..11215c36c71 100644 --- a/src/network/networkd-route-nexthop.c +++ b/src/network/networkd-route-nexthop.c @@ -218,7 +218,7 @@ static int route_nexthop_copy(const RouteNextHop *src, RouteNextHop *dest) { /* unset pointer copied in the above. */ dest->ifname = NULL; - return strdup_or_null(src->ifindex > 0 ? NULL : src->ifname, &dest->ifname); + return strdup_to(&dest->ifname, src->ifindex > 0 ? NULL : src->ifname); } static int route_nexthop_dup(const RouteNextHop *src, RouteNextHop **ret) {