diff mbox series

[1/3] hmp: remove "change vnc TARGET" command

Message ID 20210120144235.345983-2-pbonzini@redhat.com (mailing list archive)
State New, archived
Headers show
Series vnc: remove "change vnc TARGET" and QMP change command, support "-vnc help" | expand

Commit Message

Paolo Bonzini Jan. 20, 2021, 2:42 p.m. UTC
The HMP command \"change vnc TARGET\" is messy:

- it takes an ugly shortcut to determine if the option has an "id",
with incorrect results if "id=" is not preceded by an unescaped
comma.

- it deletes the existing QemuOpts and does not try to rollback
if the parsing fails (which is not causing problems, but only due to
how VNC options are parsed)

- because it uses the same parsing function as "-vnc", it forces
the latter to not support "-vnc help".

On top of this, it uses a deprecated QMP command, thus getting in
the way of removing the QMP command.  Since the usecase for the
command is not clear, just remove it and send "change vnc password"
directly to the QMP "change-vnc-password" command.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 docs/system/removed-features.rst | 6 ++++++
 hmp-commands.hx                  | 6 ------
 monitor/hmp-cmds.c               | 7 +++++--
 3 files changed, 11 insertions(+), 8 deletions(-)

Comments

Eric Blake Jan. 20, 2021, 3:24 p.m. UTC | #1
On 1/20/21 8:42 AM, Paolo Bonzini wrote:
> The HMP command \"change vnc TARGET\" is messy:
> 
> - it takes an ugly shortcut to determine if the option has an "id",
> with incorrect results if "id=" is not preceded by an unescaped
> comma.
> 
> - it deletes the existing QemuOpts and does not try to rollback
> if the parsing fails (which is not causing problems, but only due to
> how VNC options are parsed)
> 
> - because it uses the same parsing function as "-vnc", it forces
> the latter to not support "-vnc help".
> 
> On top of this, it uses a deprecated QMP command, thus getting in
> the way of removing the QMP command.  Since the usecase for the
> command is not clear, just remove it and send "change vnc password"
> directly to the QMP "change-vnc-password" command.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  docs/system/removed-features.rst | 6 ++++++
>  hmp-commands.hx                  | 6 ------
>  monitor/hmp-cmds.c               | 7 +++++--
>  3 files changed, 11 insertions(+), 8 deletions(-)

HMP is not promised to be stable, so no deprecation period required.
Reviewed-by: Eric Blake <eblake@redhat.com>
diff mbox series

Patch

diff --git a/docs/system/removed-features.rst b/docs/system/removed-features.rst
index 430fc33ca1..5b0ff6ab1f 100644
--- a/docs/system/removed-features.rst
+++ b/docs/system/removed-features.rst
@@ -68,6 +68,12 @@  The ``[hub_id name]`` parameter tuple of the 'hostfwd_add' and
 Use ``device_add`` for hotplugging vCPUs instead of ``cpu-add``.  See
 documentation of ``query-hotpluggable-cpus`` for additional details.
 
+``change vnc TARGET`` (removed in 6.0)
+''''''''''''''''''''''''''''''''''''''
+
+No replacement.  The ``change vnc password`` and ``change DEVICE MEDIUM``
+commands are not affected.
+
 Guest Emulator ISAs
 -------------------
 
diff --git a/hmp-commands.hx b/hmp-commands.hx
index 73e0832ea1..d4001f9c5d 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -231,12 +231,6 @@  SRST
     read-write
       Makes the device writable.
 
-  ``change vnc`` *display*,\ *options*
-    Change the configuration of the VNC server. The valid syntax for *display*
-    and *options* are described at :ref:`sec_005finvocation`. eg::
-
-      (qemu) change vnc localhost:1
-
   ``change vnc password`` [*password*]
 
     Change the password associated with the VNC server. If the new password
diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c
index fd4d77e246..499647a578 100644
--- a/monitor/hmp-cmds.c
+++ b/monitor/hmp-cmds.c
@@ -1521,13 +1521,16 @@  void hmp_change(Monitor *mon, const QDict *qdict)
         }
         if (strcmp(target, "passwd") == 0 ||
             strcmp(target, "password") == 0) {
-            if (!arg) {
+            if (arg) {
                 MonitorHMP *hmp_mon = container_of(mon, MonitorHMP, common);
                 monitor_read_password(hmp_mon, hmp_change_read_arg, NULL);
                 return;
+            } else {
+                qmp_change_vnc_password(arg, &err);
             }
+        } else {
+            monitor_printf(mon, "Expected 'password' after 'vnc'\n");
         }
-        qmp_change("vnc", target, !!arg, arg, &err);
     } else
 #endif
     {