Please ignore, duplicate of 01/20 already on the list. It took so long for
01/20 to appear on the list that I thought it was lost.
Alon
On Wed, Feb 02, 2011 at 11:46:07PM +0200, Alon Levy wrote:
> another callback added to PropertyInfo, for later use by PROP_TYPE_ENUM.
> Allows printing of runtime computed options when doing:
> qemu -device foo,?
> ---
> hw/qdev.c | 10 +++++++++-
> hw/qdev.h | 1 +
> 2 files changed, 10 insertions(+), 1 deletions(-)
>
> diff --git a/hw/qdev.c b/hw/qdev.c
> index c7fec44..0b2ad3d 100644
> --- a/hw/qdev.c
> +++ b/hw/qdev.c
> @@ -187,7 +187,15 @@ int qdev_device_help(QemuOpts *opts)
> if (!prop->info->parse) {
> continue; /* no way to set it, don't show */
> }
> - error_printf("%s.%s=%s\n", info->name, prop->name, prop->info->name);
> + if (prop->info->print_options) {
> + char buf[256];
> + int ret;
> + ret = prop->info->print_options(info, prop, buf, sizeof(buf) -
> 3);
> + error_printf("%s.%s=%s%s\n", info->name, prop->name, buf,
> + ret == sizeof(buf) - 3 ? "..." : "" );
> + } else {
> + error_printf("%s.%s=%s\n", info->name, prop->name,
> prop->info->name);
> + }
> }
> return 1;
> }
> diff --git a/hw/qdev.h b/hw/qdev.h
> index 9808f85..fa3221b 100644
> --- a/hw/qdev.h
> +++ b/hw/qdev.h
> @@ -109,6 +109,7 @@ struct PropertyInfo {
> enum PropertyType type;
> int (*parse)(DeviceState *dev, Property *prop, const char *str);
> int (*print)(DeviceState *dev, Property *prop, char *dest, size_t len);
> + int (*print_options)(DeviceInfo *info, Property *prop, char *dest,
> size_t len);
> void (*free)(DeviceState *dev, Property *prop);
> };
>
> --
> 1.7.4
>
>