summaryrefslogtreecommitdiff
path: root/src/w32proc.c
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1995-06-15 15:29:00 +0000
committerRichard M. Stallman <rms@gnu.org>1995-06-15 15:29:00 +0000
commit0a4de642e4db66aa01ea94790c5c9ce78eb75906 (patch)
treef0e62e5720d82b66ebf17e0892c5f4adbd0aca76 /src/w32proc.c
parent0774fcf89c25df2a9c3b6952f64c2bc82592925e (diff)
downloademacs-0a4de642e4db66aa01ea94790c5c9ce78eb75906.tar.gz
(win32_spawnve): Accept program names without executable suffixes.
Diffstat (limited to 'src/w32proc.c')
-rw-r--r--src/w32proc.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/w32proc.c b/src/w32proc.c
index 981876e6b16..e7834d6a452 100644
--- a/src/w32proc.c
+++ b/src/w32proc.c
@@ -427,10 +427,30 @@ char ppid_env_var_buffer[64];
int
win32_spawnve (int mode, char *cmdname, char **argv, char **envp)
{
+ Lisp_Object program, full;
char *cmdline, *env, *parg, **targ;
int arglen;
PROCESS_INFORMATION pi;
-
+
+ /* Handle executable names without an executable suffix. */
+ program = make_string (cmdname, strlen (cmdname));
+ if (NILP (Ffile_executable_p (program)))
+ {
+ struct gcpro gcpro1;
+
+ full = Qnil;
+ GCPRO1 (program);
+ openp (Vexec_path, program, EXEC_SUFFIXES, &full, 1);
+ UNGCPRO;
+ if (NILP (full))
+ {
+ errno = EINVAL;
+ return -1;
+ }
+ cmdname = XSTRING (full)->data;
+ argv[0] = cmdname;
+ }
+
if (child_proc_count == MAX_CHILDREN)
{
errno = EAGAIN;