X-Git-Url: http://erislabs.net/gitweb/?p=id3fs.git;a=blobdiff_plain;f=lib%2FID3FS%2FFuse.pm;h=3345bc27407f562a3a1370f4b5a29292d3de0cfb;hp=14304f79fef68297dc801d54d071bc7e32b29558;hb=a88823c2e87634d9fdad780b4923a839ba7e2d04;hpb=74a215841ddeb33dda27da5bdc3e1981e6b780d7 diff --git a/lib/ID3FS/Fuse.pm b/lib/ID3FS/Fuse.pm index 14304f7..3345bc2 100644 --- a/lib/ID3FS/Fuse.pm +++ b/lib/ID3FS/Fuse.pm @@ -6,8 +6,9 @@ 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); +our ($TYPE_DIR, $TYPE_SYMLINK)=(0040, 0120); +our $DEFAULT_MAXTAGDEPTH = 15; sub new { my $proto=shift; @@ -19,6 +20,8 @@ sub new $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; @@ -65,7 +68,7 @@ sub getattr { 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); @@ -83,7 +86,7 @@ sub readlink { 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}); } @@ -92,7 +95,7 @@ sub getdir { 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=();