From 96b649eb204c7e14fcc20fd715352e23bea71036 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Sun, 29 Aug 2004 19:16:01 +0000 Subject: [PATCH] umount works, as well as tests git-svn-id: svn://svn.rot13.org/fuse_dbi/trunk@12 17f4e80c-d0e0-0310-8903-bfc3ae804c12 --- DBI.pm | 15 ++++++++++++++- t/02database.t | 6 +++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/DBI.pm b/DBI.pm index 58fbdce..b39373c 100755 --- 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'}); + # save (some) arguments in self + $self->{$_} = $arg->{$_} foreach (qw(mount)); + 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; }; @@ -130,7 +135,15 @@ sub umount { 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; + } } diff --git a/t/02database.t b/t/02database.t index e9d57b6..d0745b0 100755 --- a/t/02database.t +++ b/t/02database.t @@ -39,8 +39,8 @@ my $mnt = Fuse::DBI->mount({ ok($mnt, "mount"); -diag "mounted sleeping for 5 sec"; -system "ls -lR /mnt2"; -sleep(5); +diag "press enter to continue"; +my $foo = ; ok($mnt->umount,"umount"); + -- 2.20.1