delorie.com/archives/browse.cgi | search |
X-Recipient: | archive-cygwin AT delorie DOT com |
X-Spam-Check-By: | sourceware.org |
Date: | Mon, 22 Nov 2010 12:19:09 +0100 |
From: | Corinna Vinschen <corinna-cygwin AT cygwin DOT com> |
To: | cygwin AT cygwin DOT com |
Subject: | Re: find -execdir executes in wrong dir |
Message-ID: | <20101122111909.GR18309@calimero.vinschen.de> |
Reply-To: | cygwin AT cygwin DOT com |
Mail-Followup-To: | cygwin AT cygwin DOT com |
References: | <AANLkTi=QE=PSXVb5XUKhTLrbt+0gsaWMg_kvFYscRwQH AT mail DOT gmail DOT com> |
MIME-Version: | 1.0 |
In-Reply-To: | <AANLkTi=QE=PSXVb5XUKhTLrbt+0gsaWMg_kvFYscRwQH@mail.gmail.com> |
User-Agent: | Mutt/1.5.20 (2009-06-14) |
Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
List-Id: | <cygwin.cygwin.com> |
List-Unsubscribe: | <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT cygwin DOT com> |
List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com> |
List-Archive: | <http://sourceware.org/ml/cygwin/> |
List-Post: | <mailto:cygwin AT cygwin DOT com> |
List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs> |
Sender: | cygwin-owner AT cygwin DOT com |
Mail-Followup-To: | cygwin AT cygwin DOT com |
Delivered-To: | mailing list cygwin AT cygwin DOT com |
On Nov 21 05:02, pdanford wrote: > 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 '{}' + It appears that this is a problem in find 3.5.9. 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 -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat -- 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
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |