basic tags display in root of fs
authorIan Beckwith <ianb@erislabs.net>
Mon, 20 Sep 2010 03:11:42 +0000 (04:11 +0100)
committerIan Beckwith <ianb@erislabs.net>
Mon, 20 Sep 2010 03:11:42 +0000 (04:11 +0100)
lib/ID3FS/DB.pm
lib/ID3FS/Fuse.pm

index af325ba..b8a2c8c 100644 (file)
@@ -81,6 +81,14 @@ sub cmd_sth
     return $sth;
 }
 
+sub tags
+{
+    my($self, $path)=@_;
+    my $sql="SELECT DISTINCT name FROM tags;";
+    my $tags=$self->cmd_rows($sql);
+    return(map { $_->[0]; } @$tags);
+}
+
 sub add
 {
     my($self,$path)=@_;
@@ -221,6 +229,13 @@ sub cmd_onerow
     return($sth->fetchrow_array());
 }
 
+sub cmd_rows
+{
+    my ($self, @args)=@_;
+    my $sth=$self->cmd_sth(@args);
+    return $sth->fetchall_arrayref();
+}
+
 sub cmd_id
 {
     my ($self, @args)=@_;
index bfe36da..54ea029 100644 (file)
@@ -26,30 +26,30 @@ sub run
        mountpoint  => $self->{mountpoint},
        threaded=>0,
        debug => 1,
-       getattr     => "ID3FS::Fuse::getattr",
-#      readlink    => "ID3FS::Fuse::readlink",
-       getdir      => "ID3FS::Fuse::getdir",
-#      mknod       => "ID3FS::Fuse::mknod",
-#      mkdir       => "ID3FS::Fuse::mkdir",
-#      unlink      => "ID3FS::Fuse::unlink",
-#      rmdir       => "ID3FS::Fuse::rmdir",
-#      symlink     => "ID3FS::Fuse::symlink",
-#      rename      => "ID3FS::Fuse::rename",
-#      link        => "ID3FS::Fuse::link",
-#      chmod       => "ID3FS::Fuse::chmod",
-#      chown       => "ID3FS::Fuse::chown",
-#      truncate    => "ID3FS::Fuse::truncate",
-#      utime       => "ID3FS::Fuse::utime",
-#      open        => "ID3FS::Fuse::open",
-#      read        => "ID3FS::Fuse::read",
-#      write       => "ID3FS::Fuse::write",
-#      statfs      => "ID3FS::Fuse::statfs",
-#      release     => "ID3FS::Fuse::release",
-#      fsync       => "ID3FS::Fuse::fsync",
-#      setxattr    => "ID3FS::Fuse::setxattr",
-#      getxattr    => "ID3FS::Fuse::getxattr",
-#      listxattr   => "ID3FS::Fuse::listxattr",
-#      removexattr => "ID3FS::Fuse::removexattr",
+       getattr     => sub { $self->getattr(@_); },
+#      readlink    => sub { $self->readlink(@_); },
+       getdir      => sub { $self->getdir(@_); },
+#      mknod       => sub { $self->mknod(@_); },
+#      mkdir       => sub { $self->mkdir(@_); },
+#      unlink      => sub { $self->unlink(@_); },
+#      rmdir       => sub { $self->rmdir(@_); },
+#      symlink     => sub { $self->symlink(@_); },
+#      rename      => sub { $self->rename(@_); },
+#      link        => sub { $self->link(@_); },
+#      chmod       => sub { $self->chmod(@_); },
+#      chown       => sub { $self->chown(@_); },
+#      truncate    => sub { $self->truncate(@_); },
+#      utime       => sub { $self->utime(@_); },
+#      open        => sub { $self->open(@_); },
+#      read        => sub { $self->read(@_); },
+#      write       => sub { $self->write(@_); },
+#      statfs      => sub { $self->statfs(@_); },
+#      release     => sub { $self->release(@_); },
+#      fsync       => sub { $self->fsync(@_); },
+#      setxattr    => sub { $self->setxattr(@_); },
+#      getxattr    => sub { $self->getxattr(@_); },
+#      listxattr   => sub { $self->listxattr(@_); },
+#      removexattr => sub { $self->removexattr(@_); },
        );
 }
 
@@ -71,8 +71,12 @@ sub readlink    { print "readlink\n"; return "FIXME";       }
 
 sub getdir
 {
-    my($filename)=@_;
-    print "GETDIR: $filename\n";
+    my($self, $filename)=@_;
+    print "GETDIR(", ref($self), ": $filename\n";
+    if($filename eq "/")
+    {
+       return(".", "..", $self->{db}->tags(), 0);
+    }
     return('.',0);
 }