umount works, as well as tests
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 29 Aug 2004 19:16:01 +0000 (19:16 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 29 Aug 2004 19:16:01 +0000 (19:16 +0000)
git-svn-id: svn://svn.rot13.org/fuse_dbi/trunk@12 17f4e80c-d0e0-0310-8903-bfc3ae804c12

DBI.pm
t/02database.t

diff --git a/DBI.pm b/DBI.pm
index 58fbdce..b39373c 100755 (executable)
--- a/DBI.pm
+++ b/DBI.pm
@@ -76,6 +76,9 @@ sub mount {
        carp "mount needs 'dsn' to connect to (e.g. dsn => 'DBI:Pg:dbname=test')" unless ($arg->{'dsn'});
        carp "mount needs 'mount' as mountpoint" unless ($arg->{'mount'});
 
        carp "mount needs 'dsn' to connect to (e.g. dsn => 'DBI:Pg:dbname=test')" unless ($arg->{'dsn'});
        carp "mount needs 'mount' as mountpoint" unless ($arg->{'mount'});
 
+       # save (some) arguments in self
+       $self->{$_} = $arg->{$_} foreach (qw(mount));
+
        foreach (qw(filenames read update)) {
                carp "mount needs '$_' SQL" unless ($arg->{$_});
        }
        foreach (qw(filenames read update)) {
                carp "mount needs '$_' SQL" unless ($arg->{$_});
        }
@@ -112,6 +115,8 @@ sub mount {
                );
        } );
 
                );
        } );
 
+       confess "Fuse::main failed" if (! $self->{'proc'}->poll);
+
        $self ? return $self : return undef;
 };
 
        $self ? return $self : return undef;
 };
 
@@ -130,7 +135,15 @@ sub umount {
        my $self = shift;
 
        confess "no process running?" unless ($self->{'proc'});
        my $self = shift;
 
        confess "no process running?" unless ($self->{'proc'});
-       $self->{'proc'}->kill;
+
+       system "fusermount -u ".$self->{'mount'} || croak "umount error: $!";
+
+       if ($self->{'proc'}->poll) {
+               $self->{'proc'}->kill;
+               return 1 if (! $self->{'proc'}->poll);
+       } else {
+               return 1;
+       }
 }
 
 
 }
 
 
index e9d57b6..d0745b0 100755 (executable)
@@ -39,8 +39,8 @@ my $mnt = Fuse::DBI->mount({
 
 ok($mnt, "mount");
 
 
 ok($mnt, "mount");
 
-diag "mounted sleeping for 5 sec";
-system "ls -lR /mnt2";
-sleep(5);
+diag "press enter to continue";
+my $foo = <STDIN>;
 
 ok($mnt->umount,"umount");
 
 ok($mnt->umount,"umount");
+