minimal working fuse stub
authorIan Beckwith <ianb@erislabs.net>
Mon, 20 Sep 2010 02:19:19 +0000 (03:19 +0100)
committerIan Beckwith <ianb@erislabs.net>
Mon, 20 Sep 2010 02:19:19 +0000 (03:19 +0100)
lib/ID3FS/Fuse.pm

index 014706e..bfe36da 100644 (file)
@@ -24,59 +24,78 @@ sub run
     my($self)=@_;
     Fuse::main(
        mountpoint  => $self->{mountpoint},
-       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",
        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",
        );
+}
 
+sub getattr
+{
+    my($filename)=@_;
+    print "GETATTR: $filename\n";
+    my($dev,$ino,$nlink)=(0,0,1);
+    my($uid,$gid)=(1000,1000);
+    my($rdev,$size)=(0,1);
+    my($atime,$mtime,$ctime)=(0,0,0);
+    my($blksize,$blocks)=(512,1);
+    my $mode=(0040 << 9) | 0755;
+    return($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
+          $atime,$mtime,$ctime,$blksize,$blocks);
+}
+
+sub readlink    { print "readlink\n"; return "FIXME";       }
+
+sub getdir
+{
+    my($filename)=@_;
+    print "GETDIR: $filename\n";
+    return('.',0);
 }
 
-sub getattr     { return -ENOENT();     }
-sub readlink    { return "FIXME";       }
-sub getdir      { return(0);            }
-sub mknod       { return -EINVAL();     }
-sub mkdir       { return -EROFS();      }
-sub unlink      { return -EINVAL();     }
-sub rmdir       { return -EROFS();      }
-sub symlink     { return -EROFS();      }
-sub rename      { return -EROFS();      }
-sub link        { return -EROFS();      }
-sub chmod       { return -EINVAL();     }
-sub chown       { return -EINVAL();     }
-sub truncate    { return -EROFS();      }
-sub utime       { return -EINVAL();     }
-sub open        { return -EINVAL();     }
-sub read        { return -EINVAL();     }
-sub write       { return -EINVAL();     }
-sub statfs      { return -EINVAL();     }
-sub release     { return 0;             }
-sub fsync       { return 0;             }
-sub setxattr    { return -EOPNOTSUPP(); }
-sub getxattr    { return -EOPNOTSUPP(); }
-sub listxattr   { return -EOPNOTSUPP(); }
-sub removexattr { return -EOPNOTSUPP(); }
+sub mknod       { print "mknod\n"; return -EINVAL();     }
+sub mkdir       { print "mkdir\n"; return -EROFS();      }
+sub unlink      { print "unlink\n"; return -EINVAL();     }
+sub rmdir       { print "rmdir\n"; return -EROFS();      }
+sub symlink     { print "symlink\n"; return -EROFS();      }
+sub rename      { print "rename\n"; return -EROFS();      }
+sub link        { print "link\n"; return -EROFS();      }
+sub chmod       { print "chmod\n"; return -EINVAL();     }
+sub chown       { print "chown\n"; return -EINVAL();     }
+sub truncate    { print "truncate\n"; return -EROFS();      }
+sub utime       { print "utime\n"; return -EINVAL();     }
+sub open        { print "open\n"; return -EINVAL();     }
+sub read        { print "read\n"; return -EINVAL();     }
+sub write       { print "write\n"; return -EINVAL();     }
+sub statfs      { print "statfs\n"; return -EINVAL();     }
+sub release     { print "release\n"; return 0;             }
+sub fsync       { print "fsync\n"; return 0;             }
+sub setxattr    { print "setxattr\n"; return -EOPNOTSUPP(); }
+sub getxattr    { print "getxattr\n"; return -EOPNOTSUPP(); }
+sub listxattr   { print "listxattr\n"; return -EOPNOTSUPP(); }
+sub removexattr { print "removexattr\n"; return -EOPNOTSUPP(); }
 
 1;