return(-ENOTDIR()) unless($path->isdir());
my @dents=();
my($dirs, $files)=$path->dirents();
- push(@dents, $self->filter($filename, @$dirs));
+ push(@dents, $path->filter(@$dirs));
push(@dents, @$files);
if(@dents)
{
return(0);
}
-sub filter
-{
- my($self, $base, @dirs)=@_;
- my @outdirs=();
- for my $dir (@dirs)
- {
- print "hascontents: $base / $dir\n";
- my $path=ID3FS::Path->new($self->{db}, "$base/$dir");
- next unless($path->isvalid());
- my($subdirs,$subfiles)=$path->dirents();
- print "SUBDENTS: ", join(", ", @$subdirs, @$subfiles), "\n";
- next unless(@$subdirs || @$subfiles);
- if(!@$subfiles || scalar(@$subdirs) < 3)
- {
- my $subdirents=0;
- for my $subdir (@$subdirs)
- {
- if(grep { $_ eq $subdir; } qw(AND OR NOT))
- {
- my $subsubpath=ID3FS::Path->new($self->{db}, "$base/$dir/$subdir");
- if($path->isvalid())
- {
- my($subsubdirs,$subsubfiles)=$subsubpath->dirents();
- $subdirents++ if(@$subsubdirs || @$subsubfiles);
- }
- }
- else
- {
- $subdirents++;
- }
- }
- next unless($subdirents);
- }
- push(@outdirs, $dir);
- }
- return(@outdirs)
-}
-
# unused stubs
sub mknod { print "FUSE: mknod\n"; return -EROFS(); }
sub mkdir { print "FUSE: mkdir\n"; return -EROFS(); }