]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
bootctl: use grey-and-slash prefix for source in list too
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 16 Nov 2022 11:55:35 +0000 (12:55 +0100)
committerLuca Boccassi <luca.boccassi@gmail.com>
Tue, 22 Nov 2022 00:40:20 +0000 (01:40 +0100)
Follow-up for 7851732262ec94f50598c4a289589a6ddb97ebfd. The source
field also shows a path relative to $BOOT, so it should be displayed
in the same fashion.

src/shared/bootspec.c

index 3dec5439dd9174c36382beb02aea11e4ee928da7..789b89ea9302a73300ca9b83ba7b5c0e0ba1eaf9 100644 (file)
@@ -1323,14 +1323,21 @@ int show_boot_entry(
         if (e->id)
                 printf("           id: %s\n", e->id);
         if (e->path) {
-                _cleanup_free_ char *link = NULL;
+                _cleanup_free_ char *text = NULL, *link = NULL;
+
+                const char *p = e->root ? path_startswith(e->path, e->root) : NULL;
+                if (p) {
+                        text = strjoin(ansi_grey(), e->root, "/", ansi_normal(), "/", p);
+                        if (!text)
+                                return log_oom();
+                }
 
                 /* Let's urlify the link to make it easy to view in an editor, but only if it is a text
                  * file. Unified images are binary ELFs, and EFI variables are not pure text either. */
                 if (e->type == BOOT_ENTRY_CONF)
-                        (void) terminal_urlify_path(e->path, NULL, &link);
+                        (void) terminal_urlify_path(e->path, text, &link);
 
-                printf("       source: %s\n", link ?: e->path);
+                printf("       source: %s\n", link ?: text ?: e->path);
         }
         if (e->tries_left != UINT_MAX) {
                 printf("        tries: %u left", e->tries_left);