/[fuse.before_github]/perl-llin/Fuse.pm
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-llin/Fuse.pm

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

perl/trunk/Fuse.pm revision 19 by dpavlin, Tue Dec 27 12:47:00 2005 UTC perl-llin/Fuse.pm revision 123 by dpavlin, Wed Mar 19 19:40:20 2008 UTC
# Line 21  our @ISA = qw(Exporter DynaLoader); Line 21  our @ISA = qw(Exporter DynaLoader);
21  # If you do not need this, moving things directly into @EXPORT or @EXPORT_OK  # If you do not need this, moving things directly into @EXPORT or @EXPORT_OK
22  # will save memory.  # will save memory.
23  our %EXPORT_TAGS = (  our %EXPORT_TAGS = (
24                      'all' => [ qw(XATTR_CREATE XATTR_REPLACE) ],                      'all' => [ qw(XATTR_CREATE XATTR_REPLACE fuse_get_context) ],
25                      'xattr' => [ qw(XATTR_CREATE XATTR_REPLACE) ]                      'xattr' => [ qw(XATTR_CREATE XATTR_REPLACE) ]
26                      );                      );
27    
28  our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );  our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
29    
30  our @EXPORT = ();  our @EXPORT = ();
31  our $VERSION = '0.07';  our $VERSION = '0.09_3';
32    
33  sub AUTOLOAD {  sub AUTOLOAD {
34      # This AUTOLOAD is used to 'autoload' constants from the constant()      # This AUTOLOAD is used to 'autoload' constants from the constant()
# Line 75  sub XATTR_REPLACE { Line 75  sub XATTR_REPLACE {
75  bootstrap Fuse $VERSION;  bootstrap Fuse $VERSION;
76    
77  sub main {  sub main {
78          my (@subs) = (undef,undef,undef,undef,undef,undef,undef,undef,undef,undef,          my @names = qw(getattr readlink getdir mknod mkdir unlink rmdir symlink
79                        undef,undef,undef,undef,undef,undef,undef,undef,undef,undef,                          rename link chmod chown truncate utime open read write statfs
80                        undef,undef,undef,undef,undef);                          flush release fsync setxattr getxattr listxattr removexattr);
81          my (@names) = qw(getattr readlink getdir mknod mkdir unlink rmdir symlink          my @subs = map {undef} @names;
82                           rename link chmod chown truncate utime open read write statfs          my @validOpts = qw(ro allow_other default_permissions fsname use_ino nonempty);
83                           flush release fsync setxattr getxattr listxattr removexattr);          my $tmp = 0;
84          my (@validOpts) = qw(allow_other);          my %mapping = map { $_ => $tmp++ } @names;
85          my ($tmp) = 0;          my %optmap  = map { $_ => 1 } @validOpts;
86          my (%mapping) = map { $_ => $tmp++ } (@names);          my @otherargs = qw(debug threaded mountpoint mountopts);
87          my (%optmap) = map { $_ => 1 } (@validOpts);          my %otherargs = (debug=>0, threaded=>0, mountpoint=>"", mountopts=>"");
         my (%otherargs) = (debug=>0, threaded=>0, mountpoint=>"", mountopts=>"");  
88          while(my $name = shift) {          while(my $name = shift) {
89                  my ($subref) = shift;                  my ($subref) = shift;
90                  if(exists($otherargs{$name})) {                  if(exists($otherargs{$name})) {
# Line 96  sub main { Line 95  sub main {
95                          $subs[$mapping{$name}] = $subref;                          $subs[$mapping{$name}] = $subref;
96                  }                  }
97          }          }
98          foreach my $opt ( split(/,/,$otherargs{mountopts}) ) {          foreach my $opt ( map {m/^([^=]*)/; $1} split(/,/,$otherargs{mountopts}) ) {
99                  if ( ! exists($optmap{$opt}) ) {            next if exists($optmap{$opt});
100                          croak "Use of an invalid mountopt argument";            croak "Fuse::main: invalid '$opt' argument in mountopts";
                 }  
101          }          }
102          if($otherargs{threaded}) {          if($otherargs{threaded}) {
103                  # make sure threads are both available, and loaded.                  # make sure threads are both available, and loaded.
# Line 120  sub main { Line 118  sub main {
118                          $otherargs{threaded} = 0;                          $otherargs{threaded} = 0;
119                  }                  }
120          }          }
121          perl_fuse_main($otherargs{debug},$otherargs{threaded},$otherargs{mountpoint},$otherargs{mountopts},@subs);          perl_fuse_main(@otherargs{@otherargs},@subs);
122  }  }
123    
124  # Autoload methods go after =cut, and are processed by the autosplit program.  # Autoload methods go after =cut, and are processed by the autosplit program.
# Line 236  threads::shared.) Line 234  threads::shared.)
234    
235  =back  =back
236    
237    =head3 Fuse::fuse_get_context
238    
239     use Fuse "fuse_get_context";
240     my $caller_uid = fuse_get_context()->{"uid"};
241     my $caller_gid = fuse_get_context()->{"gid"};
242     my $caller_pid = fuse_get_context()->{"pid"};
243    
244    Access context information about the current Fuse operation.
245    
246  =head2 FUNCTIONS YOUR FILESYSTEM MAY IMPLEMENT  =head2 FUNCTIONS YOUR FILESYSTEM MAY IMPLEMENT
247    
248  =head3 getattr  =head3 getattr

Legend:
Removed from v.19  
changed lines
  Added in v.123

  ViewVC Help
Powered by ViewVC 1.1.26