Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 Mar 1999 06:58:01 -0600
From:      Jason McNew <jase@clearsail.net>
To:        Dom Mitchell <Dom.Mitchell@palmerharvey.co.uk>
Cc:        stable@freebsd.org
Subject:   Re: Perl File::Find problem
Message-ID:  <36F78FD9.9143B702@clearsail.net>
References:  <E10POqH-00008J-00@voodoo.pandhm.co.uk>

next in thread | previous in thread | raw e-mail | index | archive | help
Dom Mitchell wrote:

> On 23 March 1999, Jason McNew proclaimed:
> > I'm trying to use the File::Find module in Perl 5 and for some reason it
> > refuses to search through my fat32 mouted dirs.   Observe the folowing
> > code:
> >
> > use File::Find;
> > &find(\&ismp3, '/d','/c','/usr/home');
> >
> > sub ismp3 {
> >     if(/mp3/i) { push @mp3list, $File:Find:name; }
> > }
> >
> > It works exactly as expect but only under /usr/home.  It quietly skips
> > over /c and /d which are both fat32 partitions.  After removing the
> > '/usr/home' for testing, I found that it claims to have searched /c and
> > /d in under .2 seconds, when using `find /c` as I used to do usually
> > takes a full 80 seconds.
> > I checked to make sure that they are in fact mounted; they are.  I'm not
> > sure if it's aproblem with the module it's self or in the way it
> > interacts with the os.  I'm running FreeBSD 3.0-stable CVSup'ed about 3
> > days ago and using the version of perl compiled with it (5.002_02).  Any
> > ideas?
>
> Try running the whole thing under ktrace(1) to see what's really going
> on.  Off the top of my head, it may be the same problem that find used
> to have on older Unix systems, where it didn't like cd9660 filesystems,
> because the link count on the directory was wrong.  It's been such a
> long time since I've looked inside a FAT filesystem, that I have no
> ideas whether or not this would be the case.
> --

Yes, that's it. lstat is returing 1 as the nlink count any directory, and the
module uses $subdirs = $nlink - 2 then thinks there are no subdirs because
$subdirs = -1.
The fix is to define $File::Find::dont_use_nlink as the pod suggests if your
using AFS. I have no idea what AFS is, but defining that works.
I should probably notify the perl people though.  Thanks for the tip. :)



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?36F78FD9.9143B702>