From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=58189 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PilSk-0008GP-ED for qemu-devel@nongnu.org; Fri, 28 Jan 2011 05:21:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PilSg-0002Sp-F6 for qemu-devel@nongnu.org; Fri, 28 Jan 2011 05:21:54 -0500 Received: from oxygen.pond.sub.org ([213.239.205.148]:53396) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PilSg-0002S1-5j for qemu-devel@nongnu.org; Fri, 28 Jan 2011 05:21:50 -0500 From: Markus Armbruster Date: Fri, 28 Jan 2011 11:21:42 +0100 Message-Id: <1296210106-11145-8-git-send-email-armbru@redhat.com> In-Reply-To: <1296210106-11145-1-git-send-email-armbru@redhat.com> References: <1296210106-11145-1-git-send-email-armbru@redhat.com> Subject: [Qemu-devel] [PATCH v2 07/11] blockdev: Replace drive_add()'s fmt, ... by optstr parameter List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, stefanha@gmail.com, hare@suse.de 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 --- blockdev.c | 8 +------- blockdev.h | 5 +---- vl.c | 13 +++++++------ 3 files changed, 9 insertions(+), 17 deletions(-) diff --git a/blockdev.c b/blockdev.c index 60dba1a..a5e56ee 100644 --- a/blockdev.c +++ b/blockdev.c @@ -81,17 +81,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; diff --git a/blockdev.h b/blockdev.h index eb76573..3b9c5fd 100644 --- a/blockdev.h +++ b/blockdev.h @@ -46,10 +46,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 */ diff --git a/vl.c b/vl.c index 5399e33..2fa1ec0 100644 --- a/vl.c +++ b/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 "" @@ -1912,6 +1911,7 @@ int main(int argc, char **argv, char **envp) const char *incoming = NULL; int show_vnc_port = 0; int defconfig = 1; + char buf[256]; #ifdef CONFIG_SIMPLE_TRACE const char *trace_file = NULL; @@ -2028,16 +2028,17 @@ int main(int argc, char **argv, char **envp) break; case QEMU_OPTION_hda: 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" : ""); - break; + drive_add(IF_DEFAULT, 0, optarg, buf); + break; case QEMU_OPTION_hdb: case QEMU_OPTION_hdc: case QEMU_OPTION_hdd: -- 1.7.2.3