f376b2b9e2
Very clean rebase, only the +pve version handling needed manual fixing. Drops two applied patches from extra/ and adds one new from upstream (extra/0001*, fixes VNC over unix sockets) as well as 3 of my own for allowing password changes on custom VNC displays again (as seen and reviewed upstream, but not yet applied). Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
55 lines
2.1 KiB
Diff
55 lines
2.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Stefan Reiter <s.reiter@proxmox.com>
|
|
Date: Wed, 1 Sep 2021 16:51:04 +0200
|
|
Subject: [PATCH] monitor/hmp: add support for flag argument with value
|
|
|
|
Adds support for the "-xS" parameter type, where "-x" denotes a flag
|
|
name and the "S" suffix indicates that this flag is supposed to take an
|
|
arbitrary string parameter.
|
|
|
|
These parameters are always optional, the entry in the qdict will be
|
|
omitted if the flag is not given.
|
|
|
|
Reviewed-by: Eric Blake <eblake@redhat.com>
|
|
Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
|
|
---
|
|
monitor/hmp.c | 17 ++++++++++++++++-
|
|
1 file changed, 16 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/monitor/hmp.c b/monitor/hmp.c
|
|
index d50c3124e1..a32dce7a35 100644
|
|
--- a/monitor/hmp.c
|
|
+++ b/monitor/hmp.c
|
|
@@ -980,6 +980,7 @@ static QDict *monitor_parse_arguments(Monitor *mon,
|
|
{
|
|
const char *tmp = p;
|
|
int skip_key = 0;
|
|
+ int ret;
|
|
/* option */
|
|
|
|
c = *typestr++;
|
|
@@ -1002,8 +1003,22 @@ static QDict *monitor_parse_arguments(Monitor *mon,
|
|
}
|
|
if (skip_key) {
|
|
p = tmp;
|
|
+ } else if (*typestr == 'S') {
|
|
+ /* has option with string value */
|
|
+ typestr++;
|
|
+ tmp = p++;
|
|
+ while (qemu_isspace(*p)) {
|
|
+ p++;
|
|
+ }
|
|
+ ret = get_str(buf, sizeof(buf), &p);
|
|
+ if (ret < 0) {
|
|
+ monitor_printf(mon, "%s: value expected for -%c\n",
|
|
+ cmd->name, *tmp);
|
|
+ goto fail;
|
|
+ }
|
|
+ qdict_put_str(qdict, key, buf);
|
|
} else {
|
|
- /* has option */
|
|
+ /* has boolean option */
|
|
p++;
|
|
qdict_put_bool(qdict, key, true);
|
|
}
|