aboutsummaryrefslogtreecommitdiff
path: root/util/qemu-option.c
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2017-02-09 16:58:39 +0000
committerPeter Maydell <peter.maydell@linaro.org>2017-02-09 16:58:39 +0000
commit8b1897725d07c02a55c06e1c1a885c5c17f15b0f (patch)
tree3fdc2a6a05180fa8ccb0fbacc7f139153387918d /util/qemu-option.c
parentf073cd3a2bf1054135271b837c58a7da650dd84b (diff)
parent396f935a9aff3cefd288bdb2b20024fb9dcfa062 (diff)
Merge remote-tracking branch 'remotes/kraxel/tags/pull-ui-20170209-2' into staging
vnc: add support for multiple listening sockets. vnc: misc fixes and cleanups. # gpg: Signature made Thu 09 Feb 2017 16:45:02 GMT # gpg: using RSA key 0x4CB6D8EED3E87138 # gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>" # gpg: aka "Gerd Hoffmann <gerd@kraxel.org>" # gpg: aka "Gerd Hoffmann (private) <kraxel@gmail.com>" # Primary key fingerprint: A032 8CFF B93A 17A7 9901 FE7D 4CB6 D8EE D3E8 7138 * remotes/kraxel/tags/pull-ui-20170209-2: ui: add ability to specify multiple VNC listen addresses util: add iterators for QemuOpts values ui: let VNC server listen on all resolved IP addresses ui: extract code to connect/listen from vnc_display_open ui: refactor code for populating SocketAddress from vnc_display_open ui: refactor VncDisplay to allow multiple listening sockets ui: fix reporting of VNC auth in query-vnc-servers ui: fix regression handling bare 'websocket' option to -vnc vnc: do not disconnect on EAGAIN ui/vnc: Drop unused vnc_has_job() and vnc_jobs_clear() Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'util/qemu-option.c')
-rw-r--r--util/qemu-option.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/util/qemu-option.c b/util/qemu-option.c
index 3467dc2397..d611946333 100644
--- a/util/qemu-option.c
+++ b/util/qemu-option.c
@@ -332,6 +332,25 @@ const char *qemu_opt_get(QemuOpts *opts, const char *name)
return opt ? opt->str : NULL;
}
+void qemu_opt_iter_init(QemuOptsIter *iter, QemuOpts *opts, const char *name)
+{
+ iter->opts = opts;
+ iter->opt = QTAILQ_FIRST(&opts->head);
+ iter->name = name;
+}
+
+const char *qemu_opt_iter_next(QemuOptsIter *iter)
+{
+ QemuOpt *ret = iter->opt;
+ if (iter->name) {
+ while (ret && !g_str_equal(iter->name, ret->name)) {
+ ret = QTAILQ_NEXT(ret, next);
+ }
+ }
+ iter->opt = ret ? QTAILQ_NEXT(ret, next) : NULL;
+ return ret ? ret->str : NULL;
+}
+
/* Get a known option (or its default) and remove it from the list
* all in one action. Return a malloced string of the option value.
* Result must be freed by caller with g_free().