delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2006/10/23/10:21:26

X-Spam-Check-By: sourceware.org
Date: Mon, 23 Oct 2006 16:21:09 +0200
From: Corinna Vinschen <corinna-cygwin AT cygwin DOT com>
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
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
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 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: <mytestfunction.m>
> 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/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019