[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 11/13] hmp/char: Use qemu_chr_parse_cli_str() for chardev-change
From: |
Kevin Wolf |
Subject: |
[PATCH 11/13] hmp/char: Use qemu_chr_parse_cli_str() for chardev-change |
Date: |
Thu, 12 Nov 2020 18:59:03 +0100 |
Instead of going through the QemuOpts-based parser, go directly from the
given option string to ChardevOptions. This doesn't only avoid legacy
code, but it also simplifies the implementation.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
monitor/hmp-cmds.c | 27 +++++++++------------------
1 file changed, 9 insertions(+), 18 deletions(-)
diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c
index a6a6684df1..0244068de8 100644
--- a/monitor/hmp-cmds.c
+++ b/monitor/hmp-cmds.c
@@ -1793,34 +1793,25 @@ void hmp_chardev_add(Monitor *mon, const QDict *qdict)
void hmp_chardev_change(Monitor *mon, const QDict *qdict)
{
const char *args = qdict_get_str(qdict, "args");
- const char *id;
+ const char *id = qdict_get_str(qdict, "id");
+ char *optstr;
Error *err = NULL;
- ChardevBackend *backend = NULL;
+ ChardevOptions *options = NULL;
ChardevReturn *ret = NULL;
- QemuOpts *opts = qemu_opts_parse_noisily(qemu_find_opts("chardev"), args,
- true);
- if (!opts) {
- error_setg(&err, "Parsing chardev args failed");
- goto end;
- }
- id = qdict_get_str(qdict, "id");
- if (qemu_opts_id(opts)) {
- error_setg(&err, "Unexpected 'id' parameter");
- goto end;
- }
+ optstr = g_strdup_printf("%s,id=%s", args, id);
- backend = qemu_chr_parse_opts(opts, &err);
- if (!backend) {
+ options = qemu_chr_parse_cli_str(optstr, &err);
+ if (!options) {
goto end;
}
- ret = qmp_chardev_change(id, backend, &err);
+ ret = qmp_chardev_change(options->id, options->backend, &err);
end:
+ g_free(optstr);
qapi_free_ChardevReturn(ret);
- qapi_free_ChardevBackend(backend);
- qemu_opts_del(opts);
+ qapi_free_ChardevOptions(options);
hmp_handle_error(mon, err);
}
--
2.28.0
- [PATCH 04/13] char: Add qemu_chr_translate_legacy_options(), (continued)
- [PATCH 04/13] char: Add qemu_chr_translate_legacy_options(), Kevin Wolf, 2020/11/12
- [PATCH 05/13] char-socket: Implement compat code for CLI QAPIfication, Kevin Wolf, 2020/11/12
- [PATCH 06/13] char-udp: Implement compat code for CLI QAPIfication, Kevin Wolf, 2020/11/12
- [PATCH 07/13] char: Add qemu_chr_parse_cli_dict/str(), Kevin Wolf, 2020/11/12
- [PATCH 08/13] char: Add mux option to ChardevOptions, Kevin Wolf, 2020/11/12
- [PATCH 09/13] qemu-storage-daemon: QAPIfy --chardev, Kevin Wolf, 2020/11/12
- [PATCH 10/13] char: Implement qemu_chr_new_from_opts() in terms of QAPI, Kevin Wolf, 2020/11/12
- [PATCH 11/13] hmp/char: Use qemu_chr_parse_cli_str() for chardev-change,
Kevin Wolf <=
- [PATCH 12/13] char: Remove qemu_chr_parse_opts(), Kevin Wolf, 2020/11/12
- [PATCH 13/13] char: Remove ChardevClass.parse, Kevin Wolf, 2020/11/12