aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1995-02-21 18:52:14 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1995-02-21 18:52:14 -0500
commit6ce3c2a19ae54df4b5afc8f24be3e75ee9005528 (patch)
tree767f0d50edf13e2a00ed6ec15f69b9c47c6d78da /gcc
parent3709124dc1d418e37577a27623594f61ff83c91c (diff)
downloadgcc-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.c67
1 files changed, 35 insertions, 32 deletions
diff --git a/gcc/gcc.c b/gcc/gcc.c
index afa20ef..74b2625 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -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)