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);
+our ($TYPE_DIR, $TYPE_SYMLINK)=(0040, 0120);
+our $DEFAULT_MAXTAGDEPTH = 15;
sub new
{
my $proto=shift;
$self->{source}=shift;
$self->{mountpoint}=Cwd::abs_path(shift);
$self->{verbose}=shift;
+ $self->{tagdepth}=shift;
+ $self->{tagdepth}=$DEFAULT_MAXTAGDEPTH unless($self->{tagdepth});
$self->{perms} = S_IRUSR() | S_IXUSR() | S_IRGRP() | S_IXGRP() | S_IROTH() | S_IXOTH();
return $self;
{
my($self, $filename)=@_;
# print "**GETATTR: $filename\n";
- my $path=ID3FS::Path->new($self->{db}, $filename, $self->{verbose});
+ my $path=ID3FS::Path->new($self->{db}, $filename, $self->{verbose}, $self->{tagdepth});
my $last_update=$self->{db}->last_update();
return(-ENOENT()) unless($path->isvalid());
my($dev,$ino,$nlink)=(0,0,1);
{
my($self,$filename)=@_;
# print "**READLINK: $filename\n";
- my $path=ID3FS::Path->new($self->{db}, $filename, $self->{verbose});
+ my $path=ID3FS::Path->new($self->{db}, $filename, $self->{verbose}, $self->{tagdepth});
return(-EINVAL()) unless($path->isfile());
return $path->dest($self->{mountpoint});
}
{
my($self, $filename)=@_;
# print "**GETDIR: $filename\n";
- my $path=ID3FS::Path->new($self->{db}, $filename, $self->{verbose});
+ my $path=ID3FS::Path->new($self->{db}, $filename, $self->{verbose}, $self->{tagdepth});
return(-ENOENT()) unless($path->isvalid());
return(-ENOTDIR()) unless($path->isdir());
my @dents=();