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,
|
||||
const char *fmt, ...)
|
||||
const char *optstr)
|
||||
{
|
||||
va_list ap;
|
||||
char optstr[1024];
|
||||
QemuOpts *opts;
|
||||
char buf[32];
|
||||
|
||||
va_start(ap, fmt);
|
||||
vsnprintf(optstr, sizeof(optstr), fmt, ap);
|
||||
va_end(ap);
|
||||
|
||||
opts = drive_def(optstr);
|
||||
if (!opts) {
|
||||
return NULL;
|
||||
|
@ -47,10 +47,7 @@ DriveInfo *drive_get_by_blockdev(BlockDriverState *bs);
|
||||
|
||||
QemuOpts *drive_def(const char *optstr);
|
||||
QemuOpts *drive_add(BlockInterfaceType type, int index, const char *file,
|
||||
const char *fmt, ...) /*GCC_FMT_ATTR(4, 5)*/;
|
||||
/* GCC_FMT_ATTR() commented out to avoid the (pretty useless)
|
||||
* "zero-length gnu_printf format string" warning we insist to
|
||||
* enable */
|
||||
const char *optstr);
|
||||
DriveInfo *drive_init(QemuOpts *arg, int default_to_scsi, int *fatal_error);
|
||||
|
||||
/* device-hotplug */
|
||||
|
13
vl.c
13
vl.c
@ -621,7 +621,6 @@ static int bt_parse(const char *opt)
|
||||
/***********************************************************/
|
||||
/* QEMU Block devices */
|
||||
|
||||
/* Any % in the following strings must be escaped as %% */
|
||||
#define HD_OPTS "media=disk"
|
||||
#define CDROM_OPTS "media=cdrom"
|
||||
#define FD_OPTS ""
|
||||
@ -2050,17 +2049,21 @@ int main(int argc, char **argv, char **envp)
|
||||
initrd_filename = optarg;
|
||||
break;
|
||||
case QEMU_OPTION_hda:
|
||||
{
|
||||
char buf[256];
|
||||
if (cyls == 0)
|
||||
hda_opts = drive_add(IF_DEFAULT, 0, optarg, HD_OPTS);
|
||||
snprintf(buf, sizeof(buf), "%s", HD_OPTS);
|
||||
else
|
||||
hda_opts = drive_add(IF_DEFAULT, 0, optarg, HD_OPTS
|
||||
",cyls=%d,heads=%d,secs=%d%s",
|
||||
cyls, heads, secs,
|
||||
snprintf(buf, sizeof(buf),
|
||||
"%s,cyls=%d,heads=%d,secs=%d%s",
|
||||
HD_OPTS , cyls, heads, secs,
|
||||
translation == BIOS_ATA_TRANSLATION_LBA ?
|
||||
",trans=lba" :
|
||||
translation == BIOS_ATA_TRANSLATION_NONE ?
|
||||
",trans=none" : "");
|
||||
drive_add(IF_DEFAULT, 0, optarg, buf);
|
||||
break;
|
||||
}
|
||||
case QEMU_OPTION_hdb:
|
||||
case QEMU_OPTION_hdc:
|
||||
case QEMU_OPTION_hdd:
|
||||
|
Loading…
Reference in New Issue
Block a user