Object *user_creatable_add_opts(QemuOpts *opts, Error **errp) { Visitor *v; QDict *pdict; Object *obj; const char *id = qemu_opts_id(opts); char *type = qemu_opt_get_del(opts, "qom-type"); if (!type) { error_setg(errp, QERR_MISSING_PARAMETER, "qom-type"); return NULL; } if (!id) { error_setg(errp, QERR_MISSING_PARAMETER, "id"); qemu_opt_set(opts, "qom-type", type, &error_abort); g_free(type); return NULL; } qemu_opts_set_id(opts, NULL); pdict = qemu_opts_to_qdict(opts, NULL); v = opts_visitor_new(opts); obj = user_creatable_add_type(type, id, pdict, v, errp); visit_free(v); qemu_opts_set_id(opts, (char *) id); qemu_opt_set(opts, "qom-type", type, &error_abort); g_free(type); qobject_unref(pdict); return obj; }
static int config_write_opts(QemuOpts *opts, void *opaque) { struct ConfigWriteData *data = opaque; const char *id = qemu_opts_id(opts); if (id) { fprintf(data->fp, "[%s \"%s\"]\n", data->list->name, id); } else { fprintf(data->fp, "[%s]\n", data->list->name); } qemu_opt_foreach(opts, config_write_opt, data, 0); fprintf(data->fp, "\n"); return 0; }