diff --git a/ChangeLog b/ChangeLog index 715fc2e2a..cadf0c9fe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2005-07-18 Yoshinori K. Okuji + + * commands/ls.c (grub_ls_list_disks): Print the filesystem + information on each device, if it does not have partitions. Print + "Device" instead of "Disk", because this function is not specific + to disk devices. + + * normal/main.c (grub_rescue_cmd_normal): Make the variable CONFIG + static to ensure that it is put on the memory rather than a + register. + 2005-07-17 Yoshinori Okuji * commands/cat.c (GRUB_MOD_INIT): Use better documentation. diff --git a/commands/ls.c b/commands/ls.c index e0be7cc3c..32bedba55 100644 --- a/commands/ls.c +++ b/commands/ls.c @@ -71,7 +71,33 @@ grub_ls_list_disks (int longlist) if (dev) { if (longlist) - grub_printf ("Disk: %s\n", name); + { + grub_printf ("Device: %s", name); + + if (! dev->disk || ! dev->disk->has_partitions) + { + grub_fs_t fs; + char *label; + + fs = grub_fs_probe (dev); + grub_errno = GRUB_ERR_NONE; + + grub_printf (", Filesystem type %s", + fs ? fs->name : "Unknown"); + + (fs->label) (dev, &label); + if (grub_errno == GRUB_ERR_NONE) + { + if (label && grub_strlen (label)) + grub_printf (", Label: %s", label); + grub_free (label); + } + else + grub_errno = GRUB_ERR_NONE; + } + + grub_putchar ('\n'); + } else grub_printf ("(%s) ", name); @@ -91,7 +117,6 @@ grub_ls_list_disks (int longlist) grub_putchar ('\n'); grub_refresh (); - return 0; } diff --git a/normal/main.c b/normal/main.c index f2f0b7039..2a39ce54f 100644 --- a/normal/main.c +++ b/normal/main.c @@ -490,8 +490,9 @@ grub_rescue_cmd_normal (int argc, char *argv[]) { if (argc == 0) { - /* Guess the config filename. */ - char *config; + /* Guess the config filename. It is necessary to make CONFIG static, + so that it won't get broken by longjmp. */ + static char *config; const char *prefix; prefix = grub_env_get ("prefix");