qom: Add user_creatable_print_help_from_qdict()

This adds a function that, given a QDict of non-help options, prints
help for user creatable objects.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20201007164903.282198-4-kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Kevin Wolf 2020-10-07 18:49:02 +02:00
parent 0e301d4427
commit c9ac145843
2 changed files with 27 additions and 3 deletions

View File

@ -154,13 +154,28 @@ int user_creatable_add_opts_foreach(void *opaque,
* @type: the QOM type to be added * @type: the QOM type to be added
* @opts: options to create * @opts: options to create
* *
* Prints help if requested in @opts. * Prints help if requested in @type or @opts. Note that if @type is neither
* "help"/"?" nor a valid user creatable type, no help will be printed
* regardless of @opts.
* *
* Returns: true if @opts contained a help option and help was printed, false * Returns: true if a help option was found and help was printed, false
* if no help option was found. * otherwise.
*/ */
bool user_creatable_print_help(const char *type, QemuOpts *opts); bool user_creatable_print_help(const char *type, QemuOpts *opts);
/**
* user_creatable_print_help_from_qdict:
* @args: options to create
*
* Prints help considering the other options given in @args (if "qom-type" is
* given and valid, print properties for the type, otherwise print valid types)
*
* In contrast to user_creatable_print_help(), this function can't return that
* no help was requested. It should only be called if we know that help is
* requested and it will always print some help.
*/
void user_creatable_print_help_from_qdict(QDict *args);
/** /**
* user_creatable_del: * user_creatable_del:
* @id: the unique ID for the object * @id: the unique ID for the object

View File

@ -279,6 +279,15 @@ bool user_creatable_print_help(const char *type, QemuOpts *opts)
return false; return false;
} }
void user_creatable_print_help_from_qdict(QDict *args)
{
const char *type = qdict_get_try_str(args, "qom-type");
if (!type || !user_creatable_print_type_properites(type)) {
user_creatable_print_types();
}
}
bool user_creatable_del(const char *id, Error **errp) bool user_creatable_del(const char *id, Error **errp)
{ {
Object *container; Object *container;