diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2012-02-02 09:47:13 +0100 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2012-02-07 13:52:41 +0100 |
commit | d822979bdf80c3ea9752615af15f231b4c4ce547 (patch) | |
tree | 108ee38d18a61cf3550d2f24a70de6b601fd897d /hw/qdev-monitor.c | |
parent | 1d9c5a12cefcd914d99c32de9aac72966a4788ae (diff) |
qdev: remove direct calls to print/parse
There's no need to call into ->parse and ->print manually. The
QOM legacy properties do that for us.
Furthermore, in some cases legacy and static properties have exactly
the same behavior, and we could drop the legacy properties right away.
Add an appropriate fallback to prepare for this.
Reviewed-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'hw/qdev-monitor.c')
-rw-r--r-- | hw/qdev-monitor.c | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/hw/qdev-monitor.c b/hw/qdev-monitor.c index 135c2bf237..49f13ca087 100644 --- a/hw/qdev-monitor.c +++ b/hw/qdev-monitor.c @@ -485,22 +485,26 @@ static void qbus_print(Monitor *mon, BusState *bus, int indent); static void qdev_print_props(Monitor *mon, DeviceState *dev, Property *props, const char *prefix, int indent) { - char buf[64]; - if (!props) return; - while (props->name) { - /* - * TODO Properties without a print method are just for dirty - * hacks. qdev_prop_ptr is the only such PropertyInfo. It's - * marked for removal. The test props->info->print should be - * removed along with it. - */ - if (props->info->print) { - props->info->print(dev, props, buf, sizeof(buf)); - qdev_printf("%s-prop: %s = %s\n", prefix, props->name, buf); + for (; props->name; props++) { + Error *err = NULL; + char *value; + char *legacy_name = g_strdup_printf("legacy-%s", props->name); + if (object_property_get_type(OBJECT(dev), legacy_name, NULL)) { + value = object_property_get_str(OBJECT(dev), legacy_name, &err); + } else { + value = object_property_get_str(OBJECT(dev), props->name, &err); + } + g_free(legacy_name); + + if (err) { + error_free(err); + continue; } - props++; + qdev_printf("%s-prop: %s = %s\n", prefix, props->name, + value && *value ? value : "<null>"); + g_free(value); } } |