* util/setup.c (SETUP): Accept new dev_is_drive argument. If passed, don't map dev to a GRUB drive again. * include/grub/util/install.h (grub_util_bios_setup): Update prototype. (grub_util_sparc_setup): Likewise. * util/grub-install.c (main): Tell grub_util_bios_setup that install_drive has already been mapped to a GRUB drive. Likewise for grub_util_sparc_setup, and pass install_drive rather than install_device. * util/grub-setup.c (main): Adjust call to GRUB_SETUP_FUNC. --- ChangeLog | 13 +++++++++++++ include/grub/util/install.h | 4 ++-- util/grub-install.c | 8 +++++--- util/grub-setup.c | 2 +- util/setup.c | 39 ++++++++++++++++++++++----------------- 5 files changed, 43 insertions(+), 23 deletions(-)
diff --git a/ChangeLog b/ChangeLog index b7e716f..d4a7e02 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,18 @@ 2013-12-04 Colin Watson <cjwat...@ubuntu.com> + * util/setup.c (SETUP): Accept new dev_is_drive argument. If + passed, don't map dev to a GRUB drive again. + * include/grub/util/install.h (grub_util_bios_setup): Update + prototype. + (grub_util_sparc_setup): Likewise. + * util/grub-install.c (main): Tell grub_util_bios_setup that + install_drive has already been mapped to a GRUB drive. Likewise for + grub_util_sparc_setup, and pass install_drive rather than + install_device. + * util/grub-setup.c (main): Adjust call to GRUB_SETUP_FUNC. + +2013-12-04 Colin Watson <cjwat...@ubuntu.com> + Copying the themes directory in grub-shell isn't parallel-test-friendly and breaks on the second test when the source directory is read-only (as in "make distcheck"). Instead, add a diff --git a/include/grub/util/install.h b/include/grub/util/install.h index 4ba00f5..d1b4567 100644 --- a/include/grub/util/install.h +++ b/include/grub/util/install.h @@ -180,12 +180,12 @@ grub_install_get_image_target (const char *arg); void grub_util_bios_setup (const char *dir, const char *boot_file, const char *core_file, - const char *dest, int force, + const char *dev, int dev_is_drive, int force, int fs_probe, int allow_floppy); void grub_util_sparc_setup (const char *dir, const char *boot_file, const char *core_file, - const char *dest, int force, + const char *dev, int dev_is_drive, int force, int fs_probe, int allow_floppy); char * diff --git a/util/grub-install.c b/util/grub-install.c index 2d6ef75..3bb82fc 100644 --- a/util/grub-install.c +++ b/util/grub-install.c @@ -1436,11 +1436,12 @@ main (int argc, char *argv[]) platdir, device_map, install_device); + grub_util_info ("('%s' mapped to '%s')", install_device, install_drive); /* Now perform the installation. */ if (install_bootsector) grub_util_bios_setup (platdir, "boot.img", "core.img", - install_drive, force, + install_drive, 1, force, fs_probe, allow_floppy); break; } @@ -1461,12 +1462,13 @@ main (int argc, char *argv[]) !fs_probe ? "--skip-fs-probe" : "", platdir, device_map, - install_drive); + install_device); + grub_util_info ("('%s' mapped to '%s')", install_device, install_drive); /* Now perform the installation. */ if (install_bootsector) grub_util_sparc_setup (platdir, "boot.img", "core.img", - install_device, force, + install_drive, 1, force, fs_probe, allow_floppy); break; } diff --git a/util/grub-setup.c b/util/grub-setup.c index cc3af5d..6e8951e 100644 --- a/util/grub-setup.c +++ b/util/grub-setup.c @@ -254,7 +254,7 @@ main (int argc, char *argv[]) GRUB_SETUP_FUNC (arguments.dir ? : DEFAULT_DIRECTORY, arguments.boot_file ? : DEFAULT_BOOT_FILE, arguments.core_file ? : DEFAULT_CORE_FILE, - arguments.device, arguments.force, + arguments.device, 0, arguments.force, arguments.fs_probe, arguments.allow_floppy); /* Free resources. */ diff --git a/util/setup.c b/util/setup.c index c1de3d2..3f8866e 100644 --- a/util/setup.c +++ b/util/setup.c @@ -247,7 +247,7 @@ identify_partmap (grub_disk_t disk __attribute__ ((unused)), void SETUP (const char *dir, const char *boot_file, const char *core_file, - const char *dev, int force, + const char *dev, int dev_is_drive, int force, int fs_probe, int allow_floppy) { char *core_path; @@ -270,25 +270,30 @@ SETUP (const char *dir, #endif bl.last_length = 0; - { - size_t len = strlen (dev); + if (dev_is_drive) + dest = xstrdup (dev); + else + { + /* Perhaps the user specified a parenthesised GRUB drive name. */ + size_t len = strlen (dev); - if (len > 2 && dev[0] == '(' && dev[len - 1] == ')') - { - dest = xmalloc (len - 1); - strncpy (dest, dev + 1, len - 2); - dest[len - 2] = '\0'; - } - } + if (len > 2 && dev[0] == '(' && dev[len - 1] == ')') + { + dest = xmalloc (len - 1); + strncpy (dest, dev + 1, len - 2); + dest[len - 2] = '\0'; + } - if (! dest) - { - /* Possibly, the user specified an OS device file. */ - dest = grub_util_get_grub_dev (dev); if (! dest) - grub_util_error (_("Invalid device `%s'.\n"), dev); - grub_util_info ("transformed OS device `%s' into GRUB device `%s'", - dev, dest); + { + /* Possibly, the user specified an OS device file. */ + grub_util_pull_device (dev); + dest = grub_util_get_grub_dev (dev); + if (! dest) + grub_util_error (_("Invalid device `%s'.\n"), dev); + grub_util_info ("transformed OS device `%s' into GRUB device `%s'", + dev, dest); + } } -- 1.8.4.4 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel