diff options
author | Seemant Kulleen <seemant@gentoo.org> | 2003-12-16 02:34:37 +0000 |
---|---|---|
committer | Seemant Kulleen <seemant@gentoo.org> | 2003-12-16 02:34:37 +0000 |
commit | 0eee753275becf42f340080a16b1f79efdedfcb7 (patch) | |
tree | 9b078c1cba66442e1e77d2b249e9ae90d427afed /sys-boot/grub/files | |
parent | move the patches to the mirrors isntead, and add the gcc3.3 patch to 0.92 as ... (diff) | |
download | gentoo-2-0eee753275becf42f340080a16b1f79efdedfcb7.tar.gz gentoo-2-0eee753275becf42f340080a16b1f79efdedfcb7.tar.bz2 gentoo-2-0eee753275becf42f340080a16b1f79efdedfcb7.zip |
move the patches to the mirrors isntead, and add the gcc3.3 patch to 0.92 as well
Diffstat (limited to 'sys-boot/grub/files')
18 files changed, 1 insertions, 3281 deletions
diff --git a/sys-boot/grub/files/digest-grub-0.92-r1 b/sys-boot/grub/files/digest-grub-0.92-r1 index c9f9b3f8d413..cbaef07bdcd0 100644 --- a/sys-boot/grub/files/digest-grub-0.92-r1 +++ b/sys-boot/grub/files/digest-grub-0.92-r1 @@ -1,20 +1,2 @@ -MD5 cdd6c89d48982ecd544c0b4774755afd /files/splash.xpm.gz 33856 -MD5 03404170b492e04031b0da877991efd2 /files/grub-0.92/grub-0.90-symlinkmenulst.patch 518 -MD5 aa18890ce9d1679091e382aeb8294194 /files/grub-0.92/grub-0.90-configfile.patch 3833 -MD5 f31b7278a8a83d245c4ca27382cf54b3 /files/grub-0.92/grub-0.5.96.1-special-raid-devices.patch 632 -MD5 f105856e2fedfdb0cb5982e6ef8294fd /files/grub-0.92/grub-0.92-usbfix.patch 2072 -MD5 3086a3674abb6c7e59a2627f25b3cca3 /files/grub-0.92/grub-0.92-automake16.patch 5956 -MD5 4d871cd43370b130057788f07db38cc3 /files/grub-0.92/grub-0.90-install.in.patch 1079 -MD5 82efba51ac305b8381d3122996eb3136 /files/grub-0.92/grub-0.92-vga16.patch 43815 -MD5 bd8b83027e46c01ee7b67cbccd06fa08 /files/grub-0.92/grub-0.90-passwordprompt.patch 3612 -MD5 bb016a75234fb52358a2f5412afc2e58 /files/grub-0.92/grub-0.91-splashimagehelp.patch 944 -MD5 6ad20fdf6c7c5d16bf3ac56ff8fd704d /files/grub-0.92/grub-0.91-vga16-serial.patch 1628 -MD5 e4f6b75eb4518eaad834f177ad98a25a /files/grub-0.92/grub-0.91-bootonce.patch 6748 -MD5 75011272c27e8d9926633851e29a9a22 /files/grub-0.92/grub-0.90-staticcurses.patch 600 -MD5 e1afae6eadfc123e08920e3f78e0b38b /files/grub-0.92/grub-0.90-vga16-keypressclear.patch 920 -MD5 f3aa6906e6a340e3b38536b1fd0571f5 /files/grub-0.92/grub-0.90-installcopyonly.patch 2017 -MD5 59c9235025c9048d6165d68562dbc0ec /files/grub-0.92/grub-0.90-append.patch 2893 -MD5 93c92f5020925b376742d2ad8022160b /files/grub-0.92/grub-0.92-nodeprecatedflags.patch 375 -MD5 d4ac36a6a292a66b276ebc8a4ce2a41d /files/grub-0.92/grub-0.90-addsyncs.patch 2071 -MD5 67c5dc359348e825f53accd3716ea685 /grub-0.92-r1.ebuild 3200 MD5 50f2786e7bf96b1115ee82b9c101a816 grub-0.92.tar.gz 877112 +MD5 3acebcea3c38fc2a6b4413e22e480086 grub-0.92-gentoo-0.1.tar.bz2 21404 diff --git a/sys-boot/grub/files/grub-0.92/grub-0.5.96.1-special-raid-devices.patch b/sys-boot/grub/files/grub-0.92/grub-0.5.96.1-special-raid-devices.patch deleted file mode 100644 index 15176e7c19da..000000000000 --- a/sys-boot/grub/files/grub-0.92/grub-0.5.96.1-special-raid-devices.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- grub-0.5.96.1/lib/device.c.pix Mon Oct 16 16:41:54 2000 -+++ grub-0.5.96.1/lib/device.c Tue Apr 3 12:01:41 2001 -@@ -616,7 +616,13 @@ - if (strcmp (dev + strlen(dev) - 5, "/disc") == 0) - strcat (dev + strlen(dev) - 5, "/part"); - } -- sprintf (dev + strlen(dev), "%d", ((partition >> 16) & 0xFF) + 1); -+ -+ sprintf (dev + strlen(dev), "%s%d", -+ /* Compaq smart and others */ -+ (strncmp(dev, "/dev/ida/", 9) == 0 || -+ strncmp(dev, "/dev/cciss/", 11) == 0 || -+ strncmp(dev, "/dev/rd/", 8) == 0) ? "p" : "", -+ ((partition >> 16) & 0xFF) + 1); - - /* Open the partition. */ - fd = open (dev, O_RDWR); diff --git a/sys-boot/grub/files/grub-0.92/grub-0.90-addsyncs.patch b/sys-boot/grub/files/grub-0.92/grub-0.90-addsyncs.patch deleted file mode 100644 index 4c53344a3cbe..000000000000 --- a/sys-boot/grub/files/grub-0.92/grub-0.90-addsyncs.patch +++ /dev/null @@ -1,57 +0,0 @@ - -I just found another semi-critical bug, whose fix should really get -into 0.91. - -It turns out that "grub-install" doesn't have any "sync" calls to make -sure any filesystem caches are coherent with the raw devices they are -on top of... so if your filesystem waits to write out any data from the -copy command in the script to put the "stage1" and "stage2" in their -final location, you're hosed. - -I found this because it just bit me on one of my systems running stock -RedHat 7.2 with a large "stage2". - -The only script that is patched here is "grub-install". The others -don't appear to need it as they either unmount things first or don't -refer to devices. - -Hmm. Maybe the right fix is to make the "sync" system call when -starting the GRUB shell with a device map that refers to any real disks -or something like that. - -------------------------(start patch)----------------------- ---- grub.orig/util/grub-install.in Mon Oct 22 16:46:07 2001 -+++ grub/util/grub-install.in Sat Oct 27 13:06:33 2001 -@@ -244,6 +244,10 @@ - # Create a safe temporary file. - test -x /bin/tempfile && log_file=`tempfile --prefix=grub` - -+ # Before all invocations of the grub shell, call sync to make sure -+ # the raw device is in sync with any bufferring in filesystems. -+ sync -+ - $grub_shell --batch --device-map=$device_map <<EOF >$log_file - quit - EOF -@@ -318,6 +322,10 @@ - # Create a safe temporary file. - test -x /bin/tempfile && log_file=`tempfile --prefix=grub` - -+# Before all invocations of the grub shell, call sync to make sure -+# the raw device is in sync with any bufferring in filesystems. -+sync -+ - # Now perform the installation. - $grub_shell --batch --device-map=$device_map <<EOF >$log_file - root $root_drive -------------------------(end patch)----------------------- - --- - Erich Stefan Boleyn <erich@uruk.org> http://www.uruk.org/ -"Reality is truly stranger than fiction; Probably why fiction is so popular" - -_______________________________________________ -Bug-grub mailing list -Bug-grub@gnu.org -http://mail.gnu.org/mailman/listinfo/bug-grub - diff --git a/sys-boot/grub/files/grub-0.92/grub-0.90-append.patch b/sys-boot/grub/files/grub-0.92/grub-0.90-append.patch deleted file mode 100644 index 99cd0285faef..000000000000 --- a/sys-boot/grub/files/grub-0.92/grub-0.90-append.patch +++ /dev/null @@ -1,111 +0,0 @@ ---- grub-0.90/stage2/stage2.c.append Thu Dec 20 08:20:48 2001 -+++ grub-0.90/stage2/stage2.c Thu Dec 20 17:01:20 2001 -@@ -500,7 +500,8 @@ - if (config_entries) - printf ("\ - Press enter to boot the selected OS, \'e\' to edit the\n\ -- commands before booting, or \'c\' for a command-line."); -+ commands before booting, \'a\' to modify the kernel arguments\n\ -+ before booting, or \'c\' for a command-line."); - else - printf ("\ - Press \'b\' to boot, \'e\' to edit the selected command in the\n\ -@@ -787,6 +788,98 @@ - enter_cmdline (heap, 0); - goto restart; - } -+ if (config_entries && c == 'a') -+ { -+ int new_num_entries = 0, i = 0, j; -+ int needs_padding, amount; -+ char *new_heap; -+ char * entries; -+ char * entry_copy; -+ char * append_line; -+ char * start; -+ -+ entry_copy = new_heap = heap; -+ cur_entry = get_entry (config_entries, first_entry + entryno, -+ 1); -+ -+ do -+ { -+ while ((*(new_heap++) = cur_entry[i++]) != 0); -+ new_num_entries++; -+ } -+ while (config_entries && cur_entry[i]); -+ -+ /* this only needs to be done if config_entries is non-NULL, -+ but it doesn't hurt to do it always */ -+ *(new_heap++) = 0; -+ -+ new_heap = heap + NEW_HEAPSIZE + 1; -+ -+ entries = entry_copy; -+ while (*entries) -+ { -+ if ((strstr(entries, "kernel") == entries) && -+ isspace(entries[6])) -+ break; -+ -+ while (*entries) entries++; -+ entries++; -+ } -+ -+ if (!*entries) -+ goto restart; -+ -+ start = entries + 6; -+ -+ /* skip the white space */ -+ while (*start && isspace(*start)) start++; -+ /* skip the kernel name */ -+ while (*start && !isspace(*start)) start++; -+ -+ /* skip the white space */ -+ needs_padding = (!*start || !isspace(*start)); -+ while (*start && isspace(*start)) start++; -+ -+ append_line = new_heap; -+ grub_strcpy(append_line, start); -+ -+ cls(); -+ print_cmdline_message (0); -+ -+ if (get_cmdline(PACKAGE " append> ", -+ append_line, NEW_HEAPSIZE + 1, -+ 0, 1)) -+ goto restart; -+ -+ /* have new args; append_line points to the -+ new args and start points to the old -+ args */ -+ -+ i = grub_strlen(start); -+ j = grub_strlen(append_line); -+ -+ if (i > (j + needs_padding)) -+ amount = i; -+ else -+ amount = j + needs_padding; -+ -+ /* align rest of commands properly */ -+ memmove (start + j + needs_padding, start + i, -+ ((int) append_line) - ((int) start) - (amount)); -+ -+ if (needs_padding) -+ *start = ' '; -+ -+ /* copy command to correct area */ -+ memmove (start + needs_padding, append_line, j); -+ -+ /* set up this entry to boot */ -+ config_entries = NULL; -+ cur_entry = entry_copy; -+ heap = new_heap; -+ -+ break; -+ } - #ifdef GRUB_UTIL - if (c == 'q') - { diff --git a/sys-boot/grub/files/grub-0.92/grub-0.90-configfile.patch b/sys-boot/grub/files/grub-0.92/grub-0.90-configfile.patch deleted file mode 100644 index c12160da08fd..000000000000 --- a/sys-boot/grub/files/grub-0.92/grub-0.90-configfile.patch +++ /dev/null @@ -1,98 +0,0 @@ -diff -ur grub-0.90/grub/asmstub.c grub/grub/asmstub.c ---- grub-0.90/grub/asmstub.c Thu May 3 04:34:56 2001 -+++ grub/grub/asmstub.c Mon Jul 16 11:01:52 2001 -@@ -70,7 +70,7 @@ - unsigned long boot_drive = 0; - int saved_entryno = 0; - char version_string[] = VERSION; --char config_file[128] = "/boot/grub/menu.lst"; /* FIXME: arbitrary */ -+char config_file[128] = "/boot/grub/grub.conf"; /* FIXME: arbitrary */ - unsigned long linux_text_len = 0; - unsigned short io_map[IO_MAP_SIZE]; - struct apm_info apm_bios_info; -diff -ur grub-0.90/stage2/asm.S grub/stage2/asm.S ---- grub-0.90/stage2/asm.S Mon Jul 16 10:39:14 2001 -+++ grub/stage2/asm.S Mon Jul 16 11:02:39 2001 -@@ -98,7 +98,7 @@ - .string VERSION - VARIABLE(config_file) - #ifndef STAGE1_5 -- .string "/boot/grub/menu.lst" -+ .string "/boot/grub/grub.conf" - #else /* STAGE1_5 */ - .long 0xffffffff - .string "/boot/grub/stage2" -diff -ur grub-0.90/stage2/builtins.c grub/stage2/builtins.c ---- grub-0.90/stage2/builtins.c Mon Jul 16 10:39:14 2001 -+++ grub/stage2/builtins.c Mon Jul 16 11:02:26 2001 -@@ -3939,7 +3939,7 @@ - - /* The prefix was determined. */ - grub_sprintf (stage2, "%s%s", prefix, "/stage2"); -- grub_sprintf (config_filename, "%s%s", prefix, "/menu.lst"); -+ grub_sprintf (config_filename, "%s%s", prefix, "/grub.conf"); - *real_config_filename = 0; - - /* Check if stage2 exists. */ -diff -ur --exclude *~ --exclude *config grub-0.90/docs/grub.8 grub/docs/grub.8 ---- grub-0.90/docs/grub.8 Thu Jul 5 07:29:56 2001 -+++ grub/docs/grub.8 Mon Jul 16 11:43:07 2001 -@@ -15,7 +15,7 @@ - specify stage2 boot_drive [default=0x0] - .TP - \fB\-\-config\-file\fR=\fIFILE\fR --specify stage2 config_file [default=/boot/grub/menu.lst] -+specify stage2 config_file [default=/boot/grub/grub.conf] - .TP - \fB\-\-device\-map\fR=\fIFILE\fR - Use the device map file FILE -diff -ur --exclude *~ --exclude *config grub-0.90/docs/grub.texi grub/docs/grub.texi ---- grub-0.90/docs/grub.texi Thu Jul 5 07:14:21 2001 -+++ grub/docs/grub.texi Mon Jul 16 11:47:04 2001 -@@ -971,7 +971,7 @@ - keys) that will do everything to boot an OS. - - To enable the menu, you need a configuration file, --@file{menu.lst} under the boot directory. We'll analyze an example -+@file{grub.conf} under the boot directory. We'll analyze an example - file. - - The file first contains some general settings, the menu interface -@@ -1512,8 +1512,8 @@ - - An absolute file name resembles a Unix absolute file name, using - @samp{/} for the directory separator (not @samp{\} as in DOS). One --example is @samp{(hd0,0)/boot/grub/menu.lst}. This means the file --@file{/boot/grub/menu.lst} in the first partition of the first hard -+example is @samp{(hd0,0)/boot/grub/grub.conf}. This means the file -+@file{/boot/grub/grub.conf} in the first partition of the first hard - disk. If you omit the device name in an absolute file name, GRUB uses - GRUB's @dfn{root device} implicitly. So if you set the root device to, - say, @samp{(hd1,0)} by the command @command{root} (@pxref{root}), then -@@ -3112,7 +3112,7 @@ - - @item --config-file=@var{file} - Read the configuration file @var{file} instead of --@file{/boot/grub/menu.lst}. The format is the same as the normal GRUB -+@file{/boot/grub/grub.conf}. The format is the same as the normal GRUB - syntax. See @ref{Filesystem}, for more information. - - @item --boot-drive=@var{drive} -@@ -3369,7 +3369,7 @@ - - @item - Copy the GRUB images to @file{/mnt/boot/grub}. Only @file{stage1}, --@file{stage2} and @file{menu.lst} are necessary. You may not copy -+@file{stage2} and @file{grub.conf} are necessary. You may not copy - @dfn{stage1.5}s. - - @item -@@ -3497,7 +3497,7 @@ - @example - @group - grub> @kbd{root (hd0,1)} --grub> @kbd{install /grub/stage1 d (hd0) /grub/stage2 p /grub/menu.lst} -+grub> @kbd{install /grub/stage1 d (hd0) /grub/stage2 p /grub/grub.conf} - @end group - @end example - @end enumerate diff --git a/sys-boot/grub/files/grub-0.92/grub-0.90-install.in.patch b/sys-boot/grub/files/grub-0.92/grub-0.90-install.in.patch deleted file mode 100644 index c714196a4402..000000000000 --- a/sys-boot/grub/files/grub-0.92/grub-0.90-install.in.patch +++ /dev/null @@ -1,34 +0,0 @@ ---- grub-0.90/util/grub-install.in~ Wed Feb 28 06:19:39 2001 -+++ grub-0.90/util/grub-install.in Thu Jul 19 16:01:12 2001 -@@ -224,6 +224,15 @@ - test -d "$bootdir" || mkdir "$bootdir" || exit 1 - test -d "$grubdir" || mkdir "$grubdir" || exit 1 - -+# Copy the GRUB images to the GRUB directory. -+for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do -+ rm -f $file || exit 1 -+done -+for file in \ -+ ${pkgdatadir}/stage1 ${pkgdatadir}/stage2 ${pkgdatadir}/*stage1_5; do -+ cp -f $file ${grubdir} || exit 1 -+done -+ - # If --recheck is specified, remove the device map, if present. - if test $recheck = yes; then - rm -f $device_map -@@ -297,15 +306,6 @@ - EOF - exit 1 - fi -- --# Copy the GRUB images to the GRUB directory. --for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do -- rm -f $file || exit 1 --done --for file in \ -- ${pkgdatadir}/stage1 ${pkgdatadir}/stage2 ${pkgdatadir}/*stage1_5; do -- cp -f $file ${grubdir} || exit 1 --done - - # Create a safe temporary file. - test -x /bin/tempfile && log_file=`tempfile --prefix=grub` diff --git a/sys-boot/grub/files/grub-0.92/grub-0.90-installcopyonly.patch b/sys-boot/grub/files/grub-0.92/grub-0.90-installcopyonly.patch deleted file mode 100644 index 1083ab507e71..000000000000 --- a/sys-boot/grub/files/grub-0.92/grub-0.90-installcopyonly.patch +++ /dev/null @@ -1,85 +0,0 @@ ---- grub-0.90/util/grub-install.in~ Thu Jul 19 18:42:58 2001 -+++ grub-0.90/util/grub-install.in Thu Jul 19 18:43:12 2001 -@@ -38,6 +38,7 @@ - force_lba= - recheck=no - debug=no -+justcopy=no - - # Usage: usage - # Print the usage. -@@ -149,6 +150,17 @@ - fi - } - -+copy_images() { -+ # Copy the GRUB images to the GRUB directory. -+ for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do -+ rm -f $file || exit 1 -+ done -+ for file in \ -+ ${pkgdatadir}/stage1 ${pkgdatadir}/stage2 ${pkgdatadir}/*stage1_5; do -+ cp -f $file ${grubdir} || exit 1 -+ done -+} -+ - # Check the arguments. - for option in "$@"; do - case "$option" in -@@ -166,6 +178,8 @@ - force_lba="--force-lba" ;; - --recheck) - recheck=yes ;; -+ --just-copy) -+ justcopy=yes ;; - # This is an undocumented feature... - --debug) - debug=yes ;; -@@ -179,12 +193,6 @@ - esac - done - --if test "x$install_device" = x; then -- echo "install_device not specified." 1>&2 -- usage -- exit 1 --fi -- - # If the debugging feature is enabled, print commands. - if test $debug = yes; then - set -x -@@ -195,6 +203,18 @@ - grubdir=${bootdir}/grub - device_map=${grubdir}/device.map - -+# if they just want the images copied, copy the images and then exit -+if test $justcopy = yes; then -+ copy_images -+ exit 0 -+fi -+ -+if test "x$install_device" = x; then -+ echo "install_device not specified." 1>&2 -+ usage -+ exit 1 -+fi -+ - # Check if GRUB is installed - if test -f "$grub_shell"; then - : -@@ -224,14 +244,7 @@ - test -d "$bootdir" || mkdir "$bootdir" || exit 1 - test -d "$grubdir" || mkdir "$grubdir" || exit 1 - --# Copy the GRUB images to the GRUB directory. --for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do -- rm -f $file || exit 1 --done --for file in \ -- ${pkgdatadir}/stage1 ${pkgdatadir}/stage2 ${pkgdatadir}/*stage1_5; do -- cp -f $file ${grubdir} || exit 1 --done -+copy_images - - # If --recheck is specified, remove the device map, if present. - if test $recheck = yes; then diff --git a/sys-boot/grub/files/grub-0.92/grub-0.90-passwordprompt.patch b/sys-boot/grub/files/grub-0.92/grub-0.90-passwordprompt.patch deleted file mode 100644 index 47810a9ca9b9..000000000000 --- a/sys-boot/grub/files/grub-0.92/grub-0.90-passwordprompt.patch +++ /dev/null @@ -1,146 +0,0 @@ -diff -ur grub-0.90/stage2/stage2.c grub/stage2/stage2.c ---- grub-0.90/stage2/stage2.c Thu Jul 19 01:58:59 2001 -+++ grub/stage2/stage2.c Thu Jul 19 01:59:11 2001 -@@ -316,6 +316,7 @@ - char *cur_entry = 0; - int disp_up = DISP_UP; - int disp_down = DISP_DOWN; -+ int ask_pass = 0; - - /* - * Main loop for menu UI. -@@ -423,8 +424,72 @@ - grub_printf ("\n\ - Use the %c and %c keys to select which entry is highlighted.\n", - disp_up, disp_down); -- -- if (! auth && password) -+ -+ if (! auth && password && ask_pass) -+ { -+ /* Do password check here! */ -+ char entered[32]; -+ char *pptr = password; -+ -+ /* we've asked, so don't ask again */ -+ ask_pass = 0; -+ -+ if (terminal & TERMINAL_DUMB) -+ grub_printf ("\n\nThe selected entry is %d ", entryno); -+ else -+ { -+ print_entries (view_y0 + 3, 12, first_entry, menu_entries); -+ /* highlight initial line */ -+ set_line_highlight (view_y0 + 4 + entryno, first_entry + entryno, -+ menu_entries); -+ } -+ -+ /* Wipe out the previously entered password */ -+ memset (entered, 0, sizeof (entered)); -+ gotoxy (view_x0 + 1, view_y0 + 16); -+ get_cmdline (" Password: ", entered, 31, '*', 0); -+ -+ while (! isspace (*pptr) && *pptr) -+ pptr++; -+ -+ /* Make sure that PASSWORD is NUL-terminated. */ -+ *pptr++ = 0; -+ -+ if (! check_password (entered, password, password_type)) -+ { -+ char *new_file = config_file; -+ -+ while (isspace (*pptr)) -+ pptr++; -+ -+ /* If *PPTR is NUL, then allow the user to use -+ privileged instructions, otherwise, load -+ another configuration file. */ -+ if (*pptr != 0) -+ { -+ while ((*(new_file++) = *(pptr++)) != 0) -+ ; -+ -+ /* Make sure that the user will not have -+ authority in the next configuration. */ -+ auth = 0; -+ return; -+ } -+ else -+ { -+ /* Now the user is superhuman. */ -+ auth = 1; -+ goto restart; -+ } -+ } -+ else -+ { -+ printf (" Failed!\n Press any key to continue..."); -+ getkey (); -+ goto restart; -+ } -+ } -+ else if (! auth && password) - { - printf ("\ - Press enter to boot the selected OS or \'p\' to enter a\n\ -@@ -637,57 +702,8 @@ - { - if (c == 'p') - { -- /* Do password check here! */ -- char entered[32]; -- char *pptr = password; -- -- if (terminal & TERMINAL_DUMB) -- grub_printf ("\r "); -- else -- gotoxy (view_x0 + 1, view_y1 + 21); -- -- /* Wipe out the previously entered password */ -- memset (entered, 0, sizeof (entered)); -- get_cmdline (" Password: ", entered, 31, '*', 0); -- -- while (! isspace (*pptr) && *pptr) -- pptr++; -- -- /* Make sure that PASSWORD is NUL-terminated. */ -- *pptr++ = 0; -- -- if (! check_password (entered, password, password_type)) -- { -- char *new_file = config_file; -- while (isspace (*pptr)) -- pptr++; -- -- /* If *PPTR is NUL, then allow the user to use -- privileged instructions, otherwise, load -- another configuration file. */ -- if (*pptr != 0) -- { -- while ((*(new_file++) = *(pptr++)) != 0) -- ; -- -- /* Make sure that the user will not have -- authority in the next configuration. */ -- auth = 0; -- return; -- } -- else -- { -- /* Now the user is superhuman. */ -- auth = 1; -- goto restart; -- } -- } -- else -- { -- printf ("Failed!\n Press any key to continue..."); -- getkey (); -- goto restart; -- } -+ ask_pass = 1; -+ goto restart; - } - } - else diff --git a/sys-boot/grub/files/grub-0.92/grub-0.90-staticcurses.patch b/sys-boot/grub/files/grub-0.92/grub-0.90-staticcurses.patch deleted file mode 100644 index 0dff39b17c2e..000000000000 --- a/sys-boot/grub/files/grub-0.92/grub-0.90-staticcurses.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- grub-0.90/configure.in~ Thu Aug 2 20:14:19 2001 -+++ grub-0.90/configure.in Fri Aug 3 12:52:20 2001 -@@ -171,9 +171,9 @@ - - # Unless the user specify --without-curses, check for curses. - if test "x$with_curses" != "xno"; then -- AC_CHECK_LIB(ncurses, wgetch, [GRUB_LIBS="$GRUB_LIBS -lncurses" -+ AC_CHECK_LIB(ncurses, wgetch, [GRUB_LIBS="$GRUB_LIBS /usr/lib/libncurses.a" - AC_DEFINE(HAVE_LIBCURSES)], -- [AC_CHECK_LIB(curses, wgetch, [GRUB_LIBS="$GRUB_LIBS -lcurses" -+ [AC_CHECK_LIB(curses, wgetch, [GRUB_LIBS="$GRUB_LIBS /usr/lib/libncurses.a" - AC_DEFINE(HAVE_LIBCURSES)])]) - fi - diff --git a/sys-boot/grub/files/grub-0.92/grub-0.90-symlinkmenulst.patch b/sys-boot/grub/files/grub-0.92/grub-0.90-symlinkmenulst.patch deleted file mode 100644 index 553d15a6c016..000000000000 --- a/sys-boot/grub/files/grub-0.92/grub-0.90-symlinkmenulst.patch +++ /dev/null @@ -1,16 +0,0 @@ -Only in grub: ChangeLog~ -diff -ur grub-0.90/util/grub-install.in grub/util/grub-install.in ---- grub-0.90/util/grub-install.in Wed Sep 5 15:50:06 2001 -+++ grub/util/grub-install.in Wed Sep 5 15:50:24 2001 -@@ -320,6 +320,10 @@ - exit 1 - fi - -+if ! test -e ${grubdir}/grub.conf ; then -+ test -e ${grubdir}/menu.lst && ln -s ./menu.lst ${grubdir}/grub.conf -+fi -+ - # Create a safe temporary file. - test -x /bin/mktemp && log_file=`/bin/mktemp /tmp/grub-install.log.XXXXXX` - -Only in grub/util: grub-install.in.orig diff --git a/sys-boot/grub/files/grub-0.92/grub-0.90-vga16-keypressclear.patch b/sys-boot/grub/files/grub-0.92/grub-0.90-vga16-keypressclear.patch deleted file mode 100644 index e1678344ba12..000000000000 --- a/sys-boot/grub/files/grub-0.92/grub-0.90-vga16-keypressclear.patch +++ /dev/null @@ -1,36 +0,0 @@ -diff -ur grub/stage2/stage2.c grub-0.90/stage2/stage2.c ---- grub/stage2/stage2.c Thu Jul 19 01:43:41 2001 -+++ grub-0.90/stage2/stage2.c Thu Jul 19 01:50:23 2001 -@@ -503,19 +503,6 @@ - - c = translate_keycode (getkey ()); - -- if (grub_timeout >= 0) -- { -- if (terminal & TERMINAL_DUMB) -- grub_putchar ('\r'); -- else -- gotoxy (view_x0 + 3, 22); -- printf (" "); -- grub_timeout = -1; -- fallback_entry = -1; -- if (! (terminal & TERMINAL_DUMB)) -- gotoxy (view_x1 - 6, view_x0 + 4 + entryno); -- } -- - /* We told them above (at least in SUPPORT_SERIAL) to use - '^' or 'v' so accept these keys. */ - if (c == 16 || c == '^') -@@ -792,6 +779,12 @@ - } - #endif - } -+ if (grub_timeout >= 0) -+ { -+ grub_timeout = -1; -+ fallback_entry = -1; -+ goto restart; -+ } - } - } - diff --git a/sys-boot/grub/files/grub-0.92/grub-0.91-bootonce.patch b/sys-boot/grub/files/grub-0.92/grub-0.91-bootonce.patch deleted file mode 100644 index 90d7cfd3fda4..000000000000 --- a/sys-boot/grub/files/grub-0.92/grub-0.91-bootonce.patch +++ /dev/null @@ -1,249 +0,0 @@ -To: bug-grub@gnu.org -cc: Keir.Fraser@cl.cam.ac.uk -Subject: PATCH (updated): 'lilo -R' functionality -From: Keir Fraser <Keir.Fraser@cl.cam.ac.uk> -Message-Id: <E16iFu3-0002VK-00@wisbech.cl.cam.ac.uk> - -The following is a slight modification to the patch I submitted a week -or so ago. This will cause GRUB to skip displaying the boot menu if a -one-shot default has been specified (just as lilo does with '-R'). - -Same caveats as for previous patch: - * The new 'savedefault' function in the GRUB shell is incomplete. - Only works if the filesystem containing stage2 file is mounted. - * Patch is against grub-0.90, but patches directly to 0.91 - -I hope this goes into CVS in the next round of updates :-) - - -- Keir Fraser - - - -diff -urBP grub-0.90-old/stage2/builtins.c grub-0.90-modified/stage2/builtins.c ---- grub-0.90-old/stage2/builtins.c Fri Feb 22 11:59:57 2002 -+++ grub-0.90-modified/stage2/builtins.c Fri Feb 22 13:48:36 2002 -@@ -785,6 +785,17 @@ - default_func (char *arg, int flags) - { - #ifndef SUPPORT_DISKLESS -+#ifndef GRUB_UTIL -+ /* Has a forced once-only default been specified? */ -+ static int savedefault_helper(int); -+ if ((saved_entryno & STAGE2_ONCEONLY_ENTRY) != 0) -+ { -+ grub_timeout = 0; -+ default_entry = saved_entryno & ~STAGE2_ONCEONLY_ENTRY; -+ savedefault_helper(0); -+ return 0; -+ } -+#endif - if (grub_strcmp (arg, "saved") == 0) - { - default_entry = saved_entryno; -@@ -3074,22 +3085,15 @@ - }; - - --/* savedefault */ -+ -+#if !defined(SUPPORT_DISKLESS) && !defined(GRUB_UTIL) -+/* Write specified default entry number into stage2 file. */ - static int --savedefault_func (char *arg, int flags) -+savedefault_helper(int new_default) - { --#if !defined(SUPPORT_DISKLESS) && !defined(GRUB_UTIL) - char buffer[512]; - int *entryno_ptr; -- -- /* This command is only useful when you boot an entry from the menu -- interface. */ -- if (! (flags & BUILTIN_SCRIPT)) -- { -- errnum = ERR_UNRECOGNIZED; -- return 1; -- } -- -+ - /* Get the geometry of the boot drive (i.e. the disk which contains - this stage2). */ - if (get_diskinfo (boot_drive, &buf_geom)) -@@ -3115,10 +3119,10 @@ - entryno_ptr = (int *) (buffer + STAGE2_SAVED_ENTRYNO); - - /* Check if the saved entry number differs from current entry number. */ -- if (*entryno_ptr != current_entryno) -+ if (*entryno_ptr != new_default) - { - /* Overwrite the saved entry number. */ -- *entryno_ptr = current_entryno; -+ *entryno_ptr = new_default; - - /* Save the image in the disk. */ - if (! rawwrite (boot_drive, install_second_sector, buffer)) -@@ -3129,6 +3133,117 @@ - } - - return 0; -+} -+#endif -+ -+#if !defined(SUPPORT_DISKLESS) && defined(GRUB_UTIL) -+/* -+ * Full implementation of new `savedefault' for GRUB shell. -+ * XXX This needs fixing for stage2 files which aren't accessible -+ * through a mounted filesystem. -+ */ -+static int -+savedefault_shell(char *arg, int flags) -+{ -+ char *stage2_os_file = "/boot/grub/stage2"; /* Default filename */ -+ FILE *fp; -+ char buffer[512]; -+ int *entryno_ptr; -+ int new_default = 0; -+ -+ while (1) -+ { -+ if (grub_memcmp ("--stage2=", arg, sizeof ("--stage2=") - 1) == 0) -+ { -+ stage2_os_file = arg + sizeof ("--stage2=") - 1; -+ arg = skip_to (0, arg); -+ nul_terminate (stage2_os_file); -+ } -+ else if (grub_memcmp ("--default=", arg, sizeof ("--default=") - 1) == 0) -+ { -+ char *p = arg + sizeof ("--default=") - 1; -+ if (! safe_parse_maxint (&p, &new_default)) -+ return 1; -+ arg = skip_to (0, arg); -+ } -+ else if (grub_memcmp ("--once", arg, sizeof ("--once") - 1) == 0) -+ { -+ new_default |= STAGE2_ONCEONLY_ENTRY; -+ arg = skip_to (0, arg); -+ } -+ else -+ break; -+ } -+ -+ if (! (fp = fopen(stage2_os_file, "r+"))) -+ { -+ errnum = ERR_FILE_NOT_FOUND; -+ return 1; -+ } -+ -+ if (fseek (fp, SECTOR_SIZE, SEEK_SET) != 0) -+ { -+ fclose (fp); -+ errnum = ERR_BAD_VERSION; -+ return 1; -+ } -+ -+ if (fread (buffer, 1, SECTOR_SIZE, fp) != SECTOR_SIZE) -+ { -+ fclose (fp); -+ errnum = ERR_READ; -+ return 1; -+ } -+ -+ /* Sanity check. */ -+ if (buffer[STAGE2_STAGE2_ID] != STAGE2_ID_STAGE2 -+ || *((short *) (buffer + STAGE2_VER_MAJ_OFFS)) != COMPAT_VERSION) -+ { -+ errnum = ERR_BAD_VERSION; -+ return 1; -+ } -+ -+ entryno_ptr = (int *) (buffer + STAGE2_SAVED_ENTRYNO); -+ *entryno_ptr = new_default; -+ -+ if (fseek (fp, SECTOR_SIZE, SEEK_SET) != 0) -+ { -+ fclose (fp); -+ errnum = ERR_BAD_VERSION; -+ return 1; -+ } -+ -+ if (fwrite (buffer, 1, SECTOR_SIZE, fp) != SECTOR_SIZE) -+ { -+ fclose (fp); -+ errnum = ERR_WRITE; -+ return 1; -+ } -+ -+ (void)fflush (fp); -+ fclose (fp); -+ return 0; -+} -+#endif -+ -+/* savedefault */ -+static int -+savedefault_func (char *arg, int flags) -+{ -+#if !defined(SUPPORT_DISKLESS) -+#if !defined(GRUB_UTIL) -+ /* This command is only useful when you boot an entry from the menu -+ interface. */ -+ if (! (flags & BUILTIN_SCRIPT)) -+ { -+ errnum = ERR_UNRECOGNIZED; -+ return 1; -+ } -+ -+ return savedefault_helper(current_entryno); -+#else /* defined(GRUB_UTIL) */ -+ return savedefault_shell(arg, flags); -+#endif - #else /* ! SUPPORT_DISKLESS && ! GRUB_UTIL */ - errnum = ERR_UNRECOGNIZED; - return 1; -@@ -3140,8 +3255,14 @@ - "savedefault", - savedefault_func, - BUILTIN_CMDLINE, -+#ifdef GRUB_UTIL -+ "savedefault [--stage2=STAGE2_FILE] [--default=DEFAULT] [--once]", -+ "Save DEFAULT as the default boot entry in STAGE2_FILE. If '--once'" -+ " is specified, the default is reset after the next reboot." -+#else - "savedefault", - "Save the current entry as the default boot entry." -+#endif - }; - - -@@ -4217,6 +4338,15 @@ - static int - timeout_func (char *arg, int flags) - { -+ /* One-shot default shenanigans -- don't piss around with the menu! */ -+ if (grub_timeout != -1) -+ return 0; -+ if ((saved_entryno & STAGE2_ONCEONLY_ENTRY) != 0) -+ { -+ grub_timeout = 0; -+ return 0; -+ } -+ - if (! safe_parse_maxint (&arg, &grub_timeout)) - return 1; - -diff -urBP grub-0.90-old/stage2/shared.h grub-0.90-modified/stage2/shared.h ---- grub-0.90-old/stage2/shared.h Fri Feb 22 11:59:53 2002 -+++ grub-0.90-modified/stage2/shared.h Fri Feb 22 10:51:49 2002 -@@ -199,6 +199,8 @@ - #define STAGE2_FORCE_LBA 0x11 - #define STAGE2_VER_STR_OFFS 0x12 - -+#define STAGE2_ONCEONLY_ENTRY 0x10000 -+ - /* Stage 2 identifiers */ - #define STAGE2_ID_STAGE2 0 - #define STAGE2_ID_FFS_STAGE1_5 1 - -_______________________________________________ -Bug-grub mailing list -Bug-grub@gnu.org -http://mail.gnu.org/mailman/listinfo/bug-grub diff --git a/sys-boot/grub/files/grub-0.92/grub-0.91-splashimagehelp.patch b/sys-boot/grub/files/grub-0.92/grub-0.91-splashimagehelp.patch deleted file mode 100644 index cc7807350493..000000000000 --- a/sys-boot/grub/files/grub-0.92/grub-0.91-splashimagehelp.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff -ur grub-0.91/docs/grub.texi grub/docs/grub.texi ---- grub-0.91/docs/grub.texi Mon Jan 21 22:57:46 2002 -+++ grub/docs/grub.texi Mon Jan 21 22:57:51 2002 -@@ -1891,6 +1891,7 @@ - * rarp:: Initialize a network device via RARP - * serial:: Set up a serial device - * setkey:: Configure the key map -+* splashimage:: Use a splash image - * terminal:: Choose a terminal - * tftpserver:: Specify a TFTP server - * unhide:: Unhide a partition -@@ -2260,6 +2261,16 @@ - @end deffn - - -+@node splashimage -+@subsection splashimage -+ -+@deffn Command splashimage file -+Select an image to use as the background image. This should be -+specified using normal GRUB device naming syntax. The format of the -+file is a gzipped xpm which is 640x480 with a 14 color palette. -+@end deffn -+ -+ - @node terminal - @subsection terminal - diff --git a/sys-boot/grub/files/grub-0.92/grub-0.91-vga16-serial.patch b/sys-boot/grub/files/grub-0.92/grub-0.91-vga16-serial.patch deleted file mode 100644 index 97d6f7dfa56f..000000000000 --- a/sys-boot/grub/files/grub-0.92/grub-0.91-vga16-serial.patch +++ /dev/null @@ -1,58 +0,0 @@ -2002-04-14 Grant Edwards <grante@visi.com> - - * stage2/builtins.c (terminal_func): Force VGA16 code - to use "text" display if serial console is selected. - Enables use of serial and splashimage/vga16 console - combination. -diff -U5 -r grub-0.91-vga/stage2/builtins.c grub-0.91-vga-fixed/stage2/builtins.c ---- grub-0.91-vga/stage2/builtins.c Sun Apr 14 13:18:30 2002 -+++ grub-0.91-vga-fixed/stage2/builtins.c Sun Apr 14 10:51:53 2002 -@@ -159,10 +159,12 @@ - BUILTIN_CMDLINE | BUILTIN_MENU, - "background RRGGBB", - "Sets the background color when in graphics mode." - "RR is red, GG is green, and BB blue. Numbers must be in hexadecimal." - }; -+ -+extern int vga_disabled; - #endif /* VGA16 */ - - - /* blocklist */ - static int -@@ -4170,11 +4172,15 @@ - } - else if ((terminal & TERMINAL_SERIAL) && serial_checkkey () != -1) - { - terminal &= (TERMINAL_SERIAL | TERMINAL_DUMB); - (void) getkey (); -- -+#ifdef VGA16 -+ vga_disabled = 1; -+ display_idx = 0; -+ display = &display_entries[0]; -+#endif - /* If the interface is currently the command-line, restart - it to repaint the screen. */ - if (flags & BUILTIN_CMDLINE) - grub_longjmp (restart_cmdline_env, 0); - -@@ -4182,10 +4188,18 @@ - } - } - - /* Expired. */ - terminal &= (default_terminal | TERMINAL_DUMB); -+#ifdef VGA16 -+ if (!(terminal & TERMINAL_CONSOLE)) -+ { -+ vga_disabled = 1; -+ display_idx = 0; -+ display = &display_entries[0]; -+ } -+#endif - } - #endif /* SUPPORT_SERIAL */ - - return 0; - } diff --git a/sys-boot/grub/files/grub-0.92/grub-0.92-automake16.patch b/sys-boot/grub/files/grub-0.92/grub-0.92-automake16.patch deleted file mode 100644 index 5b07ed9ec8cb..000000000000 --- a/sys-boot/grub/files/grub-0.92/grub-0.92-automake16.patch +++ /dev/null @@ -1,161 +0,0 @@ -diff -ur grub-0.92/configure.in grub/configure.in ---- grub-0.92/configure.in Wed May 1 20:54:16 2002 -+++ grub/configure.in Wed May 1 20:55:39 2002 -@@ -55,8 +55,8 @@ - _AM_DEPENDENCIES(CC) - - dnl Because recent automake complains about AS, set it here. --AS="$CC" --AC_SUBST(AS) -+CCAS="$CC" -+AC_SUBST(CCAS) - - AC_ARG_WITH(binutils, - [ --with-binutils=DIR search the directory DIR to find binutils]) -@@ -607,9 +607,9 @@ - AC_SUBST(NET_EXTRAFLAGS) - AC_SUBST(NETBOOT_DRIVERS) - --dnl Because recent automake complains about ASFLAGS, set it here. --ASFLAGS='$(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)' --AC_SUBST(ASFLAGS) -+dnl Because recent automake complains about CCASFLAGS, set it here. -+CCASFLAGS='$(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)' -+AC_SUBST(CCASFLAGS) - - AC_ARG_ENABLE(vga16, - [ --disable-vga16 disable VGA graphics interface]) -diff -ur grub-0.92/stage1/Makefile.am grub/stage1/Makefile.am ---- grub-0.92/stage1/Makefile.am Wed Jul 4 03:33:48 2001 -+++ grub/stage1/Makefile.am Wed May 1 20:56:58 2002 -@@ -4,7 +4,7 @@ - CLEANFILES = $(nodist_pkgdata_DATA) - - # We can't use builtins or standard includes. --AM_ASFLAGS = $(STAGE1_CFLAGS) -fno-builtin -nostdinc -+AM_CCASFLAGS = $(STAGE1_CFLAGS) -fno-builtin -nostdinc - LDFLAGS = -nostdlib -Wl,-N,-Ttext,7C00 - - noinst_PROGRAMS = stage1.exec -Only in grub/stage1: Makefile.am~ -diff -ur grub-0.92/stage2/Makefile.am grub/stage2/Makefile.am ---- grub-0.92/stage2/Makefile.am Sun Feb 3 23:55:48 2002 -+++ grub/stage2/Makefile.am Wed May 1 20:57:51 2002 -@@ -87,7 +87,7 @@ - fsys_vstafs.c fsys_xfs.c hercules.c serial.c smp-imps.c \ - stage2.c md5.c - pre_stage2_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) --pre_stage2_exec_ASFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) -+pre_stage2_exec_CCASFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) - pre_stage2_exec_LDFLAGS = $(PRE_STAGE2_LINK) - - if NETBOOT_SUPPORT -@@ -108,7 +108,7 @@ - echo "#define STAGE2_SIZE $$6" > stage2_size.h - - start_exec_SOURCES = start.S --start_exec_ASFLAGS = $(STAGE2_COMPILE) -+start_exec_CCASFLAGS = $(STAGE2_COMPILE) - start_exec_LDFLAGS = $(START_LINK) - - # XXX: automake doesn't provide a way to specify dependencies for object -@@ -126,7 +126,7 @@ - stage1_5.c fsys_ext2fs.c bios.c - e2fs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_EXT2FS=1 \ - -DNO_BLOCK_FILES=1 --e2fs_stage1_5_exec_ASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_EXT2FS=1 \ -+e2fs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_EXT2FS=1 \ - -DNO_BLOCK_FILES=1 - e2fs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) - -@@ -135,7 +135,7 @@ - stage1_5.c fsys_fat.c bios.c - fat_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FAT=1 \ - -DNO_BLOCK_FILES=1 --fat_stage1_5_exec_ASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FAT=1 \ -+fat_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FAT=1 \ - -DNO_BLOCK_FILES=1 - fat_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) - -@@ -144,7 +144,7 @@ - stage1_5.c fsys_ffs.c bios.c - ffs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FFS=1 \ - -DNO_BLOCK_FILES=1 --ffs_stage1_5_exec_ASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FFS=1 \ -+ffs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_FFS=1 \ - -DNO_BLOCK_FILES=1 - ffs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) - -@@ -153,7 +153,7 @@ - stage1_5.c fsys_minix.c bios.c - minix_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_MINIX=1 \ - -DNO_BLOCK_FILES=1 --minix_stage1_5_exec_ASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_MINIX=1 \ -+minix_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_MINIX=1 \ - -DNO_BLOCK_FILES=1 - minix_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) - -@@ -162,7 +162,7 @@ - disk_io.c stage1_5.c fsys_reiserfs.c bios.c - reiserfs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_REISERFS=1 \ - -DNO_BLOCK_FILES=1 --reiserfs_stage1_5_exec_ASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_REISERFS=1 \ -+reiserfs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_REISERFS=1 \ - -DNO_BLOCK_FILES=1 - reiserfs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) - -@@ -171,7 +171,7 @@ - disk_io.c stage1_5.c fsys_vstafs.c bios.c - vstafs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_VSTAFS=1 \ - -DNO_BLOCK_FILES=1 --vstafs_stage1_5_exec_ASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_VSTAFS=1 \ -+vstafs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_VSTAFS=1 \ - -DNO_BLOCK_FILES=1 - vstafs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) - -@@ -180,7 +180,7 @@ - disk_io.c stage1_5.c fsys_jfs.c bios.c - jfs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_JFS=1 \ - -DNO_BLOCK_FILES=1 --jfs_stage1_5_exec_ASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_JFS=1 \ -+jfs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_JFS=1 \ - -DNO_BLOCK_FILES=1 - jfs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) - -@@ -189,7 +189,7 @@ - disk_io.c stage1_5.c fsys_xfs.c bios.c - xfs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_XFS=1 \ - -DNO_BLOCK_FILES=1 --xfs_stage1_5_exec_ASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_XFS=1 \ -+xfs_stage1_5_exec_CCASFLAGS = $(STAGE1_5_COMPILE) -DFSYS_XFS=1 \ - -DNO_BLOCK_FILES=1 - xfs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) - -@@ -197,7 +197,7 @@ - diskless_exec_SOURCES = $(pre_stage2_exec_SOURCES) - diskless_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) \ - -DSUPPORT_DISKLESS=1 --diskless_exec_ASFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) \ -+diskless_exec_CCASFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) \ - -DSUPPORT_DISKLESS=1 - diskless_exec_LDFLAGS = $(PRE_STAGE2_LINK) - diskless_exec_LDADD = ../netboot/libdrivers.a -@@ -209,7 +209,7 @@ - - # For nbloader target. - nbloader_exec_SOURCES = nbloader.S --nbloader_exec_ASFLAGS = $(STAGE2_COMPILE) -+nbloader_exec_CCASFLAGS = $(STAGE2_COMPILE) - nbloader_exec_LDFLAGS = $(NBLOADER_LINK) - - # XXX: See the comment for start_exec-start.o. -@@ -222,7 +222,7 @@ - - # For pxeloader target. - pxeloader_exec_SOURCES = pxeloader.S --pxeloader_exec_ASFLAGS = $(STAGE2_COMPILE) -+pxeloader_exec_CCASFLAGS = $(STAGE2_COMPILE) - pxeloader_exec_LDFLAGS = $(PXELOADER_LINK) - - # XXX: See the comment for start_exec-start.o. -Only in grub/stage2: Makefile.am~ diff --git a/sys-boot/grub/files/grub-0.92/grub-0.92-nodeprecatedflags.patch b/sys-boot/grub/files/grub-0.92/grub-0.92-nodeprecatedflags.patch deleted file mode 100644 index 592a8fc4a9fd..000000000000 --- a/sys-boot/grub/files/grub-0.92/grub-0.92-nodeprecatedflags.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- configure.in.cppflags Wed May 1 20:12:18 2002 -+++ configure.in Wed May 1 20:14:15 2002 -@@ -110,7 +110,7 @@ - ]) - - # Force no alignment to save space. --CPPFLAGS="$CPPFLAGS -malign-jumps=1 -malign-loops=1 -malign-functions=1" -+CPPFLAGS="$CPPFLAGS -falign-jumps=1 -falign-loops=1 -falign-functions=1" - - if test "x$undef_flag" = xyes; then - CPPFLAGS="$CPPFLAGS -Wundef" diff --git a/sys-boot/grub/files/grub-0.92/grub-0.92-usbfix.patch b/sys-boot/grub/files/grub-0.92/grub-0.92-usbfix.patch deleted file mode 100644 index 2ec17311a52e..000000000000 --- a/sys-boot/grub/files/grub-0.92/grub-0.92-usbfix.patch +++ /dev/null @@ -1,83 +0,0 @@ -diff -ur grub-0.92/stage2/shared.h grub/stage2/shared.h ---- grub-0.92/stage2/shared.h 25 Mar 2002 21:43:55 -0000 -+++ grub/stage2/shared.h 7 May 2002 18:34:23 -0000 -@@ -258,14 +258,18 @@ - #define VARIABLE(x) ENTRY(x) - - -+/* Keyboard controller defines */ - #define K_RDWR 0x60 /* keyboard data & cmds (read/write) */ --#define K_STATUS 0x64 /* keyboard status */ -+#define K_STATUS 0x64 /* keyboard status (read-only) */ - #define K_CMD 0x64 /* keybd ctlr command (write-only) */ - - #define K_OBUF_FUL 0x01 /* output buffer full */ - #define K_IBUF_FUL 0x02 /* input buffer full */ - --#define KC_CMD_WIN 0xd0 /* read output port */ -+#define KC_CMD_KBDIS 0xad /* disable keyboard */ -+#define KC_CMD_KBEN 0xae /* enable keyboard */ -+ -+#define KC_CMD_ROUT 0xd0 /* read output port */ - #define KC_CMD_WOUT 0xd1 /* write output port */ - #define KB_OUTPUT_MASK 0xdd /* enable output buffer full interrupt - enable data line -diff -ur grub-0.92/stage2/asm.S grub/stage2/asm.S ---- grub-0.92/stage2/asm.S 12 Nov 2001 06:57:29 -0000 -+++ grub/stage2/asm.S 7 May 2002 18:34:28 -0000 -@@ -1694,10 +1694,24 @@ - */ - - ENTRY(gateA20) -+ pushl %ebp -+ movl %esp, %ebp - pushl %eax -+ pushl %ebx - - call gloop1 - -+ /* mask PS/2 interrupts */ -+ movb $0x10, %al -+ outb $0xa1 -+ movb $1, %al -+ outb $0x21 -+ /* disable keyboard */ -+ movb $KC_CMD_KBDIS, %al -+ outb $K_CMD -+ call gloop1 -+ -+ /* set up to write keyboard controller "output port" */ - movb $KC_CMD_WOUT, %al - outb $K_CMD - -@@ -1707,16 +1721,29 @@ - jnz gloopint1 - - movb $KB_OUTPUT_MASK, %al -- cmpb $0, 0x8(%esp) -+ cmpb $0, 0x8(%ebp) - jz gdoit - - orb $KB_A20_ENABLE, %al - gdoit: -+ /* write keyboard controller "output port" */ - outb $K_RDWR - - call gloop1 - -+ /* enable keyboard again (this also adds a bit of delay...) */ -+ movb $KC_CMD_KBEN, %al -+ outb $K_CMD -+ call gloop1 -+ /* unmask PS/2 interrupts */ -+ movb $0, %al -+ outb $0xa1 -+ movb $0, %al -+ outb $0x21 -+ -+ popl %ebx - popl %eax -+ popl %ebp - ret - - gloop1: diff --git a/sys-boot/grub/files/grub-0.92/grub-0.92-vga16.patch b/sys-boot/grub/files/grub-0.92/grub-0.92-vga16.patch deleted file mode 100644 index 0a915352e6ef..000000000000 --- a/sys-boot/grub/files/grub-0.92/grub-0.92-vga16.patch +++ /dev/null @@ -1,2058 +0,0 @@ -diff -ur grub-0.92/ChangeLog grub/ChangeLog ---- grub-0.92/ChangeLog Mon Apr 29 14:51:03 2002 -+++ grub/ChangeLog Wed May 1 20:29:20 2002 -@@ -2104,6 +2104,18 @@ - [!STAGE1_5] (CMDLINE_WIDTH): New macro. - [!STAGE1_5] (CMDLINE_MARGIN): Likewise. - * stage2/shared.h (TERMINAL_DUMB): Likewise. -+ -+2000-08-29 Paulo César Pereira de Andrade <pcpa@conectiva.com.br> -+ -+ * configure.in: Added --disable-vga16 option, in case user does not -+ want the new VGA graphics interface. -+ * stage2/asm.S: Added some new functions, for graphics operations, -+ and renamed several functions to allow wrapping them. -+ * stage2/stage2.c: Main changes for VGA16 support. -+ * stage2/char_io.c: Modified calls of grub_putchar to putchar -+ * stage2/disk_io.c: Same as for char_io.c -+ * stage2/cmdline.c: Also, the same as for char_io.c -+ * stage2/shared.h: Definitions for externs and wrapping functions. - - 2000-08-28 OKUJI Yoshinori <okuji@gnu.org> - -diff -ur grub-0.92/configure.in grub/configure.in ---- grub-0.92/configure.in Fri Mar 29 05:24:17 2002 -+++ grub/configure.in Wed May 1 20:29:20 2002 -@@ -18,6 +18,7 @@ - AC_PREREQ(2.13) - - AC_CANONICAL_HOST -+AM_PROG_LIBTOOL - - case "$host_cpu" in - i[[3456]]86) host_cpu=i386 ;; -@@ -610,6 +611,12 @@ - ASFLAGS='$(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)' - AC_SUBST(ASFLAGS) - -+AC_ARG_ENABLE(vga16, -+ [ --disable-vga16 disable VGA graphics interface]) -+ -+if test x"$enable_vga16" != xno; then -+ STAGE2_CFLAGS="$STAGE2_CFLAGS -DVGA16=1" -+fi - - dnl Output. - AC_OUTPUT([Makefile stage1/Makefile stage2/Makefile docs/Makefile \ -diff -ur grub-0.92/stage2/asm.S grub/stage2/asm.S ---- grub-0.92/stage2/asm.S Mon Nov 12 01:57:29 2001 -+++ grub/stage2/asm.S Wed May 1 20:29:20 2002 -@@ -1865,7 +1865,7 @@ - * %cl = cursor ending scanline - */ - --ENTRY(nocursor) -+ENTRY(grub_nocursor) - push %ebp - push %ebx /* save EBX */ - -@@ -1951,7 +1951,7 @@ - - - /* -- * console_set_attrib(attr) : Sets the character attributes for character at -+ * grub_set_attrib(attr) : Sets the character attributes for character at - * current cursor position. - * - * Bitfields for character's display attribute: -@@ -1985,7 +1985,7 @@ - * %cx = count to display (???, possible side-effects!!) - */ - --ENTRY(console_set_attrib) -+ENTRY(grub_set_attrib) - push %ebp - push %ebx - -@@ -2009,6 +2009,263 @@ - pop %ebp - ret - -+#ifdef VGA16 -+VARIABLE(cursorX) -+.word 0 -+VARIABLE(cursorY) -+.word 0 -+VARIABLE(cursorWidth) -+.word 0 -+VARIABLE(cursorHeight) -+.word 0 -+VARIABLE(cursorCount) -+.word 0 -+VARIABLE(cursorBuf) -+.byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -+ -+/* -+ * set_int1c_handler(void) -+ */ -+ENTRY(set_int1c_handler) -+ pushl %edi -+ -+ /* save the original int1c handler */ -+ movl $0x70, %edi -+ movw (%edi), %ax -+ movw %ax, ABS(int1c_offset) -+ movw 2(%edi), %ax -+ movw %ax, ABS(int1c_segment) -+ -+ /* save the new int1c handler */ -+ movw $ABS(int1c_handler), %ax -+ movw %ax, (%edi) -+ xorw %ax, %ax -+ movw %ax, 2(%edi) -+ -+ popl %edi -+ ret -+ -+ -+/* -+ * unset_int1c_handler(void) -+ */ -+ENTRY(unset_int1c_handler) -+ pushl %edi -+ -+ /* check if int1c_handler is set */ -+ movl $0x70, %edi -+ movw $ABS(int1c_handler), %ax -+ cmpw %ax, (%edi) -+ jne int1c_1 -+ xorw %ax, %ax -+ cmpw %ax, 2(%edi) -+ jne int1c_1 -+ -+ /* restore the original */ -+ movw ABS(int1c_offset), %ax -+ movw %ax, (%edi) -+ movw ABS(int1c_segment), %ax -+ movw %ax, 2(%edi) -+ -+int1c_1: -+ popl %edi -+ ret -+ -+/* -+ * blinks graphics cursor -+ */ -+ .code16 -+write_data: -+ movw $0, %ax -+ movw %ax, %ds -+ -+ mov $0xA000, %ax /* video in es:di */ -+ mov %ax, %es -+ mov $80, %ax -+ movw $ABS(cursorY), %si -+ mov %ds:(%si), %bx -+ mul %bx -+ movw $ABS(cursorX), %si -+ mov %ds:(%si), %bx -+ shr $3, %bx /* %bx /= 8 */ -+ add %bx, %ax -+ mov %ax, %di -+ -+ movw $ABS(cursorBuf), %si /* fontBuf in ds:si */ -+ -+ /* prepare for data moving */ -+ mov $16, %dx /* altura da fonte */ -+ mov $80, %bx /* bytes por linha */ -+ -+write_loop: -+ movb %ds:(%si), %al -+ xorb $0xff, %al -+ movb %al, %ds:(%si) /* invert cursorBuf */ -+ movb %al, %es:(%di) /* write to video */ -+ add %bx, %di -+ inc %si -+ dec %dx -+ jg write_loop -+ ret -+ -+int1c_handler: -+ pusha -+ mov $0, %ax -+ mov %ax, %ds -+ mov $ABS(cursorCount), %si -+ mov %ds:(%si), %ax -+ inc %ax -+ mov %ax, %ds:(%si) -+ cmp $9, %ax -+ jne int1c_done -+ -+ mov $0, %ax -+ mov %ax, %ds:(%si) -+/* -+ movw $0x3c4, %dx -+ movb $0x020f, %ax -+ outw %ax, %dx -+*/ -+ call write_data -+ -+int1c_done: -+ popa -+ iret -+ /* call previous int1c handler */ -+ /* ljmp */ -+ .byte 0xea -+int1c_offset: .word 0 -+int1c_segment: .word 0 -+ .code32 -+ -+ -+ENTRY(get_font) -+ push %ebp -+ push %ebx -+ push %ecx -+ push %edx -+ -+ call EXT_C(prot_to_real) -+ .code16 -+ -+ movw $0x1130, %ax -+ movb $6, %bh /* font 8x16 */ -+ int $0x10 -+ movw %bp, %dx -+ movw %es, %cx -+ -+ DATA32 call EXT_C(real_to_prot) -+ .code32 -+ -+ xorl %eax, %eax -+ movw %cx, %ax -+ shll $4, %eax -+ movw %dx, %ax -+ -+ pop %edx -+ pop %ecx -+ pop %ebx -+ pop %ebp -+ ret -+ -+/* -+ * set_videomode(mode) -+ * BIOS call "INT 10H Function 0h" to set video mode -+ * Call with %ah = 0x0 -+ * %al = video mode -+ */ -+ENTRY(set_videomode) -+ push %ebp -+ push %ebx -+ push %ecx -+ -+ movb 0x10(%esp), %cl -+ -+ call EXT_C(prot_to_real) -+ .code16 -+ -+ xorw %bx, %bx -+ movb $0xf, %ah -+ int $0x10 /* Get Current Video mode */ -+ movb %al, %ch -+ xorb %ah, %ah -+ movb %cl, %al -+ int $0x10 /* Set Video mode */ -+ -+ DATA32 call EXT_C(real_to_prot) -+ .code32 -+ -+ xorb %ah, %ah -+ movb %ch, %al -+ -+ pop %ecx -+ pop %ebx -+ pop %ebp -+ ret -+ -+/* -+ * set_palette(index, red, green, blue) -+ * BIOS call "INT 10H Function 10h" to set individual dac register -+ * Call with %ah = 0x10 -+ * %bx = register number -+ * %ch = new value for green (0-63) -+ * %cl = new value for blue (0-63) -+ * %dh = new value for red (0-63) -+ */ -+ -+ENTRY(set_palette) -+ push %ebp -+ push %eax -+ push %ebx -+ push %ecx -+ push %edx -+ -+ movw $0x3c8, %bx /* address write mode register */ -+ -+ /* wait vertical retrace */ -+ -+ movw $0x3da, %dx -+l1b: inb %dx, %al /* wait vertical active display */ -+ test $8, %al -+ jnz l1b -+ -+l2b: inb %dx, %al /* wait vertical retrace */ -+ test $8, %al -+ jnz l2b -+ -+ mov %bx, %dx -+ movb 0x18(%esp), %al /* index */ -+ outb %al, %dx -+ inc %dx -+ -+ movb 0x1c(%esp), %al /* red */ -+ outb %al, %dx -+ -+ movb 0x20(%esp), %al /* green */ -+ outb %al, %dx -+ -+ movb 0x24(%esp), %al /* blue */ -+ outb %al, %dx -+ -+ movw 0x18(%esp), %bx -+ -+ call EXT_C(prot_to_real) -+ .code16 -+ -+ movb %bl, %bh -+ movw $0x1000, %ax -+ int $0x10 -+ -+ DATA32 call EXT_C(real_to_prot) -+ .code32 -+ -+ pop %edx -+ pop %ecx -+ pop %ebx -+ pop %eax -+ pop %ebp -+ ret -+#endif - - /* - * getrtsecs() -diff -ur grub-0.92/stage2/builtins.c grub/stage2/builtins.c ---- grub-0.92/stage2/builtins.c Sun Apr 28 20:26:49 2002 -+++ grub/stage2/builtins.c Wed May 1 20:30:30 2002 -@@ -133,6 +133,36 @@ - grub_printf ("[%d,%d,%d]", sector, offset, length); - } - -+#ifdef VGA16 -+/* background */ -+static int -+background_func(char *arg, int flags) -+{ -+ if (grub_strlen(arg) == 6) { -+ int r = ((hex(arg[0]) << 4) | hex(arg[1])) >> 2; -+ int g = ((hex(arg[2]) << 4) | hex(arg[3])) >> 2; -+ int b = ((hex(arg[4]) << 4) | hex(arg[5])) >> 2; -+ -+ background = (r << 16) | (g << 8) | b; -+ if (vga_inited) -+ set_palette(0, r, g, b); -+ return (0); -+ } -+ -+ return (1); -+} -+ -+static struct builtin builtin_background = -+{ -+ "background", -+ background_func, -+ BUILTIN_CMDLINE | BUILTIN_MENU, -+ "background RRGGBB", -+ "Sets the background color when in graphics mode." -+ "RR is red, GG is green, and BB blue. Numbers must be in hexadecimal." -+}; -+#endif /* VGA16 */ -+ - - /* blocklist */ - static int -@@ -399,6 +429,40 @@ - #endif /* SUPPORT_NETBOOT */ - - -+#ifdef VGA16 -+ -+/* foreground */ -+static int -+border_func(char *arg, int flags) -+{ -+ if (grub_strlen(arg) == 6) { -+ int r = ((hex(arg[0]) << 4) | hex(arg[1])) >> 2; -+ int g = ((hex(arg[2]) << 4) | hex(arg[3])) >> 2; -+ int b = ((hex(arg[4]) << 4) | hex(arg[5])) >> 2; -+ -+ border = (r << 16) | (g << 8) | b; -+ if (vga_inited) -+ set_palette(0x11, r, g, b); -+ -+ return (0); -+ } -+ -+ return (1); -+} -+ -+static struct builtin builtin_border = -+{ -+ "border", -+ border_func, -+ BUILTIN_CMDLINE | BUILTIN_MENU, -+ "border RRGGBB", -+ "Sets the border video color when in graphics mode." -+ "RR is red, GG is green, and BB blue. Numbers must be in hexadecimal." -+}; -+ -+#endif /* VGA16 */ -+ -+ - /* cat */ - static int - cat_func (char *arg, int flags) -@@ -409,7 +473,7 @@ - return 1; - - while (grub_read (&c, 1)) -- grub_putchar (c); -+ putchar (c); - - grub_close (); - return 0; -@@ -963,6 +1027,44 @@ - return 0; - } - -+ -+#ifdef VGA16 -+/* display */ -+static int -+display_func(char *arg, int flags) -+{ -+ int i; -+ -+ for (i = 0; i < MAX_DISPLAYS; i++) { -+ if (grub_strcmp(arg, display_entries[i].name) == 0) -+ break; -+ } -+ -+ if (i >= MAX_DISPLAYS) -+ return (1); -+ -+ display_idx = i; -+ if (display->End) -+ (*display->End)(); -+ display = &display_entries[display_idx]; -+ -+ /* Restart cmain */ -+ grub_longjmp (restart_env, 0); -+ /*NOTREACHED*/ -+ -+ return (0); -+} -+ -+static struct builtin builtin_display = -+{ -+ "display", -+ display_func, -+ BUILTIN_CMDLINE, -+ "display MODEL", -+ "Changes display type. Available modes are \"text\" and \"vga16\"." -+}; -+#endif /* VGA16 */ -+ - static struct builtin builtin_displaymem = - { - "displaymem", -@@ -1298,6 +1400,39 @@ - " the devices which contain the file." - }; - -+#ifdef VGA16 -+ -+/* foreground */ -+static int -+foreground_func(char *arg, int flags) -+{ -+ if (grub_strlen(arg) == 6) { -+ int r = ((hex(arg[0]) << 4) | hex(arg[1])) >> 2; -+ int g = ((hex(arg[2]) << 4) | hex(arg[3])) >> 2; -+ int b = ((hex(arg[4]) << 4) | hex(arg[5])) >> 2; -+ -+ foreground = (r << 16) | (g << 8) | b; -+ if (vga_inited) -+ set_palette(15, r, g, b); -+ -+ return (0); -+ } -+ -+ return (1); -+} -+ -+static struct builtin builtin_foreground = -+{ -+ "foreground", -+ foreground_func, -+ BUILTIN_CMDLINE | BUILTIN_MENU, -+ "foreground RRGGBB", -+ "Sets the foreground color when in graphics mode." -+ "RR is red, GG is green, and BB blue. Numbers must be in hexadecimal." -+}; -+ -+#endif /* VGA16 */ -+ - - /* fstest */ - static int -@@ -1450,13 +1585,13 @@ - - - /* help */ --#define MAX_SHORT_DOC_LEN 39 --#define MAX_LONG_DOC_LEN 66 - - static int - help_func (char *arg, int flags) - { - int all = 0; -+ int MAX_SHORT_DOC_LEN = (view_x1 - view_x0 + 1) / 2 - 1; -+ int MAX_LONG_DOC_LEN = (view_x1 - view_x0) - 14; - - if (grub_memcmp (arg, "--all", sizeof ("--all") - 1) == 0) - { -@@ -1491,13 +1626,13 @@ - len = MAX_SHORT_DOC_LEN - 1; - - for (i = 0; i < len; i++) -- grub_putchar ((*builtin)->short_doc[i]); -+ putchar ((*builtin)->short_doc[i]); - - for (; i < MAX_SHORT_DOC_LEN; i++) -- grub_putchar (' '); -+ putchar (' '); - - if (! left) -- grub_putchar ('\n'); -+ putchar ('\n'); - - left = ! left; - } -@@ -1552,8 +1687,8 @@ - - grub_printf (" "); - for (i = 0; i < len; i++) -- grub_putchar (*doc++); -- grub_putchar ('\n'); -+ putchar (*doc++); -+ putchar ('\n'); - } - } - } -@@ -3260,6 +3395,74 @@ - "Save the current entry as the default boot entry." - }; - -+#ifdef VGA16 -+/*splashimage*/ -+static int -+splashimage_func(char *arg, int flags) -+{ -+ if (strlen(arg) > 63) -+ return (1); -+ if (flags == BUILTIN_CMDLINE) { -+ if (!grub_open(arg)) -+ return (1); -+ grub_close(); -+ } -+ -+ if (flags == BUILTIN_CMDLINE || !splash_set) { -+ strcpy(splashimage, arg); -+ splash_set = 1; -+ } -+ -+ if (flags == BUILTIN_CMDLINE && vga_inited) { -+ display->End(); -+ display->Begin(); -+ cls(); -+/* grub_longjmp(restart_env, 0);*/ -+ } -+ -+ return (0); -+} -+ -+static struct builtin builtin_splashimage = -+{ -+ "splashimage", -+ splashimage_func, -+ BUILTIN_CMDLINE | BUILTIN_MENU, -+ "splashimage FILE", -+ "Load FILE as the background image when in graphics mode." -+}; -+ -+/*shade*/ -+static int -+shade_func(char *arg, int flags) -+{ -+ int new_shade; -+ -+ if (!arg || safe_parse_maxint(&arg, &new_shade) == 0) -+ return (1); -+ -+ if (shade != new_shade) { -+ shade = new_shade; -+ if (flags == BUILTIN_CMDLINE && vga_inited) { -+ display->End(); -+ display->Begin(); -+ cls(); -+ } -+ } -+ -+ return (0); -+} -+ -+static struct builtin builtin_shade = -+{ -+ "shade", -+ shade_func, -+ BUILTIN_CMDLINE | BUILTIN_MENU, -+ "shade INTEGER", -+ "If set to 0, disables the use of shaded text, else enables it." -+}; -+#endif /* VGA16 */ -+ - - #ifdef SUPPORT_SERIAL - /* serial */ -@@ -4572,16 +4775,79 @@ - "Probe VBE information. If the mode number MODE is specified, show only" - " the information about only the mode." - }; -- -+ -+#ifdef VGA16 - -+/* viewport */ -+static int -+viewport_func (char *arg, int flags) -+{ -+ int i; -+ int x0 = 80, y0 = 25, x1 = 0, y1 = 0; -+ int *pos[4] = { &x0, &y0, &x1, &y1 }; -+ extern int viewport_set; -+ -+ if (!arg) -+ return (1); -+ for (i = 0; i < 4; i++) { -+ if (!*arg) -+ return (1); -+ while (*arg && (*arg == ' ' || *arg == '\t')) -+ ++arg; -+ if (!safe_parse_maxint(&arg, pos[i])) -+ return (1); -+ while (*arg && (*arg != ' ' && *arg != '\t')) -+ ++arg; -+ } -+ -+ x1 += x0; -+ y1 += y0; -+ -+ /* minimum size is 60 colums and 16 rows */ -+ if (x0 > x1 - 60 || y0 > y1 - 16 || x0 < 0 || y0 < 0 || x1 > 80 || y1 > 30) -+ return (1); -+ -+ viewport_set = 1; -+ view_x0 = x0; -+ view_y0 = y0; -+ view_x1 = x1; -+ view_y1 = y1; -+ -+ if (flags == BUILTIN_CMDLINE && vga_inited) { -+ display->End(); -+ display->Begin(); -+ cls(); -+ } -+ -+ return (0); -+} -+ -+static struct builtin builtin_viewport = -+{ -+ "viewport", -+ viewport_func, -+ BUILTIN_CMDLINE | BUILTIN_MENU, -+ "viewport x y width height", -+ "Changes grub internals to output text in the window defined by" -+ " four parameters. The x and y parameters are 0 based. This option" -+ " only works with the vga interface." -+}; -+#endif /* VGA16 */ -+ - /* The table of builtin commands. Sorted in dictionary order. */ - struct builtin *builtin_table[] = - { -+#ifdef VGA16 -+ &builtin_background, -+#endif /* VGA16 */ - &builtin_blocklist, - &builtin_boot, - #ifdef SUPPORT_NETBOOT - &builtin_bootp, - #endif /* SUPPORT_NETBOOT */ -+#ifdef VGA16 -+ &builtin_border, -+#endif /* VGA16 */ - &builtin_cat, - &builtin_chainloader, - &builtin_cmp, -@@ -4597,12 +4863,18 @@ - #endif /* SUPPORT_NETBOOT */ - &builtin_displayapm, - &builtin_displaymem, -+#ifdef VGA16 -+ &builtin_display, -+#endif /* VGA16 */ - #ifdef GRUB_UTIL - &builtin_dump, - #endif /* GRUB_UTIL */ - &builtin_embed, - &builtin_fallback, - &builtin_find, -+#ifdef VGA16 -+ &builtin_foreground, -+#endif /* VGA16 */ - &builtin_fstest, - &builtin_geometry, - &builtin_halt, -@@ -4646,6 +4918,10 @@ - #endif /* SUPPORT_SERIAL */ - &builtin_setkey, - &builtin_setup, -+#ifdef VGA16 -+ &builtin_shade, -+ &builtin_splashimage, -+#endif /* VGA16 */ - #if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES) - &builtin_terminal, - #endif /* SUPPORT_SERIAL || SUPPORT_HERCULES */ -@@ -4659,5 +4935,8 @@ - &builtin_unhide, - &builtin_uppermem, - &builtin_vbeprobe, -+#ifdef VGA16 -+ &builtin_viewport, -+#endif /* VGA16 */ - 0 - }; -diff -ur grub-0.92/stage2/char_io.c grub/stage2/char_io.c ---- grub-0.92/stage2/char_io.c Mon Mar 25 16:43:55 2002 -+++ grub/stage2/char_io.c Wed May 1 20:29:20 2002 -@@ -265,8 +265,8 @@ - - /* XXX: These should be defined in shared.h, but I leave these here, - until this code is freezed. */ --#define CMDLINE_WIDTH 78 --#define CMDLINE_MARGIN 10 -+ int CMDLINE_WIDTH = (view_x1 - view_x0) - 2; -+ int CMDLINE_MARGIN = 10; - - int xpos, lpos, c, section; - /* The length of PROMPT. */ -@@ -316,7 +316,7 @@ - { - int y = getxy () & 0xFF; - -- gotoxy (xpos, y); -+ gotoxy (xpos + view_x0, y); - } - # ifdef SUPPORT_SERIAL - else if (! (terminal & TERMINAL_DUMB) && (count > 4)) -@@ -328,7 +328,7 @@ - int i; - - for (i = 0; i < count; i++) -- grub_putchar ('\b'); -+ putchar ('\b'); - } - # endif /* SUPPORT_SERIAL */ - } -@@ -354,7 +354,7 @@ - { - int y = getxy () & 0xFF; - -- gotoxy (xpos, y); -+ gotoxy (xpos + view_x0, y); - } - # ifdef SUPPORT_SERIAL - else if (! (terminal & TERMINAL_DUMB) && (count > 4)) -@@ -368,9 +368,9 @@ - for (i = lpos - count; i < lpos; i++) - { - if (! echo_char) -- grub_putchar (buf[i]); -+ putchar (buf[i]); - else -- grub_putchar (echo_char); -+ putchar (echo_char); - } - } - # endif /* SUPPORT_SERIAL */ -@@ -398,7 +398,7 @@ - /* From the start to the end. */ - len = CMDLINE_WIDTH; - pos = 0; -- grub_putchar ('\r'); -+ putchar ('\r'); - - /* If SECTION is the first section, print the prompt, otherwise, - print `<'. */ -@@ -410,7 +410,7 @@ - } - else - { -- grub_putchar ('<'); -+ putchar ('<'); - len--; - pos++; - } -@@ -446,9 +446,9 @@ - for (i = start; i < start + len && i < llen; i++) - { - if (! echo_char) -- grub_putchar (buf[i]); -+ putchar (buf[i]); - else -- grub_putchar (echo_char); -+ putchar (echo_char); - - pos++; - } -@@ -458,7 +458,7 @@ - /* Fill up the rest of the line with spaces. */ - for (; i < start + len; i++) - { -- grub_putchar (' '); -+ putchar (' '); - pos++; - } - -@@ -467,9 +467,9 @@ - if (pos == CMDLINE_WIDTH) - { - if (start + len < llen) -- grub_putchar ('>'); -+ putchar ('>'); - else -- grub_putchar (' '); -+ putchar (' '); - - pos++; - } -@@ -483,7 +483,7 @@ - { - int y = getxy () & 0xFF; - -- gotoxy (xpos, y); -+ gotoxy (xpos + view_x0, y); - } - # ifdef SUPPORT_SERIAL - else if (! (terminal & TERMINAL_SERIAL) && (pos - xpos > 4)) -@@ -493,7 +493,7 @@ - else - { - for (i = 0; i < pos - xpos; i++) -- grub_putchar ('\b'); -+ putchar ('\b'); - } - # endif /* SUPPORT_SERIAL */ - } -@@ -503,7 +503,7 @@ - void cl_init (void) - { - /* Distinguish us from other lines and error messages! */ -- grub_putchar ('\n'); -+ putchar ('\n'); - - /* Print full line and set position here. */ - cl_refresh (1, 0); -@@ -634,7 +634,7 @@ - /* There are more than one candidates, so print - the list. */ - -- grub_putchar ('\n'); -+ putchar ('\n'); - /* Enable the auto fill mode temporarily. */ - auto_fill = 1; - print_completions (is_filename, 0); -@@ -776,7 +776,7 @@ - } - } - -- grub_putchar ('\n'); -+ putchar ('\n'); - - /* If ECHO_CHAR is NUL, remove the leading spaces. */ - lpos = 0; -@@ -1122,7 +1122,7 @@ - { - /* Fold a line only if AUTO_FILL is true. */ - if (auto_fill && col >= 79) -- grub_putchar ('\n'); -+ putchar ('\n'); - - col++; - } -@@ -1173,7 +1173,7 @@ - - #ifndef STAGE1_5 - void --gotoxy (int x, int y) -+grub_gotoxy (int x, int y) - { - if (terminal & TERMINAL_CONSOLE) - console_gotoxy (x, y); -@@ -1197,7 +1197,7 @@ - #endif /* SUPPORT_SERIAL */ - - int --getxy (void) -+grub_getxy (void) - { - int ret = 0; - -@@ -1302,7 +1302,7 @@ - #endif /* SUPPORT_SERIAL */ - - void --cls (void) -+grub_cls (void) - { - if (terminal & TERMINAL_CONSOLE) - console_cls (); -@@ -1323,7 +1323,7 @@ - { - /* If the terminal is dumb, there is no way to clean the terminal. */ - if (terminal & TERMINAL_DUMB) -- grub_putchar ('\n'); -+ putchar ('\n'); - else - grub_printf ("\e[H\e[J"); - } -diff -ur grub-0.92/stage2/cmdline.c grub/stage2/cmdline.c ---- grub-0.92/stage2/cmdline.c Sun Mar 24 07:28:54 2002 -+++ grub/stage2/cmdline.c Wed May 1 20:29:20 2002 -@@ -125,7 +125,7 @@ - init_page (); - #ifdef SUPPORT_DISKLESS - print_network_configuration (); -- grub_putchar ('\n'); -+ putchar ('\n'); - #endif - print_cmdline_message (forever); - -diff -ur grub-0.92/stage2/disk_io.c grub/stage2/disk_io.c ---- grub-0.92/stage2/disk_io.c Wed Nov 28 13:43:56 2001 -+++ grub/stage2/disk_io.c Wed May 1 20:29:20 2002 -@@ -1267,7 +1267,7 @@ - } - - if (! is_completion) -- grub_putchar ('\n'); -+ putchar ('\n'); - - print_error (); - do_completion = 0; -@@ -1334,7 +1334,7 @@ - } - - if (! is_completion) -- grub_putchar ('\n'); -+ putchar ('\n'); - } - else - { -@@ -1408,7 +1408,7 @@ - } - - if (! is_completion) -- grub_putchar ('\n'); -+ putchar ('\n'); - } - else - errnum = ERR_BAD_FILENAME; -diff -ur grub-0.92/stage2/shared.h grub/stage2/shared.h ---- grub-0.92/stage2/shared.h Mon Mar 25 16:43:55 2002 -+++ grub/stage2/shared.h Wed May 1 20:29:20 2002 -@@ -44,6 +44,12 @@ - # define RAW_SEG(x) (x) - #endif - -+#if defined(VGA16) -+#if defined(GRUB_UTIL) || defined(STAGE1_5) -+#undef VGA16 -+#endif -+#endif -+ - /* - * Integer sizes - */ -@@ -367,8 +373,10 @@ - #define isspace grub_isspace - #define printf grub_printf - #define sprintf grub_sprintf -+#ifndef VGA16 - #undef putchar - #define putchar grub_putchar -+#endif - #define strncat grub_strncat - #define strstr grub_strstr - #define memcmp grub_memcmp -@@ -383,6 +391,9 @@ - /* - * Below this should be ONLY defines and other constructs for C code. - */ -+#ifdef VGA16 -+#define VIDEO 0xA0000 -+#endif - - /* multiboot stuff */ - -@@ -779,26 +790,26 @@ - int currticks (void); - - /* Clear the screen. */ --void cls (void); -+void grub_cls (void); - - /* The console part of cls. */ - void console_cls (void); - - #ifndef GRUB_UTIL - /* Turn off cursor. */ --void nocursor (void); -+void grub_nocursor (void); - #endif - - /* Get the current cursor position (where 0,0 is the top left hand - corner of the screen). Returns packed values, (RET >> 8) is x, - (RET & 0xff) is y. */ --int getxy (void); -+int grub_getxy (void); - - /* The console part of getxy. */ - int console_getxy (void); - - /* Set the cursor position. */ --void gotoxy (int x, int y); -+void grub_gotoxy (int x, int y); - - /* The console part of gotoxy. */ - void console_gotoxy (int x, int y); -@@ -828,8 +839,64 @@ - constants defined above. */ - void set_attrib (int attr); - -+extern int view_x0, view_y0, view_x1, view_y1; -+#ifdef VGA16 -+#define MAX_DISPLAYS 2 -+ -+#define cls() (display->Cls ? (*display->Cls)() : 0) -+#define gotoxy(x, y) (display->Gotoxy ? (*display->Gotoxy)(x, y) : 0) -+#define putchar(c) (display->Putchar ? (*display->Putchar)(c) : 0) -+#define console_set_attrib(a) (display->SetAttrib ? (*display->SetAttrib)(a) : 0) -+#define getxy() (display->Getxy ? (*display->Getxy)() : 0) -+#define nocursor() (display->Nocursor ? (*display->Nocursor)() : 0) -+struct display_entry { -+ char *name; -+ int (*Begin)(void); -+ void (*End)(void); -+ void (*Cls)(void); -+ void (*Gotoxy)(int x, int y); -+ void (*Putchar)(int ch); -+ void (*SetAttrib)(int attr); -+ int (*Getxy)(void); -+ void (*Nocursor)(void); -+}; -+struct display_entry display_entries[MAX_DISPLAYS + 1]; -+extern struct display_entry *display; -+ -+extern int vga_inited, foreground, background, shade, border; -+extern int display_idx, splash_set; -+extern short cursorX, cursorY, cursorWidth, cursorHeight; -+extern char cursorBuf[16], splashimage[64]; -+ -+int vga16_begin(void); -+void vga16_end(void); -+void vga16_cls(void); -+void vga16_gotoxy(int x, int y); -+void vga16_putchar(int ch); -+int vga16_getxy(void); -+void vga16_nocursor(void); -+void vga16_set_attrib(int attr); -+ -+int read_image(); -+void set_palette(int index, int red, int green, int blue); -+void *get_font(void); -+/* return previous video mode */ -+int set_videomode(int mode); -+ -+int hex(int); -+void set_int1c_handler(); -+void unset_int1c_handler(); -+void cursor(int state); -+#else -+#define cls grub_cls -+#define gotoxy grub_gotoxy -+#define console_set_attrib grub_set_attrib -+#define getxy grub_getxy -+#define nocursor grub_nocursor -+#endif -+ - /* The console part of set_attrib. */ --void console_set_attrib (int attr); -+void grub_set_attrib (int attr); - - /* Low-level disk I/O */ - int get_diskinfo (int drive, struct geometry *geometry); -diff -ur grub-0.92/stage2/stage2.c grub/stage2/stage2.c ---- grub-0.92/stage2/stage2.c Sun Mar 24 07:28:54 2002 -+++ grub/stage2/stage2.c Wed May 1 20:31:22 2002 -@@ -19,7 +19,12 @@ - - #include "shared.h" - -+int view_x0 = 0, view_y0 = 0, view_x1 = 80, view_y1 = 25; - grub_jmp_buf restart_env; -+#ifdef VGA16 -+int vga_disabled = 0, viewport_set = 0; -+int sx0, sy0, sx1, sy1; -+#endif - - #if defined(PRESET_MENU_STRING) || defined(SUPPORT_DISKLESS) - -@@ -109,12 +114,12 @@ - } - #endif /* SUPPORT_SERIAL */ - -- gotoxy (77, y + 1); -+ gotoxy (view_x1 - 3, y + 1); - - if (first) -- grub_putchar (disp_up); -+ putchar (disp_up); - else -- grub_putchar (' '); -+ putchar (' '); - - menu_entries = get_entry (menu_entries, first, 0); - -@@ -122,13 +127,13 @@ - { - int j = 0; - -- gotoxy (3, y + i); -+ gotoxy (view_x0 + 3, y + i); - - while (*menu_entries) - { -- if (j < 71) -+ if (j < (view_x1 - view_x0) - 9) - { -- grub_putchar (*menu_entries); -+ putchar (*menu_entries); - j++; - } - -@@ -138,16 +143,16 @@ - if (*(menu_entries - 1)) - menu_entries++; - -- for (; j < 71; j++) -- grub_putchar (' '); -+ for (; j < (view_x1 - view_x0) - 9; j++) -+ putchar (' '); - } - -- gotoxy (77, y + size); -+ gotoxy (view_x0 + 3, y + size); - - if (*menu_entries) -- grub_putchar (disp_down); -+ putchar (disp_down); - else -- grub_putchar (' '); -+ putchar (' '); - } - - -@@ -211,10 +216,10 @@ - ) - # endif - { -- for (i = 0; i < 14; i++) -+ for (i = 0; i < 12; i++) - { - int j; -- for (j = 0; j < 75; j++) -+ for (j = view_x0; j < (view_x1 - view_x0) - 5; j++) - { - gotoxy (j + 1, i + y); - set_attrib (normal_color); -@@ -223,33 +228,33 @@ - } - #endif - -- gotoxy (1, y); -+ gotoxy (view_x0 + 1, y); - -- grub_putchar (disp_ul); -- for (i = 0; i < 73; i++) -- grub_putchar (disp_horiz); -- grub_putchar (disp_ur); -+ putchar (disp_ul); -+ for (i = view_x0; i < view_x1 - 7; i++) -+ putchar (disp_horiz); -+ putchar (disp_ur); - - i = 1; - - while (1) - { -- gotoxy (1, y + i); -+ gotoxy (view_x0 + 1, y + i); - - if (i > size) - break; - -- grub_putchar (disp_vert); -- gotoxy (75, y + i); -- grub_putchar (disp_vert); -+ putchar (disp_vert); -+ gotoxy (view_x1 - 5, y + i); -+ putchar (disp_vert); - - i++; - } - -- grub_putchar (disp_ll); -- for (i = 0; i < 73; i++) -- grub_putchar (disp_horiz); -- grub_putchar (disp_lr); -+ putchar (disp_ll); -+ for (i = view_x0; i < view_x1 - 7; i++) -+ putchar (disp_horiz); -+ putchar (disp_lr); - } - - static void -@@ -261,27 +266,27 @@ - if (terminal & TERMINAL_SERIAL) - { - menu_entries = get_entry (menu_entries, entryno, 0); -- gotoxy (2, y); -- grub_putchar (' '); -- for (x = 3; x < 75; x++) -+ gotoxy (view_x0 + 2, y); -+ putchar (' '); -+ for (x = view_x0 + 3; x < view_x1 - 5; x++) - { -- if (*menu_entries && x < 71) -- grub_putchar (*menu_entries++); -+ if (*menu_entries && x < view_x1 - 9) -+ putchar (*menu_entries++); - else -- grub_putchar (' '); -+ putchar (' '); - } - } - else - #endif /* SUPPORT_SERIAL */ - { -- for (x = 2; x < 75; x++) -+ for (x = view_x0 + 2; x < view_x1 - 5; x++) - { - gotoxy (x, y); - set_attrib (attr); - } - } - -- gotoxy (74, y); -+ gotoxy (view_x1 - 6, y); - } - - /* Set the attribute of the line Y to normal state. */ -@@ -334,7 +339,8 @@ - invariant for TERMINAL_DUMB: first_entry == 0 */ - if (! (terminal & TERMINAL_DUMB)) - { -- while (entryno > 11) -+ errnum = ERR_NONE; -+ while (entryno > 9) - { - first_entry++; - entryno--; -@@ -399,7 +405,7 @@ - #endif /* ! GRUB_UTIL */ - - if (! (terminal & TERMINAL_DUMB)) -- print_border (3, 12); -+ print_border (3 + view_y0, 12); - - #ifdef GRUB_UTIL - /* In the grub shell, always use ACS_*. */ -@@ -455,10 +461,10 @@ - grub_printf ("\n\nThe selected entry is %d ", entryno); - else - { -- print_entries (3, 12, first_entry, menu_entries); -+ print_entries (view_y0 + 3, 12, first_entry, menu_entries); - - /* highlight initial line */ -- set_line_highlight (4 + entryno, first_entry + entryno, -+ set_line_highlight (view_y0 + 4 + entryno, first_entry + entryno, - menu_entries); - } - } -@@ -487,9 +493,9 @@ - entryno, grub_timeout); - else - { -- gotoxy (3, 22); -+ gotoxy (view_x0 + 3, view_y1 - 3); - printf ("The highlighted entry will be booted automatically in %d seconds. ", grub_timeout); -- gotoxy (74, 4 + entryno); -+ gotoxy (view_x0 - 6, view_y0 + 4 + entryno); - } - - grub_timeout--; -@@ -515,12 +521,12 @@ - if (terminal & TERMINAL_DUMB) - grub_putchar ('\r'); - else -- gotoxy (3, 22); -+ gotoxy (view_x0 + 3, 22); - printf (" "); - grub_timeout = -1; - fallback_entry = -1; - if (! (terminal & TERMINAL_DUMB)) -- gotoxy (74, 4 + entryno); -+ gotoxy (view_x1 - 6, view_x0 + 4 + entryno); - } - - /* We told them above (at least in SUPPORT_SERIAL) to use -@@ -536,17 +542,17 @@ - { - if (entryno > 0) - { -- set_line_normal (4 + entryno, first_entry + entryno, -+ set_line_normal (view_y0 + 4 + entryno, first_entry + entryno, - menu_entries); - entryno--; -- set_line_highlight (4 + entryno, first_entry + entryno, -+ set_line_highlight (view_y0 + 4 + entryno, first_entry + entryno, - menu_entries); - } - else if (first_entry > 0) - { - first_entry--; -- print_entries (3, 12, first_entry, menu_entries); -- set_line_highlight (4, first_entry + entryno, -+ print_entries (view_y0 + 3, 12, first_entry, menu_entries); -+ set_line_highlight (view_y0 + 4, first_entry + entryno, - menu_entries); - } - } -@@ -558,17 +564,17 @@ - else - if (entryno < 11) - { -- set_line_normal (4 + entryno, first_entry + entryno, -+ set_line_normal (view_y0 + 4 + entryno, first_entry + entryno, - menu_entries); - entryno++; -- set_line_highlight (4 + entryno, first_entry + entryno, -+ set_line_highlight (view_y0 + 4 + entryno, first_entry + entryno, - menu_entries); - } - else if (num_entries > 12 + first_entry) - { - first_entry++; -- print_entries (3, 12, first_entry, menu_entries); -- set_line_highlight (15, first_entry + entryno, menu_entries); -+ print_entries (view_y0 + 3, 12, first_entry, menu_entries); -+ set_line_highlight (view_y0 + 15, first_entry + entryno, menu_entries); - } - } - -@@ -582,7 +588,7 @@ - if ((c == 'd') || (c == 'o') || (c == 'O')) - { - if (! (terminal & TERMINAL_DUMB)) -- set_line_normal (4 + entryno, first_entry + entryno, -+ set_line_normal (view_y0 + 4 + entryno, first_entry + entryno, - menu_entries); - - /* insert after is almost exactly like insert before */ -@@ -640,8 +646,8 @@ - } - else - { -- print_entries (3, 12, first_entry, menu_entries); -- set_line_highlight (4 + entryno, first_entry + entryno, -+ print_entries (view_y0 + 3, 12, first_entry, menu_entries); -+ set_line_highlight (view_y0 + 4 + entryno, first_entry + entryno, - menu_entries); - } - } -@@ -664,7 +670,7 @@ - if (terminal & TERMINAL_DUMB) - grub_printf ("\r "); - else -- gotoxy (1, 21); -+ gotoxy (view_x0 + 1, view_y1 + 21); - - /* Wipe out the previously entered password */ - memset (entered, 0, sizeof (entered)); -@@ -809,6 +815,11 @@ - auto_fill = 1; - - cls (); -+#ifdef VGA16 -+ if (display->End) -+ (*display->End)(); -+ display = &display_entries[0]; -+#endif - - while (1) - { -@@ -840,6 +851,16 @@ - break; - } - -+#ifdef VGA16 -+ if (display_idx >= 0) -+ display = &display_entries[display_idx]; -+ else if (!vga_disabled) -+ display = &display_entries[1]; -+ -+ if (!display->Begin || !(*display->Begin)()) -+ display = &display_entries[0]; -+#endif -+ - show_menu = 1; - goto restart; - } -@@ -904,6 +925,560 @@ - return pos; - } - -+#ifdef VGA16 -+struct display_entry display_entries[MAX_DISPLAYS + 1] = { -+ {"text", 0, 0, grub_cls, grub_gotoxy, grub_putchar, grub_set_attrib, -+ grub_getxy, grub_nocursor}, -+ {"vga16", -+ vga16_begin, vga16_end, vga16_cls, vga16_gotoxy, vga16_putchar, -+ vga16_set_attrib, vga16_getxy, vga16_nocursor}, -+ {0, 0, 0, 0, 0, 0, 0, 0, 0} -+}; -+struct display_entry *display; -+int display_idx = -1; -+ -+/* default vga palette */ -+char vga16pal[16][3] = { -+ { 0, 0, 0}, -+ { 0, 0, 42}, -+ { 0, 42, 0}, -+ { 0, 42, 42}, -+ {42, 0, 0}, -+ {42, 0, 42}, -+ {42, 21, 0}, -+ {42, 42, 42}, -+ {21, 21, 21}, -+ {21, 21, 63}, -+ {21, 63, 21}, -+ {21, 63, 63}, -+ {63, 21, 21}, -+ {63, 21, 63}, -+ {63, 63, 21}, -+ {63, 63, 63}, -+}; -+ -+int fontx, fonty; -+unsigned char *font8x16; -+int saved_videomode, no_scroll = 0, no_cursor = 0, shade = 1, vga_inited = 0; -+unsigned short text[80 * 30]; -+int foreground = (63 << 16) | (63 << 8) | (63), background = 0, border = 0; -+int splash_set; -+char splashimage[64]; -+#define VSHADOW VSHADOW1 -+unsigned char VSHADOW1[38400]; -+unsigned char VSHADOW2[38400]; -+unsigned char VSHADOW4[38400]; -+unsigned char VSHADOW8[38400]; -+ -+static inline void -+outb(unsigned short port, unsigned char val) -+{ -+ __asm __volatile ("outb %0,%1"::"a" (val), "d" (port)); -+} -+ -+static void -+ModeReg(int value) -+{ -+ outb(0x3ce, 5); -+ outb(0x3cf, value); -+} -+ -+static void -+MapMask(int value) -+{ -+ outb(0x3c4, 2); -+ outb(0x3c5, value); -+} -+ -+/* set/reset register */ -+static void -+SetRes(int value) -+{ -+ outb(0x3ce, 0); -+ outb(0x3cf, value); -+} -+ -+/* enable set/reset register */ -+static void -+ESetRes(int value) -+{ -+ outb(0x3ce, 1); -+ outb(0x3cf, value); -+} -+ -+static void -+ReadMap(int value) -+{ -+ outb(0x3ce, 4); -+ outb(0x3cf, value); -+} -+ -+/* bit mask register */ -+static void -+BitMask(int value) -+{ -+ outb(0x3ce, 8); -+ outb(0x3cf, value); -+} -+ -+void -+grub_memcpy(void *dest, const void *src, int len) -+{ -+ int i; -+ register char *d = (char*)dest, *s = (char*)src; -+ -+ for (i = 0; i < len; i++) -+ d[i] = s[i]; -+} -+ -+int -+hex(int v) -+{ -+ if (v >= 'A' && v <= 'F') -+ return (v - 'A' + 10); -+ if (v >= 'a' && v <= 'f') -+ return (v - 'a' + 10); -+ return (v - '0'); -+} -+ -+static void -+SetXY(int col, int row) -+{ -+ if (col >= view_x0 && col < view_x1) { -+ fontx = col; -+ cursorX = col << 3; -+ } -+ if (row >= view_y0 && row < view_y1) { -+ fonty = row; -+ cursorY = row << 4; -+ } -+} -+ -+void -+cursor(int set) -+{ -+ unsigned char *pat, *mem, *ptr, chr[16 << 2]; -+ int i, ch, invert, offset; -+ -+ if (set && (no_cursor || no_scroll)) -+ return; -+ -+ offset = cursorY * 80 + fontx; -+ ch = text[fonty * 80 + fontx] & 0xff; -+ invert = (text[fonty * 80 + fontx] & 0xff00) != 0; -+ pat = font8x16 + (ch << 4); -+ -+ mem = (unsigned char*)VIDEO + offset; -+ -+ if (!set) { -+ for (i = 0; i < 16; i++) { -+ unsigned char mask = pat[i]; -+ -+ if (!invert) { -+ chr[i ] = ((unsigned char*)VSHADOW1)[offset]; -+ chr[16 + i] = ((unsigned char*)VSHADOW2)[offset]; -+ chr[32 + i] = ((unsigned char*)VSHADOW4)[offset]; -+ chr[48 + i] = ((unsigned char*)VSHADOW8)[offset]; -+ -+ if (shade) { -+ if (ch == DISP_VERT || ch == DISP_LL || -+ ch == DISP_UR || ch == DISP_LR) { -+ unsigned char pmask = ~(pat[i] >> 1); -+ -+ chr[i ] &= pmask; -+ chr[16 + i] &= pmask; -+ chr[32 + i] &= pmask; -+ chr[48 + i] &= pmask; -+ } -+ if (i > 0 && ch != DISP_VERT) { -+ unsigned char pmask = ~(pat[i - 1] >> 1); -+ -+ chr[i ] &= pmask; -+ chr[16 + i] &= pmask; -+ chr[32 + i] &= pmask; -+ chr[48 + i] &= pmask; -+ if (ch == DISP_HORIZ || ch == DISP_UR || ch == DISP_LR) { -+ pmask = ~pat[i - 1]; -+ -+ chr[i ] &= pmask; -+ chr[16 + i] &= pmask; -+ chr[32 + i] &= pmask; -+ chr[48 + i] &= pmask; -+ } -+ } -+ } -+ chr[i ] |= mask; -+ chr[16 + i] |= mask; -+ chr[32 + i] |= mask; -+ chr[48 + i] |= mask; -+ -+ offset += 80; -+ } -+ else { -+ chr[i ] = mask; -+ chr[16 + i] = mask; -+ chr[32 + i] = mask; -+ chr[48 + i] = mask; -+ } -+ } -+ } -+ else { -+ MapMask(15); -+ ptr = mem; -+ for (i = 0; i < 16; i++, ptr += 80) { -+ cursorBuf[i] = pat[i]; -+ *ptr = ~pat[i]; -+ } -+ return; -+ } -+ -+ offset = 0; -+ for (i = 1; i < 16; i <<= 1, offset += 16) { -+ int j; -+ -+ MapMask(i); -+ ptr = mem; -+ for (j = 0; j < 16; j++, ptr += 80) -+ *ptr = chr[j + offset]; -+ } -+ -+ MapMask(15); -+} -+ -+int -+read_image(void) -+{ -+ char buf[32], pal[16]; -+ unsigned char c, base, mask, *s1, *s2, *s4, *s8; -+ unsigned i, len, idx, colors, x, y, width, height; -+ -+ if (!grub_open(splashimage)) -+ return (0); -+ -+ /* read header */ -+ if (!grub_read((char*)&buf, 10) || grub_memcmp(buf, "/* XPM */\n", 10)) { -+ grub_close(); -+ return (0); -+ } -+ -+ /* parse info */ -+ while (grub_read(&c, 1)) { -+ if (c == '"') -+ break; -+ } -+ -+ while (grub_read(&c, 1) && (c == ' ' || c == '\t')) -+ ; -+ -+ i = 0; -+ width = c - '0'; -+ while (grub_read(&c, 1)) { -+ if (c >= '0' && c <= '9') -+ width = width * 10 + c - '0'; -+ else -+ break; -+ } -+ while (grub_read(&c, 1) && (c == ' ' || c == '\t')) -+ ; -+ -+ height = c - '0'; -+ while (grub_read(&c, 1)) { -+ if (c >= '0' && c <= '9') -+ height = height * 10 + c - '0'; -+ else -+ break; -+ } -+ while (grub_read(&c, 1) && (c == ' ' || c == '\t')) -+ ; -+ -+ colors = c - '0'; -+ while (grub_read(&c, 1)) { -+ if (c >= '0' && c <= '9') -+ colors = colors * 10 + c - '0'; -+ else -+ break; -+ } -+ -+ base = 0; -+ while (grub_read(&c, 1) && c != '"') -+ ; -+ -+ /* palette */ -+ for (i = 0, idx = 1; i < colors; i++) { -+ len = 0; -+ -+ while (grub_read(&c, 1) && c != '"') -+ ; -+ grub_read(&c, 1); /* char */ -+ base = c; -+ grub_read(buf, 4); /* \t c # */ -+ -+ while (grub_read(&c, 1) && c != '"') { -+ if (len < sizeof(buf)) -+ buf[len++] = c; -+ } -+ -+ if (len == 6 && idx < 15) { -+ int r = ((hex(buf[0]) << 4) | hex(buf[1])) >> 2; -+ int g = ((hex(buf[2]) << 4) | hex(buf[3])) >> 2; -+ int b = ((hex(buf[4]) << 4) | hex(buf[5])) >> 2; -+ -+ pal[idx] = base; -+ set_palette(idx, r, g, b); -+ ++idx; -+ } -+ } -+ -+ x = y = len = 0; -+ -+ s1 = (unsigned char*)VSHADOW1; -+ s2 = (unsigned char*)VSHADOW2; -+ s4 = (unsigned char*)VSHADOW4; -+ s8 = (unsigned char*)VSHADOW8; -+ -+ for (i = 0; i < 38400; i++) -+ s1[i] = s2[i] = s4[i] = s8[i] = 0; -+ -+ /* parse xpm data */ -+ while (y < height) { -+ while (1) { -+ if (!grub_read(&c, 1)) { -+ grub_close(); -+ return (0); -+ } -+ if (c == '"') -+ break; -+ } -+ -+ while (grub_read(&c, 1) && c != '"') { -+ for (i = 1; i < 15; i++) -+ if (pal[i] == c) { -+ c = i; -+ break; -+ } -+ -+ mask = 0x80 >> (x & 7); -+ if (c & 1) -+ s1[len + (x >> 3)] |= mask; -+ if (c & 2) -+ s2[len + (x >> 3)] |= mask; -+ if (c & 4) -+ s4[len + (x >> 3)] |= mask; -+ if (c & 8) -+ s8[len + (x >> 3)] |= mask; -+ -+ if (++x >= 640) { -+ x = 0; -+ -+ if (y < 480) -+ len += 80; -+ ++y; -+ } -+ } -+ } -+ -+ grub_close(); -+ -+ set_palette(0, (background >> 16), (background >> 8) & 63, background & 63); -+ set_palette(15, (foreground >> 16), (foreground >> 8) & 63, foreground & 63); -+ -+ set_palette(0x11, (border >> 16), (border >> 8) & 63, border & 63); -+ -+ return (1); -+} -+ -+int -+vga16_begin(void) -+{ -+ if (vga_inited) -+ return (1); -+ -+ if (!*splashimage) -+ grub_strcpy(splashimage, "/boot/grub/splash.xpm"); -+ -+ saved_videomode = set_videomode(0x12); -+ if (!read_image()) { -+ set_videomode(saved_videomode); -+ return (0); -+ } -+ -+ font8x16 = (unsigned char*)get_font(); -+ -+ cursorWidth = 8; -+ cursorHeight = 16; -+ -+ set_int1c_handler(); -+ -+ view_x0 = sx0; -+ view_y0 = sy0; -+ view_x1 = sx1; -+ view_y1 = sy1; -+ -+ return (vga_inited = 1); -+} -+ -+void -+vga16_end(void) -+{ -+ if (vga_inited) { -+ unset_int1c_handler(); -+ set_videomode(saved_videomode); -+ vga_inited = 0; -+ no_cursor = 0; -+ } -+ -+ sx0 = view_x0; -+ sy0 = view_y0; -+ sx1 = view_x1; -+ sy1 = view_y1; -+ view_x0 = 0; -+ view_x1 = 80; -+ view_y0 = 0; -+ view_y1 = 25; -+} -+ -+void -+vga16_cls(void) -+{ -+ int i; -+ unsigned char *mem, *s1, *s2, *s4, *s8; -+ -+ SetXY(view_x0, view_y0); -+ -+ mem = (unsigned char*)VIDEO; -+ s1 = (unsigned char*)VSHADOW1; -+ s2 = (unsigned char*)VSHADOW2; -+ s4 = (unsigned char*)VSHADOW4; -+ s8 = (unsigned char*)VSHADOW8; -+ -+ for (i = 0; i < 80 * 30; i++) -+ text[i] = ' '; -+ -+ BitMask(0xff); -+ -+ /* plano 1 */ -+ MapMask(1); -+ grub_memcpy(mem, s1, 38400); -+ -+ /* plano 2 */ -+ MapMask(2); -+ grub_memcpy(mem, s2, 38400); -+ -+ /* plano 3 */ -+ MapMask(4); -+ grub_memcpy(mem, s4, 38400); -+ -+ /* plano 4 */ -+ MapMask(8); -+ grub_memcpy(mem, s8, 38400); -+ -+ MapMask(15); -+ -+ if (no_cursor) { -+ no_cursor = 0; -+ set_int1c_handler(); -+ } -+} -+ -+void -+vga16_gotoxy(int x, int y) -+{ -+ cursor(0); -+ -+ SetXY(x, y); -+ -+ cursor(1); -+} -+ -+static void -+scroll(void) -+{ -+ int i, j; -+ -+ if (no_scroll) -+ return; -+ -+ no_scroll = 1; -+ -+ for (j = view_y0 + 1; j < view_y1; j++) { -+ gotoxy(view_x0, j - 1); -+ for (i = view_x0; i < view_x1; i++) -+ putchar(text[j * 80 + i]); -+ } -+ -+ gotoxy(view_x0, view_y1 - 1); -+ for (i = view_x0; i < view_x1; i++) -+ putchar(' '); -+ -+ SetXY(view_x0, view_y1 - 1); -+ -+ no_scroll = 0; -+} -+ -+void -+vga16_putchar(int ch) -+{ -+ ch &= 0xff; -+ -+ cursor(0); -+ -+ if (ch == '\n') { -+ SetXY(view_x0, fonty); -+ if (fonty + 1 < view_y1) -+ SetXY(view_x0, fonty + 1); -+ else -+ scroll(); -+ cursor(1); -+ return; -+ } -+ else if (ch == '\r') { -+ SetXY(view_x0, fonty); -+ cursor(1); -+ return; -+ } -+ -+ text[fonty * 80 + fontx] = ch; -+ -+ cursor(0); -+ -+ if ((fontx + 1) >= view_x1) { -+ SetXY(view_x0, fonty); -+ if (fonty + 1 < view_y1) -+ SetXY(view_x0, fonty + 1); -+ else -+ scroll(); -+ } -+ else -+ SetXY(fontx + 1, fonty); -+ -+ cursor(1); -+} -+ -+int -+vga16_getxy() -+{ -+ return ((fontx << 8) | fonty); -+} -+ -+void -+vga16_nocursor() -+{ -+ if (!no_cursor) { -+ no_cursor = 1; -+ unset_int1c_handler(); -+ cursor(0); -+ } -+} -+ -+void -+vga16_set_attrib(int attrib) -+{ -+ text[fonty * 80 + fontx] &= 0x00ff; -+ if (attrib & 0xf0) -+ text[fonty * 80 + fontx] |= 0x100; -+ cursor(0); -+} -+#endif - - /* This is the starting function in C. */ - void -@@ -924,6 +1499,14 @@ - menu_entries = (char *) MENU_BUF; - init_config (); - } -+ -+#ifdef VGA16 -+ /* Make sure it points to a valid entry */ -+ display = &display_entries[0]; -+ -+ if (ASCII_CHAR(checkkey()) == 0x1b) -+ vga_disabled = 1; -+#endif - - /* Initialize the environment for restarting Stage 2. */ - grub_setjmp (restart_env); -@@ -1069,6 +1652,29 @@ - while (is_preset); - } - -+#ifdef VGA16 -+ if (display_idx >= 0) -+ display = &display_entries[display_idx]; -+ else if (!vga_disabled) { -+ display = &display_entries[1]; -+ } -+ if (!viewport_set) -+ view_y1 = 30; -+ sx0 = view_x0; -+ sy0 = view_y0; -+ sx1 = view_x1; -+ sy1 = view_y1; -+ -+ if (!display->Begin || !(*display->Begin)()) -+ display = &display_entries[0]; -+ -+ if (!vga_inited) { -+ sx0 = sy0 = view_x0 = view_y0 = 0; -+ sx1 = view_x1 = 80; -+ sy1 = view_y1 = 25; -+ } -+#endif -+ - if (! num_entries) - { - /* If no acceptable config file, goto command-line, starting |