Change to disk->name being raw name. It makes less hidden issues

This commit is contained in:
Vladimir 'phcoder' Serbinenko 2010-09-08 21:22:41 +02:00
parent f256469360
commit 43de930c20
5 changed files with 27 additions and 20 deletions

View file

@ -805,10 +805,11 @@ grub_efidisk_get_device_name (grub_efi_handle_t *handle)
return 0; return 0;
} }
device_name = grub_xasprintf ("%s,%s%d", parent->name, {
tpart->partmap->name, char *partition_name = grub_partition_get_name (tpart);
tpart->number + 1); device_name = grub_xasprintf ("%s,%s", parent->name, partition_name);
grub_free (partition_name); grub_free (partition_name);
}
grub_disk_close (parent); grub_disk_close (parent);
return device_name; return device_name;

View file

@ -136,7 +136,7 @@ grub_device_iterate (int (*hook) (const char *name))
int iterate_partition (grub_disk_t disk, const grub_partition_t partition) int iterate_partition (grub_disk_t disk, const grub_partition_t partition)
{ {
struct part_ent *p; struct part_ent *p;
char *part_name;
p = grub_malloc (sizeof (*p)); p = grub_malloc (sizeof (*p));
if (!p) if (!p)
@ -144,8 +144,14 @@ grub_device_iterate (int (*hook) (const char *name))
return 1; return 1;
} }
p->name = grub_xasprintf ("%s,%s%d", disk->name, partition->partmap->name, part_name = grub_partition_get_name (partition);
partition->number + 1); if (!part_name)
{
grub_free (p);
return 1;
}
p->name = grub_xasprintf ("%s,%s", disk->name, part_name);
grub_free (part_name);
if (!p->name) if (!p->name)
{ {
grub_free (p); grub_free (p);

View file

@ -248,10 +248,6 @@ grub_disk_open (const char *name)
if (! disk) if (! disk)
return 0; return 0;
disk->name = grub_strdup (name);
if (! disk->name)
goto fail;
p = find_part_sep (name); p = find_part_sep (name);
if (p) if (p)
{ {
@ -263,7 +259,13 @@ grub_disk_open (const char *name)
grub_memcpy (raw, name, len); grub_memcpy (raw, name, len);
raw[len] = '\0'; raw[len] = '\0';
disk->name = grub_strdup (raw);
} }
else
disk->name = grub_strdup (name);
if (! disk->name)
goto fail;
for (dev = grub_disk_dev_list; dev; dev = dev->next) for (dev = grub_disk_dev_list; dev; dev = dev->next)
{ {

View file

@ -188,13 +188,7 @@ grub_partition_iterate (struct grub_disk *disk,
if (p.start != 0) if (p.start != 0)
{ {
const struct grub_partition_map *partmap; const struct grub_partition_map *partmap;
const char *name;
char *newname;
dsk->partition = &p; dsk->partition = &p;
name = dsk->name;
dsk->name = newname = grub_xasprintf ("%s,%s%d", dsk->name,
p.partmap->name,
p.number + 1);
FOR_PARTITION_MAPS(partmap) FOR_PARTITION_MAPS(partmap)
{ {
grub_err_t err; grub_err_t err;
@ -204,8 +198,6 @@ grub_partition_iterate (struct grub_disk *disk,
if (ret) if (ret)
break; break;
} }
grub_free (newname);
dsk->name = name;
} }
dsk->partition = p.parent; dsk->partition = p.parent;
return ret; return ret;

View file

@ -102,8 +102,14 @@ iterate_partition (grub_disk_t disk, const grub_partition_t p)
const char *disk_name = disk->name; const char *disk_name = disk->name;
char *name; char *name;
int ret; int ret;
char *part_name;
name = grub_xasprintf ("%s,%s%d", disk_name, p->partmap->name, p->number + 1); part_name = grub_partition_get_name (p);
if (! part_name)
return 1;
name = grub_xasprintf ("%s,%s", disk_name, part_name);
grub_free (part_name);
if (! name) if (! name)
return 1; return 1;