Like the GNU ls, first print a line with the directory path before printing files in the directory, which will not have a directory component, but only if there is more than one argument.
Signed-off-by: Glenn Washburn <developm...@efficientek.com> --- grub-core/commands/ls.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/grub-core/commands/ls.c b/grub-core/commands/ls.c index a419174a81a5..030bb43c44af 100644 --- a/grub-core/commands/ls.c +++ b/grub-core/commands/ls.c @@ -91,6 +91,7 @@ struct grub_ls_list_files_ctx int all; int human; int longlist; + int print_dirhdr; }; /* Helper for grub_ls_list_files. */ @@ -107,6 +108,12 @@ print_file (const char *filename, const struct grub_dirhook_info *info, if (ctx->filename != NULL) && (grub_strcmp (filename, ctx->filename) != 0) return 0; + if (ctx->print_dirhdr) + { + grub_printf ("%s:\n", ctx->dirname); + ctx->print_dirhdr = 0; + } + if (! ctx->longlist) { if (ctx->filename != NULL) @@ -173,7 +180,7 @@ print_file (const char *filename, const struct grub_dirhook_info *info, } static grub_err_t -grub_ls_list_files (char *dirname, int longlist, int all, int human) +grub_ls_list_files (char *dirname, int longlist, int all, int human, int dirhdr) { char *device_name; grub_fs_t fs; @@ -221,7 +228,8 @@ grub_ls_list_files (char *dirname, int longlist, int all, int human) .filename = NULL, .all = all, .human = human, - .longlist = longlist + .longlist = longlist, + .print_dirhdr = dirhdr }; (fs->fs_dir) (dev, path, print_file, &ctx); @@ -236,6 +244,7 @@ grub_ls_list_files (char *dirname, int longlist, int all, int human) grub_errno = GRUB_ERR_NONE; /* PATH might be a regular file. */ + ctx.print_dirhdr = 0; ctx.filename = grub_strrchr (dirname, '/') + 1; ctx.dirname = grub_strndup (dirname, ctx.filename - dirname); if (ctx.dirname == NULL) @@ -271,8 +280,8 @@ grub_cmd_ls (grub_extcmd_context_t ctxt, int argc, char **args) grub_ls_list_devices (state[0].set); else for (i = 0; i < argc; i++) - grub_ls_list_files (args[i], state[0].set, state[2].set, - state[1].set); + grub_ls_list_files (args[i], state[0].set, state[2].set, state[1].set, + argc > 1); return GRUB_ERR_NONE; } -- 2.34.1 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel