This is the mail archive of the cygwin 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] |
On Nov 21 05:02, pdanford wrote:It appears that this is a problem in find 3.5.9.I just upgraded to version 1.7.7-1 and the following find command is broken (which used to work correctly in a recent 1.7x version):
C:\cygwin\bin\find . -name file.txt -type f -execdir pwd ';'
Apparently, if there are say 10 matching file.txt files, -execdir executes the command in the first dir over and over. However, the following use of find works correctly:
C:\cygwin\bin\find . -name file.txt -type f -execdir pwd '{}' +
I can reproduce this problem, even under Cygwin 1.7.5, and I examined the strace output. What happens is that find forks for each call to pwd. The forked find then calls fchdir before calling exec("pwd").
And here's the problem. Each single fchdir is called with the exact same directory descriptor. There is an open file descriptor (fd 7) which holds a handle to the *correct* directory, but the forked find calls fchdir(4), which is a file descriptor holding the first directory containing the file.
This does not occur when using find 3.5.8.
Eric? Would you mind to have a look?
Thanks, Corinna
The behaviour of find -execdir is documented in the info pages. From the info page:
-- Action: -execdir command ; Execute COMMAND; true if zero status is returned. `find' takes all arguments after `-execdir' to be part of the command until an argument consisting of `;' is reached. It replaces the string `{}' by the current file name being processed everywhere it occurs in the command. Both of these constructions need to be escaped (with a `\') or quoted to protect them from expansion by the shell. The command is executed in the directory in which `find' was run.
So C:\cygwin\bin\find . -name file.txt -type f -execdir pwd ';' execute the "pwd" in the current directory and do not change directories.
Regards Dirk
-- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |