Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/spawn.cc')
-rw-r--r--winsup/cygwin/spawn.cc23
1 files changed, 17 insertions, 6 deletions
diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc
index b65e00320..9faec772e 100644
--- a/winsup/cygwin/spawn.cc
+++ b/winsup/cygwin/spawn.cc
@@ -111,17 +111,28 @@ find_exec (const char *name, path_conv& buf, const char *mywinenv,
const char *path;
const char *posix_path;
- /* Return the error condition if this is an absolute path or if there
- is no PATH to search. */
- if (has_slash || strchr (name, '\\') || isdrive (name)
+ posix = (opt & FE_NATIVE) ? NULL : tmp;
+
+ if (strchr (mywinenv, '/'))
+ {
+ /* it's not really an environment variable at all */
+ int n = cygwin_posix_to_win32_path_list_buf_size (mywinenv);
+ char *s = (char *) alloca (n + 1);
+ if (cygwin_posix_to_win32_path_list (mywinenv, s))
+ goto errout;
+ path = s;
+ posix_path = mywinenv - 1;
+ }
+ else if (has_slash || strchr (name, '\\') || isdrive (name)
|| !(winpath = getwinenv (mywinenv))
|| !(path = winpath->get_native ()) || *path == '\0')
+ /* Return the error condition if this is an absolute path or if there
+ is no PATH to search. */
goto errout;
+ else
+ posix_path = winpath->get_posix () - 1;
debug_printf ("%s%s", mywinenv, path);
-
- posix = (opt & FE_NATIVE) ? NULL : tmp;
- posix_path = winpath->get_posix () - 1;
/* Iterate over the specified path, looking for the file with and
without executable extensions. */
do