use breadcrumbs for directories and files
[Fuse-DBI] / DBI.pm
diff --git a/DBI.pm b/DBI.pm
index f8c7907..89889bd 100755 (executable)
--- a/DBI.pm
+++ b/DBI.pm
@@ -12,7 +12,7 @@ use DBI;
 use Carp;
 use Data::Dumper;
 
-our $VERSION = '0.07';
+our $VERSION = '0.08';
 
 # block size for this filesystem
 use constant BLOCK => 1024;
@@ -329,12 +329,14 @@ sub read_filenames {
 
        # read them in with sesible defaults
        while (my $row = $sth->{'filenames'}->fetchrow_hashref() ) {
+               $row->{'filename'} ||= 'NULL-'.$row->{'id'};
                $files{$row->{'filename'}} = {
                        size => $row->{'size'},
                        mode => $row->{'writable'} ? 0644 : 0444,
                        id => $row->{'id'} || 99,
                };
 
+
                my $d;
                foreach (split(m!/!, $row->{'filename'})) {
                        # first, entry is assumed to be file
@@ -373,7 +375,7 @@ sub e_getattr {
        $file =~ s,^/,,;
        $file = '.' unless length($file);
        return -ENOENT() unless exists($files{$file});
-       my ($size) = $files{$file}{size} || BLOCK;
+       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;
@@ -432,6 +434,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;
 }