if (dev)
{
- char tmp[grub_strlen (devname) + sizeof (",")];
-
- grub_memcpy (tmp, devname, grub_strlen (devname));
-
- if (grub_strcmp (devname, current_word) == 0)
+ if (dev->disk && dev->disk->has_partitions)
{
- if (add_completion (devname, ")", GRUB_COMPLETION_TYPE_PARTITION))
+ if (add_completion (devname, ",", GRUB_COMPLETION_TYPE_DEVICE))
return 1;
-
- if (dev->disk)
- if (grub_partition_iterate (dev->disk, iterate_partition))
- return 1;
}
else
{
- grub_memcpy (tmp + grub_strlen (devname), "", sizeof (""));
- if (add_completion (tmp, "", GRUB_COMPLETION_TYPE_DEVICE))
+ if (add_completion (devname, ")", GRUB_COMPLETION_TYPE_DEVICE))
return 1;
}
}
if (dev)
{
- if (dev->disk)
+ if (dev->disk && dev->disk->has_partitions)
{
if (grub_partition_iterate (dev->disk, iterate_partition))
{
grub_errno = GRUB_ERR_NONE;
}
}
- else
+ else if (! dev->disk->has_partitions || dev->disk->partition)
grub_printf ("Unknown filesystem");
+ else
+ grub_printf ("Partition table");
grub_device_close (dev);
}