blockdev: Replace drive_add()'s fmt, ... by optstr parameter
Let the callers build the optstr. Only one wants to. All the others become simpler, because they don't have to worry about escaping '%'. Signed-off-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
4e5d9b578f
commit
5645b0f4f2
@ -93,17 +93,11 @@ QemuOpts *drive_def(const char *optstr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
QemuOpts *drive_add(BlockInterfaceType type, int index, const char *file,
|
QemuOpts *drive_add(BlockInterfaceType type, int index, const char *file,
|
||||||
const char *fmt, ...)
|
const char *optstr)
|
||||||
{
|
{
|
||||||
va_list ap;
|
|
||||||
char optstr[1024];
|
|
||||||
QemuOpts *opts;
|
QemuOpts *opts;
|
||||||
char buf[32];
|
char buf[32];
|
||||||
|
|
||||||
va_start(ap, fmt);
|
|
||||||
vsnprintf(optstr, sizeof(optstr), fmt, ap);
|
|
||||||
va_end(ap);
|
|
||||||
|
|
||||||
opts = drive_def(optstr);
|
opts = drive_def(optstr);
|
||||||
if (!opts) {
|
if (!opts) {
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -47,10 +47,7 @@ DriveInfo *drive_get_by_blockdev(BlockDriverState *bs);
|
|||||||
|
|
||||||
QemuOpts *drive_def(const char *optstr);
|
QemuOpts *drive_def(const char *optstr);
|
||||||
QemuOpts *drive_add(BlockInterfaceType type, int index, const char *file,
|
QemuOpts *drive_add(BlockInterfaceType type, int index, const char *file,
|
||||||
const char *fmt, ...) /*GCC_FMT_ATTR(4, 5)*/;
|
const char *optstr);
|
||||||
/* GCC_FMT_ATTR() commented out to avoid the (pretty useless)
|
|
||||||
* "zero-length gnu_printf format string" warning we insist to
|
|
||||||
* enable */
|
|
||||||
DriveInfo *drive_init(QemuOpts *arg, int default_to_scsi, int *fatal_error);
|
DriveInfo *drive_init(QemuOpts *arg, int default_to_scsi, int *fatal_error);
|
||||||
|
|
||||||
/* device-hotplug */
|
/* device-hotplug */
|
||||||
|
23
vl.c
23
vl.c
@ -621,7 +621,6 @@ static int bt_parse(const char *opt)
|
|||||||
/***********************************************************/
|
/***********************************************************/
|
||||||
/* QEMU Block devices */
|
/* QEMU Block devices */
|
||||||
|
|
||||||
/* Any % in the following strings must be escaped as %% */
|
|
||||||
#define HD_OPTS "media=disk"
|
#define HD_OPTS "media=disk"
|
||||||
#define CDROM_OPTS "media=cdrom"
|
#define CDROM_OPTS "media=cdrom"
|
||||||
#define FD_OPTS ""
|
#define FD_OPTS ""
|
||||||
@ -2050,17 +2049,21 @@ int main(int argc, char **argv, char **envp)
|
|||||||
initrd_filename = optarg;
|
initrd_filename = optarg;
|
||||||
break;
|
break;
|
||||||
case QEMU_OPTION_hda:
|
case QEMU_OPTION_hda:
|
||||||
if (cyls == 0)
|
{
|
||||||
hda_opts = drive_add(IF_DEFAULT, 0, optarg, HD_OPTS);
|
char buf[256];
|
||||||
else
|
if (cyls == 0)
|
||||||
hda_opts = drive_add(IF_DEFAULT, 0, optarg, HD_OPTS
|
snprintf(buf, sizeof(buf), "%s", HD_OPTS);
|
||||||
",cyls=%d,heads=%d,secs=%d%s",
|
else
|
||||||
cyls, heads, secs,
|
snprintf(buf, sizeof(buf),
|
||||||
translation == BIOS_ATA_TRANSLATION_LBA ?
|
"%s,cyls=%d,heads=%d,secs=%d%s",
|
||||||
|
HD_OPTS , cyls, heads, secs,
|
||||||
|
translation == BIOS_ATA_TRANSLATION_LBA ?
|
||||||
",trans=lba" :
|
",trans=lba" :
|
||||||
translation == BIOS_ATA_TRANSLATION_NONE ?
|
translation == BIOS_ATA_TRANSLATION_NONE ?
|
||||||
",trans=none" : "");
|
",trans=none" : "");
|
||||||
break;
|
drive_add(IF_DEFAULT, 0, optarg, buf);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case QEMU_OPTION_hdb:
|
case QEMU_OPTION_hdb:
|
||||||
case QEMU_OPTION_hdc:
|
case QEMU_OPTION_hdc:
|
||||||
case QEMU_OPTION_hdd:
|
case QEMU_OPTION_hdd:
|
||||||
|
Loading…
Reference in New Issue
Block a user