* spawn.cc (find_exec): Enable finding paths in backslash notation,

especially for the exec[vl]p functions.

	* path.cc (symlink_info::check): Disable returning directories with
	suffix appended here.
This commit is contained in:
Corinna Vinschen 2010-03-29 17:15:51 +00:00
parent 3f4a0c963a
commit b3cbb06c9d
3 changed files with 20 additions and 2 deletions

View File

@ -1,3 +1,11 @@
2010-03-29 Corinna Vinschen <corinna@vinschen.de>
* spawn.cc (find_exec): Enable finding paths in backslash notation,
especially for the exec[vl]p functions.
* path.cc (symlink_info::check): Disable returning directories with
suffix appended here.
2010-03-29 Corinna Vinschen <corinna@vinschen.de>
* include/cygwin/version.h: Bump DLL minor version number to 3.

View File

@ -2197,6 +2197,7 @@ symlink_info::check (char *path, const suffix_info *suffixes, unsigned opt,
PVOID eabuf = &nfs_aol_ffei;
ULONG easize = sizeof nfs_aol_ffei;
bool had_ext = !!*ext_here;
while (suffix.next ())
{
FILE_BASIC_INFORMATION fbi;
@ -2380,6 +2381,15 @@ symlink_info::check (char *path, const suffix_info *suffixes, unsigned opt,
}
ext_tacked_on = !!*ext_here;
/* Don't allow to returns directories with appended suffix. If we found
a directory with a suffix which has been appended here, then this
directory doesn't match the request. So, just do as usual if file
hasn't been found. */
if (ext_tacked_on && !had_ext && (fileattr & FILE_ATTRIBUTE_DIRECTORY))
{
set_error (ENOENT);
continue;
}
res = -1;

View File

@ -1,7 +1,7 @@
/* spawn.cc
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
2005, 2006, 2007, 2008, 2009 Red Hat, Inc.
2005, 2006, 2007, 2008, 2009, 2010 Red Hat, Inc.
This file is part of Cygwin.
@ -111,7 +111,7 @@ find_exec (const char *name, path_conv& buf, const char *mywinenv,
tmp_pathbuf tp;
char *tmp = tp.c_get ();
const char *posix = (opt & FE_NATIVE) ? NULL : name;
bool has_slash = strchr (name, '/');
bool has_slash = !!strpbrk (name, "/\\");
int err;
/* Check to see if file can be opened as is first.