Merge branch 'master' of github.com:dpavlin/perl-fuse
[perl-fuse.git] / examples / readdir.pl
index 4210696..63023bf 100755 (executable)
@@ -55,20 +55,15 @@ sub e_getattr {
        return ($dev,$ino,$modes,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks);
 }
 
-sub e_getdir {
-       # return as many text filenames as you like, followed by the retval.
-       print((scalar keys %files)."\n");
-       return (keys %files),0;
-}
-
 sub e_readdir {
-use Data::Dumper;
-print Dumper(\@_);
-    my ($path,$offset)  = @_;
-       # return as many text filenames as you like, followed by the retval.
-       print((scalar keys %files)."\n");
-    my @a   = keys %files;
-       return ($offset<0xFFFF ? $a[0] : undef),1+$offset,0;
+       my ($path,$offset)  = @_;
+       print "readdir $path $offset\n";
+       my $stridelen = 9;
+       my $last = $offset + $stridelen;
+       my @a = keys %files;
+       if ($last > $#a) { $last = $#a; }
+       my @ents = map { [ $_, $a[$_] ] } $offset .. $last;
+       return @ents, $offset < $#a ? 0 : -ENOENT();
 }
 
 sub e_open {
@@ -107,7 +102,6 @@ Fuse::main(
        mountpoint=>$mountpoint,
        getattr=>"main::e_getattr",
 #      getdir =>"main::e_getdir",
-#      getdir =>"main::e_readdir",
        readdir=>"main::e_readdir",
        open   =>"main::e_open",
        statfs =>"main::e_statfs",