From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:52263) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TTqpk-0007Ya-Ub for qemu-devel@nongnu.org; Thu, 01 Nov 2012 05:13:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TTqpj-0000Zr-D8 for qemu-devel@nongnu.org; Thu, 01 Nov 2012 05:13:04 -0400 Received: from mail-pb0-f45.google.com ([209.85.160.45]:46990) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TTqpi-0000Uq-Rw for qemu-devel@nongnu.org; Thu, 01 Nov 2012 05:13:03 -0400 Received: by mail-pb0-f45.google.com with SMTP id rp2so1555663pbb.4 for ; Thu, 01 Nov 2012 02:13:02 -0700 (PDT) Sender: Dong Xu Wang From: Dong Xu Wang Date: Thu, 1 Nov 2012 17:12:27 +0800 Message-Id: <1351761150-20705-8-git-send-email-wdongxu@linux.vnet.ibm.com> In-Reply-To: <1351761150-20705-1-git-send-email-wdongxu@linux.vnet.ibm.com> References: <1351761150-20705-1-git-send-email-wdongxu@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH V5 07/10] add def_print_str and use it in qemu_opts_print. List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, Dong Xu Wang qemu_opts_print has no user now, so can re-write the function safely. qemu_opts_print will be used while using "qemu-img create", it will produce the same output as previous code. The behavior of this function has changed: 1. Print every possible option, whether a value has been set or not. 2. Option descriptors may provide a default value. 3. Print to stdout instead of stderr. Previously the behavior was to print every option that has been set. Options that have not been set would be skipped. Signed-off-by: Dong Xu Wang --- v4->v5: 1) Rewrite qemu_opts_print. 2) Do not use def_value, but def_print_str. qemu-option.c | 27 ++++++++++++++++++++------- qemu-option.h | 1 + 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/qemu-option.c b/qemu-option.c index 94557cf..e0628da 100644 --- a/qemu-option.c +++ b/qemu-option.c @@ -862,15 +862,28 @@ void qemu_opts_del(QemuOpts *opts) int qemu_opts_print(QemuOpts *opts, void *dummy) { - QemuOpt *opt; + QemuOptDesc *desc = opts->list->desc; - fprintf(stderr, "%s: %s:", opts->list->name, - opts->id ? opts->id : ""); - QTAILQ_FOREACH(opt, &opts->head, next) { - fprintf(stderr, " %s=\"%s\"", opt->name, opt->str); + for (desc = opts->list->desc; desc && desc->name; desc++) { + const char *value = desc->def_print_str; + QemuOpt *opt; + + opt = qemu_opt_find(opts, desc->name); + if (opt) { + value = opt->str; + } + + if (!value) { + continue; + } + + if (desc->type == QEMU_OPT_STRING) { + printf("%s='%s' ", desc->name, value); + } else { + printf("%s=%s ", desc->name, value); + } } - fprintf(stderr, "\n"); - return 0; + return 0; } static int opts_do_parse(QemuOpts *opts, const char *params, diff --git a/qemu-option.h b/qemu-option.h index 002dd07..ab02023 100644 --- a/qemu-option.h +++ b/qemu-option.h @@ -96,6 +96,7 @@ typedef struct QemuOptDesc { const char *name; enum QemuOptType type; const char *help; + const char *def_print_str; } QemuOptDesc; struct QemuOptsList { -- 1.7.1