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;
}