Make cryptodisk and diskfilter probe data retrievable programmatically

and not just printable.
This commit is contained in:
Vladimir 'phcoder' Serbinenko 2013-10-04 01:43:47 +02:00
parent 24ca45125e
commit bf25f87931
7 changed files with 40 additions and 19 deletions

View file

@ -76,6 +76,12 @@ enum {
static int print = PRINT_FS;
static unsigned int argument_is_device = 0;
static void
do_print (const char *x)
{
grub_printf ("%s ", x);
}
static void
probe_partmap (grub_disk_t disk)
{
@ -91,7 +97,7 @@ probe_partmap (grub_disk_t disk)
printf ("%s ", part->partmap->name);
if (disk->dev->id == GRUB_DISK_DEVICE_DISKFILTER_ID)
grub_diskfilter_print_partmap (disk);
grub_diskfilter_get_partmap (disk, do_print);
/* In case of LVM/RAID, check the member devices as well. */
if (disk->dev->memberlist)
@ -125,7 +131,10 @@ probe_cryptodisk_uuid (grub_disk_t disk)
list = tmp;
}
if (disk->dev->id == GRUB_DISK_DEVICE_CRYPTODISK_ID)
grub_util_cryptodisk_print_uuid (disk);
{
const char *uu = grub_util_cryptodisk_get_uuid (disk);
grub_printf ("%s ", uu);
}
}
static int
@ -303,7 +312,7 @@ probe_abstraction (grub_disk_t disk)
printf ("ldm ");
if (disk->dev->id == GRUB_DISK_DEVICE_CRYPTODISK_ID)
grub_util_cryptodisk_print_abstraction (disk);
grub_util_cryptodisk_get_abstraction (disk, do_print);
raid_level = probe_raid_level (disk);
if (raid_level >= 0)