+2011-10-26 Vladimir Serbinenko <phcoder@gmail.com>
+
+ fstest xnu_uuid subcommand.
+
+ * grub-core/commands/xnu_uuid.c (libgrubkrn): Add
+ grub-core/commands/xnu_uuid.c.
+ * util/grub-fstest.c (CMD_XNU_UUID): New enum value.
+ (fstest): Handle xnu_uuid.
+ (options): Document xnu_uuid.
+ (argp_parser): Parse xnu_uuid.
+
2011-10-26 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/commands/xnu_uuid.c (grub_cmd_xnu_uuid): Support
CMD_CRC,
CMD_BLOCKLIST,
CMD_TESTLOAD,
- CMD_ZFSINFO
+ CMD_ZFSINFO,
+ CMD_XNU_UUID
};
#define BUF_SIZE 32256
case CMD_TESTLOAD:
execute_command ("testload", n, args);
grub_printf ("\n");
+ case CMD_XNU_UUID:
+ {
+ grub_device_t dev;
+ grub_fs_t fs;
+ char *uuid = 0;
+ char *argv[3] = { "-l", NULL, NULL};
+ dev = grub_device_open (n ? args[0] : 0);
+ if (!dev)
+ grub_util_error (grub_errmsg);
+ fs = grub_fs_probe (dev);
+ if (!fs)
+ grub_util_error (grub_errmsg);
+ if (!fs->uuid)
+ grub_util_error ("couldn't retrieve UUID");
+ if (fs->uuid (dev, &uuid))
+ grub_util_error (grub_errmsg);
+ if (!uuid)
+ grub_util_error ("couldn't retrieve UUID");
+ argv[1] = uuid;
+ execute_command ("xnu_uuid", 2, argv);
+ }
}
for (i = 0; i < num_disks; i++)
{N_("hex FILE"), 0, 0 , OPTION_DOC, N_("Hex dump FILE."), 1},
{N_("crc FILE"), 0, 0 , OPTION_DOC, N_("Get crc32 checksum of FILE."), 1},
{N_("blocklist FILE"), 0, 0, OPTION_DOC, N_("Display blocklist of FILE."), 1},
+ {N_("xnu_uuid"), 0, 0, OPTION_DOC, N_("Compute XNU UUID of the device."), 1},
{"root", 'r', N_("DEVICE_NAME"), 0, N_("Set root device."), 2},
{"skip", 's', "N", 0, N_("Skip N bytes from output file."), 2},
cmd = CMD_TESTLOAD;
nparm = 1;
}
+ else if (grub_strcmp (arg, "xnu_uuid") == 0)
+ {
+ cmd = CMD_XNU_UUID;
+ nparm = 0;
+ }
else
{
fprintf (stderr, _("Invalid command %s.\n"), arg);