From c952cf92a183be5a4e49fd5d9a2687f2bfde0a85 Mon Sep 17 00:00:00 2001
From: robertmh <robertmh@localhost>
Date: Mon, 22 Jun 2009 19:44:38 +0000
Subject: [PATCH] 2009-06-22  Robert Millan  <rmh.grub@aybabtu.com>

        * commands/search.c (grub_cmd_search): Macroify hardcoded args[]
        indexes.  Check for -f explicitly.
---
 ChangeLog         |  5 +++++
 commands/search.c | 25 ++++++++++++++++++-------
 2 files changed, 23 insertions(+), 7 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 00f7e65a0..f78766a5e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-06-22  Robert Millan  <rmh.grub@aybabtu.com>
+
+	* commands/search.c (grub_cmd_search): Macroify hardcoded args[]
+	indexes.  Check for -f explicitly.
+
 2009-06-22  Robert Millan  <rmh.grub@aybabtu.com>
 
 	* conf/i386-pc.rmk (GRUB_MEMORY_MACHINE_LINK_ADDR): Rename to ...
diff --git a/commands/search.c b/commands/search.c
index cfcc6b959..5b1c0b03b 100644
--- a/commands/search.c
+++ b/commands/search.c
@@ -37,6 +37,15 @@ static const struct grub_arg_option options[] =
     {0, 0, 0, 0, 0, 0}
   };
 
+enum options
+  {
+    SEARCH_FILE,
+    SEARCH_LABEL,
+    SEARCH_FS_UUID,
+    SEARCH_SET,
+    SEARCH_NO_FLOPPY,
+ };
+
 static void
 search_fs (const char *key, const char *var, int no_floppy, int is_uuid)
 {
@@ -165,15 +174,17 @@ grub_cmd_search (grub_extcmd_t cmd, int argc, char **args)
   if (argc == 0)
     return grub_error (GRUB_ERR_INVALID_COMMAND, "no argument specified");
 
-  if (state[3].set)
-    var = state[3].arg ? state[3].arg : "root";
+  if (state[SEARCH_SET].set)
+    var = state[SEARCH_SET].arg ? state[SEARCH_SET].arg : "root";
 
-  if (state[1].set)
-    search_fs (args[0], var, state[4].set, 0);
-  else if (state[2].set)
-    search_fs (args[0], var, state[4].set, 1);
+  if (state[SEARCH_LABEL].set)
+    search_fs (args[0], var, state[SEARCH_NO_FLOPPY].set, 0);
+  else if (state[SEARCH_FS_UUID].set)
+    search_fs (args[0], var, state[SEARCH_NO_FLOPPY].set, 1);
+  else if (state[SEARCH_FILE].set)
+    search_file (args[0], var, state[SEARCH_NO_FLOPPY].set);
   else
-    search_file (args[0], var, state[4].set);
+    return grub_error (GRUB_ERR_INVALID_COMMAND, "unspecified search type");
 
   return grub_errno;
 }