diff options
| author | Eli Zaretskii | 2015-08-22 22:14:56 +0300 |
|---|---|---|
| committer | Eli Zaretskii | 2015-08-22 22:14:56 +0300 |
| commit | b0fe29ed920e65510ed062c5293c4db3b9a02ab6 (patch) | |
| tree | 31e868cd4ac006f45e6a38cf7e5273e1151cddef /src | |
| parent | 7372c1ab067ba93054fbb042cd13211042b83614 (diff) | |
| download | emacs-b0fe29ed920e65510ed062c5293c4db3b9a02ab6.tar.gz emacs-b0fe29ed920e65510ed062c5293c4db3b9a02ab6.zip | |
Fix invocation of programs via cmdproxy.exe
* src/w32proc.c (sys_spawnve): Use exec-directory, not
invocation-directory, for finding cmdproxy.exe. When Emacs is
run from the source tree, look for cmdproxy.exe in the same source
tree. (Bug#21323)
Diffstat (limited to 'src')
| -rw-r--r-- | src/w32proc.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/w32proc.c b/src/w32proc.c index 66a9761ad13..d861edeb78b 100644 --- a/src/w32proc.c +++ b/src/w32proc.c | |||
| @@ -1815,7 +1815,17 @@ sys_spawnve (int mode, char *cmdname, char **argv, char **envp) | |||
| 1815 | if (egetenv ("CMDPROXY")) | 1815 | if (egetenv ("CMDPROXY")) |
| 1816 | strcpy (cmdname, egetenv ("CMDPROXY")); | 1816 | strcpy (cmdname, egetenv ("CMDPROXY")); |
| 1817 | else | 1817 | else |
| 1818 | strcpy (lispstpcpy (cmdname, Vinvocation_directory), "cmdproxy.exe"); | 1818 | { |
| 1819 | char *q = lispstpcpy (cmdname, Vexec_directory); | ||
| 1820 | /* If we are run from the source tree, use cmdproxy.exe from | ||
| 1821 | the same source tree. */ | ||
| 1822 | for (p = q - 2; p > cmdname; p--) | ||
| 1823 | if (*p == '/') | ||
| 1824 | break; | ||
| 1825 | if (*p == '/' && xstrcasecmp (p, "/lib-src/") == 0) | ||
| 1826 | q = stpcpy (p, "/nt/"); | ||
| 1827 | strcpy (q, "cmdproxy.exe"); | ||
| 1828 | } | ||
| 1819 | 1829 | ||
| 1820 | /* Can't use unixtodos_filename here, since that needs its file | 1830 | /* Can't use unixtodos_filename here, since that needs its file |
| 1821 | name argument encoded in UTF-8. */ | 1831 | name argument encoded in UTF-8. */ |