--- trunk/DBI.pm 2004/08/29 18:51:29 11 +++ trunk/DBI.pm 2004/08/29 20:12:37 13 @@ -76,6 +76,9 @@ 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 @@ ); } ); + confess "Fuse::main failed" if (! $self->{'proc'}->poll); + $self ? return $self : return undef; }; @@ -130,7 +135,15 @@ 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; + } } @@ -222,12 +235,11 @@ # return as many text filenames as you like, followed by the retval. print((scalar keys %files)." files total\n"); my %out; - foreach (keys %files) { - my $f = $_; - $f =~ s/^\E$dirname\Q//; - $f =~ s/^\///; + foreach my $f (sort keys %files) { if ($dirname) { - $out{$f}++ if (/^\E$dirname\Q/ && $f =~ /^[^\/]+$/); + if ($f =~ s/^\E$dirname\Q\///) { + $out{$f}++ if ($f =~ /^[^\/]+$/); + } } else { $out{$f}++ if ($f =~ /^[^\/]+$/); } @@ -236,6 +248,7 @@ $out{'no files? bug?'}++; } print scalar keys %out," files in dir '$dirname'\n"; + print "## ",join(" ",keys %out),"\n"; return (keys %out),0; }