X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;ds=inline;f=DBI.pm;h=7c071328989af201e108f9fa6f5879b0c5669fde;hb=52fd51112a572de41ec1f2020cd1c10ff189a150;hp=24d9d8c9317a99198c2e06a8e76a8f1cc2de26e2;hpb=a3047ac017adb4077b648fa22e30fe7ec4e742a3;p=Fuse-DBI diff --git a/DBI.pm b/DBI.pm index 24d9d8c..7c07132 100755 --- a/DBI.pm +++ b/DBI.pm @@ -12,9 +12,11 @@ use DBI; use Carp; use Data::Dumper; - our $VERSION = '0.07'; +# block size for this filesystem +use constant BLOCK => 1024; + =head1 NAME Fuse::DBI - mount your database as filesystem and use it @@ -247,9 +249,11 @@ sub umount { my $self = shift; if ($self->{'mount'} && $self->is_mounted) { - system "fusermount -u ".$self->{'mount'}." 2>&1 >/dev/null" || + system "( fusermount -u ".$self->{'mount'}." 2>&1 ) >/dev/null"; + if ($self->is_mounted) { system "sudo umount ".$self->{'mount'} || return 0; + } return 1; } @@ -369,8 +373,8 @@ sub e_getattr { $file =~ s,^/,,; $file = '.' unless length($file); return -ENOENT() unless exists($files{$file}); - my ($size) = $files{$file}{size} || 1024; - my ($dev, $ino, $rdev, $blocks, $gid, $uid, $nlink, $blksize) = (0,0,0,int(($size+1023)/1024),0,0,1,1024); + my ($size) = $files{$file}{size} || 0; + my ($dev, $ino, $rdev, $blocks, $gid, $uid, $nlink, $blksize) = (0,0,0,int(($size+BLOCK-1)/BLOCK),0,0,1,BLOCK); my ($atime, $ctime, $mtime); $atime = $ctime = $mtime = $files{$file}{ctime} || $ctime_start; @@ -378,7 +382,7 @@ sub e_getattr { # 2 possible types of return values: #return -ENOENT(); # or any other error you care to - print "getattr($file) ",join(",",($dev,$ino,$modes,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks)),"\n"; + #print "getattr($file) ",join(",",($dev,$ino,$modes,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks)),"\n"; return ($dev,$ino,$modes,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks); } @@ -428,6 +432,7 @@ sub e_open { read_content($file,$files{$file}{id}) unless exists($files{$file}{cont}); + $files{$file}{cont} ||= ''; print "open '$file' ",length($files{$file}{cont})," bytes\n"; return 0; } @@ -556,11 +561,11 @@ sub e_statfs { print "$inodes: $f [$size]\n"; } - $size = int(($size+1023)/1024); + $size = int(($size+BLOCK-1)/BLOCK); - my @ret = (255, $inodes+1000, $inodes, $size, $size-10, 1024); + my @ret = (255, $inodes, 1, $size, $size-1, BLOCK); - print "statfs: ",join(",",@ret),"\n"; + #print "statfs: ",join(",",@ret),"\n"; return @ret; }