]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2005-08-18 Yoshinori K. Okuji <okuji@enbug.org>
authorokuji <okuji@localhost>
Thu, 18 Aug 2005 03:14:39 +0000 (03:14 +0000)
committerokuji <okuji@localhost>
Thu, 18 Aug 2005 03:14:39 +0000 (03:14 +0000)
        * normal/misc.c: New file.

        * DISTLIST: Added normal/misc.c.

        * partmap/amiga.c (amiga_partition_map_iterate): Add an argument
        DISK to HOOK. Call HOOK with DISK.
        * partmap/apple.c (apple_partition_map_iterate): Likewise.
        * partmap/pc.c (pc_partition_map_iterate): Likewise.
        * partmap/sun.c (sun_partition_map_iterate): Likewise.

        * normal/menu_entry.c (struct screen): Added a new member
        "completion_shown".
        (completion_buffer): New global variable.
        (make_screen): Set SCREEN->COMPLETION_SHOWN to zero.
        (store_completion): New function.
        (complete): Likewise.
        (clear_completions): Likewise.
        (grub_menu_entry_run): If SCREEN->COMPLETION_SHOWN is non-zero,
        call clear_completions and reset SCREEN->COMPLETION_SHOWN. If C is
        a tab, call complete.

        * normal/completion.c (disk_dev): Removed.
        (print_simple_completion): Likewise.
        (print_partition_completion): Likewise.
        (print_func): New global variable.
        (add_completion): Do not take the arguments WHAT or PRINT any
        longer. Added a new argument TYPE. Instead of printing directly,
        call PRINT_FUNC if not NULL.
        All callers changed.
        (complete_device): Use a local variable DEV instead of
        DISK_DEV. Do not move CURRENT_WORD to the end of a device name.
        (grub_normal_do_completion): Take a new argument HOOK. Do not
        initialize DISK_DEV. Initialize PRINT_FUNC to HOOK. If RET is an
        empty string, return NULL instead.
        All callers changed.

        * normal/cmdline.c (print_completion): New function.

        * kern/partition.c (grub_partition_iterate): Add an argument DISK
        to HOOK.
        All callers changed.

        * kern/disk.c (grub_print_partinfo): Removed.

        * include/grub/partition.h (struct grub_partition_map): Add a new
        argument DISK into HOOK of ITERATE.
        (grub_partition_iterate): Add a new argument DISK to HOOK.

        * include/grub/normal.h (enum grub_completion_type): New enum.
        (grub_completion_type_t): New type.
        (GRUB_COMPLETION_TYPE_COMMAND): New constant.
        (GRUB_COMPLETION_TYPE_DEVICE): Likewise.
        (GRUB_COMPLETION_TYPE_PARTITION): Likewise.
        (GRUB_COMPLETION_TYPE_FILE): Likewise.
        (grub_normal_do_completion): Added a new argument HOOK.
        (grub_normal_print_device_info): New prototype.

        * include/grub/disk.h (grub_print_partinfo): Removed.

        * conf/i386-pc.rmk (grub_emu_SOURCES): Added normal/misc.c.
        (normal_mod_SOURCES): Likewise.
        * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise.
        (normal_mod_SOURCES): Likewise.

        * commands/ls.c (grub_ls_list_disks): Use
        grub_normal_print_device_info instead of grub_print_partinfo. Free
        PNAME.
        (grub_ls_list_files): Use grub_normal_print_device_info instead of
        duplicating the code.

23 files changed:
ChangeLog
NEWS
commands/ls.c
conf/i386-pc.mk
conf/i386-pc.rmk
conf/powerpc-ieee1275.mk
conf/powerpc-ieee1275.rmk
include/grub/disk.h
include/grub/normal.h
include/grub/partition.h
kern/disk.c
kern/partition.c
kern/rescue.c
normal/cmdline.c
normal/completion.c
normal/menu_entry.c
normal/misc.c [new file with mode: 0644]
partmap/amiga.c
partmap/apple.c
partmap/pc.c
partmap/sun.c
util/i386/pc/biosdisk.c
util/i386/pc/grub-setup.c

index b7ce5cbe6fe010d3028cb27ba559c284cc50ce30..0f953e97086a3f03ba0160eef56a840665ae4d61 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,75 @@
+2005-08-18  Yoshinori K. Okuji  <okuji@enbug.org>
+
+       * normal/misc.c: New file.
+
+       * DISTLIST: Added normal/misc.c.
+       
+       * partmap/amiga.c (amiga_partition_map_iterate): Add an argument
+       DISK to HOOK. Call HOOK with DISK.
+       * partmap/apple.c (apple_partition_map_iterate): Likewise.
+       * partmap/pc.c (pc_partition_map_iterate): Likewise.
+       * partmap/sun.c (sun_partition_map_iterate): Likewise.
+
+       * normal/menu_entry.c (struct screen): Added a new member
+       "completion_shown".
+       (completion_buffer): New global variable.
+       (make_screen): Set SCREEN->COMPLETION_SHOWN to zero.
+       (store_completion): New function.
+       (complete): Likewise.
+       (clear_completions): Likewise.
+       (grub_menu_entry_run): If SCREEN->COMPLETION_SHOWN is non-zero,
+       call clear_completions and reset SCREEN->COMPLETION_SHOWN. If C is
+       a tab, call complete.
+
+       * normal/completion.c (disk_dev): Removed.
+       (print_simple_completion): Likewise.
+       (print_partition_completion): Likewise.
+       (print_func): New global variable.
+       (add_completion): Do not take the arguments WHAT or PRINT any
+       longer. Added a new argument TYPE. Instead of printing directly,
+       call PRINT_FUNC if not NULL.
+       All callers changed.
+       (complete_device): Use a local variable DEV instead of
+       DISK_DEV. Do not move CURRENT_WORD to the end of a device name.
+       (grub_normal_do_completion): Take a new argument HOOK. Do not
+       initialize DISK_DEV. Initialize PRINT_FUNC to HOOK. If RET is an
+       empty string, return NULL instead.
+       All callers changed.
+
+       * normal/cmdline.c (print_completion): New function.
+
+       * kern/partition.c (grub_partition_iterate): Add an argument DISK
+       to HOOK.
+       All callers changed.
+
+       * kern/disk.c (grub_print_partinfo): Removed.
+
+       * include/grub/partition.h (struct grub_partition_map): Add a new
+       argument DISK into HOOK of ITERATE.
+       (grub_partition_iterate): Add a new argument DISK to HOOK.
+
+       * include/grub/normal.h (enum grub_completion_type): New enum.
+       (grub_completion_type_t): New type.
+       (GRUB_COMPLETION_TYPE_COMMAND): New constant.
+       (GRUB_COMPLETION_TYPE_DEVICE): Likewise.
+       (GRUB_COMPLETION_TYPE_PARTITION): Likewise.
+       (GRUB_COMPLETION_TYPE_FILE): Likewise.
+       (grub_normal_do_completion): Added a new argument HOOK.
+       (grub_normal_print_device_info): New prototype.
+
+       * include/grub/disk.h (grub_print_partinfo): Removed.
+
+       * conf/i386-pc.rmk (grub_emu_SOURCES): Added normal/misc.c.
+       (normal_mod_SOURCES): Likewise.
+       * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise.
+       (normal_mod_SOURCES): Likewise.
+
+       * commands/ls.c (grub_ls_list_disks): Use
+       grub_normal_print_device_info instead of grub_print_partinfo. Free
+       PNAME.
+       (grub_ls_list_files): Use grub_normal_print_device_info instead of
+       duplicating the code.
+
 2005-08-16  Vesa Jaaskelainen  <chaac@nic.fi>
 
        * commands/i386/pc/vbe_list_modes.c: Update source formatting to
diff --git a/NEWS b/NEWS
index b9d621d2077c8655e57b434300d858532c2fd42d..e7c0cd40666bd8f1560cfcd297cd8532246d89a1 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,11 @@ New in 1.91:
 
 * Add support for LZO version 2.
 
+* Support completion in the entry editor.
+
+* Add VBE support.
+
+
 New in 1.90 - 2005-08-07:
 
 * Rename the project name PUPA to GRUB. Now this version is the
index dc762bc4cd14ad580e0f5e11d8fed97e41a7d247..5b1b5a70afd5947b04e03df6bdbc6e50fe788494 100644 (file)
@@ -48,18 +48,26 @@ grub_ls_list_disks (int longlist)
   int grub_ls_print_disks (const char *name)
     {
       grub_device_t dev;
-      auto int print_partition (const grub_partition_t p);
+      auto int print_partition (grub_disk_t disk, const grub_partition_t p);
       
-      int print_partition (const grub_partition_t p)
+      int print_partition (grub_disk_t disk __attribute__ ((unused)),
+                          const grub_partition_t p)
        {
          char *pname = grub_partition_get_name (p);
 
          if (pname)
            {
              if (longlist)
-               grub_print_partinfo (dev, pname);
+               {
+                 char device_name[grub_strlen (name) + 1
+                                  + grub_strlen (pname) + 1];
+                 grub_sprintf (device_name, "%s,%s", name, pname);
+                 grub_normal_print_device_info (device_name);
+               }
              else
                grub_printf ("(%s,%s) ", name, pname);
+
+             grub_free (pname);
            }
 
          return 0;
@@ -71,36 +79,7 @@ grub_ls_list_disks (int longlist)
       if (dev)
        {
          if (longlist)
-           {
-             grub_printf ("Device: %s", name);
-
-             if (! dev->disk || ! dev->disk->has_partitions)
-               {
-                 grub_fs_t fs;
-                 char *label;
-
-                 fs = grub_fs_probe (dev);
-                 grub_errno = GRUB_ERR_NONE;
-
-                 grub_printf (", Filesystem type %s",
-                              fs ? fs->name : "unknown");
-
-                 if (fs && fs->label)
-                   {
-                     (fs->label) (dev, &label);
-                     if (grub_errno == GRUB_ERR_NONE)
-                       {
-                         if (label && grub_strlen (label))
-                           grub_printf (", Label: %s", label);
-                         grub_free (label);
-                       }
-                     else
-                       grub_errno = GRUB_ERR_NONE;
-                   }
-               }
-
-             grub_putchar ('\n');
-           }
+           grub_normal_print_device_info (name);
          else
            grub_printf ("(%s) ", name);
 
@@ -223,26 +202,8 @@ grub_ls_list_files (char *dirname, int longlist, int all, int human)
     {
       if (grub_errno == GRUB_ERR_UNKNOWN_FS)
        grub_errno = GRUB_ERR_NONE;
-         
-      grub_printf ("(%s): Filesystem is %s",
-                  device_name, fs ? fs->name : "unknown");
-      
-      if (fs && fs->label)
-       {
-         char *label;
-         
-         (fs->label) (dev, &label);
-         if (grub_errno == GRUB_ERR_NONE)
-           {
-             if (label && grub_strlen (label))
-               grub_printf (", Label: %s", label);
-             grub_free (label);
-           }
-         else
-           grub_errno = GRUB_ERR_NONE;
-       }
-      
-      grub_putchar ('\n');
+
+      grub_normal_print_device_info (device_name);
     }
   else if (fs)
     {
index 0d65502e45dc5240414574606726b69e7b37a759..c013a67840a9aa7652696dffbf3c5a2d2daa1d5e 100644 (file)
@@ -684,15 +684,15 @@ grub_emu_SOURCES = commands/boot.c commands/cat.c commands/cmp.c  \
        kern/partition.c kern/rescue.c kern/term.c                      \
        normal/arg.c normal/cmdline.c normal/command.c                  \
        normal/completion.c normal/context.c normal/main.c              \
-       normal/menu.c normal/menu_entry.c                               \
+       normal/menu.c normal/menu_entry.c normal/misc.c                 \
        partmap/amiga.c partmap/apple.c partmap/pc.c partmap/sun.c      \
        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_completion.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_completion.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_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_completion.o grub_emu-normal_context.o grub_emu-normal_main.o grub_emu-normal_menu.o grub_emu-normal_menu_entry.o grub_emu-normal_misc.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_completion.d grub_emu-normal_context.d grub_emu-normal_main.d grub_emu-normal_menu.d grub_emu-normal_menu_entry.d grub_emu-normal_misc.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_completion.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_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_completion.o grub_emu-normal_context.o grub_emu-normal_main.o grub_emu-normal_menu.o grub_emu-normal_menu_entry.o grub_emu-normal_misc.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
@@ -1023,6 +1023,14 @@ grub_emu-normal_menu_entry.d: normal/menu_entry.c
 
 -include grub_emu-normal_menu_entry.d
 
+grub_emu-normal_misc.o: normal/misc.c
+       $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
+
+grub_emu-normal_misc.d: normal/misc.c
+       set -e;           $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $<        | sed 's,misc\.o[ :]*,grub_emu-normal_misc.o $@ : ,g' > $@;     [ -s $@ ] || rm -f $@
+
+-include grub_emu-normal_misc.d
+
 grub_emu-partmap_amiga.o: partmap/amiga.c
        $(BUILD_CC) -Ipartmap -I$(srcdir)/partmap $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
 
@@ -1701,9 +1709,10 @@ linux_mod_CFLAGS = $(COMMON_CFLAGS)
 # For normal.mod.
 normal_mod_SOURCES = normal/arg.c normal/cmdline.c normal/command.c    \
        normal/completion.c normal/context.c normal/main.c              \
-       normal/menu.c normal/menu_entry.c normal/i386/setjmp.S
-CLEANFILES += normal.mod mod-normal.o mod-normal.c pre-normal.o normal_mod-normal_arg.o normal_mod-normal_cmdline.o normal_mod-normal_command.o normal_mod-normal_completion.o normal_mod-normal_context.o normal_mod-normal_main.o normal_mod-normal_menu.o normal_mod-normal_menu_entry.o normal_mod-normal_i386_setjmp.o def-normal.lst und-normal.lst
-MOSTLYCLEANFILES += normal_mod-normal_arg.d normal_mod-normal_cmdline.d normal_mod-normal_command.d normal_mod-normal_completion.d normal_mod-normal_context.d normal_mod-normal_main.d normal_mod-normal_menu.d normal_mod-normal_menu_entry.d normal_mod-normal_i386_setjmp.d
+       normal/menu.c normal/menu_entry.c normal/misc.c                 \
+       normal/i386/setjmp.S
+CLEANFILES += normal.mod mod-normal.o mod-normal.c pre-normal.o normal_mod-normal_arg.o normal_mod-normal_cmdline.o normal_mod-normal_command.o normal_mod-normal_completion.o normal_mod-normal_context.o normal_mod-normal_main.o normal_mod-normal_menu.o normal_mod-normal_menu_entry.o normal_mod-normal_misc.o normal_mod-normal_i386_setjmp.o def-normal.lst und-normal.lst
+MOSTLYCLEANFILES += normal_mod-normal_arg.d normal_mod-normal_cmdline.d normal_mod-normal_command.d normal_mod-normal_completion.d normal_mod-normal_context.d normal_mod-normal_main.d normal_mod-normal_menu.d normal_mod-normal_menu_entry.d normal_mod-normal_misc.d normal_mod-normal_i386_setjmp.d
 DEFSYMFILES += def-normal.lst
 UNDSYMFILES += und-normal.lst
 
@@ -1712,7 +1721,7 @@ normal.mod: pre-normal.o mod-normal.o
        $(LD) -r -d -o $@ $^
        $(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -R .note -R .comment $@
 
-pre-normal.o: normal_mod-normal_arg.o normal_mod-normal_cmdline.o normal_mod-normal_command.o normal_mod-normal_completion.o normal_mod-normal_context.o normal_mod-normal_main.o normal_mod-normal_menu.o normal_mod-normal_menu_entry.o normal_mod-normal_i386_setjmp.o
+pre-normal.o: normal_mod-normal_arg.o normal_mod-normal_cmdline.o normal_mod-normal_command.o normal_mod-normal_completion.o normal_mod-normal_context.o normal_mod-normal_main.o normal_mod-normal_menu.o normal_mod-normal_menu_entry.o normal_mod-normal_misc.o normal_mod-normal_i386_setjmp.o
        -rm -f $@
        $(LD) -r -d -o $@ $^
 
@@ -1881,6 +1890,25 @@ fs-menu_entry.lst: normal/menu_entry.c genfslist.sh
        set -e;           $(CC) -Inormal -I$(srcdir)/normal $(CPPFLAGS) $(CFLAGS) $(normal_mod_CFLAGS) -E $<      | sh $(srcdir)/genfslist.sh normal > $@ || (rm -f $@; exit 1)
 
 
+normal_mod-normal_misc.o: normal/misc.c
+       $(CC) -Inormal -I$(srcdir)/normal $(CPPFLAGS) $(CFLAGS) $(normal_mod_CFLAGS) -c -o $@ $<
+
+normal_mod-normal_misc.d: normal/misc.c
+       set -e;           $(CC) -Inormal -I$(srcdir)/normal $(CPPFLAGS) $(CFLAGS) $(normal_mod_CFLAGS) -M $<      | sed 's,misc\.o[ :]*,normal_mod-normal_misc.o $@ : ,g' > $@;           [ -s $@ ] || rm -f $@
+
+-include normal_mod-normal_misc.d
+
+CLEANFILES += cmd-misc.lst fs-misc.lst
+COMMANDFILES += cmd-misc.lst
+FSFILES += fs-misc.lst
+
+cmd-misc.lst: normal/misc.c gencmdlist.sh
+       set -e;           $(CC) -Inormal -I$(srcdir)/normal $(CPPFLAGS) $(CFLAGS) $(normal_mod_CFLAGS) -E $<      | sh $(srcdir)/gencmdlist.sh normal > $@ || (rm -f $@; exit 1)
+
+fs-misc.lst: normal/misc.c genfslist.sh
+       set -e;           $(CC) -Inormal -I$(srcdir)/normal $(CPPFLAGS) $(CFLAGS) $(normal_mod_CFLAGS) -E $<      | sh $(srcdir)/genfslist.sh normal > $@ || (rm -f $@; exit 1)
+
+
 normal_mod-normal_i386_setjmp.o: normal/i386/setjmp.S
        $(CC) -Inormal/i386 -I$(srcdir)/normal/i386 $(CPPFLAGS) $(ASFLAGS) $(normal_mod_ASFLAGS) -c -o $@ $<
 
index 3e93b2c86c556c1cdb6b1220201eaafff08104f7..3a18e1d6f3b23dddcea6c8f42a71212b4a647f7e 100644 (file)
@@ -88,7 +88,7 @@ grub_emu_SOURCES = commands/boot.c commands/cat.c commands/cmp.c      \
        kern/partition.c kern/rescue.c kern/term.c                      \
        normal/arg.c normal/cmdline.c normal/command.c                  \
        normal/completion.c normal/context.c normal/main.c              \
-       normal/menu.c normal/menu_entry.c                               \
+       normal/menu.c normal/menu_entry.c normal/misc.c                 \
        partmap/amiga.c partmap/apple.c partmap/pc.c partmap/sun.c      \
        util/console.c util/grub-emu.c util/misc.c                      \
        util/i386/pc/biosdisk.c util/i386/pc/getroot.c                  \
@@ -165,7 +165,8 @@ linux_mod_CFLAGS = $(COMMON_CFLAGS)
 # For normal.mod.
 normal_mod_SOURCES = normal/arg.c normal/cmdline.c normal/command.c    \
        normal/completion.c normal/context.c normal/main.c              \
-       normal/menu.c normal/menu_entry.c normal/i386/setjmp.S
+       normal/menu.c normal/menu_entry.c normal/misc.c                 \
+       normal/i386/setjmp.S
 normal_mod_CFLAGS = $(COMMON_CFLAGS)
 normal_mod_ASFLAGS = $(COMMON_ASFLAGS)
 
index c20d1b7110e6778536f46cb211eb1be52b68f840..04da8ecf5b2c05025857132ac004b4a2c30f9104 100644 (file)
@@ -75,15 +75,15 @@ grub_emu_SOURCES = commands/boot.c commands/cat.c commands/cmp.c    \
        kern/partition.c kern/rescue.c kern/term.c                      \
        normal/arg.c normal/cmdline.c normal/command.c                  \
        normal/completion.c normal/context.c    \
-       normal/main.c normal/menu.c normal/menu_entry.c                 \
+       normal/main.c normal/menu.c normal/menu_entry.c normal/misc.c   \
        partmap/amiga.c partmap/apple.c partmap/pc.c partmap/sun.c      \
        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_completion.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_completion.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-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_completion.o grub_emu-normal_context.o grub_emu-normal_main.o grub_emu-normal_menu.o grub_emu-normal_menu_entry.o grub_emu-normal_misc.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_completion.d grub_emu-normal_context.d grub_emu-normal_main.d grub_emu-normal_menu.d grub_emu-normal_menu_entry.d grub_emu-normal_misc.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_completion.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-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_completion.o grub_emu-normal_context.o grub_emu-normal_main.o grub_emu-normal_menu.o grub_emu-normal_menu_entry.o grub_emu-normal_misc.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
@@ -414,6 +414,14 @@ grub_emu-normal_menu_entry.d: normal/menu_entry.c
 
 -include grub_emu-normal_menu_entry.d
 
+grub_emu-normal_misc.o: normal/misc.c
+       $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
+
+grub_emu-normal_misc.d: normal/misc.c
+       set -e;           $(BUILD_CC) -Inormal -I$(srcdir)/normal $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $<        | sed 's,misc\.o[ :]*,grub_emu-normal_misc.o $@ : ,g' > $@;     [ -s $@ ] || rm -f $@
+
+-include grub_emu-normal_misc.d
+
 grub_emu-partmap_amiga.o: partmap/amiga.c
        $(BUILD_CC) -Ipartmap -I$(srcdir)/partmap $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
 
@@ -1189,9 +1197,10 @@ linux_mod_CFLAGS = $(COMMON_CFLAGS)
 # For normal.mod.
 normal_mod_SOURCES = normal/arg.c normal/cmdline.c normal/command.c    \
        normal/completion.c normal/context.c normal/main.c              \
-       normal/menu.c normal/menu_entry.c normal/powerpc/setjmp.S
-CLEANFILES += normal.mod mod-normal.o mod-normal.c pre-normal.o normal_mod-normal_arg.o normal_mod-normal_cmdline.o normal_mod-normal_command.o normal_mod-normal_completion.o normal_mod-normal_context.o normal_mod-normal_main.o normal_mod-normal_menu.o normal_mod-normal_menu_entry.o normal_mod-normal_powerpc_setjmp.o def-normal.lst und-normal.lst
-MOSTLYCLEANFILES += normal_mod-normal_arg.d normal_mod-normal_cmdline.d normal_mod-normal_command.d normal_mod-normal_completion.d normal_mod-normal_context.d normal_mod-normal_main.d normal_mod-normal_menu.d normal_mod-normal_menu_entry.d normal_mod-normal_powerpc_setjmp.d
+       normal/menu.c normal/menu_entry.c normal/misc.c                 \
+       normal/powerpc/setjmp.S
+CLEANFILES += normal.mod mod-normal.o mod-normal.c pre-normal.o normal_mod-normal_arg.o normal_mod-normal_cmdline.o normal_mod-normal_command.o normal_mod-normal_completion.o normal_mod-normal_context.o normal_mod-normal_main.o normal_mod-normal_menu.o normal_mod-normal_menu_entry.o normal_mod-normal_misc.o normal_mod-normal_powerpc_setjmp.o def-normal.lst und-normal.lst
+MOSTLYCLEANFILES += normal_mod-normal_arg.d normal_mod-normal_cmdline.d normal_mod-normal_command.d normal_mod-normal_completion.d normal_mod-normal_context.d normal_mod-normal_main.d normal_mod-normal_menu.d normal_mod-normal_menu_entry.d normal_mod-normal_misc.d normal_mod-normal_powerpc_setjmp.d
 DEFSYMFILES += def-normal.lst
 UNDSYMFILES += und-normal.lst
 
@@ -1200,7 +1209,7 @@ normal.mod: pre-normal.o mod-normal.o
        $(LD) -r -d -o $@ $^
        $(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -R .note -R .comment $@
 
-pre-normal.o: normal_mod-normal_arg.o normal_mod-normal_cmdline.o normal_mod-normal_command.o normal_mod-normal_completion.o normal_mod-normal_context.o normal_mod-normal_main.o normal_mod-normal_menu.o normal_mod-normal_menu_entry.o normal_mod-normal_powerpc_setjmp.o
+pre-normal.o: normal_mod-normal_arg.o normal_mod-normal_cmdline.o normal_mod-normal_command.o normal_mod-normal_completion.o normal_mod-normal_context.o normal_mod-normal_main.o normal_mod-normal_menu.o normal_mod-normal_menu_entry.o normal_mod-normal_misc.o normal_mod-normal_powerpc_setjmp.o
        -rm -f $@
        $(LD) -r -d -o $@ $^
 
@@ -1369,6 +1378,25 @@ fs-menu_entry.lst: normal/menu_entry.c genfslist.sh
        set -e;           $(CC) -Inormal -I$(srcdir)/normal $(CPPFLAGS) $(CFLAGS) $(normal_mod_CFLAGS) -E $<      | sh $(srcdir)/genfslist.sh normal > $@ || (rm -f $@; exit 1)
 
 
+normal_mod-normal_misc.o: normal/misc.c
+       $(CC) -Inormal -I$(srcdir)/normal $(CPPFLAGS) $(CFLAGS) $(normal_mod_CFLAGS) -c -o $@ $<
+
+normal_mod-normal_misc.d: normal/misc.c
+       set -e;           $(CC) -Inormal -I$(srcdir)/normal $(CPPFLAGS) $(CFLAGS) $(normal_mod_CFLAGS) -M $<      | sed 's,misc\.o[ :]*,normal_mod-normal_misc.o $@ : ,g' > $@;           [ -s $@ ] || rm -f $@
+
+-include normal_mod-normal_misc.d
+
+CLEANFILES += cmd-misc.lst fs-misc.lst
+COMMANDFILES += cmd-misc.lst
+FSFILES += fs-misc.lst
+
+cmd-misc.lst: normal/misc.c gencmdlist.sh
+       set -e;           $(CC) -Inormal -I$(srcdir)/normal $(CPPFLAGS) $(CFLAGS) $(normal_mod_CFLAGS) -E $<      | sh $(srcdir)/gencmdlist.sh normal > $@ || (rm -f $@; exit 1)
+
+fs-misc.lst: normal/misc.c genfslist.sh
+       set -e;           $(CC) -Inormal -I$(srcdir)/normal $(CPPFLAGS) $(CFLAGS) $(normal_mod_CFLAGS) -E $<      | sh $(srcdir)/genfslist.sh normal > $@ || (rm -f $@; exit 1)
+
+
 normal_mod-normal_powerpc_setjmp.o: normal/powerpc/setjmp.S
        $(CC) -Inormal/powerpc -I$(srcdir)/normal/powerpc $(CPPFLAGS) $(ASFLAGS) $(normal_mod_ASFLAGS) -c -o $@ $<
 
index b6112e29a60830b64bf9109a7e491b50c7c4ac05..a7fa2f53c8707e2f702d00931af9f191d4024afe 100644 (file)
@@ -45,7 +45,7 @@ grub_emu_SOURCES = commands/boot.c commands/cat.c commands/cmp.c      \
        kern/partition.c kern/rescue.c kern/term.c                      \
        normal/arg.c normal/cmdline.c normal/command.c                  \
        normal/completion.c normal/context.c    \
-       normal/main.c normal/menu.c normal/menu_entry.c                 \
+       normal/main.c normal/menu.c normal/menu_entry.c normal/misc.c   \
        partmap/amiga.c partmap/apple.c partmap/pc.c partmap/sun.c      \
        util/console.c util/grub-emu.c util/misc.c                      \
        util/i386/pc/biosdisk.c util/i386/pc/getroot.c                  \
@@ -119,7 +119,8 @@ linux_mod_CFLAGS = $(COMMON_CFLAGS)
 # For normal.mod.
 normal_mod_SOURCES = normal/arg.c normal/cmdline.c normal/command.c    \
        normal/completion.c normal/context.c normal/main.c              \
-       normal/menu.c normal/menu_entry.c normal/powerpc/setjmp.S
+       normal/menu.c normal/menu_entry.c normal/misc.c                 \
+       normal/powerpc/setjmp.S
 normal_mod_CFLAGS = $(COMMON_CFLAGS)
 normal_mod_ASFLAGS = $(COMMON_ASFLAGS)
 
index c579df0e8fc5bb298c752be5b60403fd57c1f159..09908c97de427d91d6b3d8de823cf860fe8cb7d6 100644 (file)
@@ -129,7 +129,5 @@ grub_err_t EXPORT_FUNC(grub_disk_write) (grub_disk_t disk,
                                         unsigned long size,
                                         const char *buf);
 
-grub_err_t EXPORT_FUNC(grub_print_partinfo) (grub_device_t disk,
-                                            char *partname);
 
 #endif /* ! GRUB_DISK_HEADER */
index b890040000a76684a16decf736acc7c69e4fc784..b6814e9516373606f0f473b842e0329dd8d25549 100644 (file)
 /* Not loaded yet. Used for auto-loading.  */
 #define GRUB_COMMAND_FLAG_NOT_LOADED   0x20
 
+/* The type of a completion item.  */
+enum grub_completion_type
+  {
+    GRUB_COMPLETION_TYPE_COMMAND,
+    GRUB_COMPLETION_TYPE_DEVICE,
+    GRUB_COMPLETION_TYPE_PARTITION,
+    GRUB_COMPLETION_TYPE_FILE,
+  };
+typedef enum grub_completion_type grub_completion_type_t;
+
 /* The command description.  */
 struct grub_command
 {
@@ -178,7 +188,9 @@ grub_context_t grub_context_get (void);
 grub_menu_t grub_context_get_current_menu (void);
 grub_menu_t grub_context_push_menu (grub_menu_t menu);
 void grub_context_pop_menu (void);
-char *grub_normal_do_completion (char *buf, int *restore);
+char *grub_normal_do_completion (char *buf, int *restore,
+                                void (*hook) (const char *item, grub_completion_type_t type, int count));
+grub_err_t grub_normal_print_device_info (const char *name);
 
 #ifdef GRUB_UTIL
 void grub_normal_init (void);
index 255fb9924c0a6b41c97d2f56cb9bfa8cc4e8eee8..4cd1eb15a446c733844b19866e87a7b153ed9ca2 100644 (file)
@@ -34,7 +34,7 @@ struct grub_partition_map
   
   /* Call HOOK with each partition, until HOOK returns non-zero.  */
   grub_err_t (*iterate) (struct grub_disk *disk,
-                        int (*hook) (const grub_partition_t partition));
+                        int (*hook) (struct grub_disk *disk, const grub_partition_t partition));
   
   /* Return the partition named STR on the disk DISK.  */
   grub_partition_t (*probe) (struct grub_disk *disk,
@@ -73,7 +73,7 @@ struct grub_partition
 grub_partition_t EXPORT_FUNC(grub_partition_probe) (struct grub_disk *disk,
                                                    const char *str);
 grub_err_t EXPORT_FUNC(grub_partition_iterate) (struct grub_disk *disk,
-                                               int (*hook) (const grub_partition_t partition));
+                                               int (*hook) (struct grub_disk *disk, const grub_partition_t partition));
 char *EXPORT_FUNC(grub_partition_get_name) (const grub_partition_t partition);
 
 int EXPORT_FUNC(grub_partition_map_iterate) (int (*hook) (const grub_partition_map_t partmap));
index 02a49b6c9621ee708f2d9aa5a3f8bc78f307c741..ecd0b7b1d62d2461f9a9ad8e7c21b3e6310c40d5 100644 (file)
@@ -513,44 +513,3 @@ grub_disk_write (grub_disk_t disk, unsigned long sector,
 
   return grub_errno;
 }
-
-grub_err_t
-grub_print_partinfo (grub_device_t disk, char *partname)
-{
-  grub_fs_t fs = 0;
-  grub_device_t part;
-  char devname[20];
-      
-  grub_sprintf (devname, "%s,%s", disk->disk->name, partname);
-  part = grub_device_open (devname);
-  if (!part)
-    grub_printf ("\tPartition num:%s, Filesystem cannot be accessed",
-                partname);
-  else
-    {
-      char *label;
-
-      fs = grub_fs_probe (part);
-      /* Ignore all errors.  */
-      grub_errno = 0;
-
-      grub_printf ("\tPartition num:%s, Filesystem type %s",
-                  partname, fs ? fs->name : "Unknown");
-         
-      if (fs && fs->label)
-       {
-         (fs->label) (part, &label);
-         if (grub_errno == GRUB_ERR_NONE)
-           {
-             if (label && grub_strlen (label))
-               grub_printf (", Label: %s", label);
-             grub_free (label);
-           }
-         grub_errno = GRUB_ERR_NONE;
-       }
-      grub_device_close (part);
-    }
-
-  grub_printf ("\n");
-  return grub_errno;
-}
index fd0f512207325ed8867b85a9c6672199c87c1929..3eea7ae0dac68f2fe0cab9ab6b5c44c91cd2b657 100644 (file)
@@ -85,14 +85,17 @@ grub_partition_probe (struct grub_disk *disk, const char *str)
 
 grub_err_t
 grub_partition_iterate (struct grub_disk *disk,
-                       int (*hook) (const grub_partition_t partition))
+                       int (*hook) (grub_disk_t disk,
+                                    const grub_partition_t partition))
 {
   grub_partition_map_t partmap = 0;
 
   auto int part_map_iterate (const grub_partition_map_t p);
-  auto int part_map_iterate_hook (const grub_partition_t partition);
+  auto int part_map_iterate_hook (grub_disk_t d,
+                                 const grub_partition_t partition);
 
-  int part_map_iterate_hook (const grub_partition_t partition __attribute__ ((unused)))
+  int part_map_iterate_hook (grub_disk_t d __attribute__ ((unused)),
+                            const grub_partition_t partition __attribute__ ((unused)))
     {
       return 1;
     }
index b5a3cb3dd095020d06a49e9ac59f34c17050424f..fa1ee80f039f587223364ab762187a03c3466283 100644 (file)
@@ -171,9 +171,10 @@ static int
 grub_rescue_print_disks (const char *name)
 {
   grub_device_t dev;
-  auto int print_partition (const grub_partition_t p);
+  auto int print_partition (grub_disk_t disk, const grub_partition_t p);
 
-  int print_partition (const grub_partition_t p)
+  int print_partition (grub_disk_t disk __attribute__ ((unused)),
+                      const grub_partition_t p)
     {
       char *pname = grub_partition_get_name (p);
 
index b8475474fe640ffa2a3b320c61fea78d2a77bf1c..844864147f6a2486b4f8c7acc793e1ae0755a405 100644 (file)
@@ -164,6 +164,46 @@ grub_cmdline_run (int nested)
     }
 }
 
+/* A completion hook to print items.  */
+static void
+print_completion (const char *item, grub_completion_type_t type, int count)
+{
+  if (count == 0)
+    {
+      /* If this is the first time, print a label.  */
+      const char *what;
+
+      switch (type)
+       {
+       case GRUB_COMPLETION_TYPE_COMMAND:
+         what = "commands";
+         break;
+       case GRUB_COMPLETION_TYPE_DEVICE:
+         what = "devices";
+         break;
+       case GRUB_COMPLETION_TYPE_FILE:
+         what = "files";
+         break;
+       case GRUB_COMPLETION_TYPE_PARTITION:
+         what = "partitions";
+         break;
+       default:
+         what = "things";
+         break;
+       }
+           
+      grub_printf ("\nPossible %s are:\n", what);
+    }
+
+  if (type == GRUB_COMPLETION_TYPE_PARTITION)
+    {
+      grub_normal_print_device_info (item);
+      grub_errno = GRUB_ERR_NONE;
+    }
+  else
+    grub_printf (" %s", item);
+}
+
 /* Get a command-line. If ECHO_CHAR is not zero, echo it instead of input
    characters. If READLINE is non-zero, readline-like key bindings are
    available. If ESC is pushed, return zero, otherwise return non-zero.  */
@@ -309,7 +349,8 @@ grub_cmdline_get (const char *prompt, char cmdline[], unsigned max_len,
                buf[lpos] = '\0';
                
 
-               insert = grub_normal_do_completion (buf, &restore);
+               insert = grub_normal_do_completion (buf, &restore,
+                                                   print_completion);
                /* Restore the original string.  */
                buf[lpos] = backup;
                
index cde420fe7016895ab2e1dc45ec1de108a47442a0..7e4e77d2cbd1ae25324d4b27dabef4b0a0b2597c 100644 (file)
@@ -26,9 +26,6 @@
 #include <grub/disk.h>
 #include <grub/file.h>
 
-/* The disk that is used for grub_partition_iterate.  */
-static grub_device_t disk_dev;
-
 /* The current word.  */
 static char *current_word;
 
@@ -41,29 +38,17 @@ static int num_found;
 /* The string to be appended.  */
 static const char *suffix;
 
-\f
-
-static void
-print_simple_completion (const char *str)
-{
-  grub_printf (" %s", str);
-}
+/* The callback function to print items.  */
+static void (*print_func) (const char *, grub_completion_type_t, int);
 
-static void
-print_partition_completion (const char *str)
-{
-  grub_print_partinfo (disk_dev, (char *) str);
-  grub_errno = GRUB_ERR_NONE;
-}
+\f
 
 /* Add a string to the list of possible completions. COMPLETION is the
    string that should be added. EXTRA will be appended if COMPLETION
-   matches uniquely. The string WHAT contains a description of the
-   kind of data that is added. Use PRINT to show the completions
-   if there are multiple matches.  */
+   matches uniquely. The type TYPE specifies what kind of data is added.  */
 static int
-add_completion (const char *completion, const char *extra, const char *what,
-               void (*print) (const char *))
+add_completion (const char *completion, const char *extra,
+               grub_completion_type_t type)
 {
   if (grub_strncmp (current_word, completion, grub_strlen (current_word)) == 0)
     {
@@ -79,8 +64,8 @@ add_completion (const char *completion, const char *extra, const char *what,
          break;
 
        case 2:
-         grub_printf ("\nPossible %s are:\n", what);
-         print (match);
+         if (print_func)
+           print_func (match, type, 0);
          
          /* Fall through.  */
 
@@ -88,8 +73,9 @@ add_completion (const char *completion, const char *extra, const char *what,
          {
            char *s = match;
            const char *t = completion;
-           
-           print (completion);
+
+           if (print_func)
+             print_func (completion, type, num_found - 1);
                            
            /* Detect the matched portion.  */
            while (*s && *t && *s == *t)
@@ -108,10 +94,30 @@ add_completion (const char *completion, const char *extra, const char *what,
 }
 
 static int
-iterate_partition (const grub_partition_t p)
+iterate_partition (grub_disk_t disk, const grub_partition_t p)
 {
-  return add_completion (grub_partition_get_name (p), ")", "partitions", 
-                        print_partition_completion);
+  const char *disk_name = disk->name;
+  char *partition_name = grub_partition_get_name (p);
+  char *name;
+  int ret;
+  
+  if (! partition_name)
+    return 1;
+
+  name = grub_malloc (grub_strlen (disk_name) + 1
+                     + grub_strlen (partition_name) + 1);
+  if (! name)
+    {
+      grub_free (partition_name);
+      return 1;
+    }
+
+  grub_sprintf (name, "%s,%s", disk_name, partition_name);
+  grub_free (partition_name);
+  
+  ret = add_completion (name, ")", GRUB_COMPLETION_TYPE_PARTITION);
+  grub_free (name);
+  return ret;
 }
 
 static int
@@ -119,7 +125,7 @@ iterate_dir (const char *filename, int dir)
 {
   if (! dir)
     {
-      if (add_completion (filename, " ", "files", print_simple_completion))
+      if (add_completion (filename, " ", GRUB_COMPLETION_TYPE_FILE))
        return 1;
     }
   else
@@ -127,7 +133,7 @@ iterate_dir (const char *filename, int dir)
       char fname[grub_strlen (filename) + 2];
 
       grub_sprintf (fname, "%s/", filename);
-      if (add_completion (fname, "", "files", print_simple_completion))
+      if (add_completion (fname, "", GRUB_COMPLETION_TYPE_FILE))
        return 1;
     }
   
@@ -146,14 +152,12 @@ iterate_dev (const char *devname)
     {
       if (dev->disk && dev->disk->has_partitions)
        {
-         if (add_completion (devname, ",", "devices",
-                             print_simple_completion))
+         if (add_completion (devname, ",", GRUB_COMPLETION_TYPE_DEVICE))
            return 1;
        }
       else
        {
-         if (add_completion (devname, ")", "devices",
-                             print_simple_completion))
+         if (add_completion (devname, ")", GRUB_COMPLETION_TYPE_DEVICE))
            return 1;
        }
     }
@@ -169,8 +173,7 @@ iterate_command (grub_command_t cmd)
     {
       if (cmd->flags & GRUB_COMMAND_FLAG_CMDLINE)
        {
-         if (add_completion (cmd->name, " ", "commands",
-                             print_simple_completion))
+         if (add_completion (cmd->name, " ", GRUB_COMPLETION_TYPE_COMMAND))
            return 1;
        }
     }
@@ -184,6 +187,7 @@ complete_device (void)
 {
   /* Check if this is a device or a partition.  */
   char *p = grub_strchr (++current_word, ',');
+  grub_device_t dev;
   
   if (! p)
     {
@@ -195,24 +199,22 @@ complete_device (void)
     {
       /* Complete the partition part.  */
       *p = '\0';
-      disk_dev = grub_device_open (current_word);
+      dev = grub_device_open (current_word);
       *p = ',';
       grub_errno = GRUB_ERR_NONE;
       
-      if (disk_dev)
+      if (dev)
        {
-         if (disk_dev->disk && disk_dev->disk->has_partitions)
+         if (dev->disk && dev->disk->has_partitions)
            {
-             current_word = p + 1;
-             
-             if (grub_partition_iterate (disk_dev->disk, iterate_partition))
+             if (grub_partition_iterate (dev->disk, iterate_partition))
                {
-                 grub_device_close (disk_dev);
+                 grub_device_close (dev);
                  return 1;
                }
            }
          
-         grub_device_close (disk_dev);
+         grub_device_close (dev);
        }
       else
        return 1;
@@ -303,18 +305,19 @@ complete_file (void)
 
 /* Try to complete the string in BUF. Return the characters that
    should be added to the string.  This command outputs the possible
-   completions, in that case set RESTORE to 1 so the caller can
-   restore the prompt.  */
+   completions by calling HOOK, in that case set RESTORE to 1 so the
+   caller can restore the prompt.  */
 char *
-grub_normal_do_completion (char *buf, int *restore)
+grub_normal_do_completion (char *buf, int *restore,
+                          void (*hook) (const char *, grub_completion_type_t, int))
 {
   char *first_word;
 
   /* Initialize variables.  */
-  disk_dev = 0;
   match = 0;
   num_found = 0;
   suffix = "";
+  print_func = hook;
 
   *restore = 1;
   
@@ -376,6 +379,12 @@ grub_normal_do_completion (char *buf, int *restore)
       
       grub_free (match);
 
+      if (*ret == '\0')
+       {
+         grub_free (ret);
+         return 0;
+       }
+      
       return ret;
     }
 
index 81ff8fe12985b418726634881307573bc21c8e1d..9cde3d4f0c27a1cc044a2b3e6d8d222b3693595d 100644 (file)
@@ -58,8 +58,13 @@ struct screen
   int y;
   /* The kill buffer.  */
   char *killed_text;
+  /* The flag of a completion window.  */
+  int completion_shown;
 };
 
+/* Used for storing completion items temporarily.  */
+static struct line completion_buffer;
+
 /* Initialize a line.  */
 static int
 init_line (struct line *linep)
@@ -422,6 +427,7 @@ make_screen (grub_menu_entry_t entry)
   screen->x = 0;
   screen->y = 0;
   screen->killed_text = 0;
+  screen->completion_shown = 0;
   screen->lines = grub_malloc (sizeof (struct line));
   if (! screen->lines)
     goto fail;
@@ -809,6 +815,163 @@ open_line (struct screen *screen, int update)
   return 1;
 }
 
+/* A completion hook to print items.  */
+static void
+store_completion (const char *item, grub_completion_type_t type, int count)
+{
+  char *p;
+  
+  if (count == 0)
+    {
+      /* If this is the first time, print a label.  */
+      const char *what;
+
+      switch (type)
+       {
+       case GRUB_COMPLETION_TYPE_COMMAND:
+         what = "commands";
+         break;
+       case GRUB_COMPLETION_TYPE_DEVICE:
+         what = "devices";
+         break;
+       case GRUB_COMPLETION_TYPE_FILE:
+         what = "files";
+         break;
+       case GRUB_COMPLETION_TYPE_PARTITION:
+         what = "partitions";
+         break;
+       default:
+         what = "things";
+         break;
+       }
+           
+      grub_gotoxy (0, GRUB_TERM_HEIGHT - 3);
+      grub_printf ("   Possible %s are:\n    ", what);
+    }
+
+  /* Make sure that the completion buffer has enough room.  */
+  if (completion_buffer.max_len < (completion_buffer.len
+                                  + (int) grub_strlen (item) + 1 + 1))
+    {
+      grub_size_t new_len;
+      
+      new_len = completion_buffer.len + grub_strlen (item) + 80;
+      p = grub_realloc (completion_buffer.buf, new_len);
+      if (! p)
+       {
+         /* Possibly not fatal.  */
+         grub_errno = GRUB_ERR_NONE;
+         return;
+       }
+      p[completion_buffer.len] = 0;
+      completion_buffer.buf = p;
+      completion_buffer.max_len = new_len;
+    }
+
+  p = completion_buffer.buf + completion_buffer.len;
+  if (completion_buffer.len != 0)
+    {
+      *p++ = ' ';
+      completion_buffer.len++;
+    }
+  grub_strcpy (p, item);
+  completion_buffer.len += grub_strlen (item);
+}
+
+static int
+complete (struct screen *screen, int continuous, int update)
+{
+  grub_uint16_t pos;
+  char saved_char;
+  struct line *linep;
+  int restore;
+  char *insert;
+  static int count = -1;
+
+  if (continuous)
+    count++;
+  else
+    count = 0;
+  
+  pos = grub_getxy ();
+  grub_gotoxy (0, GRUB_TERM_HEIGHT - 3);
+  
+  completion_buffer.buf = 0;
+  completion_buffer.len = 0;
+  completion_buffer.max_len = 0;
+
+  linep = screen->lines + screen->line;
+  saved_char = linep->buf[screen->column];
+  linep->buf[screen->column] = '\0';
+
+  insert = grub_normal_do_completion (linep->buf, &restore, store_completion);
+
+  linep->buf[screen->column] = saved_char;
+  
+  if (restore)
+    {
+      char *p = completion_buffer.buf;
+
+      screen->completion_shown = 1;
+      
+      if (p)
+       {
+         int num_sections = ((completion_buffer.len + GRUB_TERM_WIDTH - 8 - 1)
+                             / (GRUB_TERM_WIDTH - 8));
+         char *endp;
+
+         p += (count % num_sections) * (GRUB_TERM_WIDTH - 8);
+         endp = p + (GRUB_TERM_WIDTH - 8);
+
+         if (p != completion_buffer.buf)
+           grub_putcode (GRUB_TERM_DISP_LEFT);
+         else
+           grub_putchar (' ');
+         
+         while (*p && p < endp)
+           grub_putchar (*p++);
+         
+         if (*p)
+           grub_putcode (GRUB_TERM_DISP_RIGHT);
+       }
+    }
+
+  grub_gotoxy (pos >> 8, pos & 0xFF);
+  
+  if (insert)
+    {
+      insert_string (screen, insert, update);
+      count = -1;
+      grub_free (insert);
+    }
+  else if (update)
+    grub_refresh ();
+    
+  grub_free (completion_buffer.buf);
+  return 1;
+}
+
+/* Clear displayed completions.  */
+static void
+clear_completions (void)
+{
+  grub_uint16_t pos;
+  int i, j;
+  
+  pos = grub_getxy ();
+  grub_gotoxy (0, GRUB_TERM_HEIGHT - 3);
+  
+  for (i = 0; i < 2; i++)
+    {
+      for (j = 0; j < GRUB_TERM_WIDTH - 1; j++)
+       grub_putchar (' ');
+      grub_putchar ('\n');
+    }
+  
+  grub_gotoxy (pos >> 8, pos & 0xFF);
+  grub_refresh ();
+}
+
 /* Execute the command list in the screen SCREEN.  */
 static int
 run (struct screen *screen)
@@ -880,6 +1043,12 @@ grub_menu_entry_run (grub_menu_entry_t entry)
   while (1)
     {
       int c = GRUB_TERM_ASCII_CHAR (grub_getkey ());
+
+      if (screen->completion_shown)
+       {
+         clear_completions ();
+         screen->completion_shown = 0;
+       }
       
       switch (c)
        {
@@ -914,7 +1083,8 @@ grub_menu_entry_run (grub_menu_entry_t entry)
          break;
          
        case '\t': /* C-i */
-         /* FIXME: Completion */
+         if (! complete (screen, prev_c == c, 1))
+           goto fail;
          break;
          
        case 4: /* C-d */
diff --git a/normal/misc.c b/normal/misc.c
new file mode 100644 (file)
index 0000000..a89b8e4
--- /dev/null
@@ -0,0 +1,70 @@
+/* misc.c - miscellaneous functions */
+/*
+ *  GRUB  --  GRand Unified Bootloader
+ *  Copyright (C) 2005  Free Software Foundation, Inc.
+ *
+ *  This program 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 this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <grub/normal.h>
+#include <grub/disk.h>
+#include <grub/fs.h>
+#include <grub/err.h>
+#include <grub/misc.h>
+
+/* Print the information on the device NAME.  */
+grub_err_t
+grub_normal_print_device_info (const char *name)
+{
+  grub_device_t dev;
+  char *p;
+
+  p = grub_strchr (name, ',');
+  if (p)
+    grub_printf ("\tPartition %s: ", name);
+  else
+    grub_printf ("Device %s: ", name);
+  
+  dev = grub_device_open (name);
+  if (! dev)
+    grub_printf ("Filesystem cannot be accessed");
+  else if (! dev->disk || ! dev->disk->has_partitions || dev->disk->partition)
+    {
+      char *label;
+      grub_fs_t fs;
+
+      fs = grub_fs_probe (dev);
+      /* Ignore all errors.  */
+      grub_errno = 0;
+
+      grub_printf ("Filesystem type %s", fs ? fs->name : "unknown");
+         
+      if (fs && fs->label)
+       {
+         (fs->label) (dev, &label);
+         if (grub_errno == GRUB_ERR_NONE)
+           {
+             if (label && grub_strlen (label))
+               grub_printf (", Label %s", label);
+             grub_free (label);
+           }
+         grub_errno = GRUB_ERR_NONE;
+       }
+      grub_device_close (dev);
+    }
+
+  grub_printf ("\n");
+  return grub_errno;
+}
index b19a559d0d50e23486f8cf18fa41c2764d2fb6e7..90959449e873860475a91491a8df70a45890b403 100644 (file)
@@ -71,10 +71,13 @@ static struct grub_partition_map grub_amiga_partition_map;
 #ifndef GRUB_UTIL
 static grub_dl_t my_mod;
 #endif
+
 \f
+
 static grub_err_t
 amiga_partition_map_iterate (grub_disk_t disk,
-                            int (*hook) (const grub_partition_t partition))
+                            int (*hook) (grub_disk_t disk,
+                                         const grub_partition_t partition))
 {
   struct grub_partition part;
   struct grub_amiga_rdsk rdsk;
@@ -130,7 +133,7 @@ amiga_partition_map_iterate (grub_disk_t disk,
       part.index = partno;
       part.partmap = &grub_amiga_partition_map;
       
-      if (hook (&part))
+      if (hook (disk, &part))
        return grub_errno;
       
       next = grub_be_to_cpu32 (apart.next);
@@ -148,9 +151,10 @@ amiga_partition_map_probe (grub_disk_t disk, const char *str)
   int partnum = 0;
   char *s = (char *) str;
 
-  auto int find_func (const grub_partition_t partition);
+  auto int find_func (grub_disk_t d, const grub_partition_t partition);
     
-  int find_func (const grub_partition_t partition)
+  int find_func (grub_disk_t d __attribute__ ((unused)),
+                const grub_partition_t partition)
       {
       if (partnum == partition->index)
        {
index 200d54d679206bd2e31737ba12344fbdf72e62a3..8b934632b44fcb4dce08a056f9b03f910a575ecf 100644 (file)
@@ -95,7 +95,8 @@ static grub_dl_t my_mod;
 
 static grub_err_t
 apple_partition_map_iterate (grub_disk_t disk,
-                       int (*hook) (const grub_partition_t partition))
+                            int (*hook) (grub_disk_t disk,
+                                         const grub_partition_t partition))
 {
   struct grub_partition part;
   struct grub_apple_part apart;
@@ -134,7 +135,7 @@ apple_partition_map_iterate (grub_disk_t disk,
                    partno, apart.partname, apart.parttype,
                    apart.first_phys_block, apart.blockcnt);
 
-      if (hook (&part))
+      if (hook (disk, &part))
        return grub_errno;
 
       if (apart.first_phys_block == GRUB_DISK_SECTOR_SIZE * 2)
@@ -159,9 +160,10 @@ apple_partition_map_probe (grub_disk_t disk, const char *str)
   int partnum = 0;
   char *s = (char *) str;
 
-  auto int find_func (const grub_partition_t partition);
+  auto int find_func (grub_disk_t d, const grub_partition_t partition);
   
-  int find_func (const grub_partition_t partition)
+  int find_func (grub_disk_t d __attribute__ ((unused)),
+                const grub_partition_t partition)
     {
       if (partnum == partition->index)
        {
index 398786f27aa1ca730acaa4ac4448fd84a29129ec..2f96dc4c7f39add9cc19c9c7167760c60d0a05e1 100644 (file)
@@ -93,7 +93,8 @@ grub_partition_parse (const char *str)
 
 static grub_err_t
 pc_partition_map_iterate (grub_disk_t disk,
-                         int (*hook) (const grub_partition_t partition))
+                         int (*hook) (grub_disk_t disk,
+                                      const grub_partition_t partition))
 {
   struct grub_partition p;
   struct grub_pc_partition pcdata;
@@ -145,7 +146,7 @@ pc_partition_map_iterate (grub_disk_t disk,
            {
              pcdata.dos_part++;
              
-             if (hook (&p))
+             if (hook (disk, &p))
                goto finish;
 
              /* Check if this is a BSD partition.  */
@@ -183,7 +184,7 @@ pc_partition_map_iterate (grub_disk_t disk,
                      pcdata.bsd_type = be->fs_type;
                      
                      if (be->fs_type != GRUB_PC_PARTITION_BSD_TYPE_UNUSED)
-                       if (hook (&p))
+                       if (hook (disk, &p))
                          goto finish;
                    }
                }
@@ -225,9 +226,10 @@ pc_partition_map_probe (grub_disk_t disk, const char *str)
   grub_partition_t p;
   struct grub_pc_partition *pcdata;
   
-  auto int find_func (const grub_partition_t partition);
+  auto int find_func (grub_disk_t d, const grub_partition_t partition);
 
-  int find_func (const grub_partition_t partition)
+  int find_func (grub_disk_t d __attribute__ ((unused)),
+                const grub_partition_t partition)
     {
       struct grub_pc_partition *partdata = partition->data;
       if ((pcdata->dos_part == partdata->dos_part || pcdata->dos_part == -1)
index 9c851202eb407d2942df7c91e2b3131a5f2cac1d..a65d4ff62f97bbe1ab5545e3f579672082530113 100644 (file)
@@ -85,7 +85,8 @@ grub_sun_is_valid (struct grub_sun_block *label)
 
 static grub_err_t
 sun_partition_map_iterate (grub_disk_t disk,
-                           int (*hook) (const grub_partition_t partition))
+                           int (*hook) (grub_disk_t disk,
+                                       const grub_partition_t partition))
 {
   struct grub_partition *p;
   struct grub_disk raw;
@@ -122,7 +123,7 @@ sun_partition_map_iterate (grub_disk_t disk,
          p->index = partnum;
          if (p->len)
            {
-             if (hook (p))
+             if (hook (disk, p))
                partnum = GRUB_PARTMAP_SUN_MAX_PARTS;
            }
        }
@@ -139,14 +140,16 @@ sun_partition_map_probe (grub_disk_t disk, const char *str)
   int partnum = 0;
   char *s = (char *) str;
 
-  auto int find_func (const grub_partition_t partition);
-  int find_func (const grub_partition_t partition)
+  auto int find_func (grub_disk_t d, const grub_partition_t partition);
+  
+  int find_func (grub_disk_t d __attribute__ ((unused)),
+                const grub_partition_t partition)
     {
       if (partnum == partition->index)
         {
           p = (grub_partition_t) grub_malloc (sizeof (*p));
           if (p)
-            grub_memcpy(p, partition, sizeof (*p));
+            grub_memcpy (p, partition, sizeof (*p));
           return 1;
         }
       return 0;
index 634414f4798d3fff86d55647f3931fdcac64c407..b2d317fd34e1704d9b6767530eb714a33b2a6d34 100644 (file)
@@ -733,9 +733,11 @@ grub_util_biosdisk_get_grub_dev (const char *os_dev)
     struct hd_geometry hdg;
     int dos_part = -1;
     int bsd_part = -1;
-    auto int find_partition (const grub_partition_t partition);
+    auto int find_partition (grub_disk_t disk,
+                            const grub_partition_t partition);
     
-    int find_partition (const grub_partition_t partition)
+    int find_partition (grub_disk_t disk __attribute__ ((unused)),
+                       const grub_partition_t partition)
       {
        struct grub_pc_partition *pcdata = 0;
        
index a2ff6fbf3f93401234374ad0293fb906a19d17ab..91faa99980c2a03742d26e0f59e2675fca7493c0 100644 (file)
@@ -106,9 +106,11 @@ setup (const char *prefix, const char *dir,
   auto void save_blocklists (unsigned long sector, unsigned offset,
                             unsigned length);
 
-  auto int find_first_partition_start (const grub_partition_t p);
+  auto int find_first_partition_start (grub_disk_t disk,
+                                      const grub_partition_t p);
   
-  int find_first_partition_start (const grub_partition_t p)
+  int find_first_partition_start (grub_disk_t disk __attribute__ ((unused)),
+                                 const grub_partition_t p)
     {
       struct grub_pc_partition *pcdata = p->data;