* 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; }