--- /dev/null
+package ID3FS::Fuse;
+
+use strict;
+use warnings;
+use POSIX qw(EINVAL ENOENT EROFS EOPNOTSUPP);
+use Fuse;
+
+sub new
+{
+ my $proto=shift;
+ my $class=ref($proto) || $proto;
+ my $self={};
+ bless($self,$class);
+
+ $self->{db}=shift;
+ $self->{source}=shift;
+ $self->{mountpoint}=shift;
+
+ return $self;
+}
+
+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,
+ );
+
+}
+
+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(); }
+
+1;