]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - src/shared/bootspec.c
Merge pull request #24555 from medhefgo/bootctl
[thirdparty/systemd.git] / src / shared / bootspec.c
index 0afc41d200bd03d23f5afbe10cd1cffbdefb0d0a..ff5cd9bc1fbe7cf16e7c5e8b9dba1b3e75add83d 100644 (file)
@@ -710,7 +710,7 @@ static int boot_entry_load_unified(
         if (!tmp.root)
                 return log_oom();
 
-        tmp.kernel = strdup(skip_leading_chars(k, "/"));
+        tmp.kernel = path_make_absolute(k, "/");
         if (!tmp.kernel)
                 return log_oom();
 
@@ -978,6 +978,12 @@ static int boot_config_find(const BootConfig *config, const char *id) {
         if (!id)
                 return -1;
 
+        if (id[0] == '@') {
+                if (!strcaseeq(id, "@saved"))
+                        return -1;
+                id = config->entry_selected;
+        }
+
         for (size_t i = 0; i < config->n_entries; i++)
                 if (fnmatch(id, config->entries[i].id, FNM_CASEFOLD) == 0)
                         return i;
@@ -1262,7 +1268,11 @@ static void boot_entry_file_list(
 
         int status = chase_symlinks_and_access(p, root, CHASE_PREFIX_ROOT|CHASE_PROHIBIT_SYMLINKS, F_OK, NULL, NULL);
 
-        printf("%13s%s ", strempty(field), field ? ":" : " ");
+        /* Note that this shows two '/' between the root and the file. This is intentional to highlight (in
+         * the abscence of color support) to the user that the boot loader is only interested in the second
+         * part of the file. */
+        printf("%13s%s %s%s/%s", strempty(field), field ? ":" : " ", ansi_grey(), root, ansi_normal());
+
         if (status < 0) {
                 errno = -status;
                 printf("%s%s%s (%m)\n", ansi_highlight_red(), p, ansi_normal());