[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v22 06/25] add convert functions between QEMUOptionP
From: |
Chunyan Liu |
Subject: |
[Qemu-devel] [PATCH v22 06/25] add convert functions between QEMUOptionParameter to QemuOpts |
Date: |
Mon, 10 Mar 2014 15:31:42 +0800 |
Add two temp convert functions between QEMUOptionParameter to QemuOpts, so that
next patch can use it. It will simplify next patch for easier review.
Signed-off-by: Chunyan Liu <address@hidden>
---
include/qemu/option.h | 2 +
util/qemu-option.c | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 107 insertions(+)
diff --git a/include/qemu/option.h b/include/qemu/option.h
index de4912a..a6aca59 100644
--- a/include/qemu/option.h
+++ b/include/qemu/option.h
@@ -170,4 +170,6 @@ int qemu_opts_foreach(QemuOptsList *list,
qemu_opts_loopfunc func, void *opaque,
QemuOptsList *qemu_opts_append(QemuOptsList *dst, QemuOptsList *list);
void qemu_opts_free(QemuOptsList *list);
void qemu_opts_print_help(QemuOptsList *list);
+QEMUOptionParameter *opts_to_params(QemuOpts *opts);
+QemuOptsList *params_to_opts(QEMUOptionParameter *list);
#endif
diff --git a/util/qemu-option.c b/util/qemu-option.c
index 2c450e0..e05b126 100644
--- a/util/qemu-option.c
+++ b/util/qemu-option.c
@@ -1464,3 +1464,108 @@ void qemu_opts_print_help(QemuOptsList *list)
list->desc[i].help : "");
}
}
+
+/* convert QEMUOptionParameter to QemuOpts */
+QemuOptsList *params_to_opts(QEMUOptionParameter *list)
+{
+ QemuOptsList *opts = NULL;
+ size_t num_opts, i = 0;
+
+ if (!list) {
+ return NULL;
+ }
+
+ num_opts = count_option_parameters(list);
+ opts = g_malloc0(sizeof(QemuOptsList) +
+ (num_opts + 1) * sizeof(QemuOptDesc));
+ QTAILQ_INIT(&opts->head);
+ opts->desc[i].name = NULL;
+
+ while (list && list->name) {
+ opts->desc[i].name = g_strdup(list->name);
+ opts->desc[i].help = g_strdup(list->help);
+ switch (list->type) {
+ case OPT_FLAG:
+ opts->desc[i].type = QEMU_OPT_BOOL;
+ opts->desc[i].def_value_str = list->value.n ? "on" : "off";
+ break;
+
+ case OPT_NUMBER:
+ opts->desc[i].type = QEMU_OPT_NUMBER;
+ if (list->value.n) {
+ opts->desc[i].def_value_str =
+ g_strdup_printf("%" PRIu64, list->value.n);
+ }
+ break;
+
+ case OPT_SIZE:
+ opts->desc[i].type = QEMU_OPT_SIZE;
+ if (list->value.n) {
+ opts->desc[i].def_value_str =
+ g_strdup_printf("%" PRIu64, list->value.n);
+ }
+ break;
+
+ case OPT_STRING:
+ opts->desc[i].type = QEMU_OPT_STRING;
+ opts->desc[i].def_value_str = g_strdup(list->value.s);
+ break;
+ }
+
+ i++;
+ list++;
+ opts->desc[i].name = NULL;
+ }
+
+ return opts;
+}
+
+QEMUOptionParameter *opts_to_params(QemuOpts *opts)
+{
+ QEMUOptionParameter *dest = NULL;
+ QemuOptDesc *desc;
+ size_t num_opts, i = 0;
+ const char *tmp;
+
+ if (!opts || !opts->list || !opts->list->desc) {
+ return NULL;
+ }
+
+ num_opts = count_opts_list(opts->list);
+ dest = g_malloc0((num_opts + 1) * sizeof(QEMUOptionParameter));
+ dest[i].name = NULL;
+
+ desc = opts->list->desc;
+ while (desc && desc->name) {
+ dest[i].name = g_strdup(desc->name);
+ dest[i].help = g_strdup(desc->help);
+ switch (desc->type) {
+ case QEMU_OPT_STRING:
+ dest[i].type = OPT_STRING;
+ tmp = qemu_opt_get(opts, desc->name);
+ dest[i].value.s = g_strdup(tmp);
+ break;
+
+ case QEMU_OPT_BOOL:
+ dest[i].type = OPT_FLAG;
+ dest[i].value.n = qemu_opt_get_bool(opts, desc->name, 0) ? 1 : 0;
+ break;
+
+ case QEMU_OPT_NUMBER:
+ dest[i].type = OPT_NUMBER;
+ dest[i].value.n = qemu_opt_get_number(opts, desc->name, 0);
+ break;
+
+ case QEMU_OPT_SIZE:
+ dest[i].type = OPT_SIZE;
+ dest[i].value.n = qemu_opt_get_size(opts, desc->name, 0);
+ break;
+ }
+
+ i++;
+ desc++;
+ dest[i].name = NULL;
+ }
+
+ return dest;
+}
--
1.7.12.4
- Re: [Qemu-devel] [PATCH v22 05/25] add some QemuOpts functions for replace work, (continued)
- Re: [Qemu-devel] [PATCH v22 05/25] add some QemuOpts functions for replace work, Eric Blake, 2014/03/11
- Re: [Qemu-devel] [PATCH v22 05/25] add some QemuOpts functions for replace work, Chunyan Liu, 2014/03/11
- Re: [Qemu-devel] [PATCH v22 05/25] add some QemuOpts functions for replace work, Eric Blake, 2014/03/12
- Re: [Qemu-devel] [PATCH v22 05/25] add some QemuOpts functions for replace work, Chunyan Liu, 2014/03/13
- Re: [Qemu-devel] [PATCH v22 05/25] add some QemuOpts functions for replace work, Chunyan Liu, 2014/03/18
Re: [Qemu-devel] [PATCH v22 05/25] add some QemuOpts functions for replace work, Leandro Dorileo, 2014/03/17
[Qemu-devel] [PATCH v22 04/25] improve assertion in qemu_opt_get functions, Chunyan Liu, 2014/03/10
[Qemu-devel] [PATCH v22 06/25] add convert functions between QEMUOptionParameter to QemuOpts,
Chunyan Liu <=
[Qemu-devel] [PATCH v22 08/25] cow.c: replace QEMUOptionParameter with QemuOpts, Chunyan Liu, 2014/03/10
[Qemu-devel] [PATCH v22 07/25] change block layer to support both QemuOpts and QEMUOptionParamter, Chunyan Liu, 2014/03/10
[Qemu-devel] [PATCH v22 09/25] gluster.c: replace QEMUOptionParameter with QemuOpts, Chunyan Liu, 2014/03/10