From 7c549737241ec9dd03289a9710bb352b66e60569 Mon Sep 17 00:00:00 2001 From: Ian Beckwith Date: Fri, 24 Sep 2010 02:05:20 +0100 Subject: [PATCH] fiddle with DB->new parameters --- bin/id3fs | 28 +++++++++++++++++++--------- lib/ID3FS/DB.pm | 31 +++++++++++++++---------------- sbin/id3fsd | 4 +++- 3 files changed, 37 insertions(+), 26 deletions(-) diff --git a/bin/id3fs b/bin/id3fs index 1998169..547b96d 100755 --- a/bin/id3fs +++ b/bin/id3fs @@ -12,23 +12,33 @@ $me=($0=~/(?:.*\/)?(.*)/)[0]; my $verbose=0; my $help=0; -my $init=0; -my @extensions=qw(mp3); # ogg flac); +my $basedir=undef; +my $dbpath=undef; + +my @extensions=qw(mp3); # ogg flac); # FIXME Configure(qw(bundling no_ignore_case)); my $optret=GetOptions( - "verbose|v" => \$verbose, - "quiet|q" => sub { $verbose=0; }, - "help|h" => \$help, + "verbose|v" => \$verbose, + "quiet|q" => sub { $verbose=0; }, + "help|h" => \$help, + "basedir|d=s" => \$basedir, + "database|db=s" => \$dbpath, "extensions|e=s" => sub { @extensions=split(/\s+|\s*,\s*/, $_[1]); }, - "init|i" => \$init, ); usage() if(!@ARGV || !$optret || $help); -my $path=shift; -my $db=ID3FS::DB->new($path, $init, $me); +if(@ARGV > 1 && !defined($basedir)) +{ + die("$me: --basedir must be specified if multiple paths are supplied\n"); +} + +my $db=ID3FS::DB->new($me, $dbpath, $basedir, $ARGV[0]); -File::Find::find( {wanted => \&wanted, follow => 1, no_chdir => 1}, $path); +while(my $path=shift) +{ + File::Find::find( {wanted => \&wanted, follow => 1, no_chdir => 1}, $path); +} sub wanted { diff --git a/lib/ID3FS/DB.pm b/lib/ID3FS/DB.pm index 5217484..11381c6 100644 --- a/lib/ID3FS/DB.pm +++ b/lib/ID3FS/DB.pm @@ -16,21 +16,19 @@ sub new my $self={}; bless($self,$class); - my($dir, $init, $me)=@_; - $self->{base}=$dir; - $self->{absbase}=Cwd::abs_path($dir); - $self->{dbpath}="$dir/$dbfile"; - $self->{me}=$me; + $self->{me}=shift; + $self->{dbpath}=shift; + $self->{base}=shift; + $self->{fallbackdir}=shift; - my $exists=-f $self->{dbpath}; - - $self->{postgres}=0; - - unless($self->{postgres}) + if(!defined($self->{base}) && + defined($self->{fallbackdir}) && + -d $self->{fallbackdir}) { - die("$me: $self->{dbpath}: not found. use --init to create.\n") if(!$exists && !$init); - die("$me: --init used but $self->{dbpath} exists.\n") if($exists && $init); + $self->{base}=$self->{fallbackdir}; } + $self->{dbpath}="$self->{base}/$dbfile" unless(defined($self->{dbpath})); + $self->{absbase}=Cwd::abs_path($self->{base}); my $connectstr="dbi:SQLite:dbname=$self->{dbpath}"; my ($user, $pass)=("", ""); @@ -40,20 +38,21 @@ sub new $user="ianb"; $pass="foo"; } + my $exists=-f $self->{dbpath}; $self->{dbh}=DBI->connect($connectstr, $user, $pass, { AutoCommit=>1 } ); unless(defined($self->{dbh})) { - die("$me: DB Error: " . $DBI::errstr . "\n"); + die("$self->{me}: DB Error: " . $DBI::errstr . "\n"); } - if($init) + if($exists) { - $self->create(); + $self->checkschema(); } else { - $self->checkschema(); + $self->create(); } return $self; diff --git a/sbin/id3fsd b/sbin/id3fsd index 3e95597..96a4f57 100755 --- a/sbin/id3fsd +++ b/sbin/id3fsd @@ -12,12 +12,14 @@ $me=($0=~/(?:.*\/)?(.*)/)[0]; my $verbose=0; my $help=0; +my $dbpath=undef; Configure(qw(bundling no_ignore_case)); my $optret=GetOptions( "verbose|v" => \$verbose, "quiet|q" => sub { $verbose=0; }, "help|h" => \$help, + "database|db=s" => \$dbpath, ); usage() if(scalar(@ARGV) != 2 || !$optret || $help); @@ -25,7 +27,7 @@ usage() if(scalar(@ARGV) != 2 || !$optret || $help); my $source=shift; my $mountpoint=shift; -my $db=ID3FS::DB->new($source, 0, $me); +my $db=ID3FS::DB->new($me, $dbpath, $source); my $fuse=ID3FS::Fuse->new($db, $source, $mountpoint, $verbose); $fuse->run(); -- 2.11.0