[ros-diffs] [cfinck] 34356: Fixed and reformatted argvtos() function: The previous one did not check if an argument already contains quotation marks. Therefore pathes containing spaces, which were already quoted, were quoted again, so that gcc handled the full path as several arguments.

cfinck at svn.reactos.org cfinck at svn.reactos.org
Mon Jul 7 16:00:29 CEST 2008


Author: cfinck
Date: Mon Jul  7 09:00:29 2008
New Revision: 34356

URL: http://svn.reactos.org/svn/reactos?rev=34356&view=rev
Log:
Fixed and reformatted argvtos() function: The previous one did not check if an argument already contains quotation marks.
Therefore pathes containing spaces, which were already quoted, were quoted again, so that gcc handled the full path as several arguments.

Modified:
    trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/execute.c

Modified: trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/execute.c
URL: http://svn.reactos.org/svn/reactos/trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/execute.c?rev=34356&r1=34355&r2=34356&view=diff
==============================================================================
--- trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/execute.c [iso-8859-1] (original)
+++ trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/execute.c [iso-8859-1] Mon Jul  7 09:00:29 2008
@@ -21,28 +21,34 @@
 #ifdef _WIN32
 static char *argvtos(char **argv)
 {
-       int i, len;
-       char *ptr, *str;
-
-       for (i = 0, len = 0; argv[i]; i++) {
-               len += strlen(argv[i]) + 3;
-       }
-
-       str = ptr = (char *)malloc(len + 1);
-       if (str == NULL)
-               return NULL;
-
-       for (i = 0; argv[i]; i++) {
-               len = strlen(argv[i]);
-               *ptr++ = '"';
-               memcpy(ptr, argv[i], len);
-               ptr += len;
-               *ptr++ = '"';
-               *ptr++ = ' ';
-       }
-       *ptr = 0;
-
-       return str;
+    int i, len;
+    char *ptr, *str;
+
+    for (i = 0, len = 0; argv[i]; i++)
+        len += strlen(argv[i]) + 3;
+
+    str = ptr = (char *)malloc(len + 1);
+    if (str == NULL)
+        return NULL;
+
+    for (i = 0; argv[i]; i++)
+    {
+        len = strlen(argv[i]);
+
+        if(argv[i][0] != '"')
+            *ptr++ = '"';
+
+        memcpy(ptr, argv[i], len);
+        ptr += len;
+
+        if(argv[i][len - 1] != '"')
+            *ptr++ = '"';
+
+        *ptr++ = ' ';
+    }
+    *ptr = 0;
+
+    return str;
 }
 #endif
 



More information about the Ros-diffs mailing list