{
/* This is a hard disk partition. */
grub_disk_t parent = 0;
- char *partition_name = 0;
+ const grub_partition_t tpart = NULL;
char *device_name;
grub_efi_device_path_t *dup_dp, *dup_ldp;
grub_efi_hard_drive_device_path_t hd;
if (grub_partition_get_start (part) == hd.partition_start
&& grub_partition_get_len (part) == hd.partition_size)
{
- partition_name = grub_partition_get_name (part);
+ tpart = part;
return 1;
}
grub_memcpy (&hd, ldp, sizeof (hd));
grub_partition_iterate (parent, find_partition);
- if (! partition_name)
+ if (! tpart)
{
grub_disk_close (parent);
return 0;
}
- device_name = grub_xasprintf ("%s,%s", parent->name, partition_name);
+ device_name = grub_xasprintf ("%s,%s%d", parent->name,
+ tpart->partmap->name,
+ tpart->number + 1);
grub_free (partition_name);
grub_disk_close (parent);
int iterate_partition (grub_disk_t disk, const grub_partition_t partition)
{
- char *partition_name;
struct part_ent *p;
- partition_name = grub_partition_get_name (partition);
- if (! partition_name)
- return 1;
p = grub_malloc (sizeof (*p));
if (!p)
{
- grub_free (partition_name);
return 1;
}
- p->name = grub_xasprintf ("%s,%s", disk->name, partition_name);
+ p->name = grub_xasprintf ("%s,%s%d", disk->name, partition->partmap->name,
+ partition->number + 1);
if (!p->name)
{
- grub_free (partition_name);
grub_free (p);
return 1;
}
- grub_free (partition_name);
p->next = ents;
ents = p;
iterate_partition (grub_disk_t disk, const grub_partition_t p)
{
const char *disk_name = disk->name;
- char *partition_name = grub_partition_get_name (p);
char *name;
int ret;
- if (! partition_name)
- return 1;
-
- name = grub_xasprintf ("%s,%s", disk_name, partition_name);
- grub_free (partition_name);
+ name = grub_xasprintf ("%s,%s%d", disk_name, p->partmap->name, p->number + 1);
if (! name)
return 1;