use warnings;
use ID3FS::Path;
use Fuse;
+use Cwd;
use POSIX qw(EINVAL EROFS ENOENT EOPNOTSUPP S_IRUSR S_IRGRP S_IROTH S_IXUSR S_IXGRP S_IXOTH);
our ($TYPE_DIR, $TYPE_SYMLINK)=(0040, 0120);
$self->{db}=shift;
$self->{source}=shift;
- $self->{mountpoint}=shift;
+ $self->{mountpoint}=Cwd::abs_path(shift);
$self->{debug}=shift;
$self->{perms} = S_IRUSR() | S_IXUSR() | S_IRGRP() | S_IXGRP() | S_IROTH() | S_IXOTH();
getattr => sub { $self->getattr(@_); },
readlink => sub { $self->readlink(@_); },
getdir => sub { $self->getdir(@_); },
+
# Not used
# mknod => sub { $self->mknod(@_); },
# mkdir => sub { $self->mkdir(@_); },
# print "**READLINK: $filename\n";
my $path=ID3FS::Path->new($self->{db}, $filename);
return(-EINVAL()) unless($path->isfile());
- return $path->dest();
+ return $path->dest($self->{mountpoint});
}
sub getdir
# print "**GETDIR: $filename\n";
my $path=ID3FS::Path->new($self->{db}, $filename);
return(-ENOENT()) unless($path->isvalid());
- if($path->isdir())
+ return(-ENOTDIR()) unless($path->isdir());
+ my @dents=();
+ my($dirs, $files)=$path->dirents();
+ # too slow
+# push(@dents, $path->filter(@$dirs));
+ push(@dents, @$dirs);
+ push(@dents, @$files);
+ if(@dents)
{
- return(".", "..", $path->dirents(), 0);
+ return( (".", "..", @dents, 0) );
}
- return -ENOTDIR();
+ return(0);
}
# unused stubs