Remove extra quotes from meta-data
authorRobin Gareus <robin@gareus.org>
Tue, 26 Mar 2019 21:12:48 +0000 (22:12 +0100)
committerRobin Gareus <robin@gareus.org>
Tue, 26 Mar 2019 21:12:48 +0000 (22:12 +0100)
Arguments are passed as argp[] array to execve() and don't need to be
enclosed by quotes.

libs/pbd/system_exec.cc

index 29bc11bb3b04cb16ac4e2d4417364338a58fe3ea..0a17cce56079de8364f10ce3f8700a1cff41bdb2 100644 (file)
@@ -249,23 +249,22 @@ SystemExec::format_key_value_parameter (std::string key, std::string value)
                start_pos += 1;
        }
 
+#ifdef PLATFORM_WINDOWS
+       /* SystemExec::make_wargs() adds quotes around the complete argument
+        * windows uses CreateProcess() with a parameter string
+        * (and not an array list of separate arguments like Unix)
+        * so quotes need to be escaped.
+        */
        start_pos = 0;
        while((start_pos = v1.find("\"", start_pos)) != std::string::npos) {
                v1.replace(start_pos, 1, "\\\"");
                start_pos += 2;
        }
+#endif
 
-       size_t len = key.length() + v1.length() + 4;
+       size_t len = key.length() + v1.length() + 2;
        char *mds = (char*) calloc(len, sizeof(char));
-#ifdef PLATFORM_WINDOWS
-       /* SystemExec::make_wargs() adds quotes around the complete argument
-        * windows uses CreateProcess() with a parameter string
-        * (and not an array list of separate arguments)
-        */
        snprintf(mds, len, "%s=%s", key.c_str(), v1.c_str());
-#else
-       snprintf(mds, len, "%s=\"%s\"", key.c_str(), v1.c_str());
-#endif
        return mds;
 }