Mail Archives: djgpp-workers/2002/10/29/02:09:34
----- 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
- Raw text -