diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1995-02-21 18:52:14 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1995-02-21 18:52:14 -0500 |
commit | 6ce3c2a19ae54df4b5afc8f24be3e75ee9005528 (patch) | |
tree | 767f0d50edf13e2a00ed6ec15f69b9c47c6d78da /gcc | |
parent | 3709124dc1d418e37577a27623594f61ff83c91c (diff) | |
download | gcc-6ce3c2a19ae54df4b5afc8f24be3e75ee9005528.zip gcc-6ce3c2a19ae54df4b5afc8f24be3e75ee9005528.tar.gz gcc-6ce3c2a19ae54df4b5afc8f24be3e75ee9005528.tar.bz2 |
(fix_argv): Rewrite.
From-SVN: r9013
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/gcc.c | 67 |
1 files changed, 35 insertions, 32 deletions
@@ -2163,39 +2163,42 @@ pexecute (search_flag, program, argv, not_last) #ifdef WINNT -char ** +/* This is a kludge to get around the Microsoft C spawn functions' propensity + to remove the outermost set of double quotes from all arguments. */ + +const char * const fix_argv (argvec) - char **argvec + char **argvec; { - int i; - - for (i = 1; argvec[i] != 0; i++) - { - int len, j; - char *temp, *newtemp; - - temp = argvec[i]; - len = strlen (temp); - for (j = 0; j < len; j++) - { - if (temp[j] == '"') - { - newtemp = xmalloc (len + 2); - strncpy (newtemp, temp, j); - newtemp [j] = '\\'; - strncpy (&newtemp [j+1], &temp [j], len-j); - newtemp [len+1] = 0; - free (temp); - temp = newtemp; - len++; - j++; - } - } - - argvec[i] = temp; - } - - return argvec; + int i; + + for (i = 1; argvec[i] != 0; i++) + { + int len, j; + char *temp, *newtemp; + + temp = argvec[i]; + len = strlen (temp); + for (j = 0; j < len; j++) + { + if (temp[j] == '"') + { + newtemp = xmalloc (len + 2); + strncpy (newtemp, temp, j); + newtemp [j] = '\\'; + strncpy (&newtemp [j+1], &temp [j], len-j); + newtemp [len+1] = 0; + free (temp); + temp = newtemp; + len++; + j++; + } + } + + argvec[i] = temp; + } + + return (const char* const*) argvec; } #define FIX_ARGV(a) fix_argv(a) @@ -2204,7 +2207,7 @@ fix_argv (argvec) #define FIX_ARGV(a) a -#endif /* OS2 or WINNT */ +#endif static int pexecute (search_flag, program, argv, not_last) |