SQLite test is finally working,
[Fuse-DBI] / DBI.pm
diff --git a/DBI.pm b/DBI.pm
index 0374402..3537bf0 100755 (executable)
--- a/DBI.pm
+++ b/DBI.pm
@@ -13,7 +13,7 @@ use Carp;
 use Data::Dumper;
 
 
-our $VERSION = '0.04';
+our $VERSION = '0.05';
 
 =head1 NAME
 
@@ -148,6 +148,7 @@ sub mount {
 
        my $pid;
        if ($arg->{'fork'}) {
+               $self->{'mounted'} = 1;
                $pid = fork();
                die "fork() failed: $!" unless defined $pid;
                # child will return to caller
@@ -169,7 +170,7 @@ sub mount {
        $self->{'read_filenames'} = sub { $self->read_filenames };
        $self->read_filenames;
 
-       $self->{'mounted'} = 1;
+       $self->{'mounted'} = 1 unless ($arg->{'fork'});
 
        $fuse_self = \$self;
 
@@ -211,7 +212,7 @@ sub umount {
        my $self = shift;
 
        if ($self->{'mounted'}) {
-               system "fusermount -u ".$self->{'mount'} || croak "umount error: $!";
+               system "fusermount -u ".$self->{'mount'} || warn "umount error: $!" && return 0;
        }
 
        return 1;
@@ -342,7 +343,7 @@ sub e_getdir {
        my %out;
        foreach my $f (sort keys %files) {
                if ($dirname) {
-                       if ($f =~ s/^\E$dirname\Q\///) {
+                       if ($f =~ s/^\Q$dirname\E\///) {
                                $out{$f}++ if ($f =~ /^[^\/]+$/);
                        }
                } else {
@@ -364,7 +365,8 @@ sub read_content {
 
        $sth->{'read'}->execute($id) || die $sth->{'read'}->errstr;
        $files{$file}{cont} = $sth->{'read'}->fetchrow_array;
-       $files{$file}{ctime} = time();
+       # I should modify ctime only if content in database changed
+       #$files{$file}{ctime} = time() unless ($files{$file}{ctime});
        print "file '$file' content [",length($files{$file}{cont})," bytes] read in cache\n";
 }
 
@@ -410,6 +412,7 @@ sub clear_cont {
        print "invalidate all cached content\n";
        foreach my $f (keys %files) {
                delete $files{$f}{cont};
+               delete $files{$f}{ctime};
        }
        print "begin new transaction\n";
        #$dbh->begin_work || die $dbh->errstr;