summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJason Rumney <jasonr@gnu.org>2007-11-26 23:04:09 +0000
committerJason Rumney <jasonr@gnu.org>2007-11-26 23:04:09 +0000
commit0a7a6051a9c0b50cd59285e9d174d3362e913ebd (patch)
tree789636300a13f4f9e5c186200c8b7449fa66a190 /src
parent2867910524be26279744d54d04ced7b4134eb7b6 (diff)
(sys_spawnve): Quote args with wildcards.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog4
-rw-r--r--src/w32proc.c9
2 files changed, 12 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 9ed11c061e2..13edfa07e90 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,7 @@
+2007-11-26 Jason Rumney <jasonr@gnu.org>
+
+ * w32proc.c (sys_spawnve): Quote args with wildcards.
+
2007-11-26 Andreas Schwab <schwab@suse.de>
* process.c (list_processes_1): Fix indentation level of the
diff --git a/src/w32proc.c b/src/w32proc.c
index c21d589c525..a14a8ee384c 100644
--- a/src/w32proc.c
+++ b/src/w32proc.c
@@ -781,7 +781,14 @@ sys_spawnve (int mode, char *cmdname, char **argv, char **envp)
variable in their environment. */
char ppid_env_var_buffer[64];
char *extra_env[] = {ppid_env_var_buffer, NULL};
- char *sepchars = " \t";
+ /* These are the characters that cause an argument to need quoting.
+ Arguments with whitespace characters need quoting to prevent the
+ argument being split into two or more. Arguments with wildcards
+ are also quoted, for consistency with posix platforms, where wildcards
+ are not expanded if we run the program directly without a shell.
+ Some extra whitespace characters need quoting in Cygwin programs,
+ so this list is conditionally modified below. */
+ char *sepchars = " \t*?";
/* We don't care about the other modes */
if (mode != _P_NOWAIT)