* 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> 2010-03-29 Corinna Vinschen <corinna@vinschen.de>
* include/cygwin/version.h: Bump DLL minor version number to 3. * 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; PVOID eabuf = &nfs_aol_ffei;
ULONG easize = sizeof nfs_aol_ffei; ULONG easize = sizeof nfs_aol_ffei;
bool had_ext = !!*ext_here;
while (suffix.next ()) while (suffix.next ())
{ {
FILE_BASIC_INFORMATION fbi; FILE_BASIC_INFORMATION fbi;
@ -2380,6 +2381,15 @@ symlink_info::check (char *path, const suffix_info *suffixes, unsigned opt,
} }
ext_tacked_on = !!*ext_here; 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; res = -1;

View File

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