/[fuse_dbi]/fuse-couchdb/DBI.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 /fuse-couchdb/DBI.pm

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

revision 30 by dpavlin, Sat Oct 9 00:03:42 2004 UTC revision 36 by dpavlin, Tue Nov 16 15:34:25 2004 UTC
# Line 13  use Carp; Line 13  use Carp;
13  use Data::Dumper;  use Data::Dumper;
14    
15    
16  our $VERSION = '0.04';  our $VERSION = '0.05';
17    
18  =head1 NAME  =head1 NAME
19    
# Line 29  See C<run> below for examples how to set Line 29  See C<run> below for examples how to set
29  =head1 DESCRIPTION  =head1 DESCRIPTION
30    
31  This module will use C<Fuse> module, part of C<FUSE (Filesystem in USErspace)>  This module will use C<Fuse> module, part of C<FUSE (Filesystem in USErspace)>
32  available at L<http://sourceforge.net/projects/avf> to mount  available at L<http://fuse.sourceforge.net/> to mount
33  your database as file system.  your database as file system.
34    
35  That will give you possibility to use normal file-system tools (cat, grep, vi)  That will give you possibility to use normal file-system tools (cat, grep, vi)
# Line 148  sub mount { Line 148  sub mount {
148    
149          my $pid;          my $pid;
150          if ($arg->{'fork'}) {          if ($arg->{'fork'}) {
151                    $self->{'mounted'} = 1;
152                  $pid = fork();                  $pid = fork();
153                  die "fork() failed: $!" unless defined $pid;                  die "fork() failed: $!" unless defined $pid;
154                  # child will return to caller                  # child will return to caller
# Line 169  sub mount { Line 170  sub mount {
170          $self->{'read_filenames'} = sub { $self->read_filenames };          $self->{'read_filenames'} = sub { $self->read_filenames };
171          $self->read_filenames;          $self->read_filenames;
172    
173          $self->{'mounted'} = 1;          $self->{'mounted'} = 1 unless ($arg->{'fork'});
174    
175          $fuse_self = \$self;          $fuse_self = \$self;
176    
# Line 211  sub umount { Line 212  sub umount {
212          my $self = shift;          my $self = shift;
213    
214          if ($self->{'mounted'}) {          if ($self->{'mounted'}) {
215                  system "fusermount -u ".$self->{'mount'} || croak "umount error: $!";                  system "fusermount -u ".$self->{'mount'} || warn "umount error: $!" && return 0;
216          }          }
217    
218          return 1;          return 1;
# Line 342  sub e_getdir { Line 343  sub e_getdir {
343          my %out;          my %out;
344          foreach my $f (sort keys %files) {          foreach my $f (sort keys %files) {
345                  if ($dirname) {                  if ($dirname) {
346                          if ($f =~ s/^\E$dirname\Q\///) {                          if ($f =~ s/^\Q$dirname\E\///) {
347                                  $out{$f}++ if ($f =~ /^[^\/]+$/);                                  $out{$f}++ if ($f =~ /^[^\/]+$/);
348                          }                          }
349                  } else {                  } else {
# Line 364  sub read_content { Line 365  sub read_content {
365    
366          $sth->{'read'}->execute($id) || die $sth->{'read'}->errstr;          $sth->{'read'}->execute($id) || die $sth->{'read'}->errstr;
367          $files{$file}{cont} = $sth->{'read'}->fetchrow_array;          $files{$file}{cont} = $sth->{'read'}->fetchrow_array;
368          $files{$file}{ctime} = time();          # I should modify ctime only if content in database changed
369            #$files{$file}{ctime} = time() unless ($files{$file}{ctime});
370          print "file '$file' content [",length($files{$file}{cont})," bytes] read in cache\n";          print "file '$file' content [",length($files{$file}{cont})," bytes] read in cache\n";
371  }  }
372    
# Line 410  sub clear_cont { Line 412  sub clear_cont {
412          print "invalidate all cached content\n";          print "invalidate all cached content\n";
413          foreach my $f (keys %files) {          foreach my $f (keys %files) {
414                  delete $files{$f}{cont};                  delete $files{$f}{cont};
415                    delete $files{$f}{ctime};
416          }          }
417          print "begin new transaction\n";          print "begin new transaction\n";
418          #$dbh->begin_work || die $dbh->errstr;          #$dbh->begin_work || die $dbh->errstr;
# Line 521  Nothing. Line 524  Nothing.
524  =head1 SEE ALSO  =head1 SEE ALSO
525    
526  C<FUSE (Filesystem in USErspace)> website  C<FUSE (Filesystem in USErspace)> website
527  L<http://sourceforge.net/projects/avf>  L<http://fuse.sourceforge.net/>
528    
529  Example for WebGUI which comes with this distribution in  Example for WebGUI which comes with this distribution in
530  directory C<examples/webgui.pl>. It also contains a lot of documentation  directory C<examples/webgui.pl>. It also contains a lot of documentation

Legend:
Removed from v.30  
changed lines
  Added in v.36

  ViewVC Help
Powered by ViewVC 1.1.26