diff options
author | Lennart Poettering <lennart@poettering.net> | 2022-11-22 18:46:20 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2022-12-15 17:53:07 +0100 |
commit | d88e1e484a1a0f5cdb97979016154898336734ea (patch) | |
tree | 18f50dc5b1edb3d712d591e4a0aa246f0c9ee752 /src/systemctl | |
parent | 0ce6f0a35a4ed6d187c86751d36b76ca0e515f7a (diff) | |
download | systemd-d88e1e484a1a0f5cdb97979016154898336734ea.tar.gz |
systemctl: stop using basename() at one more place
Diffstat (limited to 'src/systemctl')
-rw-r--r-- | src/systemctl/systemctl-edit.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/systemctl/systemctl-edit.c b/src/systemctl/systemctl-edit.c index 19df478818..4c68ae26d7 100644 --- a/src/systemctl/systemctl-edit.c +++ b/src/systemctl/systemctl-edit.c @@ -392,7 +392,6 @@ static int find_paths_to_edit(sd_bus *bus, char **names, char ***paths) { STRV_FOREACH(name, names) { _cleanup_free_ char *path = NULL, *new_path = NULL, *tmp_path = NULL, *tmp_name = NULL; _cleanup_strv_free_ char **unit_paths = NULL; - const char *unit_name; r = unit_find_paths(bus, *name, &lp, false, &cached_name_map, &cached_id_map, &path, &unit_paths); if (r == -EKEYREJECTED) { @@ -416,12 +415,16 @@ static int find_paths_to_edit(sd_bus *bus, char **names, char ***paths) { } /* Create a new unit from scratch */ - unit_name = *name; - r = unit_file_create_new(&lp, unit_name, + r = unit_file_create_new(&lp, *name, arg_full ? NULL : ".d/override.conf", NULL, &new_path, &tmp_path); } else { - unit_name = basename(path); + _cleanup_free_ char *unit_name = NULL; + + r = path_extract_filename(path, &unit_name); + if (r < 0) + return log_error_errno(r, "Failed to extract unit name from path '%s': %m", path); + /* We follow unit aliases, but we need to propagate the instance */ if (unit_name_is_valid(*name, UNIT_NAME_INSTANCE) && unit_name_is_valid(unit_name, UNIT_NAME_TEMPLATE)) { |