incomplete support for filtering directories by whether they actually have contents
[id3fs.git] / lib / ID3FS / Fuse.pm
index ebe6243..f24f680 100644 (file)
@@ -94,11 +94,28 @@ sub getdir
 #    print "**GETDIR: $filename\n";
     my $path=ID3FS::Path->new($self->{db}, $filename);
     return(-ENOENT()) unless($path->isvalid());
-    if($path->isdir())
-    {
-       return(".", "..", $path->dirents(), 0);
-    }
-    return -ENOTDIR();
+    return(-ENOTDIR()) unless($path->isdir());
+    my @dents=(".", "..");
+    my($dirs, $files)=$path->dirents();
+    push(@dents, grep { $self->hascontents($filename, $_); } @$dirs);
+    push(@dents, @$files);
+    return(@dents, 0);
+}
+
+sub hascontents
+{
+    return 1;
+    # FIXME
+    my($self, $base, $dir)=@_;
+    print "hascontents: $base / $dir\n";
+    my $path=ID3FS::Path->new($self->{db}, "$base/$dir");
+    print "VALID: ", $path->isvalid(), "\n";
+    return 1 unless($path->isvalid());
+    my($subdirs,$subfiles)=$path->dirents();
+    print "SUBDIRS: ", join(", ", @$subdirs), "\n";
+    print "SUBFILES: ", join(", ", @$subfiles), "\n";
+    return 1 if(@$subdirs || @$subfiles);
+    return 0;
 }
 
 # unused stubs