qemu-option: improve qemu_opts_print_help() output
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 help" 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 help", 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> Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
e05979d0d7
commit
9cbef9d68e
@ -208,17 +208,51 @@ 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();
|
||||
}
|
||||
|
||||
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)qemu_pstrcmp0);
|
||||
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);
|
||||
|
||||
}
|
||||
/* ------------------------------------------------------------------ */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user