This is the mail archive of the cygwin-patches@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Patch]: ./.. changed during execution of find


I have been rereading the chdir thread to see how things 
went wrong. The problem with find is due to the following change
<http://cygwin.com/ml/cygwin-patches/2004-q2/msg00063.html>

> That means that cwd.set always attempts to build the
> Posix wd through the mount table.
> Up to now that was only the case when a symlink was
> involved in the translation, or there was a ":" or a "\" 
> in the directory name, or check_case was not relaxed.

It follows that "find /" has always been broken when 
check_case != "relax". 

Please review carefully! In addition to fixing the find bug the
patch fixes the handling of paths such as c:xxx and it calls
SetCurrentDirectory inside the muto region.

Pierre

2004-05-15  Pierre Humblet <pierre.humblet@ieee.org>

	* cygheap.h (cwdstuff::set): Modify return value and arguments.
	* path.cc (chdir): Specify PC_POSIX. Do not call SetCurrentDirectory.
	Set posix_cwd in a way that does not break find.exe. Change call to cwd.set.
	(cwdstuff::get_initial): Do not call GetCurrentDirectory here.
	(cwdstuff::set): Call SetCurrentDirectory and GetCurrentDirectory
	as needed.

Attachment: path.diff
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]