]> git.cworth.org Git - apitrace/blobdiff - cli/cli_diff_images.cpp
trace: Unwrap all args before serializing them.
[apitrace] / cli / cli_diff_images.cpp
index 42aaaff071d6927d73c3c0c36bb3e55e3f5fc222..ba8df3e92a440afd5c29f3fafeb967559d281d2c 100644 (file)
 #include "cli.hpp"
 #include "os_string.hpp"
 #include "os_process.hpp"
-#include "trace_resource.hpp"
+#include "cli_resources.hpp"
 
 static const char *synopsis = "Identify differences between two image dumps.";
 
 static os::String
 find_command(void)
 {
-    return trace::findScript("snapdiff.py");
+    return findScript("snapdiff.py");
 }
 
 static void
@@ -49,10 +49,11 @@ usage(void)
         exit(1);
     }
 
-    char *args[3];
-    args[0] = (char *) command.str();
-    args[1] = (char *) "--help";
-    args[2] = NULL;
+    char *args[4];
+    args[0] = (char *) "python";
+    args[1] = (char *) command.str();
+    args[2] = (char *) "--help";
+    args[3] = NULL;
 
     os::execute(args);
 }
@@ -61,25 +62,21 @@ static int
 command(int argc, char *argv[])
 {
     int i;
-    int ret;
 
     os::String command = find_command();
     if (!command.length()) {
         return 1;
     }
 
-    char **args = new char* [argc + 2];
-    args[0] = (char *) command.str();
-    for (i = 0; i < argc; i++) {
-        args[i + 1] = argv[i];
+    std::vector<const char *> args;
+    args.push_back("python");
+    args.push_back(command.str());
+    for (i = 1; i < argc; i++) {
+        args.push_back(argv[i]);
     }
-    args[i + 1] = NULL;
+    args.push_back(NULL);
 
-    ret = os::execute(args);
-
-    delete [] args;
-
-    return ret;
+    return os::execute((char * const *)&args[0]);
 }
 
 const Command diff_images_command = {