vnc: support "-vnc help"

Use qemu_opts_parse_noisily now that HMP does not call
vnc_parse anymore.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
Message-Id: <20210120144235.345983-4-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2021-01-20 15:42:35 +01:00
parent 0afec75734
commit 653c974735
4 changed files with 11 additions and 12 deletions

View File

@ -439,7 +439,7 @@ void vnc_display_open(const char *id, Error **errp);
void vnc_display_add_client(const char *id, int csock, bool skipauth); void vnc_display_add_client(const char *id, int csock, bool skipauth);
int vnc_display_password(const char *id, const char *password); int vnc_display_password(const char *id, const char *password);
int vnc_display_pw_expire(const char *id, time_t expires); int vnc_display_pw_expire(const char *id, time_t expires);
QemuOpts *vnc_parse(const char *str, Error **errp); void vnc_parse(const char *str);
int vnc_init_func(void *opaque, QemuOpts *opts, Error **errp); int vnc_init_func(void *opaque, QemuOpts *opts, Error **errp);
/* input.c */ /* input.c */

View File

@ -1113,7 +1113,7 @@ static void parse_display(const char *p)
* display access. * display access.
*/ */
if (*opts == '=') { if (*opts == '=') {
vnc_parse(opts + 1, &error_fatal); vnc_parse(opts + 1);
} else { } else {
error_report("VNC requires a display argument vnc=<display>"); error_report("VNC requires a display argument vnc=<display>");
exit(1); exit(1);
@ -1402,7 +1402,7 @@ static void qemu_create_default_devices(void)
if (!qemu_display_find_default(&dpy)) { if (!qemu_display_find_default(&dpy)) {
dpy.type = DISPLAY_TYPE_NONE; dpy.type = DISPLAY_TYPE_NONE;
#if defined(CONFIG_VNC) #if defined(CONFIG_VNC)
vnc_parse("localhost:0,to=99,id=default", &error_abort); vnc_parse("localhost:0,to=99,id=default");
#endif #endif
} }
} }
@ -3186,7 +3186,7 @@ void qemu_init(int argc, char **argv, char **envp)
} }
break; break;
case QEMU_OPTION_vnc: case QEMU_OPTION_vnc:
vnc_parse(optarg, &error_fatal); vnc_parse(optarg);
break; break;
case QEMU_OPTION_no_acpi: case QEMU_OPTION_no_acpi:
olist = qemu_find_opts("machine"); olist = qemu_find_opts("machine");

View File

@ -10,13 +10,12 @@ int vnc_display_pw_expire(const char *id, time_t expires)
{ {
return -ENODEV; return -ENODEV;
}; };
QemuOpts *vnc_parse(const char *str, Error **errp) void vnc_parse(const char *str)
{ {
if (strcmp(str, "none") == 0) { if (strcmp(str, "none") == 0) {
return NULL; return;
} }
error_setg(errp, "VNC support is disabled"); error_setg(&error_fatal, "VNC support is disabled");
return NULL;
} }
int vnc_init_func(void *opaque, QemuOpts *opts, Error **errp) int vnc_init_func(void *opaque, QemuOpts *opts, Error **errp)
{ {

View File

@ -50,6 +50,7 @@
#include "crypto/random.h" #include "crypto/random.h"
#include "qom/object_interfaces.h" #include "qom/object_interfaces.h"
#include "qemu/cutils.h" #include "qemu/cutils.h"
#include "qemu/help_option.h"
#include "io/dns-resolver.h" #include "io/dns-resolver.h"
#define VNC_REFRESH_INTERVAL_BASE GUI_REFRESH_INTERVAL_DEFAULT #define VNC_REFRESH_INTERVAL_BASE GUI_REFRESH_INTERVAL_DEFAULT
@ -4211,14 +4212,14 @@ static void vnc_auto_assign_id(QemuOptsList *olist, QemuOpts *opts)
qemu_opts_set_id(opts, id); qemu_opts_set_id(opts, id);
} }
QemuOpts *vnc_parse(const char *str, Error **errp) void vnc_parse(const char *str)
{ {
QemuOptsList *olist = qemu_find_opts("vnc"); QemuOptsList *olist = qemu_find_opts("vnc");
QemuOpts *opts = qemu_opts_parse(olist, str, true, errp); QemuOpts *opts = qemu_opts_parse_noisily(olist, str, !is_help_option(str));
const char *id; const char *id;
if (!opts) { if (!opts) {
return NULL; exit(1);
} }
id = qemu_opts_id(opts); id = qemu_opts_id(opts);
@ -4226,7 +4227,6 @@ QemuOpts *vnc_parse(const char *str, Error **errp)
/* auto-assign id if not present */ /* auto-assign id if not present */
vnc_auto_assign_id(olist, opts); vnc_auto_assign_id(olist, opts);
} }
return opts;
} }
int vnc_init_func(void *opaque, QemuOpts *opts, Error **errp) int vnc_init_func(void *opaque, QemuOpts *opts, Error **errp)