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);
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);
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);