Compare commits
6 Commits
Author | SHA1 | Date |
---|---|---|
Peter Jones | c5e0e6dc90 | |
Peter Jones | 81f8bbc0cd | |
Peter Jones | b2ba2fbd9c | |
Peter Jones | 29be933c90 | |
Peter Jones | 70feba3bb4 | |
Peter Jones | 81324d0fad |
|
@ -0,0 +1,115 @@
|
|||
From 741d77171bd6ea971a98bdd6c78acb8f153ee896 Mon Sep 17 00:00:00 2001
|
||||
From: Fedora Ninjas <pjones@fedoraproject.org>
|
||||
Date: Wed, 23 Jul 2012 19:33:50 -0300
|
||||
Subject: [PATCH] Handle deives with comma in the name
|
||||
|
||||
---
|
||||
grub-core/disk/ieee1275/ofdisk.c | 15 +++++++++++----
|
||||
grub-core/kern/ieee1275/openfw.c | 27 ++++++++++++++++++++++++---
|
||||
grub-core/kern/main.c | 14 ++++++++++++--
|
||||
3 files changed, 47 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/grub-core/disk/ieee1275/ofdisk.c b/grub-core/disk/ieee1275/ofdisk.c
|
||||
index b5bb713..3280ead 100644
|
||||
--- a/grub-core/disk/ieee1275/ofdisk.c
|
||||
+++ b/grub-core/disk/ieee1275/ofdisk.c
|
||||
@@ -265,10 +265,17 @@ grub_ofdisk_iterate (int (*hook) (const char *name),
|
||||
continue;
|
||||
|
||||
{
|
||||
- char buffer[sizeof ("ieee1275/") + grub_strlen (ent->shortest)];
|
||||
- char *ptr;
|
||||
- ptr = grub_stpcpy (buffer, "ieee1275/");
|
||||
- grub_strcpy (ptr, ent->shortest);
|
||||
+ char buffer[sizeof ("ieee1275/") + 2 * grub_strlen (ent->shortest)];
|
||||
+ const char *iptr;
|
||||
+ char *optr;
|
||||
+ optr = grub_stpcpy (buffer, "ieee1275/");
|
||||
+ for (iptr = ent->shortest; *iptr; )
|
||||
+ {
|
||||
+ if (*iptr == ',')
|
||||
+ *optr++ = '\\';
|
||||
+ *optr++ = *iptr++;
|
||||
+ }
|
||||
+ *optr = 0;
|
||||
if (hook (buffer))
|
||||
return 1;
|
||||
}
|
||||
diff --git a/grub-core/kern/ieee1275/openfw.c b/grub-core/kern/ieee1275/openfw.c
|
||||
index caf820d..a23bb60 100644
|
||||
--- a/grub-core/kern/ieee1275/openfw.c
|
||||
+++ b/grub-core/kern/ieee1275/openfw.c
|
||||
@@ -439,21 +439,42 @@ char *
|
||||
grub_ieee1275_encode_devname (const char *path)
|
||||
{
|
||||
char *device = grub_ieee1275_get_devname (path);
|
||||
- char *partition = grub_ieee1275_parse_args (path, GRUB_PARSE_PARTITION);
|
||||
+ char *partition;
|
||||
char *encoding;
|
||||
+ char *optr;
|
||||
+ const char *iptr;
|
||||
|
||||
+ encoding = grub_malloc (sizeof ("ieee1275/") + 2 * grub_strlen (device)
|
||||
+ + sizeof (",XXXXXXXXXXXX"));
|
||||
+ if (!encoding)
|
||||
+ {
|
||||
+ grub_free (device);
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ partition = grub_ieee1275_parse_args (path, GRUB_PARSE_PARTITION);
|
||||
+
|
||||
+ optr = grub_stpcpy (encoding, "ieee1275/");
|
||||
+ for (iptr = device; *iptr; )
|
||||
+ {
|
||||
+ if (*iptr == ',')
|
||||
+ *optr++ ='\\';
|
||||
+ *optr++ = *iptr++;
|
||||
+ }
|
||||
if (partition && partition[0])
|
||||
{
|
||||
unsigned int partno = grub_strtoul (partition, 0, 0);
|
||||
|
||||
+ *optr++ = ',';
|
||||
+
|
||||
if (grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_0_BASED_PARTITIONS))
|
||||
/* GRUB partition 1 is OF partition 0. */
|
||||
partno++;
|
||||
|
||||
- encoding = grub_xasprintf ("ieee1275/%s,%d", device, partno);
|
||||
+ grub_snprintf (optr, sizeof ("XXXXXXXXXXXX"), "%d", partno);
|
||||
}
|
||||
else
|
||||
- encoding = grub_xasprintf ("ieee1275/%s", device);
|
||||
+ *optr = '\0';
|
||||
|
||||
grub_free (partition);
|
||||
grub_free (device);
|
||||
diff --git a/grub-core/kern/main.c b/grub-core/kern/main.c
|
||||
index 7a386d0..c05ac11 100644
|
||||
--- a/grub-core/kern/main.c
|
||||
+++ b/grub-core/kern/main.c
|
||||
@@ -153,8 +153,18 @@ grub_set_prefix_and_root (void)
|
||||
/* We have a partition, but still need to fill in the drive. */
|
||||
char *comma, *new_device;
|
||||
|
||||
- comma = grub_strchr (fwdevice, ',');
|
||||
- if (comma)
|
||||
+ for (comma = fwdevice; *comma; )
|
||||
+ {
|
||||
+ if (comma[0] == '\\' && comma[1] == ',')
|
||||
+ {
|
||||
+ comma += 2;
|
||||
+ continue;
|
||||
+ }
|
||||
+ if (*comma == ',')
|
||||
+ break;
|
||||
+ comma++;
|
||||
+ }
|
||||
+ if (*comma)
|
||||
{
|
||||
char *drive = grub_strndup (fwdevice, comma - fwdevice);
|
||||
new_device = grub_xasprintf ("%s%s", drive, device);
|
||||
--
|
||||
1.7.10.4
|
||||
|
14
grub2.spec
14
grub2.spec
|
@ -41,7 +41,7 @@
|
|||
Name: grub2
|
||||
Epoch: 1
|
||||
Version: 2.00
|
||||
Release: 15%{?dist}
|
||||
Release: 15.1%{?dist}
|
||||
Summary: Bootloader with support for Linux, Multiboot and more
|
||||
|
||||
Group: System Environment/Base
|
||||
|
@ -95,9 +95,6 @@ BuildRequires: autoconf automake autogen device-mapper-devel
|
|||
BuildRequires: freetype-devel gettext-devel git
|
||||
BuildRequires: texinfo
|
||||
BuildRequires: dejavu-sans-fonts
|
||||
%ifarch %{efiarchs}
|
||||
BuildRequires: pesign >= 0.99-8
|
||||
%endif
|
||||
|
||||
Requires: gettext os-prober which file system-logos
|
||||
Requires: %{name}-tools = %{epoch}:%{version}-%{release}
|
||||
|
@ -188,13 +185,11 @@ CD_MODULES=" all_video boot btrfs cat chain configfile echo efifwsetup \
|
|||
jpeg linuxefi minicmd normal part_apple part_msdos part_gpt \
|
||||
password_pbkdf2 png reboot search search_fs_uuid \
|
||||
search_fs_file search_label sleep test video xfs"
|
||||
./grub-mkimage -O %{grubefiarch} -o %{grubeficdname}.orig -p /EFI/BOOT \
|
||||
./grub-mkimage -O %{grubefiarch} -o %{grubeficdname} -p /EFI/BOOT \
|
||||
-d grub-core ${CD_MODULES}
|
||||
%pesign -s -i %{grubeficdname}.orig -o %{grubeficdname}
|
||||
GRUB_MODULES="${CD_MODULES} mdraid09 mdraid1x"
|
||||
./grub-mkimage -O %{grubefiarch} -o %{grubefiname}.orig -p /EFI/%{efidir} \
|
||||
./grub-mkimage -O %{grubefiarch} -o %{grubefiname} -p /EFI/%{efidir} \
|
||||
-d grub-core ${GRUB_MODULES}
|
||||
%pesign -s -i %{grubefiname}.orig -o %{grubefiname}
|
||||
cd ..
|
||||
%endif
|
||||
|
||||
|
@ -431,6 +426,9 @@ fi
|
|||
%doc grub-%{tarversion}/themes/starfield/COPYING.CC-BY-SA-3.0
|
||||
|
||||
%changelog
|
||||
* Thu Jan 31 2013 Peter Jones <pjones@redhat.com> - 2.00-15.1
|
||||
- Remove pesign stuff since this is f17.
|
||||
|
||||
* Thu Dec 20 2012 Dennis Gilmore <dennis@ausil.us> - 2.00-15
|
||||
- bump nvr
|
||||
|
||||
|
|
Loading…
Reference in New Issue