diff options
author | Mark Glines <mark@glines.org> | 2002-06-26 05:32:13 +0000 |
---|---|---|
committer | Mark Glines <mark@glines.org> | 2002-06-26 05:32:13 +0000 |
commit | 34f1a73ae024aba08f1222ffaa4a4dd30b505c20 (patch) | |
tree | 3dd7c95ec9c14900259e0ae97fe84572b151ee81 /perl/example.pl | |
parent | a6e354a6145bf958701204cf3cf99c8f2ef1c0b2 (diff) | |
download | libfuse-34f1a73ae024aba08f1222ffaa4a4dd30b505c20.tar.gz |
moved examples into a subdirectory
updated the README
Diffstat (limited to 'perl/example.pl')
-rwxr-xr-x | perl/example.pl | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/perl/example.pl b/perl/example.pl deleted file mode 100755 index 9ba1117..0000000 --- a/perl/example.pl +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/perl - -use Fuse; -use POSIX qw(ENOENT EISDIR EINVAL); - -my (%files) = ( - '.' => { - type => 0040, - mode => 0755, - ctime => time()-1000 - }, - a => { - cont => "File 'a'.\n", - type => 0100, - mode => 0755, - ctime => time()-2000 - }, - b => { - cont => "This is file 'b'.\n", - type => 0100, - mode => 0644, - ctime => time()-1000 - }, -); - -sub filename_fixup { - my ($file) = shift; - $file =~ s,^/,,; - $file = '.' unless length($file); - return $file; -} - -sub e_getattr { - my ($file) = filename_fixup(shift); - $file =~ s,^/,,; - $file = '.' unless length($file); - return -ENOENT() unless exists($files{$file}); - my ($size) = exists($files{$file}{cont}) ? length($files{$file}{cont}) : 0; - my ($modes) = ($files{$file}{type}<<9) + $files{$file}{mode}; - my ($dev, $ino, $rdev, $blocks, $gid, $uid, $nlink, $blksize) = (0,0,0,1,0,0,1,1024); - my ($atime, $ctime, $mtime); - $atime = $ctime = $mtime = $files{$file}{ctime}; - # 2 possible types of return values: - #return -ENOENT(); # or any other error you care to - #print(join(",",($dev,$ino,$modes,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks)),"\n"); - return ($dev,$ino,$modes,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks); -} - -sub e_getdir { - # return as many text filenames as you like, followed by the retval. - print((scalar keys %files)."\n"); - return (keys %files),0; -} - -sub e_open { - # VFS sanity check; it keeps all the necessary state, not much to do here. - my ($file) = filename_fixup(shift); - print("open called\n"); - return -ENOENT() unless exists($files{$file}); - return -EISDIR() unless exists($files{$file}{cont}); - print("open ok\n"); - return 0; -} - -sub e_read { - # return an error numeric, or binary/text string. (note: 0 means EOF, "0" will - # give a byte (ascii "0") to the reading program) - my ($file) = filename_fixup(shift); - my ($buf,$off) = @_; - return -ENOENT() unless exists($files{$file}); - return -EINVAL() if $off > length($files{$file}{cont}); - return 0 if $off == length($files{$file}{cont}); - return substr($files{$file}{cont},$off,$buf); -} - -sub e_statfs { return 255, 1, 1, 1, 1, 2 } - -# If you run the script directly, it will run fusermount, which will in turn -# re-run this script. Hence the funky semantics. -my ($mountpoint) = ""; -$mountpoint = shift(@ARGV) if @ARGV; -Fuse::main( - mountpoint=>$mountpoint, - getattr=>\&e_getattr, - getdir=>\&e_getdir, - open=>\&e_open, - statfs=>\&e_statfs, - read=>\&e_read, - #debug=>1, threaded=>0 -); |