X-Spam-Check-By: sourceware.org Date: Mon, 23 Oct 2006 16:21:09 +0200 From: Corinna Vinschen To: cygwin AT cygwin DOT com Subject: Re: 1.5.21-1 readdir() not returning complete directory entries for network paths after rewinddir() Message-ID: <20061023142109.GB14146@calimero.vinschen.de> Reply-To: cygwin AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com References: <20061023115039 DOT 131780 AT gmx DOT net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061023115039.131780@gmx.net> User-Agent: Mutt/1.4.2i Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , 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 Oct 23 13:50, Benjamin Lindner wrote: > Hello list, > > Issuing a rewinddir() on a mounted network path caues successive calls > to readdir() to only return "." and ".." ignoring the actual further > content of the directory. > > I searched the mailing list and found the following two bug reports > dealing with this problem: > http://www.cygwin.com/ml/cygwin/2006-01/msg01423.html > http://www.cygwin.com/ml/cygwin/2006-02/msg00183.html > > In the second report the same problem is reported, and there was a fix > proposed. It works correct for local directories, but not for directories > mounted with "net use". > > following testcase: > $ ls -la /cygdrive/u/testing > total 4.0K > drwxr-xr-x 1 lindnebe DUsers 0 Oct 16 17:27 ./ > drwxr-xr-x 1 lindnebe DUsers 0 Jan 1 1970 ../ > -rw-r--r-- 1 lindnebe DUsers 77 Oct 16 11:16 mytestfunction.m > > $ ./readdirtest.exe /cygdrive/u/testing > Entry 0: <.> > Entry 1: <..> > Entry 2: > count=3 > rewinding > Entry 0: <.> > Entry 1: <..> > Entry 2: NULL > Entry 3: NULL > Entry 4: NULL > Entry 5: NULL Unfortunately you didn't attach the testcase, but the cygcheck output twice instead. I tried your above example using Yaakov's original testcase from http://www.cygwin.com/ml/cygwin/2006-01/msg01423.html I created a FAT share as in your case, containing a directory testing with a file mytestfunction.m in it on a 1.5.21 system and found that it works like a charm. Then it occured to me that you're running W2K, so I tried the same on W2K and... bingo. Further debugging showed that this is a bug in W2K. The function NtQueryDirectoryFile apparently ignores the "RestartScan" parameter when being called on a remote directory. It does not depend on the file system type, it happens with remote FAT, NTFS as well as Samba shares. This bug is not present in NT4, nor in XP and above. This is most unfortunate. I'm not sure right now how to solve this problem most satisfying. Oh well, yet another kludge necessary :( Thanks for the report, nevertheless. Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/