All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vladimir Serbinenko <phcoder@gmail.com>
To: The development of GRUB 2 <grub-devel@gnu.org>
Subject: hexcat + grub_ncurses_getwh
Date: Mon, 08 Aug 2005 19:23:18 +0200	[thread overview]
Message-ID: <42F79506.2040108@gmail.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 760 bytes --]

I wrote a new patch: grub_ncurses_getwh + hexcat. hexcat shows the
contents of file like hex editors.

                                                                        
                     Vladimir

2005-08-08 Vladimir Serbinenko <phcoder@gmail.com>
    * commands/hexcat.c: new file
    * conf/i386-pc.rmk (hexcat): new module
    (grub_emu): hexcat added
    * conf/powerpc-ieee1275.rmk: Likewise
    * normal/cmdline.c: include grub/machine/console.h
    (grub_cmdline_get): support for special keys in grub-emu
    * normal/menu.c: include grub/machine/console.h
    (run_menu): support for special keys in grub-emu   
    * util/console.c (grub_ncurses_getwh): New function
    * util/grub-emu.c: call to grub_hexcat_init() and grub_hexcat_fini()

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: hexcat.patch --]
[-- Type: text/x-patch; name="hexcat.patch", Size: 35547 bytes --]

diff -urpN ./grub2_2/commands/hexcat.c ./grub2_3/commands/hexcat.c
--- ./grub2_2/commands/hexcat.c	1970-01-01 01:00:00.000000000 +0100
+++ ./grub2_3/commands/hexcat.c	2005-08-08 15:48:43.000000000 +0200
@@ -0,0 +1,111 @@
+/* hexcat.c - command to show the contents of a file in hexadecimal  */
+/*
+ *  GRUB  --  GRand Unified Bootloader
+ *  Copyright (C) 2003,2005  Free Software Foundation, Inc.
+ *  Vladimir Serbinenko <phcoder@gmail.com>
+ *
+ *  GRUB is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with GRUB; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <grub/normal.h>
+#include <grub/dl.h>
+#include <grub/arg.h>
+#include <grub/file.h>
+#include <grub/disk.h>
+#include <grub/term.h>
+#include <grub/misc.h>
+
+static grub_err_t
+grub_cmd_cat (struct grub_arg_list *state __attribute__ ((unused)),
+	      int argc, char **args)
+
+{
+  grub_file_t file;
+  char buf[16];
+  unsigned int offset = 0;
+  grub_ssize_t size;
+
+  if (argc != 1)
+    return grub_error (GRUB_ERR_BAD_ARGUMENT, "file name required");
+
+  file = grub_file_open (args[0]);
+  if (! file)
+    return 0;
+  
+  while ((size = grub_file_read (file, buf, sizeof (buf))) > 0)
+    {
+      int i;
+
+      grub_printf ("%08x: ", offset);
+
+      for (i = 0; i < size; i++)
+	{
+	  unsigned int c = buf[i];
+	  
+	  grub_printf ("%02x ", c & 0xFF);
+	}
+
+      for (; i < 16; i++)
+	grub_printf ("   ");
+      
+      for (i = 0; i < size; i++)
+	{
+	  unsigned char c = buf[i];
+	  
+	  if (grub_isprint (c) || c == ' ')
+	    grub_putchar (c);
+	  else
+	    grub_putchar ('.');
+	}
+      
+      grub_putchar ('\n');
+
+      offset += 16;
+    }
+
+  grub_putchar ('\n');
+  grub_refresh ();
+  grub_file_close (file);
+  
+  return 0;
+}
+
+\f
+#ifdef GRUB_UTIL
+void
+grub_hexcat_init (void)
+{
+  grub_register_command ("hexcat", grub_cmd_cat, GRUB_COMMAND_FLAG_BOTH,
+			 "hexcat FILE", "Show the contents of a file in hexadecimal.", 0);
+}
+
+void
+grub_hexcat_fini (void)
+{
+  grub_unregister_command ("hexcat");
+}
+#else /* ! GRUB_UTIL */
+GRUB_MOD_INIT
+{
+  (void) mod;			/* To stop warning. */
+  grub_register_command ("hexcat", grub_cmd_cat, GRUB_COMMAND_FLAG_BOTH,
+			 "hexcat FILE", "Show the contents of a file ins hexadecimal.", 0);
+}
+
+GRUB_MOD_FINI
+{
+  grub_unregister_command ("hexcat");
+}
+#endif /* ! GRUB_UTIL */
diff -urpN ./grub2_2/conf/i386-pc.mk ./grub2_3/conf/i386-pc.mk
--- ./grub2_2/conf/i386-pc.mk	2005-08-08 12:05:33.000000000 +0200
+++ ./grub2_3/conf/i386-pc.mk	2005-08-08 15:10:19.000000000 +0200
@@ -671,11 +671,11 @@ grub_probefs-fs_fshelp.d: fs/fshelp.c
 
 
 # For grub-emu.
-grub_emu_SOURCES = commands/boot.c commands/cat.c commands/cmp.c 	\
-	commands/configfile.c commands/default.c commands/help.c	\
-	commands/terminal.c commands/ls.c commands/timeout.c		\
-	commands/i386/pc/halt.c commands/i386/pc/reboot.c		\
-	disk/loopback.c							\
+grub_emu_SOURCES = commands/boot.c commands/cat.c commands/hexcat.c  	\
+	commands/cmp.c commands/configfile.c commands/default.c 	\
+	commands/help.c	commands/terminal.c commands/ls.c		\
+	commands/timeout.c commands/i386/pc/halt.c 			\
+	commands/i386/pc/reboot.c disk/loopback.c			\
 	fs/ext2.c fs/fat.c fs/fshelp.c fs/hfs.c fs/iso9660.c fs/jfs.c	\
 	fs/minix.c fs/ufs.c						\
 	kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c 	\
@@ -687,10 +687,10 @@ grub_emu_SOURCES = commands/boot.c comma
 	util/console.c util/grub-emu.c util/misc.c			\
 	util/i386/pc/biosdisk.c util/i386/pc/getroot.c			\
 	util/i386/pc/misc.c
-CLEANFILES += grub-emu grub_emu-commands_boot.o grub_emu-commands_cat.o grub_emu-commands_cmp.o grub_emu-commands_configfile.o grub_emu-commands_default.o grub_emu-commands_help.o grub_emu-commands_terminal.o grub_emu-commands_ls.o grub_emu-commands_timeout.o grub_emu-commands_i386_pc_halt.o grub_emu-commands_i386_pc_reboot.o grub_emu-disk_loopback.o grub_emu-fs_ext2.o grub_emu-fs_fat.o grub_emu-fs_fshelp.o grub_emu-fs_hfs.o grub_emu-fs_iso9660.o grub_emu-fs_jfs.o grub_emu-fs_minix.o grub_emu-fs_ufs.o grub_emu-kern_device.o grub_emu-kern_disk.o grub_emu-kern_dl.o grub_emu-kern_env.o grub_emu-kern_err.o grub_emu-kern_file.o grub_emu-kern_fs.o grub_emu-kern_loader.o grub_emu-kern_main.o grub_emu-kern_misc.o grub_emu-kern_partition.o grub_emu-kern_rescue.o grub_emu-kern_term.o grub_emu-normal_arg.o grub_emu-normal_cmdline.o grub_emu-normal_command.o grub_emu-normal_context.o grub_emu-normal_main.o grub_emu-normal_menu.o grub_emu-normal_menu_entry.o grub_emu-partmap_amiga.o grub_emu-partmap_apple.o grub_emu-partmap_pc.o grub_emu-partmap_sun.o grub_emu-util_console.o grub_emu-util_grub_emu.o grub_emu-util_misc.o grub_emu-util_i386_pc_biosdisk.o grub_emu-util_i386_pc_getroot.o grub_emu-util_i386_pc_misc.o
-MOSTLYCLEANFILES += grub_emu-commands_boot.d grub_emu-commands_cat.d grub_emu-commands_cmp.d grub_emu-commands_configfile.d grub_emu-commands_default.d grub_emu-commands_help.d grub_emu-commands_terminal.d grub_emu-commands_ls.d grub_emu-commands_timeout.d grub_emu-commands_i386_pc_halt.d grub_emu-commands_i386_pc_reboot.d grub_emu-disk_loopback.d grub_emu-fs_ext2.d grub_emu-fs_fat.d grub_emu-fs_fshelp.d grub_emu-fs_hfs.d grub_emu-fs_iso9660.d grub_emu-fs_jfs.d grub_emu-fs_minix.d grub_emu-fs_ufs.d grub_emu-kern_device.d grub_emu-kern_disk.d grub_emu-kern_dl.d grub_emu-kern_env.d grub_emu-kern_err.d grub_emu-kern_file.d grub_emu-kern_fs.d grub_emu-kern_loader.d grub_emu-kern_main.d grub_emu-kern_misc.d grub_emu-kern_partition.d grub_emu-kern_rescue.d grub_emu-kern_term.d grub_emu-normal_arg.d grub_emu-normal_cmdline.d grub_emu-normal_command.d grub_emu-normal_context.d grub_emu-normal_main.d grub_emu-normal_menu.d grub_emu-normal_menu_entry.d grub_emu-partmap_amiga.d grub_emu-partmap_apple.d grub_emu-partmap_pc.d grub_emu-partmap_sun.d grub_emu-util_console.d grub_emu-util_grub_emu.d grub_emu-util_misc.d grub_emu-util_i386_pc_biosdisk.d grub_emu-util_i386_pc_getroot.d grub_emu-util_i386_pc_misc.d
+CLEANFILES += grub-emu grub_emu-commands_boot.o grub_emu-commands_cat.o grub_emu-commands_hexcat.o grub_emu-commands_cmp.o grub_emu-commands_configfile.o grub_emu-commands_default.o grub_emu-commands_help.o grub_emu-commands_terminal.o grub_emu-commands_ls.o grub_emu-commands_timeout.o grub_emu-commands_i386_pc_halt.o grub_emu-commands_i386_pc_reboot.o grub_emu-disk_loopback.o grub_emu-fs_ext2.o grub_emu-fs_fat.o grub_emu-fs_fshelp.o grub_emu-fs_hfs.o grub_emu-fs_iso9660.o grub_emu-fs_jfs.o grub_emu-fs_minix.o grub_emu-fs_ufs.o grub_emu-kern_device.o grub_emu-kern_disk.o grub_emu-kern_dl.o grub_emu-kern_env.o grub_emu-kern_err.o grub_emu-kern_file.o grub_emu-kern_fs.o grub_emu-kern_loader.o grub_emu-kern_main.o grub_emu-kern_misc.o grub_emu-kern_partition.o grub_emu-kern_rescue.o grub_emu-kern_term.o grub_emu-normal_arg.o grub_emu-normal_cmdline.o grub_emu-normal_command.o grub_emu-normal_context.o grub_emu-normal_main.o grub_emu-normal_menu.o grub_emu-normal_menu_entry.o grub_emu-partmap_amiga.o grub_emu-partmap_apple.o grub_emu-partmap_pc.o grub_emu-partmap_sun.o grub_emu-util_console.o grub_emu-util_grub_emu.o grub_emu-util_misc.o grub_emu-util_i386_pc_biosdisk.o grub_emu-util_i386_pc_getroot.o grub_emu-util_i386_pc_misc.o
+MOSTLYCLEANFILES += grub_emu-commands_boot.d grub_emu-commands_cat.d grub_emu-commands_hexcat.d grub_emu-commands_cmp.d grub_emu-commands_configfile.d grub_emu-commands_default.d grub_emu-commands_help.d grub_emu-commands_terminal.d grub_emu-commands_ls.d grub_emu-commands_timeout.d grub_emu-commands_i386_pc_halt.d grub_emu-commands_i386_pc_reboot.d grub_emu-disk_loopback.d grub_emu-fs_ext2.d grub_emu-fs_fat.d grub_emu-fs_fshelp.d grub_emu-fs_hfs.d grub_emu-fs_iso9660.d grub_emu-fs_jfs.d grub_emu-fs_minix.d grub_emu-fs_ufs.d grub_emu-kern_device.d grub_emu-kern_disk.d grub_emu-kern_dl.d grub_emu-kern_env.d grub_emu-kern_err.d grub_emu-kern_file.d grub_emu-kern_fs.d grub_emu-kern_loader.d grub_emu-kern_main.d grub_emu-kern_misc.d grub_emu-kern_partition.d grub_emu-kern_rescue.d grub_emu-kern_term.d grub_emu-normal_arg.d grub_emu-normal_cmdline.d grub_emu-normal_command.d grub_emu-normal_context.d grub_emu-normal_main.d grub_emu-normal_menu.d grub_emu-normal_menu_entry.d grub_emu-partmap_amiga.d grub_emu-partmap_apple.d grub_emu-partmap_pc.d grub_emu-partmap_sun.d grub_emu-util_console.d grub_emu-util_grub_emu.d grub_emu-util_misc.d grub_emu-util_i386_pc_biosdisk.d grub_emu-util_i386_pc_getroot.d grub_emu-util_i386_pc_misc.d
 
-grub-emu: grub_emu-commands_boot.o grub_emu-commands_cat.o grub_emu-commands_cmp.o grub_emu-commands_configfile.o grub_emu-commands_default.o grub_emu-commands_help.o grub_emu-commands_terminal.o grub_emu-commands_ls.o grub_emu-commands_timeout.o grub_emu-commands_i386_pc_halt.o grub_emu-commands_i386_pc_reboot.o grub_emu-disk_loopback.o grub_emu-fs_ext2.o grub_emu-fs_fat.o grub_emu-fs_fshelp.o grub_emu-fs_hfs.o grub_emu-fs_iso9660.o grub_emu-fs_jfs.o grub_emu-fs_minix.o grub_emu-fs_ufs.o grub_emu-kern_device.o grub_emu-kern_disk.o grub_emu-kern_dl.o grub_emu-kern_env.o grub_emu-kern_err.o grub_emu-kern_file.o grub_emu-kern_fs.o grub_emu-kern_loader.o grub_emu-kern_main.o grub_emu-kern_misc.o grub_emu-kern_partition.o grub_emu-kern_rescue.o grub_emu-kern_term.o grub_emu-normal_arg.o grub_emu-normal_cmdline.o grub_emu-normal_command.o grub_emu-normal_context.o grub_emu-normal_main.o grub_emu-normal_menu.o grub_emu-normal_menu_entry.o grub_emu-partmap_amiga.o grub_emu-partmap_apple.o grub_emu-partmap_pc.o grub_emu-partmap_sun.o grub_emu-util_console.o grub_emu-util_grub_emu.o grub_emu-util_misc.o grub_emu-util_i386_pc_biosdisk.o grub_emu-util_i386_pc_getroot.o grub_emu-util_i386_pc_misc.o
+grub-emu: grub_emu-commands_boot.o grub_emu-commands_cat.o grub_emu-commands_hexcat.o grub_emu-commands_cmp.o grub_emu-commands_configfile.o grub_emu-commands_default.o grub_emu-commands_help.o grub_emu-commands_terminal.o grub_emu-commands_ls.o grub_emu-commands_timeout.o grub_emu-commands_i386_pc_halt.o grub_emu-commands_i386_pc_reboot.o grub_emu-disk_loopback.o grub_emu-fs_ext2.o grub_emu-fs_fat.o grub_emu-fs_fshelp.o grub_emu-fs_hfs.o grub_emu-fs_iso9660.o grub_emu-fs_jfs.o grub_emu-fs_minix.o grub_emu-fs_ufs.o grub_emu-kern_device.o grub_emu-kern_disk.o grub_emu-kern_dl.o grub_emu-kern_env.o grub_emu-kern_err.o grub_emu-kern_file.o grub_emu-kern_fs.o grub_emu-kern_loader.o grub_emu-kern_main.o grub_emu-kern_misc.o grub_emu-kern_partition.o grub_emu-kern_rescue.o grub_emu-kern_term.o grub_emu-normal_arg.o grub_emu-normal_cmdline.o grub_emu-normal_command.o grub_emu-normal_context.o grub_emu-normal_main.o grub_emu-normal_menu.o grub_emu-normal_menu_entry.o grub_emu-partmap_amiga.o grub_emu-partmap_apple.o grub_emu-partmap_pc.o grub_emu-partmap_sun.o grub_emu-util_console.o grub_emu-util_grub_emu.o grub_emu-util_misc.o grub_emu-util_i386_pc_biosdisk.o grub_emu-util_i386_pc_getroot.o grub_emu-util_i386_pc_misc.o
 	$(BUILD_CC) -o $@ $^ $(BUILD_LDFLAGS) $(grub_emu_LDFLAGS)
 
 grub_emu-commands_boot.o: commands/boot.c
@@ -709,6 +709,14 @@ grub_emu-commands_cat.d: commands/cat.c
 
 -include grub_emu-commands_cat.d
 
+grub_emu-commands_hexcat.o: commands/hexcat.c
+	$(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
+
+grub_emu-commands_hexcat.d: commands/hexcat.c
+	set -e; 	  $(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< 	  | sed 's,hexcat\.o[ :]*,grub_emu-commands_hexcat.o $@ : ,g' > $@; 	  [ -s $@ ] || rm -f $@
+
+-include grub_emu-commands_hexcat.d
+
 grub_emu-commands_cmp.o: commands/cmp.c
 	$(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
 
@@ -1132,7 +1140,7 @@ pkgdata_MODULES = _chain.mod _linux.mod 
 	terminal.mod fshelp.mod chain.mod multiboot.mod amiga.mod	\
 	apple.mod pc.mod sun.mod loopback.mod reboot.mod halt.mod	\
 	help.mod default.mod timeout.mod configfile.mod sendkey.mod     \
-	activate.mod parttype.mod
+	activate.mod parttype.mod hexcat.mod
 
 # For _chain.mod.
 _chain_mod_SOURCES = loader/i386/pc/chainloader.c
@@ -2324,6 +2332,56 @@ fs-cat.lst: commands/cat.c genfslist.sh
 
 cat_mod_CFLAGS = $(COMMON_CFLAGS)
 
+# For hexcat.mod.
+hexcat_mod_SOURCES = commands/hexcat.c
+CLEANFILES += hexcat.mod mod-hexcat.o mod-hexcat.c pre-hexcat.o hexcat_mod-commands_hexcat.o def-hexcat.lst und-hexcat.lst
+MOSTLYCLEANFILES += hexcat_mod-commands_hexcat.d
+DEFSYMFILES += def-hexcat.lst
+UNDSYMFILES += und-hexcat.lst
+
+hexcat.mod: pre-hexcat.o mod-hexcat.o
+	-rm -f $@
+	$(LD) -r -d -o $@ $^
+	$(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -R .note -R .comment $@
+
+pre-hexcat.o: hexcat_mod-commands_hexcat.o
+	-rm -f $@
+	$(LD) -r -d -o $@ $^
+
+mod-hexcat.o: mod-hexcat.c
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(hexcat_mod_CFLAGS) -c -o $@ $<
+
+mod-hexcat.c: moddep.lst genmodsrc.sh
+	sh $(srcdir)/genmodsrc.sh 'hexcat' $< > $@ || (rm -f $@; exit 1)
+
+def-hexcat.lst: pre-hexcat.o
+	$(NM) -g --defined-only -P -p $< | sed 's/^\([^ ]*\).*/\1 hexcat/' > $@
+
+und-hexcat.lst: pre-hexcat.o
+	echo 'hexcat' > $@
+	$(NM) -u -P -p $< | cut -f1 -d' ' >> $@
+
+hexcat_mod-commands_hexcat.o: commands/hexcat.c
+	$(CC) -Icommands -I$(srcdir)/commands $(CPPFLAGS) $(CFLAGS) $(hexcat_mod_CFLAGS) -c -o $@ $<
+
+hexcat_mod-commands_hexcat.d: commands/hexcat.c
+	set -e; 	  $(CC) -Icommands -I$(srcdir)/commands $(CPPFLAGS) $(CFLAGS) $(hexcat_mod_CFLAGS) -M $< 	  | sed 's,hexcat\.o[ :]*,hexcat_mod-commands_hexcat.o $@ : ,g' > $@; 	  [ -s $@ ] || rm -f $@
+
+-include hexcat_mod-commands_hexcat.d
+
+CLEANFILES += cmd-hexcat.lst fs-hexcat.lst
+COMMANDFILES += cmd-hexcat.lst
+FSFILES += fs-hexcat.lst
+
+cmd-hexcat.lst: commands/hexcat.c gencmdlist.sh
+	set -e; 	  $(CC) -Icommands -I$(srcdir)/commands $(CPPFLAGS) $(CFLAGS) $(hexcat_mod_CFLAGS) -E $< 	  | sh $(srcdir)/gencmdlist.sh hexcat > $@ || (rm -f $@; exit 1)
+
+fs-hexcat.lst: commands/hexcat.c genfslist.sh
+	set -e; 	  $(CC) -Icommands -I$(srcdir)/commands $(CPPFLAGS) $(CFLAGS) $(hexcat_mod_CFLAGS) -E $< 	  | sh $(srcdir)/genfslist.sh hexcat > $@ || (rm -f $@; exit 1)
+
+
+hexcat_mod_CFLAGS = $(COMMON_CFLAGS)
+
 # For help.mod.
 help_mod_SOURCES = commands/help.c
 CLEANFILES += help.mod mod-help.o mod-help.c pre-help.o help_mod-commands_help.o def-help.lst und-help.lst
diff -urpN ./grub2_2/conf/i386-pc.rmk ./grub2_3/conf/i386-pc.rmk
--- ./grub2_2/conf/i386-pc.rmk	2005-08-08 12:05:33.000000000 +0200
+++ ./grub2_3/conf/i386-pc.rmk	2005-08-08 15:08:59.000000000 +0200
@@ -75,11 +75,11 @@ grub_probefs_SOURCES = util/i386/pc/grub
 	fs/hfs.c fs/jfs.c kern/fs.c kern/env.c fs/fshelp.c
 
 # For grub-emu.
-grub_emu_SOURCES = commands/boot.c commands/cat.c commands/cmp.c 	\
-	commands/configfile.c commands/default.c commands/help.c	\
-	commands/terminal.c commands/ls.c commands/timeout.c		\
-	commands/i386/pc/halt.c commands/i386/pc/reboot.c		\
-	disk/loopback.c							\
+grub_emu_SOURCES = commands/boot.c commands/cat.c commands/hexcat.c  	\
+	commands/cmp.c commands/configfile.c commands/default.c 	\
+	commands/help.c	commands/terminal.c commands/ls.c		\
+	commands/timeout.c commands/i386/pc/halt.c 			\
+	commands/i386/pc/reboot.c disk/loopback.c			\
 	fs/ext2.c fs/fat.c fs/fshelp.c fs/hfs.c fs/iso9660.c fs/jfs.c	\
 	fs/minix.c fs/ufs.c						\
 	kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c 	\
@@ -110,7 +110,7 @@ pkgdata_MODULES = _chain.mod _linux.mod 
 	terminal.mod fshelp.mod chain.mod multiboot.mod amiga.mod	\
 	apple.mod pc.mod sun.mod loopback.mod reboot.mod halt.mod	\
 	help.mod default.mod timeout.mod configfile.mod sendkey.mod     \
-	activate.mod parttype.mod
+	activate.mod parttype.mod hexcat.mod
 
 # For _chain.mod.
 _chain_mod_SOURCES = loader/i386/pc/chainloader.c
@@ -203,6 +203,10 @@ cmp_mod_CFLAGS = $(COMMON_CFLAGS)
 cat_mod_SOURCES = commands/cat.c
 cat_mod_CFLAGS = $(COMMON_CFLAGS)
 
+# For hexcat.mod.
+hexcat_mod_SOURCES = commands/hexcat.c
+hexcat_mod_CFLAGS = $(COMMON_CFLAGS)
+
 # For help.mod.
 help_mod_SOURCES = commands/help.c
 help_mod_CFLAGS = $(COMMON_CFLAGS)
diff -urpN ./grub2_2/conf/powerpc-ieee1275.mk ./grub2_3/conf/powerpc-ieee1275.mk
--- ./grub2_2/conf/powerpc-ieee1275.mk	2005-08-08 12:05:33.000000000 +0200
+++ ./grub2_3/conf/powerpc-ieee1275.mk	2005-08-08 15:10:20.000000000 +0200
@@ -67,7 +67,7 @@ grub_emu_SOURCES = commands/boot.c comma
 	commands/configfile.c commands/default.c commands/help.c	\
 	commands/terminal.c commands/ls.c commands/timeout.c		\
 	commands/ieee1275/halt.c commands/ieee1275/reboot.c		\
-	disk/loopback.c							\
+	disk/loopback.c	commands/hexcat.c				\
 	fs/ext2.c fs/fat.c fs/fshelp.c fs/hfs.c fs/iso9660.c fs/jfs.c	\
 	fs/minix.c fs/ufs.c						\
 	kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c 	\
@@ -79,10 +79,10 @@ grub_emu_SOURCES = commands/boot.c comma
 	util/console.c util/grub-emu.c util/misc.c			\
 	util/i386/pc/biosdisk.c util/i386/pc/getroot.c			\
 	util/powerpc/ieee1275/misc.c
-CLEANFILES += grub-emu grub_emu-commands_boot.o grub_emu-commands_cat.o grub_emu-commands_cmp.o grub_emu-commands_configfile.o grub_emu-commands_default.o grub_emu-commands_help.o grub_emu-commands_terminal.o grub_emu-commands_ls.o grub_emu-commands_timeout.o grub_emu-commands_ieee1275_halt.o grub_emu-commands_ieee1275_reboot.o grub_emu-disk_loopback.o grub_emu-fs_ext2.o grub_emu-fs_fat.o grub_emu-fs_fshelp.o grub_emu-fs_hfs.o grub_emu-fs_iso9660.o grub_emu-fs_jfs.o grub_emu-fs_minix.o grub_emu-fs_ufs.o grub_emu-kern_device.o grub_emu-kern_disk.o grub_emu-kern_dl.o grub_emu-kern_env.o grub_emu-kern_err.o grub_emu-kern_file.o grub_emu-kern_fs.o grub_emu-kern_loader.o grub_emu-kern_main.o grub_emu-kern_misc.o grub_emu-kern_partition.o grub_emu-kern_rescue.o grub_emu-kern_term.o grub_emu-normal_arg.o grub_emu-normal_cmdline.o grub_emu-normal_command.o grub_emu-normal_context.o grub_emu-normal_main.o grub_emu-normal_menu.o grub_emu-normal_menu_entry.o grub_emu-partmap_amiga.o grub_emu-partmap_apple.o grub_emu-partmap_pc.o grub_emu-partmap_sun.o grub_emu-util_console.o grub_emu-util_grub_emu.o grub_emu-util_misc.o grub_emu-util_i386_pc_biosdisk.o grub_emu-util_i386_pc_getroot.o grub_emu-util_powerpc_ieee1275_misc.o
-MOSTLYCLEANFILES += grub_emu-commands_boot.d grub_emu-commands_cat.d grub_emu-commands_cmp.d grub_emu-commands_configfile.d grub_emu-commands_default.d grub_emu-commands_help.d grub_emu-commands_terminal.d grub_emu-commands_ls.d grub_emu-commands_timeout.d grub_emu-commands_ieee1275_halt.d grub_emu-commands_ieee1275_reboot.d grub_emu-disk_loopback.d grub_emu-fs_ext2.d grub_emu-fs_fat.d grub_emu-fs_fshelp.d grub_emu-fs_hfs.d grub_emu-fs_iso9660.d grub_emu-fs_jfs.d grub_emu-fs_minix.d grub_emu-fs_ufs.d grub_emu-kern_device.d grub_emu-kern_disk.d grub_emu-kern_dl.d grub_emu-kern_env.d grub_emu-kern_err.d grub_emu-kern_file.d grub_emu-kern_fs.d grub_emu-kern_loader.d grub_emu-kern_main.d grub_emu-kern_misc.d grub_emu-kern_partition.d grub_emu-kern_rescue.d grub_emu-kern_term.d grub_emu-normal_arg.d grub_emu-normal_cmdline.d grub_emu-normal_command.d grub_emu-normal_context.d grub_emu-normal_main.d grub_emu-normal_menu.d grub_emu-normal_menu_entry.d grub_emu-partmap_amiga.d grub_emu-partmap_apple.d grub_emu-partmap_pc.d grub_emu-partmap_sun.d grub_emu-util_console.d grub_emu-util_grub_emu.d grub_emu-util_misc.d grub_emu-util_i386_pc_biosdisk.d grub_emu-util_i386_pc_getroot.d grub_emu-util_powerpc_ieee1275_misc.d
+CLEANFILES += grub-emu grub_emu-commands_boot.o grub_emu-commands_cat.o grub_emu-commands_cmp.o grub_emu-commands_configfile.o grub_emu-commands_default.o grub_emu-commands_help.o grub_emu-commands_terminal.o grub_emu-commands_ls.o grub_emu-commands_timeout.o grub_emu-commands_ieee1275_halt.o grub_emu-commands_ieee1275_reboot.o grub_emu-disk_loopback.o grub_emu-commands_hexcat.o grub_emu-fs_ext2.o grub_emu-fs_fat.o grub_emu-fs_fshelp.o grub_emu-fs_hfs.o grub_emu-fs_iso9660.o grub_emu-fs_jfs.o grub_emu-fs_minix.o grub_emu-fs_ufs.o grub_emu-kern_device.o grub_emu-kern_disk.o grub_emu-kern_dl.o grub_emu-kern_env.o grub_emu-kern_err.o grub_emu-kern_file.o grub_emu-kern_fs.o grub_emu-kern_loader.o grub_emu-kern_main.o grub_emu-kern_misc.o grub_emu-kern_partition.o grub_emu-kern_rescue.o grub_emu-kern_term.o grub_emu-normal_arg.o grub_emu-normal_cmdline.o grub_emu-normal_command.o grub_emu-normal_context.o grub_emu-normal_main.o grub_emu-normal_menu.o grub_emu-normal_menu_entry.o grub_emu-partmap_amiga.o grub_emu-partmap_apple.o grub_emu-partmap_pc.o grub_emu-partmap_sun.o grub_emu-util_console.o grub_emu-util_grub_emu.o grub_emu-util_misc.o grub_emu-util_i386_pc_biosdisk.o grub_emu-util_i386_pc_getroot.o grub_emu-util_powerpc_ieee1275_misc.o
+MOSTLYCLEANFILES += grub_emu-commands_boot.d grub_emu-commands_cat.d grub_emu-commands_cmp.d grub_emu-commands_configfile.d grub_emu-commands_default.d grub_emu-commands_help.d grub_emu-commands_terminal.d grub_emu-commands_ls.d grub_emu-commands_timeout.d grub_emu-commands_ieee1275_halt.d grub_emu-commands_ieee1275_reboot.d grub_emu-disk_loopback.d grub_emu-commands_hexcat.d grub_emu-fs_ext2.d grub_emu-fs_fat.d grub_emu-fs_fshelp.d grub_emu-fs_hfs.d grub_emu-fs_iso9660.d grub_emu-fs_jfs.d grub_emu-fs_minix.d grub_emu-fs_ufs.d grub_emu-kern_device.d grub_emu-kern_disk.d grub_emu-kern_dl.d grub_emu-kern_env.d grub_emu-kern_err.d grub_emu-kern_file.d grub_emu-kern_fs.d grub_emu-kern_loader.d grub_emu-kern_main.d grub_emu-kern_misc.d grub_emu-kern_partition.d grub_emu-kern_rescue.d grub_emu-kern_term.d grub_emu-normal_arg.d grub_emu-normal_cmdline.d grub_emu-normal_command.d grub_emu-normal_context.d grub_emu-normal_main.d grub_emu-normal_menu.d grub_emu-normal_menu_entry.d grub_emu-partmap_amiga.d grub_emu-partmap_apple.d grub_emu-partmap_pc.d grub_emu-partmap_sun.d grub_emu-util_console.d grub_emu-util_grub_emu.d grub_emu-util_misc.d grub_emu-util_i386_pc_biosdisk.d grub_emu-util_i386_pc_getroot.d grub_emu-util_powerpc_ieee1275_misc.d
 
-grub-emu: grub_emu-commands_boot.o grub_emu-commands_cat.o grub_emu-commands_cmp.o grub_emu-commands_configfile.o grub_emu-commands_default.o grub_emu-commands_help.o grub_emu-commands_terminal.o grub_emu-commands_ls.o grub_emu-commands_timeout.o grub_emu-commands_ieee1275_halt.o grub_emu-commands_ieee1275_reboot.o grub_emu-disk_loopback.o grub_emu-fs_ext2.o grub_emu-fs_fat.o grub_emu-fs_fshelp.o grub_emu-fs_hfs.o grub_emu-fs_iso9660.o grub_emu-fs_jfs.o grub_emu-fs_minix.o grub_emu-fs_ufs.o grub_emu-kern_device.o grub_emu-kern_disk.o grub_emu-kern_dl.o grub_emu-kern_env.o grub_emu-kern_err.o grub_emu-kern_file.o grub_emu-kern_fs.o grub_emu-kern_loader.o grub_emu-kern_main.o grub_emu-kern_misc.o grub_emu-kern_partition.o grub_emu-kern_rescue.o grub_emu-kern_term.o grub_emu-normal_arg.o grub_emu-normal_cmdline.o grub_emu-normal_command.o grub_emu-normal_context.o grub_emu-normal_main.o grub_emu-normal_menu.o grub_emu-normal_menu_entry.o grub_emu-partmap_amiga.o grub_emu-partmap_apple.o grub_emu-partmap_pc.o grub_emu-partmap_sun.o grub_emu-util_console.o grub_emu-util_grub_emu.o grub_emu-util_misc.o grub_emu-util_i386_pc_biosdisk.o grub_emu-util_i386_pc_getroot.o grub_emu-util_powerpc_ieee1275_misc.o
+grub-emu: grub_emu-commands_boot.o grub_emu-commands_cat.o grub_emu-commands_cmp.o grub_emu-commands_configfile.o grub_emu-commands_default.o grub_emu-commands_help.o grub_emu-commands_terminal.o grub_emu-commands_ls.o grub_emu-commands_timeout.o grub_emu-commands_ieee1275_halt.o grub_emu-commands_ieee1275_reboot.o grub_emu-disk_loopback.o grub_emu-commands_hexcat.o grub_emu-fs_ext2.o grub_emu-fs_fat.o grub_emu-fs_fshelp.o grub_emu-fs_hfs.o grub_emu-fs_iso9660.o grub_emu-fs_jfs.o grub_emu-fs_minix.o grub_emu-fs_ufs.o grub_emu-kern_device.o grub_emu-kern_disk.o grub_emu-kern_dl.o grub_emu-kern_env.o grub_emu-kern_err.o grub_emu-kern_file.o grub_emu-kern_fs.o grub_emu-kern_loader.o grub_emu-kern_main.o grub_emu-kern_misc.o grub_emu-kern_partition.o grub_emu-kern_rescue.o grub_emu-kern_term.o grub_emu-normal_arg.o grub_emu-normal_cmdline.o grub_emu-normal_command.o grub_emu-normal_context.o grub_emu-normal_main.o grub_emu-normal_menu.o grub_emu-normal_menu_entry.o grub_emu-partmap_amiga.o grub_emu-partmap_apple.o grub_emu-partmap_pc.o grub_emu-partmap_sun.o grub_emu-util_console.o grub_emu-util_grub_emu.o grub_emu-util_misc.o grub_emu-util_i386_pc_biosdisk.o grub_emu-util_i386_pc_getroot.o grub_emu-util_powerpc_ieee1275_misc.o
 	$(BUILD_CC) -o $@ $^ $(BUILD_LDFLAGS) $(grub_emu_LDFLAGS)
 
 grub_emu-commands_boot.o: commands/boot.c
@@ -181,6 +181,14 @@ grub_emu-disk_loopback.d: disk/loopback.
 
 -include grub_emu-disk_loopback.d
 
+grub_emu-commands_hexcat.o: commands/hexcat.c
+	$(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
+
+grub_emu-commands_hexcat.d: commands/hexcat.c
+	set -e; 	  $(BUILD_CC) -Icommands -I$(srcdir)/commands $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< 	  | sed 's,hexcat\.o[ :]*,grub_emu-commands_hexcat.o $@ : ,g' > $@; 	  [ -s $@ ] || rm -f $@
+
+-include grub_emu-commands_hexcat.d
+
 grub_emu-fs_ext2.o: fs/ext2.c
 	$(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
 
@@ -721,7 +729,7 @@ pkgdata_MODULES = _linux.mod linux.mod f
 	hfs.mod jfs.mod normal.mod hello.mod font.mod ls.mod \
 	boot.mod cmp.mod cat.mod terminal.mod fshelp.mod amiga.mod apple.mod \
 	pc.mod suspend.mod loopback.mod help.mod reboot.mod halt.mod sun.mod \
-	default.mod timeout.mod configfile.mod
+	default.mod timeout.mod configfile.mod hexcat.mod
 
 # For fshelp.mod.
 fshelp_mod_SOURCES = fs/fshelp.c
@@ -1664,6 +1672,56 @@ fs-cat.lst: commands/cat.c genfslist.sh
 
 cat_mod_CFLAGS = $(COMMON_CFLAGS)
 
+# For hexcat.mod.
+hexcat_mod_SOURCES = commands/hexcat.c
+CLEANFILES += hexcat.mod mod-hexcat.o mod-hexcat.c pre-hexcat.o hexcat_mod-commands_hexcat.o def-hexcat.lst und-hexcat.lst
+MOSTLYCLEANFILES += hexcat_mod-commands_hexcat.d
+DEFSYMFILES += def-hexcat.lst
+UNDSYMFILES += und-hexcat.lst
+
+hexcat.mod: pre-hexcat.o mod-hexcat.o
+	-rm -f $@
+	$(LD) -r -d -o $@ $^
+	$(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -R .note -R .comment $@
+
+pre-hexcat.o: hexcat_mod-commands_hexcat.o
+	-rm -f $@
+	$(LD) -r -d -o $@ $^
+
+mod-hexcat.o: mod-hexcat.c
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(hexcat_mod_CFLAGS) -c -o $@ $<
+
+mod-hexcat.c: moddep.lst genmodsrc.sh
+	sh $(srcdir)/genmodsrc.sh 'hexcat' $< > $@ || (rm -f $@; exit 1)
+
+def-hexcat.lst: pre-hexcat.o
+	$(NM) -g --defined-only -P -p $< | sed 's/^\([^ ]*\).*/\1 hexcat/' > $@
+
+und-hexcat.lst: pre-hexcat.o
+	echo 'hexcat' > $@
+	$(NM) -u -P -p $< | cut -f1 -d' ' >> $@
+
+hexcat_mod-commands_hexcat.o: commands/hexcat.c
+	$(CC) -Icommands -I$(srcdir)/commands $(CPPFLAGS) $(CFLAGS) $(hexcat_mod_CFLAGS) -c -o $@ $<
+
+hexcat_mod-commands_hexcat.d: commands/hexcat.c
+	set -e; 	  $(CC) -Icommands -I$(srcdir)/commands $(CPPFLAGS) $(CFLAGS) $(hexcat_mod_CFLAGS) -M $< 	  | sed 's,hexcat\.o[ :]*,hexcat_mod-commands_hexcat.o $@ : ,g' > $@; 	  [ -s $@ ] || rm -f $@
+
+-include hexcat_mod-commands_hexcat.d
+
+CLEANFILES += cmd-hexcat.lst fs-hexcat.lst
+COMMANDFILES += cmd-hexcat.lst
+FSFILES += fs-hexcat.lst
+
+cmd-hexcat.lst: commands/hexcat.c gencmdlist.sh
+	set -e; 	  $(CC) -Icommands -I$(srcdir)/commands $(CPPFLAGS) $(CFLAGS) $(hexcat_mod_CFLAGS) -E $< 	  | sh $(srcdir)/gencmdlist.sh hexcat > $@ || (rm -f $@; exit 1)
+
+fs-hexcat.lst: commands/hexcat.c genfslist.sh
+	set -e; 	  $(CC) -Icommands -I$(srcdir)/commands $(CPPFLAGS) $(CFLAGS) $(hexcat_mod_CFLAGS) -E $< 	  | sh $(srcdir)/genfslist.sh hexcat > $@ || (rm -f $@; exit 1)
+
+
+hexcat_mod_CFLAGS = $(COMMON_CFLAGS)
+
 # For font.mod.
 font_mod_SOURCES = font/manager.c
 CLEANFILES += font.mod mod-font.o mod-font.c pre-font.o font_mod-font_manager.o def-font.lst und-font.lst
diff -urpN ./grub2_2/conf/powerpc-ieee1275.rmk ./grub2_3/conf/powerpc-ieee1275.rmk
--- ./grub2_2/conf/powerpc-ieee1275.rmk	2005-08-08 12:05:33.000000000 +0200
+++ ./grub2_3/conf/powerpc-ieee1275.rmk	2005-08-08 15:10:12.000000000 +0200
@@ -37,7 +37,7 @@ grub_emu_SOURCES = commands/boot.c comma
 	commands/configfile.c commands/default.c commands/help.c	\
 	commands/terminal.c commands/ls.c commands/timeout.c		\
 	commands/ieee1275/halt.c commands/ieee1275/reboot.c		\
-	disk/loopback.c							\
+	disk/loopback.c	commands/hexcat.c				\
 	fs/ext2.c fs/fat.c fs/fshelp.c fs/hfs.c fs/iso9660.c fs/jfs.c	\
 	fs/minix.c fs/ufs.c						\
 	kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c 	\
@@ -73,7 +73,7 @@ pkgdata_MODULES = _linux.mod linux.mod f
 	hfs.mod jfs.mod normal.mod hello.mod font.mod ls.mod \
 	boot.mod cmp.mod cat.mod terminal.mod fshelp.mod amiga.mod apple.mod \
 	pc.mod suspend.mod loopback.mod help.mod reboot.mod halt.mod sun.mod \
-	default.mod timeout.mod configfile.mod
+	default.mod timeout.mod configfile.mod hexcat.mod
 
 # For fshelp.mod.
 fshelp_mod_SOURCES = fs/fshelp.c
@@ -147,6 +147,10 @@ cmp_mod_CFLAGS = $(COMMON_CFLAGS)
 cat_mod_SOURCES = commands/cat.c
 cat_mod_CFLAGS = $(COMMON_CFLAGS)
 
+# For hexcat.mod.
+hexcat_mod_SOURCES = commands/hexcat.c
+hexcat_mod_CFLAGS = $(COMMON_CFLAGS)
+
 # For font.mod.
 font_mod_SOURCES = font/manager.c
 font_mod_CFLAGS = $(COMMON_CFLAGS)
diff -urpN ./grub2_2/normal/cmdline.c ./grub2_3/normal/cmdline.c
--- ./grub2_2/normal/cmdline.c	2005-08-08 12:05:42.000000000 +0200
+++ ./grub2_3/normal/cmdline.c	2005-08-08 16:34:09.000000000 +0200
@@ -27,6 +27,7 @@
 #include <grub/disk.h>
 #include <grub/file.h>
 #include <grub/env.h>
+#include <grub/machine/console.h>
 
 static char *kill_buf;
 
@@ -474,7 +475,7 @@ grub_cmdline_get (const char *prompt, ch
   grub_size_t lpos, llen;
   grub_size_t plen;
   char buf[max_len];
-  int key;
+  int key, key0;
   int histpos = 0;
   auto void cl_insert (const char *str);
   auto void cl_delete (unsigned len);
@@ -564,18 +565,20 @@ grub_cmdline_get (const char *prompt, ch
   if (hist_used == 0)
     grub_history_add (buf);
 
-  while ((key = GRUB_TERM_ASCII_CHAR (grub_getkey ())) != '\n' && key != '\r')
+  while ((key = GRUB_TERM_ASCII_CHAR (key0 = grub_getkey ())) != '\n' && key != '\r')
     {
       if (readline)
 	{
 	  switch (key)
 	    {
 	    case 1:	/* Ctrl-a */
+	    key_home:
 	      lpos = 0;
 	      cl_set_pos ();
 	      break;
 
 	    case 2:	/* Ctrl-b */
+	    key_left:
 	      if (lpos > 0)
 		{
 		  lpos--;
@@ -584,11 +587,13 @@ grub_cmdline_get (const char *prompt, ch
 	      break;
 
 	    case 5:	/* Ctrl-e */
+	    key_end:
 	      lpos = llen;
 	      cl_set_pos ();
 	      break;
 
 	    case 6:	/* Ctrl-f */
+	    key_right:
 	      if (lpos < llen)
 		{
 		  lpos++;
@@ -641,6 +646,7 @@ grub_cmdline_get (const char *prompt, ch
 	      break;
 
 	    case 14:	/* Ctrl-n */
+	    key_down:
 	      {
 		char *hist;
 
@@ -658,7 +664,9 @@ grub_cmdline_get (const char *prompt, ch
 
 		break;
 	      }
+
 	    case 16:	/* Ctrl-p */
+	    key_up:
 	      {
 		char *hist;
 
@@ -703,6 +711,28 @@ grub_cmdline_get (const char *prompt, ch
 	      if (kill_buf)
 		cl_insert (kill_buf);
 	      break;
+	      
+	    default:
+	      switch (key0)
+		{
+		case GRUB_CONSOLE_KEY_HOME:
+		  goto key_home;
+
+		case GRUB_CONSOLE_KEY_END:
+		  goto key_end;
+
+		case GRUB_CONSOLE_KEY_LEFT:
+		  goto key_left;
+
+		case GRUB_CONSOLE_KEY_RIGHT:
+		  goto key_right;
+
+		case GRUB_CONSOLE_KEY_UP:
+		  goto key_up;
+
+		case GRUB_CONSOLE_KEY_DOWN:
+		  goto key_down;
+		}
 	    }
 	}
 
diff -urpN ./grub2_2/normal/menu.c ./grub2_3/normal/menu.c
--- ./grub2_2/normal/menu.c	2005-08-08 12:05:42.000000000 +0200
+++ ./grub2_3/normal/menu.c	2005-08-08 16:16:30.000000000 +0200
@@ -23,6 +23,7 @@
 #include <grub/loader.h>
 #include <grub/mm.h>
 #include <grub/machine/time.h>
+#include <grub/machine/console.h>
 
 static void
 draw_border (void)
@@ -195,7 +196,7 @@ run_menu (grub_menu_t menu, int nested)
 
   while (1)
     {
-      int c;
+      int c, c0;
 
       if (menu->timeout > 0)
 	{
@@ -226,7 +227,7 @@ run_menu (grub_menu_t menu, int nested)
       
       if (grub_checkkey () >= 0 || menu->timeout < 0)
 	{
-	  c = GRUB_TERM_ASCII_CHAR (grub_getkey ());
+	  c = GRUB_TERM_ASCII_CHAR (c0 = grub_getkey ());
 	  
 	  if (menu->timeout >= 0)
 	    {
@@ -242,6 +243,7 @@ run_menu (grub_menu_t menu, int nested)
 	    {
 	    case 16:
 	    case '^':
+	    key_up:
 	      if (offset > 0)
 		{
 		  print_entry (GRUB_TERM_FIRST_ENTRY_Y + offset, 0,
@@ -259,6 +261,7 @@ run_menu (grub_menu_t menu, int nested)
 	      
 	    case 14:
 	    case 'v':
+	    key_down:
 	      if (menu->size > first + offset + 1)
 		{
 		  if (offset < GRUB_TERM_NUM_ENTRIES - 1)
@@ -300,6 +303,17 @@ run_menu (grub_menu_t menu, int nested)
 	      goto refresh;
 	      
 	    default:
+
+	      switch (c0)
+		{
+		case GRUB_CONSOLE_KEY_DOWN:
+		  goto key_down;
+
+		case GRUB_CONSOLE_KEY_UP:
+		  goto key_up;
+
+		}
+
 	      break;
 	    }
 	  
diff -urpN ./grub2_2/util/console.c ./grub2_3/util/console.c
--- ./grub2_2/util/console.c	2005-08-08 12:05:42.000000000 +0200
+++ ./grub2_3/util/console.c	2005-08-08 15:42:52.000000000 +0200
@@ -258,6 +258,12 @@ grub_ncurses_init (void)
   return 0;
 }
 
+static grub_uint16_t
+grub_ncurses_getwh (void)
+{
+  return (getmaxx (stdscr) << 8) | getmaxy (stdscr);
+}
+
 static grub_err_t
 grub_ncurses_fini (void)
 {
@@ -274,6 +280,7 @@ static struct grub_term grub_ncurses_ter
     .putchar = grub_ncurses_putchar,
     .checkkey = grub_ncurses_checkkey,
     .getkey = grub_ncurses_getkey,
+    .getwh = grub_ncurses_getwh,
     .getxy = grub_ncurses_getxy,
     .gotoxy = grub_ncurses_gotoxy,
     .cls = grub_ncurses_cls,
diff -urpN ./grub2_2/util/grub-emu.c ./grub2_3/util/grub-emu.c
--- ./grub2_2/util/grub-emu.c	2005-08-08 12:05:42.000000000 +0200
+++ ./grub2_3/util/grub-emu.c	2005-08-08 15:15:05.000000000 +0200
@@ -186,6 +186,7 @@ main (int argc, char *argv[])
   grub_boot_init ();
   grub_cmp_init ();
   grub_cat_init ();
+  grub_hexcat_init ();
   grub_terminal_init ();
   grub_loop_init ();
   grub_help_init ();
@@ -219,6 +220,7 @@ main (int argc, char *argv[])
   grub_fat_fini ();
   grub_boot_fini ();
   grub_cmp_fini ();
+  grub_hexcat_fini ();
   grub_cat_fini ();
   grub_terminal_fini ();
   grub_amiga_partition_map_fini ();

                 reply	other threads:[~2005-08-08 17:30 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=42F79506.2040108@gmail.com \
    --to=phcoder@gmail.com \
    --cc=grub-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.