summaryrefslogtreecommitdiff
path: root/libre/grub-parabola/grub-2.00.5086-fix-lvm-parsing.patch
diff options
context:
space:
mode:
authorAndré Fabian Silva Delgado <emulatorman@parabola.nu>2014-08-25 03:01:59 -0300
committerAndré Fabian Silva Delgado <emulatorman@parabola.nu>2014-08-25 03:01:59 -0300
commit99115d4e4c8280be3e68fc02bdd7d9ece8ceb0d6 (patch)
tree48ab0fe5812998d0b3cdb3284d021f576851bc87 /libre/grub-parabola/grub-2.00.5086-fix-lvm-parsing.patch
parent49fb84c481b4eb4e1dd582a5a023b2542e5af423 (diff)
grub-parabola: add parabola suffix for the package
Diffstat (limited to 'libre/grub-parabola/grub-2.00.5086-fix-lvm-parsing.patch')
-rw-r--r--libre/grub-parabola/grub-2.00.5086-fix-lvm-parsing.patch54
1 files changed, 54 insertions, 0 deletions
diff --git a/libre/grub-parabola/grub-2.00.5086-fix-lvm-parsing.patch b/libre/grub-parabola/grub-2.00.5086-fix-lvm-parsing.patch
new file mode 100644
index 000000000..9a2eb3ff7
--- /dev/null
+++ b/libre/grub-parabola/grub-2.00.5086-fix-lvm-parsing.patch
@@ -0,0 +1,54 @@
+There is no explicit option to turn off alignment; it is implicitly
+disabled if one of --separator or --nameprefixes option is used.
+
+--separator was added in 2007, --nameprefixes - in 2009. So let's use
+--separator to extend range of versions we are compatible with. Note that
+one or another must be used, current parsing is broken otherwise.
+
+Signed-off-by: Andrey Borzenkov <address@hidden>
+
+---
+ util/getroot.c | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/util/getroot.c b/util/getroot.c
+index 2ad8a55..3afcf96 100644
+--- a/util/getroot.c
++++ b/util/getroot.c
+@@ -1322,7 +1322,7 @@ grub_util_get_dev_abstraction (const char *os_dev)
+ static void
+ pull_lvm_by_command (const char *os_dev)
+ {
+- char *argv[6];
++ char *argv[8];
+ int fd;
+ pid_t pid;
+ FILE *mdadm;
+@@ -1351,12 +1351,17 @@ pull_lvm_by_command (const char *os_dev)
+
+ /* execvp has inconvenient types, hence the casts. None of these
+ strings will actually be modified. */
++ /* by default PV name is left aligned in 10 character field, meaning that
++ we do not know where name ends. Using dummy --separator disables
++ alignment. We have a single field, so separator itself is not output */
+ argv[0] = (char *) "vgs";
+ argv[1] = (char *) "--options";
+ argv[2] = (char *) "pv_name";
+ argv[3] = (char *) "--noheadings";
+- argv[4] = vgname;
+- argv[5] = NULL;
++ argv[4] = (char *) "--separator";
++ argv[5] = (char *) ":";
++ argv[6] = vgname;
++ argv[7] = NULL;
+
+ pid = exec_pipe (argv, &fd);
+ free (vgname);
+@@ -1376,6 +1381,7 @@ pull_lvm_by_command (const char *os_dev)
+ while (getline (&buf, &len, mdadm) > 0)
+ {
+ char *ptr;
++ /* LVM adds two spaces as standard prefix */
+ for (ptr = buf; ptr < buf + 2 && *ptr == ' '; ptr++);
+ if (*ptr == '\0')
+ continue;