Skip to content

Commit

Permalink
blockdev: Replace drive_add()'s fmt, ... by optstr parameter
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
  • Loading branch information
Markus Armbruster authored and kevmw committed Jan 31, 2011
1 parent 4e5d9b5 commit 5645b0f
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 21 deletions.
8 changes: 1 addition & 7 deletions blockdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
5 changes: 1 addition & 4 deletions blockdev.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down
23 changes: 13 additions & 10 deletions vl.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 ""
Expand Down Expand Up @@ -2050,17 +2049,21 @@ int main(int argc, char **argv, char **envp)
initrd_filename = optarg;
break;
case QEMU_OPTION_hda:
if (cyls == 0)
hda_opts = drive_add(IF_DEFAULT, 0, optarg, HD_OPTS);
else
hda_opts = drive_add(IF_DEFAULT, 0, optarg, HD_OPTS
",cyls=%d,heads=%d,secs=%d%s",
cyls, heads, secs,
translation == BIOS_ATA_TRANSLATION_LBA ?
{
char buf[256];
if (cyls == 0)
snprintf(buf, sizeof(buf), "%s", HD_OPTS);
else
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 ?
translation == BIOS_ATA_TRANSLATION_NONE ?
",trans=none" : "");
break;
drive_add(IF_DEFAULT, 0, optarg, buf);
break;
}
case QEMU_OPTION_hdb:
case QEMU_OPTION_hdc:
case QEMU_OPTION_hdd:
Expand Down

0 comments on commit 5645b0f

Please sign in to comment.