Simplification for partmap probing function.

-- 
Robert Millan

<GPLv2> I know my rights; I want my phone call!
<DRM> What use is a phone call… if you are unable to speak?
(as seen on /.)
	* util/grub-probe.c (probe): Simplify partmap probing (with the
	assumption that the first word up to the underscore equals to
	the module name).

diff -x configure -x config.h.in -x CVS -x '*~' -x '*.mk' -urp ../grub2/util/grub-probe.c ./util/grub-probe.c
--- ../grub2/util/grub-probe.c	2008-01-25 23:33:57.000000000 +0100
+++ ./util/grub-probe.c	2008-02-06 17:32:28.000000000 +0100
@@ -133,21 +133,22 @@ probe (const char *path)
 
   if (print == PRINT_PARTMAP)
     {
+      char *name;
+      char *underscore;
+      
       if (dev->disk->partition == NULL)
         grub_util_error ("Cannot detect partition map for %s", drive_name);
 
-      if (strcmp (dev->disk->partition->partmap->name, "amiga_partition_map") == 0)
-        printf ("amiga\n");
-      else if (strcmp (dev->disk->partition->partmap->name, "apple_partition_map") == 0)
-        printf ("apple\n");
-      else if (strcmp (dev->disk->partition->partmap->name, "gpt_partition_map") == 0)
-        printf ("gpt\n");
-      else if (strcmp (dev->disk->partition->partmap->name, "pc_partition_map") == 0)
-        printf ("pc\n");
-      else if (strcmp (dev->disk->partition->partmap->name, "sun_partition_map") == 0)
-        printf ("sun\n");
-      else
-        grub_util_error ("Unknown partition map %s", dev->disk->partition->partmap->name);
+      name = strdup (dev->disk->partition->partmap->name);
+      if (! name)
+	grub_util_error ("not enough memory");
+
+      underscore = strchr (name, '_');
+      if (! underscore)
+	grub_util_error ("Invalid partition map %s", name);
+
+      *underscore = '\0';
+      printf ("%s\n", name);
       goto end;
     }
 
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to