summaryrefslogtreecommitdiffstats
path: root/resources/grub/patch/0002-syslinux_parse-add-support-for-vesa-menu.c32.patch
diff options
context:
space:
mode:
authorFrancis Rowe <info@gluglug.org.uk>2015-03-17 12:58:01 (EDT)
committer Francis Rowe <info@gluglug.org.uk>2015-03-17 13:29:34 (EDT)
commitd4a3ecd091d45611a4196a55b43139fad2275238 (patch)
tree4dd6a4b62b79d8b45864bca0d844951d2d35ecb4 /resources/grub/patch/0002-syslinux_parse-add-support-for-vesa-menu.c32.patch
parent1c18bf754c4e80f43962310a7f30e0faebf55b62 (diff)
downloadlibreboot-d4a3ecd091d45611a4196a55b43139fad2275238.zip
libreboot-d4a3ecd091d45611a4196a55b43139fad2275238.tar.gz
libreboot-d4a3ecd091d45611a4196a55b43139fad2275238.tar.bz2
GRUB: add vesamenu.c32 support (fixes tails ISOLINUX menu)
Debian ISOLINUX menu is still broken (syslinux_configfile -i just puts you back to the main screen but with the Debian background). (same issue on gnewsense)
Diffstat (limited to 'resources/grub/patch/0002-syslinux_parse-add-support-for-vesa-menu.c32.patch')
-rw-r--r--resources/grub/patch/0002-syslinux_parse-add-support-for-vesa-menu.c32.patch199
1 files changed, 0 insertions, 199 deletions
diff --git a/resources/grub/patch/0002-syslinux_parse-add-support-for-vesa-menu.c32.patch b/resources/grub/patch/0002-syslinux_parse-add-support-for-vesa-menu.c32.patch
deleted file mode 100644
index 504b277..0000000
--- a/resources/grub/patch/0002-syslinux_parse-add-support-for-vesa-menu.c32.patch
+++ /dev/null
@@ -1,199 +0,0 @@
-From c3b8bd878e97fe5c1b1d6409bcecf70f64e63669 Mon Sep 17 00:00:00 2001
-From: Lunar <lunar@torproject.org>
-Date: Sat, 14 Feb 2015 14:14:25 +0100
-Subject: [PATCH] lib/syslinux_parse: add support for (vesa)menu.c32
-
----
- grub-core/lib/syslinux_parse.c | 156 ++++++++++++++++++++++++++---------------
- 1 file changed, 98 insertions(+), 58 deletions(-)
-
-diff --git a/grub-core/lib/syslinux_parse.c b/grub-core/lib/syslinux_parse.c
-index 2c874b1..1012f02 100644
---- a/grub-core/lib/syslinux_parse.c
-+++ b/grub-core/lib/syslinux_parse.c
-@@ -840,6 +840,74 @@ simplify_filename (char *str)
- }
-
- static grub_err_t
-+print_config (struct output_buffer *outbuf,
-+ struct syslinux_menu *menu,
-+ const char *filename, const char *basedir)
-+{
-+ grub_err_t err;
-+ char *new_cwd, *new_target_cwd;
-+
-+ new_cwd = get_read_filename (menu, basedir);
-+ if (!new_cwd)
-+ return grub_errno;
-+ new_target_cwd = get_target_filename (menu, basedir);
-+ if (!new_target_cwd)
-+ return grub_errno;
-+
-+ struct syslinux_menu *menuptr;
-+ char *newname;
-+ int depth = 0;
-+
-+ newname = get_read_filename (menu, filename);
-+ if (!newname)
-+ return grub_errno;
-+ simplify_filename (newname);
-+
-+ print_string ("#");
-+ print_file (outbuf, menu, filename, NULL);
-+ print_string (" ");
-+ print (outbuf, newname, grub_strlen (newname));
-+ print_string (":\n");
-+
-+ for (menuptr = menu; menuptr; menuptr = menuptr->parent, depth++)
-+ if (grub_strcmp (menuptr->filename, newname) == 0
-+ || depth > 20)
-+ break;
-+ if (menuptr)
-+ {
-+ print_string (" syslinux_configfile -r ");
-+ print_file (outbuf, menu, "/", NULL);
-+ print_string (" -c ");
-+ print_file (outbuf, menu, basedir, NULL);
-+ print_string (" ");
-+ print_file (outbuf, menu, filename, NULL);
-+ print_string ("\n");
-+ }
-+ else
-+ {
-+ err = config_file (outbuf, menu->root_read_directory,
-+ menu->root_target_directory, new_cwd, new_target_cwd,
-+ newname, menu, menu->flavour);
-+ if (err == GRUB_ERR_FILE_NOT_FOUND
-+ || err == GRUB_ERR_BAD_FILENAME)
-+ {
-+ grub_errno = err = GRUB_ERR_NONE;
-+ print_string ("# File ");
-+ err = print (outbuf, newname, grub_strlen (newname));
-+ if (err)
-+ return err;
-+ print_string (" not found\n");
-+ }
-+ if (err)
-+ return err;
-+ }
-+ grub_free (newname);
-+ grub_free (new_cwd);
-+ grub_free (new_target_cwd);
-+ return GRUB_ERR_NONE;
-+}
-+
-+static grub_err_t
- write_entry (struct output_buffer *outbuf,
- struct syslinux_menu *menu,
- struct syslinux_menuentry *curentry)
-@@ -1240,6 +1308,35 @@ write_entry (struct output_buffer *outbuf,
- break;
- }
-
-+ if (grub_strcasecmp (basename, "menu.c32") == 0 ||
-+ grub_strcasecmp (basename, "vesamenu.c32") == 0)
-+ {
-+ char *ptr;
-+ char *end;
-+
-+ ptr = curentry->append;
-+ if (!ptr)
-+ return grub_errno;
-+
-+ while (*ptr)
-+ {
-+ end = ptr;
-+ for (end = ptr; *end && !grub_isspace (*end); end++);
-+ if (*end)
-+ *end++ = '\0';
-+
-+ /* "~" is supposed to be current file, so let's skip it */
-+ if (grub_strcmp (ptr, "~") == 0)
-+ continue;
-+ err = print_config (outbuf, menu, ptr, "");
-+ if (err != GRUB_ERR_NONE)
-+ break;
-+ for (ptr = end; *ptr && grub_isspace (*ptr); ptr++);
-+ }
-+ err = GRUB_ERR_NONE;
-+ break;
-+ }
-+
- /* FIXME: gdb, GFXBoot, Hdt, Ifcpu, Ifplop, Kbdmap,
- FIXME: Linux, Lua, Meminfo, rosh, Sanbboot */
-
-@@ -1252,70 +1349,13 @@ write_entry (struct output_buffer *outbuf,
- }
- case KERNEL_CONFIG:
- {
-- char *new_cwd, *new_target_cwd;
- const char *ap;
- ap = curentry->append;
- if (!ap)
- ap = curentry->argument;
- if (!ap)
- ap = "";
-- new_cwd = get_read_filename (menu, ap);
-- if (!new_cwd)
-- return grub_errno;
-- new_target_cwd = get_target_filename (menu, ap);
-- if (!new_target_cwd)
-- return grub_errno;
--
-- struct syslinux_menu *menuptr;
-- char *newname;
-- int depth = 0;
--
-- newname = get_read_filename (menu, curentry->kernel_file);
-- if (!newname)
-- return grub_errno;
-- simplify_filename (newname);
--
-- print_string ("#");
-- print_file (outbuf, menu, curentry->kernel_file, NULL);
-- print_string (" ");
-- print (outbuf, newname, grub_strlen (newname));
-- print_string (":\n");
--
-- for (menuptr = menu; menuptr; menuptr = menuptr->parent, depth++)
-- if (grub_strcmp (menuptr->filename, newname) == 0
-- || depth > 20)
-- break;
-- if (menuptr)
-- {
-- print_string (" syslinux_configfile -r ");
-- print_file (outbuf, menu, "/", NULL);
-- print_string (" -c ");
-- print_file (outbuf, menu, ap, NULL);
-- print_string (" ");
-- print_file (outbuf, menu, curentry->kernel_file, NULL);
-- print_string ("\n");
-- }
-- else
-- {
-- err = config_file (outbuf, menu->root_read_directory,
-- menu->root_target_directory, new_cwd, new_target_cwd,
-- newname, menu, menu->flavour);
-- if (err == GRUB_ERR_FILE_NOT_FOUND
-- || err == GRUB_ERR_BAD_FILENAME)
-- {
-- grub_errno = err = GRUB_ERR_NONE;
-- print_string ("# File ");
-- err = print (outbuf, newname, grub_strlen (newname));
-- if (err)
-- return err;
-- print_string (" not found\n");
-- }
-- if (err)
-- return err;
-- }
-- grub_free (newname);
-- grub_free (new_cwd);
-- grub_free (new_target_cwd);
-+ print_config (outbuf, menu, curentry->kernel_file, ap);
- }
- break;
- case KERNEL_NO_KERNEL:
---
-1.9.1
-