/[fuse.before_github]/perl/trunk/examples/loopback.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /perl/trunk/examples/loopback.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 4 by mszeredi, Thu Nov 11 14:44:15 2004 UTC revision 38 by dpavlin, Mon Jan 2 22:49:41 2006 UTC
# Line 1  Line 1 
1  #!/usr/bin/perl  #!/usr/bin/perl -w
   
2  use strict;  use strict;
3    
4    use blib;
5  use Fuse;  use Fuse;
6  use IO::File;  use IO::File;
7  use POSIX qw(ENOENT ENOSYS EEXIST EPERM O_RDONLY O_RDWR O_APPEND O_CREAT);  use POSIX qw(ENOENT ENOSYS EEXIST EPERM O_RDONLY O_RDWR O_APPEND O_CREAT);
8  use Fcntl qw(S_ISBLK S_ISCHR S_ISFIFO SEEK_SET);  use Fcntl qw(S_ISBLK S_ISCHR S_ISFIFO SEEK_SET);
9  require 'syscall.ph'; # for SYS_mknod and SYS_lchown  require 'syscall.ph'; # for SYS_mknod and SYS_lchown
10    
11  sub fixup { return "/tmp/fusetest" . shift }  my $tmp_path = "/tmp/fusetest-" . $ENV{LOGNAME};
12    if (! -e $tmp_path) {
13            mkdir($tmp_path) || die "can't create $tmp_path: $!";
14    }
15    
16    sub fixup { return $tmp_path . shift }
17    
18  sub x_getattr {  sub x_getattr {
19          my ($file) = fixup(shift);          my ($file) = fixup(shift);
# Line 63  sub x_write { Line 69  sub x_write {
69    
70  sub err { return (-shift || -$!) }  sub err { return (-shift || -$!) }
71    
72  sub x_readlink { return readlink(fixup(shift)                 ); }  sub x_readlink { return readlink(fixup(shift));         }
73  sub x_unlink { return unlink(fixup(shift)) ? 0 : -$!;          }  sub x_unlink   { return unlink(fixup(shift)) ? 0 : -$!; }
 sub x_rmdir { return err(rmdir(fixup(shift))               ); }  
74    
75  sub x_symlink { print "symlink\n"; return symlink(shift,fixup(shift)) ? 0 : -$!; }  sub x_symlink { print "symlink\n"; return symlink(shift,fixup(shift)) ? 0 : -$!; }
76    
# Line 115  my ($mountpoint) = ""; Line 120  my ($mountpoint) = "";
120  $mountpoint = shift(@ARGV) if @ARGV;  $mountpoint = shift(@ARGV) if @ARGV;
121  Fuse::main(  Fuse::main(
122          mountpoint=>$mountpoint,          mountpoint=>$mountpoint,
123          getattr=>\&x_getattr,          getattr =>"main::x_getattr",
124          readlink=>\&x_readlink,          readlink=>"main::x_readlink",
125          getdir=>\&x_getdir,          getdir  =>"main::x_getdir",
126          mknod=>\&x_mknod,          mknod   =>"main::x_mknod",
127          mkdir=>\&x_mkdir,          mkdir   =>"main::x_mkdir",
128          unlink=>\&x_unlink,          unlink  =>"main::x_unlink",
129          rmdir=>\&x_rmdir,          rmdir   =>"main::x_rmdir",
130          symlink=>\&x_symlink,          symlink =>"main::x_symlink",
131          rename=>\&x_rename,          rename  =>"main::x_rename",
132          link=>\&x_link,          link    =>"main::x_link",
133          chmod=>\&x_chmod,          chmod   =>"main::x_chmod",
134          chown=>\&x_chown,          chown   =>"main::x_chown",
135          truncate=>\&x_truncate,          truncate=>"main::x_truncate",
136          utime=>\&x_utime,          utime   =>"main::x_utime",
137          open=>\&x_open,          open    =>"main::x_open",
138          read=>\&x_read,          read    =>"main::x_read",
139          write=>\&x_write,          write   =>"main::x_write",
140          statfs=>\&x_statfs,          statfs  =>"main::x_statfs",
141            threaded=>0,
142            debug => 1,
143  );  );

Legend:
Removed from v.4  
changed lines
  Added in v.38

  ViewVC Help
Powered by ViewVC 1.1.26