[libvirt] [PATCH 5/8] qemu: monitor: Remove HMP command (un)escaping infrastructure

Peter Krempa pkrempa at redhat.com
Thu Sep 19 16:10:20 UTC 2019


We don't need to escape the commands any more since we use QMP
passthrough, which means we can delete the functions.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 src/qemu/qemu_monitor.c      | 93 ------------------------------------
 src/qemu/qemu_monitor.h      |  3 --
 tests/qemumonitortestutils.c |  6 +--
 3 files changed, 1 insertion(+), 101 deletions(-)

diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
index c15b194bb5..f52a381982 100644
--- a/src/qemu/qemu_monitor.c
+++ b/src/qemu/qemu_monitor.c
@@ -197,99 +197,6 @@ VIR_ENUM_IMPL(qemuMonitorDumpStatus,
               "none", "active", "completed", "failed",
 );

-char *
-qemuMonitorEscapeArg(const char *in)
-{
-    int len = 0;
-    size_t i, j;
-    char *out;
-
-    /* To pass through the QEMU monitor, we need to use escape
-       sequences: \r, \n, \", \\
-    */
-
-    for (i = 0; in[i] != '\0'; i++) {
-        switch (in[i]) {
-        case '\r':
-        case '\n':
-        case '"':
-        case '\\':
-            len += 2;
-            break;
-        default:
-            len += 1;
-            break;
-        }
-    }
-
-    if (VIR_ALLOC_N(out, len + 1) < 0)
-        return NULL;
-
-    for (i = j = 0; in[i] != '\0'; i++) {
-        switch (in[i]) {
-        case '\r':
-            out[j++] = '\\';
-            out[j++] = 'r';
-            break;
-        case '\n':
-            out[j++] = '\\';
-            out[j++] = 'n';
-            break;
-        case '"':
-        case '\\':
-            out[j++] = '\\';
-            out[j++] = in[i];
-            break;
-        default:
-            out[j++] = in[i];
-            break;
-        }
-    }
-    out[j] = '\0';
-
-    return out;
-}
-
-
-char *
-qemuMonitorUnescapeArg(const char *in)
-{
-    size_t i, j;
-    char *out;
-    int len = strlen(in);
-    char next;
-
-    if (VIR_ALLOC_N(out, len + 1) < 0)
-        return NULL;
-
-    for (i = j = 0; i < len; ++i) {
-        next = in[i];
-        if (in[i] == '\\') {
-            ++i;
-            switch (in[i]) {
-            case 'r':
-                next = '\r';
-                break;
-            case 'n':
-                next = '\n';
-                break;
-            case '"':
-            case '\\':
-                next = in[i];
-                break;
-            default:
-                /* invalid input (including trailing '\' at end of in) */
-                VIR_FREE(out);
-                return NULL;
-            }
-        }
-        out[j++] = next;
-    }
-    out[j] = '\0';
-
-    return out;
-}
-

 #if DEBUG_RAW_IO
 # include <c-ctype.h>
diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h
index 7385fafeea..af1ec56525 100644
--- a/src/qemu/qemu_monitor.h
+++ b/src/qemu/qemu_monitor.h
@@ -382,9 +382,6 @@ struct _qemuMonitorCallbacks {
     qemuMonitorDomainRdmaGidStatusChangedCallback domainRdmaGidStatusChanged;
 };

-char *qemuMonitorEscapeArg(const char *in);
-char *qemuMonitorUnescapeArg(const char *in);
-
 qemuMonitorPtr qemuMonitorOpen(virDomainObjPtr vm,
                                virDomainChrSourceDefPtr config,
                                bool retry,
diff --git a/tests/qemumonitortestutils.c b/tests/qemumonitortestutils.c
index 4cc07b8772..e9dff123f8 100644
--- a/tests/qemumonitortestutils.c
+++ b/tests/qemumonitortestutils.c
@@ -187,7 +187,6 @@ int ATTRIBUTE_FMT_PRINTF(2, 3)
 qemuMonitorReportError(qemuMonitorTestPtr test, const char *errmsg, ...)
 {
     va_list msgargs;
-    VIR_AUTOFREE(char *) tmp = NULL;
     VIR_AUTOFREE(char *) msg = NULL;
     VIR_AUTOFREE(char *) jsonmsg = NULL;
     int ret = -1;
@@ -197,13 +196,10 @@ qemuMonitorReportError(qemuMonitorTestPtr test, const char *errmsg, ...)
     if (virVasprintf(&msg, errmsg, msgargs) < 0)
         goto cleanup;

-    if (!(tmp = qemuMonitorEscapeArg(msg)))
-        goto cleanup;
-
     if (virAsprintf(&jsonmsg, "{ \"error\": "
                     " { \"desc\": \"%s\", "
                     "   \"class\": \"UnexpectedCommand\" } }",
-                    tmp) < 0)
+                    msg) < 0)
         goto cleanup;

     ret = qemuMonitorTestAddResponse(test, jsonmsg);
-- 
2.21.0




More information about the libvir-list mailing list