implement fuse stub
[id3fs.git] / lib / ID3FS / Fuse.pm
1 package ID3FS::Fuse;
2
3 use strict;
4 use warnings;
5 use POSIX qw(EINVAL ENOENT EROFS EOPNOTSUPP);
6 use Fuse;
7
8 sub new
9 {
10     my $proto=shift;
11     my $class=ref($proto) || $proto;
12     my $self={};
13     bless($self,$class);
14
15     $self->{db}=shift;
16     $self->{source}=shift;
17     $self->{mountpoint}=shift;
18
19     return $self;
20 }
21
22 sub run
23 {
24     my($self)=@_;
25     Fuse::main(
26         mountpoint  => $self->{mountpoint},
27         getattr     => "ID3FS::Fuse::getattr",
28         readlink    => "ID3FS::Fuse::readlink",
29         getdir      => "ID3FS::Fuse::getdir",
30         mknod       => "ID3FS::Fuse::mknod",
31         mkdir       => "ID3FS::Fuse::mkdir",
32         unlink      => "ID3FS::Fuse::unlink",
33         rmdir       => "ID3FS::Fuse::rmdir",
34         symlink     => "ID3FS::Fuse::symlink",
35         rename      => "ID3FS::Fuse::rename",
36         link        => "ID3FS::Fuse::link",
37         chmod       => "ID3FS::Fuse::chmod",
38         chown       => "ID3FS::Fuse::chown",
39         truncate    => "ID3FS::Fuse::truncate",
40         utime       => "ID3FS::Fuse::utime",
41         open        => "ID3FS::Fuse::open",
42         read        => "ID3FS::Fuse::read",
43         write       => "ID3FS::Fuse::write",
44         statfs      => "ID3FS::Fuse::statfs",
45         release     => "ID3FS::Fuse::release",
46         fsync       => "ID3FS::Fuse::fsync",
47         setxattr    => "ID3FS::Fuse::setxattr",
48         getxattr    => "ID3FS::Fuse::getxattr",
49         listxattr   => "ID3FS::Fuse::listxattr",
50         removexattr => "ID3FS::Fuse::removexattr",
51         threaded=>0,
52         debug => 1,
53         );
54
55 }
56
57 sub getattr     { return -ENOENT();     }
58 sub readlink    { return "FIXME";       }
59 sub getdir      { return(0);            }
60 sub mknod       { return -EINVAL();     }
61 sub mkdir       { return -EROFS();      }
62 sub unlink      { return -EINVAL();     }
63 sub rmdir       { return -EROFS();      }
64 sub symlink     { return -EROFS();      }
65 sub rename      { return -EROFS();      }
66 sub link        { return -EROFS();      }
67 sub chmod       { return -EINVAL();     }
68 sub chown       { return -EINVAL();     }
69 sub truncate    { return -EROFS();      }
70 sub utime       { return -EINVAL();     }
71 sub open        { return -EINVAL();     }
72 sub read        { return -EINVAL();     }
73 sub write       { return -EINVAL();     }
74 sub statfs      { return -EINVAL();     }
75 sub release     { return 0;             }
76 sub fsync       { return 0;             }
77 sub setxattr    { return -EOPNOTSUPP(); }
78 sub getxattr    { return -EOPNOTSUPP(); }
79 sub listxattr   { return -EOPNOTSUPP(); }
80 sub removexattr { return -EOPNOTSUPP(); }
81
82 1;