[PATCH 15/23] virshGetOneDisplay: Refactor formatting of URI params

Peter Krempa pkrempa at redhat.com
Wed Mar 2 13:55:14 UTC 2022


Unconditionally format the start of the query ('?') and make delimiters
('&') part of the arguments. At the end we can trim off 1 char from the
end of the buffer unconditionally.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 tools/virsh-domain.c | 17 +++++++----------
 1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index d0f78798b5..ca1145428f 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -11678,7 +11678,6 @@ virshGetOneDisplay(vshControl *ctl,
     g_autofree char *type_conn = NULL;
     g_autofree char *sockpath = NULL;
     g_autofree char *passwd = NULL;
-    bool params = false;

     /* Attempt to get the port number for the current graphics scheme */
     xpathPort = g_strdup_printf(xpath_fmt, scheme, "@port");
@@ -11781,22 +11780,20 @@ virshGetOneDisplay(vshControl *ctl,
         virBufferAsprintf(&buf, ":%d", port);
     }

+    /* format the parameters part of the uri */
+    virBufferAddLit(&buf, "?");
+
     /* TLS Port */
     if (tls_port) {
-        virBufferAsprintf(&buf,
-                          "?tls-port=%d",
-                          tls_port);
-        params = true;
+        virBufferAsprintf(&buf, "tls-port=%d&", tls_port);
     }

     if (STREQ(scheme, "spice") && passwd) {
-        virBufferAsprintf(&buf,
-                          "%spassword=%s",
-                          params ? "&" : "?",
-                          passwd);
-        params = true;
+        virBufferAsprintf(&buf, "password=%s&", passwd);
     }

+    virBufferTrimLen(&buf, 1);
+
     return virBufferContentAndReset(&buf);
 }

-- 
2.35.1




More information about the libvir-list mailing list