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

@ -746,31 +746,33 @@ grub_cryptodisk_cheat_insert (grub_cryptodisk_t newdev, const char *name,
}
void
grub_util_cryptodisk_print_abstraction (grub_disk_t disk)
grub_util_cryptodisk_get_abstraction (grub_disk_t disk,
void (*cb) (const char *val))
{
grub_cryptodisk_t dev = (grub_cryptodisk_t) disk->data;
grub_printf ("cryptodisk %s ", dev->modname);
cb ("cryptodisk");
cb (dev->modname);
if (dev->cipher)
grub_printf ("%s ", dev->cipher->cipher->modname);
cb (dev->cipher->cipher->modname);
if (dev->secondary_cipher)
grub_printf ("%s ", dev->secondary_cipher->cipher->modname);
cb (dev->secondary_cipher->cipher->modname);
if (dev->essiv_cipher)
grub_printf ("%s ", dev->essiv_cipher->cipher->modname);
cb (dev->essiv_cipher->cipher->modname);
if (dev->hash)
grub_printf ("%s ", dev->hash->modname);
cb (dev->hash->modname);
if (dev->essiv_hash)
grub_printf ("%s ", dev->essiv_hash->modname);
cb (dev->essiv_hash->modname);
if (dev->iv_hash)
grub_printf ("%s ", dev->iv_hash->modname);
cb (dev->iv_hash->modname);
}
void
grub_util_cryptodisk_print_uuid (grub_disk_t disk)
const char *
grub_util_cryptodisk_get_uuid (grub_disk_t disk)
{
grub_cryptodisk_t dev = (grub_cryptodisk_t) disk->data;
grub_printf ("%s ", dev->uuid);
return dev->uuid;
}
#endif

View file

@ -353,7 +353,8 @@ grub_diskfilter_memberlist (grub_disk_t disk)
}
void
grub_diskfilter_print_partmap (grub_disk_t disk)
grub_diskfilter_get_partmap (grub_disk_t disk,
void (*cb) (const char *pm))
{
struct grub_diskfilter_lv *lv = disk->data;
struct grub_diskfilter_pv *pv;
@ -375,7 +376,7 @@ grub_diskfilter_print_partmap (grub_disk_t disk)
continue;
}
for (s = 0; pv->partmaps[s]; s++)
grub_printf ("%s ", pv->partmaps[s]);
cb (pv->partmaps[s]);
}
}