--- trunk/DBI.pm 2004/10/02 16:54:42 23 +++ trunk/DBI.pm 2004/10/08 20:07:12 24 @@ -64,6 +64,11 @@ sub read_filenames; sub fuse_module_loaded; +# evil, evil way to solve this. It makes this module non-reentrant. But, since +# fuse calls another copy of this script for each mount anyway, this shouldn't +# be a problem. +my $fuse_self; + sub mount { my $class = shift; my $self = {}; @@ -77,7 +82,10 @@ carp "mount needs 'mount' as mountpoint" unless ($arg->{'mount'}); # save (some) arguments in self - $self->{$_} = $arg->{$_} foreach (qw(mount)); + foreach (qw(mount invalidate)) { + $self->{$_} = $arg->{$_}; + $fuse_self->{$_} = $arg->{$_}; + } foreach (qw(filenames read update)) { carp "mount needs '$_' SQL" unless ($arg->{$_}); @@ -143,6 +151,17 @@ return 1; } +#$SIG{'INT'} = sub { +# print STDERR "umount called by SIG INT\n"; +# umount; +#}; + +sub DESTROY { + my $self = shift; + print STDERR "umount called by DESTROY\n"; + $self->umount; +} + =head2 fuse_module_loaded Checks if C module is loaded in kernel. @@ -348,6 +367,8 @@ return 0; } print "updated '$file' [",$files{$file}{id},"]\n"; + + $fuse_self->{'invalidate'}->() if (ref $fuse_self->{'invalidate'}); } return 1; }