Message-ID: <007e01c27f19$ad3aff70$0100a8c0@p4> From: "Andrew Cottrell" To: "Laurynas Biveinis" Cc: "DJGPP Workers" References: <8942416321 DOT 20021028235207 AT softhome DOT net> Subject: Re: Findutils 4.1.7 port bugs & fix Date: Tue, 29 Oct 2002 18:05:46 +1100 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2800.1106 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Reply-To: djgpp-workers AT delorie DOT com ----- Original Message ----- .. SNIP.. > 'error waiting for rm' is caused by bitrot in DJGPP port - find 4.1 > upstream uses wait(), 4.1.7 uses waitpid(). DJGPP port used to provide > its own version of wait() which does DTRT instead of stock lib > version. I've updated it to provide special waitpid() instead, that > solves the first problem. Patch (and ChangeLog, in the case you'd > like to forward it upstream) are at the end. Thanks for this. Upload on it's way to Clio as I write this > > The second problem is that find stats directories during their > traversal and caches their inodes and in the end we receive error that > inode of some directory has changed. Check out the thread regarding the rm.exe issue I found as it looked like an inode problem, but turned out to be something else. > Is it possible that our stat() implementation returns different inode > for the same directory? If yes, what could we do about it? If no, I'd > like to know if this bug is 2K specific or not. I'd appreciate if > someone downloads find-4.1.7 from 2.04 test build page, does something > like (this is from GCC): > $ touch Done > $ find . -name '[Dd][Oo][Nn][Ee]' -exec rm -f '{}' ';' > > and reports any error messages on Win98/DOS, maybe on XP and other > platforms too. I used the updated find.exe which included the patch and my results are as follows: Tried this on an ancient Win98 PC and got the following:- 1) cannot touch a directory get permission denied (EACCESS) error 2) I get an error from rm as follows (re-typed) rm: invalid operation -- . 3) $ find . -name '[Dd][Oo][Nn][Ee]' returned "./done" which looked okay. I copied bash.exe, find.exe, rm.exe into the temp directory on the Win98 PC and set the path to be c:\temp only. It works on XP with the same binary files. Any ideas on this? On XP with SP1 I get the following results: a) Under bash: bash-2.05b$ find . -name '[Dd][Oo][Nn][Ee]' -exec rm -f '{}' ';' rm: `./done' is a directory b) Under command.com or cmd.exe DJGPP_204 C:\dj204\bin>find . -name '[Dd][Oo][Nn][Ee]' -exec rm -f '{}' ';' rm: `./done' is a directory Andrew