[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH V4 07/10] add def_value and use it in qemu_opts_prin
From: |
Dong Xu Wang |
Subject: |
[Qemu-devel] [PATCH V4 07/10] add def_value and use it in qemu_opts_print. |
Date: |
Thu, 25 Oct 2012 20:57:25 +0800 |
qemu_opts_print has no user now, so I re-write it and use it in
qemu-img.c.
qemu_opts_print will be used while using "qemu-img create", it will
produce the same output as previous code.
Signed-off-by: Dong Xu Wang <address@hidden>
---
qemu-option.c | 41 ++++++++++++++++++++++++++++++++---------
qemu-option.h | 1 +
2 files changed, 33 insertions(+), 9 deletions(-)
diff --git a/qemu-option.c b/qemu-option.c
index eeb2c9c..54dbdd0 100644
--- a/qemu-option.c
+++ b/qemu-option.c
@@ -860,15 +860,38 @@ void qemu_opts_del(QemuOpts *opts)
int qemu_opts_print(QemuOpts *opts, void *dummy)
{
- QemuOpt *opt;
-
- 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);
- }
- fprintf(stderr, "\n");
- return 0;
+ QemuOpt *opt = NULL;
+ QemuOptDesc *desc = opts->list->desc;
+
+ while (desc && desc->name) {
+ opt = qemu_opt_find(opts, desc->name);
+ switch (desc->type) {
+ case QEMU_OPT_STRING:
+ if (opt != NULL) {
+ printf("%s='%s' ", opt->name, opt->str);
+ }
+ break;
+ case QEMU_OPT_BOOL:
+ printf("%s=%s ", desc->name, (opt && opt->str) ? "on" : "off");
+ break;
+ case QEMU_OPT_NUMBER:
+ case QEMU_OPT_SIZE:
+ if (strcmp(desc->name, "cluster_size")) {
+ printf("%s=%" PRId64 " ", desc->name,
+ (opt && opt->value.uint) ? opt->value.uint : 0);
+ } else {
+ printf("%s=%" PRId64 " ", desc->name,
+ (opt && opt->value.uint) ?
+ opt->value.uint : desc->def_value);
+ }
+ break;
+ default:
+ printf("%s=(unknown type) ", desc->name);
+ break;
+ }
+ desc++;
+ }
+ return 0;
}
static int opts_do_parse(QemuOpts *opts, const char *params,
diff --git a/qemu-option.h b/qemu-option.h
index 002dd07..9ea59cf 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;
+ uint64_t def_value;
} QemuOptDesc;
struct QemuOptsList {
--
1.7.1
- [Qemu-devel] [PATCH V4 00/10] replace QEMUOptionParameter with QemuOpts parser, Dong Xu Wang, 2012/10/25
- [Qemu-devel] [PATCH V4 01/10] qemu-option: opt_set(): split it up into more functions, Dong Xu Wang, 2012/10/25
- [Qemu-devel] [PATCH V4 02/10] qemu-option: qemu_opts_validate(): fix duplicated code, Dong Xu Wang, 2012/10/25
- [Qemu-devel] [PATCH V4 06/10] create new function: qemu_opt_set_number, Dong Xu Wang, 2012/10/25
- [Qemu-devel] [PATCH V4 05/10] use qemu_opts_create_nofail, Dong Xu Wang, 2012/10/25
- [Qemu-devel] [PATCH V4 04/10] introduce qemu_opts_create_nofail function, Dong Xu Wang, 2012/10/25
- [Qemu-devel] [PATCH V4 03/10] qemu-option: qemu_opt_set_bool(): fix code duplication, Dong Xu Wang, 2012/10/25
- [Qemu-devel] [PATCH V4 07/10] add def_value and use it in qemu_opts_print.,
Dong Xu Wang <=
- [Qemu-devel] [PATCH V4 08/10] Create four opts list related functions, Dong Xu Wang, 2012/10/25
- [Qemu-devel] [PATCH V4 10/10] remove QEMUOptionParameter related functions and struct, Dong Xu Wang, 2012/10/25
- [Qemu-devel] [PATCH V4 09/10] Use QemuOpts support in block layer, Dong Xu Wang, 2012/10/25