summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Heuer <kwzh@gnu.org>1994-06-03 04:50:17 +0000
committerKarl Heuer <kwzh@gnu.org>1994-06-03 04:50:17 +0000
commit647c32eb3e9ee80bae70661113f51e030c58626c (patch)
tree518656b8055b32217e8b7dd9355d47e090ea8969
parent6873cfa3939381670ee08dd890131bbe593db3c4 (diff)
downloademacs-647c32eb3e9ee80bae70661113f51e030c58626c.tar.gz
(run_msdos_command): Make local copy of argv[2] on stack, not on heap.
(run_msdos_command): When changing argv[2] from using slashes to using backslashes, only do so on the first white-space delimited part.
-rw-r--r--src/msdos.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/msdos.c b/src/msdos.c
index 154ee1501c5..fd9ae23efee 100644
--- a/src/msdos.c
+++ b/src/msdos.c
@@ -527,11 +527,20 @@ run_msdos_command (argv, dir, tempin, tempout)
if (msshell)
{
saveargv1 = argv[1];
+ saveargv2 = argv[2];
argv[1] = "/c";
if (argv[2])
{
- saveargv2 = argv[2];
- unixtodos_filename (argv[2] = strdup (argv[2]));
+ char *p = alloca (strlen (argv[2]) + 1);
+
+ strcpy (argv[2] = p, saveargv2);
+ while (*p && isspace (*p))
+ p++;
+ while (*p && !isspace (*p))
+ if (*p == '/')
+ *p++ = '\\';
+ else
+ p++;
}
}
@@ -578,11 +587,7 @@ run_msdos_command (argv, dir, tempin, tempout)
if (msshell)
{
argv[1] = saveargv1;
- if (argv[2])
- {
- free (argv[2]);
- argv[2] = saveargv2;
- }
+ argv[2] = saveargv2;
}
return result;
}