void hmp_qom_set(Monitor *mon, const QDict *qdict)
{
+ const bool json = qdict_get_try_bool(qdict, "json", false);
const char *path = qdict_get_str(qdict, "path");
const char *property = qdict_get_str(qdict, "property");
const char *value = qdict_get_str(qdict, "value");
Error *err = NULL;
- QObject *obj;
- obj = qobject_from_json(value, &err);
- if (err == NULL) {
- qmp_qom_set(path, property, obj, &err);
+ if (!json) {
+ Object *obj = object_resolve_path(path, NULL);
+
+ if (!obj) {
+ error_set(&err, ERROR_CLASS_DEVICE_NOT_FOUND,
+ "Device '%s' not found", path);
+ } else {
+ object_property_parse(obj, property, value, &err);
+ }
+ } else {
+ QObject *obj = qobject_from_json(value, &err);
+
+ if (!err) {
+ qmp_qom_set(path, property, obj, &err);
+ }
}
hmp_handle_error(mon, err);
qobject_unref(str);
}
+ qobject_unref(obj);
hmp_handle_error(mon, err);
}