runnerw fixed for cygwin
authorDmitry Trofimov <dmitry.trofimov@jetbrains.com>
Mon, 20 Dec 2010 13:21:33 +0000 (16:21 +0300)
committerDmitry Trofimov <dmitry.trofimov@jetbrains.com>
Mon, 20 Dec 2010 13:21:33 +0000 (16:21 +0300)
native/runner/runnerw/runnerw.cpp

index d145c8cca49c1204dc9e6139b0f4e09c0f463526..a389ba5c3b017d47d822b31b051c20d379bb9497 100644 (file)
@@ -121,8 +121,10 @@ int main(int argc, char * argv[]) {
        std::string app(argv[1]);
        std::string args("");
 
        std::string app(argv[1]);
        std::string args("");
 
-       for (int i = 2; i < argc; i++) {
-               args += " ";
+       for (int i = 1; i < argc; i++) {
+                if (i>1) {
+                       args += " ";
+               }
                if (strchr(argv[i], ' ')) {
                        args += "\"";
                        args += argv[i];
                if (strchr(argv[i], ' ')) {
                        args += "\"";
                        args += argv[i];
@@ -132,9 +134,9 @@ int main(int argc, char * argv[]) {
                }
        }
 
                }
        }
 
-       if (app.length() == 0) {
-               PrintUsage();
-       }
+//     if (app.length() == 0) {
+//             PrintUsage();
+//     }
 
        STARTUPINFO si;
        SECURITY_ATTRIBUTES sa;
 
        STARTUPINFO si;
        SECURITY_ATTRIBUTES sa;
@@ -160,14 +162,23 @@ int main(int argc, char * argv[]) {
        si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
        si.hStdInput = newstdin;
 
        si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
        si.hStdInput = newstdin;
 
-       char* c_app = new char[app.size() + 1];
-       strcpy(c_app, app.c_str());
-
        if (hasEnding(app, std::string(".bat"))) {
        if (hasEnding(app, std::string(".bat"))) {
-               args = app + " " + args;
-               c_app = NULL;
+//              in MSDN it is said to do so, but actually that doesn't work
+//             args = "/c " + args;
+//             app = "cmd.exe";
+       } else {
+               app = "";
        }
 
        }
 
+
+       char* c_app = NULL;
+
+       if (app.size()>0) {
+               c_app = new char[app.size() + 1];
+               strcpy(c_app, app.c_str());
+       }
+
+
        char* c_args = new char[args.size() + 1];
        strcpy(c_args, args.c_str());
 
        char* c_args = new char[args.size() + 1];
        strcpy(c_args, args.c_str());