[PATCH v6 2/3] query-command-line-options: expose implicit parameter name

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patch added a new field to expose implicit parameter name,
we make it optional for compatibility.

Suggested-by: Eric Blake <eblake@xxxxxxxxxx>
Signed-off-by: Amos Kong <akong@xxxxxxxxxx>
---
 qapi-schema.json   |  6 +++++-
 util/qemu-config.c | 24 +++++++++++++++---------
 2 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/qapi-schema.json b/qapi-schema.json
index 391356f..9341033 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -4088,12 +4088,16 @@
 #
 # @help: #optional human readable text string, not suitable for parsing.
 #
+# @implied-name: #optional, if present and true, the parameter can be
+#                specified as '-option value' instead of the preferred
+#                spelling of '-option name=value' (since 2.1)
+#
 # Since 1.5
 ##
 { 'type': 'CommandLineParameterInfo',
   'data': { 'name': 'str',
             'type': 'CommandLineParameterType',
-            '*help': 'str' } }
+            '*help': 'str', '*implied-name': 'bool' } }
 
 ##
 # @CommandLineOptionInfo:
diff --git a/util/qemu-config.c b/util/qemu-config.c
index 508adbc..85bb0c8 100644
--- a/util/qemu-config.c
+++ b/util/qemu-config.c
@@ -39,17 +39,23 @@ QemuOptsList *qemu_find_opts(const char *group)
     return ret;
 }
 
-static CommandLineParameterInfoList *get_param_info(const QemuOptDesc *desc)
+static CommandLineParameterInfoList *get_param_info(const QemuOptsList *list)
 {
     CommandLineParameterInfoList *param_list = NULL, *entry;
     CommandLineParameterInfo *info;
     int i;
 
-    for (i = 0; desc[i].name != NULL; i++) {
+    for (i = 0; list->desc[i].name != NULL; i++) {
         info = g_malloc0(sizeof(*info));
-        info->name = g_strdup(desc[i].name);
+        info->name = g_strdup(list->desc[i].name);
 
-        switch (desc[i].type) {
+        info->has_implied_name = true;
+        if (list->implied_opt_name && !strcmp(list->desc[i].name,
+                                              list->implied_opt_name)) {
+            info->implied_name = true;
+        }
+
+        switch (list->desc[i].type) {
         case QEMU_OPT_STRING:
             info->type = COMMAND_LINE_PARAMETER_TYPE_STRING;
             break;
@@ -64,9 +70,9 @@ static CommandLineParameterInfoList *get_param_info(const QemuOptDesc *desc)
             break;
         }
 
-        if (desc[i].help) {
+        if (list->desc[i].help) {
             info->has_help = true;
-            info->help = g_strdup(desc[i].help);
+            info->help = g_strdup(list->desc[i].help);
         }
 
         entry = g_malloc0(sizeof(*entry));
@@ -120,9 +126,9 @@ static CommandLineParameterInfoList *get_drive_infolist(void)
 
     for (i = 0; drive_config_groups[i] != NULL; i++) {
         if (!head) {
-            head = get_param_info(drive_config_groups[i]->desc);
+            head = get_param_info(drive_config_groups[i]);
         } else {
-            cur = get_param_info(drive_config_groups[i]->desc);
+            cur = get_param_info(drive_config_groups[i]);
             connect_infolist(head, cur);
         }
     }
@@ -147,7 +153,7 @@ CommandLineOptionInfoList *qmp_query_command_line_options(bool has_option,
                 info->parameters = get_drive_infolist();
             } else {
                 info->parameters =
-                    get_param_info(vm_config_groups[i]->desc);
+                    get_param_info(vm_config_groups[i]);
             }
             entry = g_malloc0(sizeof(*entry));
             entry->value = info;
-- 
1.8.5.3

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]