Message ID | 20180906151227.25514-3-marcandre.lureau@redhat.com |
---|---|
State | New |
Headers | show |
Series | Various qemu command line options help improvements | expand |
On 09/06/2018 10:12 AM, Marc-André Lureau wrote: > Modify qemu_opts_print_help(): > - to print expected argument type > - skip description if not available > - sort lines > - prefix with the list name (like qdev, to avoid confusion) > - drop 16-chars alignment, use a '-' as seperator for option name and > description > > For ex, "-spice ?" output is changed from: s/?/help/ > > port No description available > tls-port No description available > addr No description available > [...] > gl No description available > rendernode No description available > > to: > > spice.addr=str > spice.agent-mouse=bool (on/off) > spice.disable-agent-file-xfer=bool (on/off) > [...] > spice.x509-key-password=str > spice.zlib-glz-wan-compression=str > > "qemu-img create -f qcow2 -o ?", changed from: and again > > size Virtual disk size > compat Compatibility level (0.10 or 1.1) > backing_file File name of a base image > [...] > lazy_refcounts Postpone refcount updates > refcount_bits Width of a reference count entry in bits > > to: > > backing_file=str - File name of a base image > backing_fmt=str - Image format of the base image > cluster_size=size - qcow2 cluster size > [...] > refcount_bits=num - Width of a reference count entry in bits > size=size - Virtual disk size > > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> > --- > util/qemu-option.c | 44 ++++++++++++++++++++++++++++++++++++++++++-- > 1 file changed, 42 insertions(+), 2 deletions(-) > Reviewed-by: Eric Blake <eblake@redhat.com>
diff --git a/util/qemu-option.c b/util/qemu-option.c index 557b6c6626..a54cf74b49 100644 --- a/util/qemu-option.c +++ b/util/qemu-option.c @@ -208,17 +208,57 @@ out: return result; } +static const char *opt_type_to_string(enum QemuOptType type) +{ + switch (type) { + case QEMU_OPT_STRING: + return "str"; + case QEMU_OPT_BOOL: + return "bool (on/off)"; + case QEMU_OPT_NUMBER: + return "num"; + case QEMU_OPT_SIZE: + return "size"; + } + + g_assert_not_reached(); +} + +static gint +pstrcmp(const char **a, const char **b) +{ + return g_strcmp0(*a, *b); +} + void qemu_opts_print_help(QemuOptsList *list) { QemuOptDesc *desc; + int i; + GPtrArray *array = g_ptr_array_new(); assert(list); desc = list->desc; while (desc && desc->name) { - printf("%-16s %s\n", desc->name, - desc->help ? desc->help : "No description available"); + GString *str = g_string_new(NULL); + if (list->name) { + g_string_append_printf(str, "%s.", list->name); + } + g_string_append_printf(str, "%s=%s", desc->name, + opt_type_to_string(desc->type)); + if (desc->help) { + g_string_append_printf(str, " - %s", desc->help); + } + g_ptr_array_add(array, g_string_free(str, false)); desc++; } + + g_ptr_array_sort(array, (GCompareFunc)pstrcmp); + for (i = 0; i < array->len; i++) { + printf("%s\n", (char *)array->pdata[i]); + } + g_ptr_array_set_free_func(array, g_free); + g_ptr_array_free(array, true); + } /* ------------------------------------------------------------------ */
Modify qemu_opts_print_help(): - to print expected argument type - skip description if not available - sort lines - prefix with the list name (like qdev, to avoid confusion) - drop 16-chars alignment, use a '-' as seperator for option name and description For ex, "-spice ?" output is changed from: port No description available tls-port No description available addr No description available [...] gl No description available rendernode No description available to: spice.addr=str spice.agent-mouse=bool (on/off) spice.disable-agent-file-xfer=bool (on/off) [...] spice.x509-key-password=str spice.zlib-glz-wan-compression=str "qemu-img create -f qcow2 -o ?", changed from: size Virtual disk size compat Compatibility level (0.10 or 1.1) backing_file File name of a base image [...] lazy_refcounts Postpone refcount updates refcount_bits Width of a reference count entry in bits to: backing_file=str - File name of a base image backing_fmt=str - Image format of the base image cluster_size=size - qcow2 cluster size [...] refcount_bits=num - Width of a reference count entry in bits size=size - Virtual disk size Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- util/qemu-option.c | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-)