[Libvir] PATCH: 3/4 Refactor the shell escaping patch

Daniel P. Berrange berrange at redhat.com
Tue Oct 16 20:51:09 UTC 2007


This is basically just Jim's patch to refactor the shell escaping API to be
usable for plain monitor commands.

Dan.
-- 
|=- Red Hat, Engineering, Emerging Technologies, Boston.  +1 978 392 2496 -=|
|=-           Perl modules: http://search.cpan.org/~danberr/              -=|
|=-               Projects: http://freshmeat.net/~danielpb/               -=|
|=-  GnuPG: 7D3B9505   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505  -=| 
-------------- next part --------------
diff -r 8a19bc8b8fb3 src/qemu_driver.c
--- a/src/qemu_driver.c	Tue Oct 16 15:34:54 2007 -0400
+++ b/src/qemu_driver.c	Tue Oct 16 15:47:33 2007 -0400
@@ -1912,7 +1912,7 @@ static int qemudDomainGetInfo(virDomainP
 }
 
 
-static char *qemudEscapeShellArg(const char *in)
+static char *qemudEscape(const char *in, int shell)
 {
     int len = 0;
     int i, j;
@@ -1934,7 +1934,10 @@ static char *qemudEscapeShellArg(const c
             len += 2;
             break;
         case '\'':
-            len += 5;
+            if (shell)
+                len += 5;
+            else
+                len += 1;
             break;
         default:
             len += 1;
@@ -1961,11 +1964,15 @@ static char *qemudEscapeShellArg(const c
             out[j++] = in[i];
             break;
         case '\'':
-            out[j++] = '\'';
-            out[j++] = '\\';
-            out[j++] = '\\';
-            out[j++] = '\'';
-            out[j++] = '\'';
+            if (shell) {
+                out[j++] = '\'';
+                out[j++] = '\\';
+                out[j++] = '\\';
+                out[j++] = '\'';
+                out[j++] = '\'';
+            } else {
+                out[j++] = in[i];
+            }
             break;
         default:
             out[j++] = in[i];
@@ -1977,6 +1984,10 @@ static char *qemudEscapeShellArg(const c
     return out;
 }
 
+static char *qemudEscapeShellArg(const char *in)
+{
+    return qemudEscape(in, 1);
+}
 
 #define QEMUD_SAVE_MAGIC "LibvirtQemudSave"
 #define QEMUD_SAVE_VERSION 1


More information about the libvir-list mailing list