qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Dong Xu Wang <wdongxu@linux.vnet.ibm.com>
To: qemu-devel@nongnu.org
Cc: kwolf@redhat.com, Dong Xu Wang <wdongxu@linux.vnet.ibm.com>
Subject: [Qemu-devel] [PATCH V7 07/10] add def_print_str and use it in qemu_opts_print.
Date: Thu,  6 Dec 2012 14:47:24 +0800	[thread overview]
Message-ID: <1354776447-12041-8-git-send-email-wdongxu@linux.vnet.ibm.com> (raw)
In-Reply-To: <1354776447-12041-1-git-send-email-wdongxu@linux.vnet.ibm.com>

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 <wdongxu@linux.vnet.ibm.com>
---
 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 : "<noid>");
-    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

  parent reply	other threads:[~2012-12-06  6:48 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-06  6:47 [Qemu-devel] [PATCH V7 00/10] replace QEMUOptionParameter with QemuOpts parser Dong Xu Wang
2012-12-06  6:47 ` [Qemu-devel] [PATCH V7 01/10] qemu-option: opt_set(): split it up into more functions Dong Xu Wang
2012-12-06  6:47 ` [Qemu-devel] [PATCH V7 02/10] qemu-option: qemu_opts_validate(): fix duplicated code Dong Xu Wang
2012-12-06  6:47 ` [Qemu-devel] [PATCH V7 03/10] qemu-option: qemu_opt_set_bool(): fix code duplication Dong Xu Wang
2012-12-06  6:47 ` [Qemu-devel] [PATCH V7 04/10] introduce qemu_opts_create_nofail function Dong Xu Wang
2012-12-06  6:47 ` [Qemu-devel] [PATCH V7 05/10] use qemu_opts_create_nofail Dong Xu Wang
2012-12-06  6:47 ` [Qemu-devel] [PATCH V7 06/10] create new function: qemu_opt_set_number Dong Xu Wang
2012-12-06  6:47 ` Dong Xu Wang [this message]
2012-12-11 15:51   ` [Qemu-devel] [PATCH V7 07/10] add def_print_str and use it in qemu_opts_print Kevin Wolf
2012-12-06  6:47 ` [Qemu-devel] [PATCH V7 08/10] Create four opts list related functions Dong Xu Wang
2012-12-06  6:47 ` [Qemu-devel] [PATCH V7 09/10] Use QemuOpts support in block layer Dong Xu Wang
2012-12-11 15:52   ` Kevin Wolf
2012-12-06  6:47 ` [Qemu-devel] [PATCH V7 10/10] remove QEMUOptionParameter related functions and struct Dong Xu Wang
2012-12-11  8:43 ` [Qemu-devel] [PATCH V7 00/10] replace QEMUOptionParameter with QemuOpts parser Stefan Hajnoczi
2012-12-11 15:57 ` Kevin Wolf
2012-12-12  7:06   ` Dong Xu Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1354776447-12041-8-git-send-email-wdongxu@linux.vnet.ibm.com \
    --to=wdongxu@linux.vnet.ibm.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).