]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
nspawn: port over basename() → path_extract_filename()
authorLennart Poettering <lennart@poettering.net>
Wed, 21 Dec 2022 15:49:03 +0000 (16:49 +0100)
committerLennart Poettering <lennart@poettering.net>
Fri, 23 Dec 2022 14:04:19 +0000 (15:04 +0100)
src/nspawn/nspawn-util.c
src/nspawn/nspawn.c

index 830ac39e73ff04234900860074a2d6a44e9993cb..6c3848916d2ec3cc96eb489bae743a52aaf2f63b 100644 (file)
@@ -47,10 +47,14 @@ int systemd_installation_has_version(const char *root, const char *minimal_versi
                 *c = '\0'; /* truncate the glob part */
 
                 STRV_FOREACH(name, names) {
+                        _cleanup_free_ char *bn = NULL;
                         /* This is most likely to run only once, hence let's not optimize anything. */
                         char *t, *t2;
 
-                        t = startswith(basename(*name), "libsystemd-shared-");
+                        if (path_extract_filename(*name, &bn) < 0)
+                                continue;
+
+                        t = startswith(bn, "libsystemd-shared-");
                         if (!t)
                                 continue;
 
index 067efbe3f069fe84d078b243cdc003bdc0626f98..551f8f975c30e00c6408972977781c46e959f773 100644 (file)
@@ -3045,16 +3045,19 @@ static int determine_names(void) {
                 else if (arg_image) {
                         char *e;
 
-                        arg_machine = strdup(basename(arg_image));
+                        r = path_extract_filename(arg_image, &arg_machine);
+                        if (r < 0)
+                                return log_error_errno(r, "Failed to extract file name from '%s': %m", arg_image);
 
                         /* Truncate suffix if there is one */
                         e = endswith(arg_machine, ".raw");
                         if (e)
                                 *e = 0;
-                } else
-                        arg_machine = strdup(basename(arg_directory));
-                if (!arg_machine)
-                        return log_oom();
+                } else {
+                        r = path_extract_filename(arg_directory, &arg_machine);
+                        if (r < 0)
+                                return log_error_errno(r, "Failed to extract file name from '%s': %m", arg_directory);
+                }
 
                 hostname_cleanup(arg_machine);
                 if (!hostname_is_valid(arg_machine, 0))