fix file splitting; tweaks
[id3fs.git] / lib / ID3FS / Fuse.pm
index 68a1b52..cc38b65 100644 (file)
@@ -4,7 +4,7 @@ use strict;
 use warnings;
 use ID3FS::Path;
 use Fuse;
-use POSIX qw(EINVAL EROFS EOPNOTSUPP S_IRUSR S_IRGRP S_IROTH S_IXUSR S_IXGRP S_IXOTH);
+use POSIX qw(EINVAL EROFS ENOENT EOPNOTSUPP S_IRUSR S_IRGRP S_IROTH S_IXUSR S_IXGRP S_IXOTH);
 use vars qw($TYPE_DIR $TYPE_SYMLINK);
 ($TYPE_DIR, $TYPE_SYMLINK)=(0040, 0120);
 
@@ -63,15 +63,15 @@ sub run
 sub getattr
 {
     my($self, $filename)=@_;
-    print "GETATTR: $filename\n";
+    print "**GETATTR: $filename\n";
+    my $path=ID3FS::Path->new($self->{db}, $filename);
+    return(-ENOENT()) unless($path->isvalid());
     my($dev,$ino,$nlink)=(0,0,1);
     my $uid=$<;
     my $gid=(split(/ /, $( ))[0];
     my($rdev,$size)=(0,1);
     my($atime,$mtime,$ctime)=(0,0,0);
     my($blksize,$blocks)=(512,1);
-
-    my $path=ID3FS::Path->new($self->{db}, $filename);
     my $mode=$self->mode( $path->isdir() ? $TYPE_DIR : $TYPE_SYMLINK );
     return($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
           $atime,$mtime,$ctime,$blksize,$blocks);
@@ -80,17 +80,18 @@ sub getattr
 sub readlink
 {
     my($self,$filename)=@_;
-    print "READLINK: $filename\n";
+    print "**READLINK: $filename\n";
     my $path=ID3FS::Path->new($self->{db}, $filename);
-    return(-EINVAL()) if($path->isdir());
+    return(-EINVAL()) unless($path->isfile());
     return $path->dest();
 }
 
 sub getdir
 {
     my($self, $filename)=@_;
-    print "GETDIR: $filename\n";
+    print "**GETDIR: $filename\n";
     my $path=ID3FS::Path->new($self->{db}, $filename);
+    return(-ENOENT()) unless($path->isvalid());
     if($path->isdir())
     {
        return(".", "..", $path->dirents(), 0);