X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=sbin%2Fid3fsd;h=90b8739af6b57fab1473b978baac08575760fa71;hb=817e2206f78f72be5a68c2def4316c35798d297d;hp=93d2d6c16326a2f33e58b1615c6ee0ed593fa277;hpb=994377a7cc7464bb0156a004b10ccf65df0cb89c;p=id3fs.git
diff --git a/sbin/id3fsd b/sbin/id3fsd
index 93d2d6c..90b8739 100755
--- a/sbin/id3fsd
+++ b/sbin/id3fsd
@@ -16,11 +16,13 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-use lib '/home/ianb/projects/id3fs/id3fs/lib';
+use lib '/home/ianb/projects/id3fs/id3fs/lib'; # FIXME: remove
use strict;
use Getopt::Long qw(Configure);
use ID3FS::DB;
use ID3FS::Fuse;
+use POSIX;
+
use vars qw($me);
$me=($0=~/(?:.*\/)?(.*)/)[0];
@@ -48,14 +50,31 @@ my $db=ID3FS::DB->new($me, $verbose, 0, $source, $dbpath);
exit unless($db);
my $fuse=ID3FS::Fuse->new($db, $source, $mountpoint, $verbose, $tagdepth);
+
+# disassociate from terminal
+unless($verbose)
+{
+ my $pid=fork();
+ if(defined($pid))
+ {
+ exit if($pid); # parent
+ POSIX::setsid(); # child
+ }
+ else
+ {
+ print "$me: couldn't drop terminal: $!\n";
+ }
+}
+
$fuse->run();
sub usage
{
- die("Usage: $me [-vqh] [-f ] [--] \n".
+ die("Usage: $me [-vh] [-f ] [-t ] [--] \n".
+ " -t|--tagdepth=NUM\tMaximum number of tags in expression (default: 10)\n" .
+ " -f|--database=FILE\tPath to database file\n" .
" -v\t\t\tVerbose (repeat for more verbosity)\n".
" -h\t\t\tThis help\n".
- " -f|--database=FILE\tPath to database file\n" .
" --\t\t\tEnd of options\n");
}
@@ -107,18 +126,35 @@ You may need to be in the I group, or be root.
=over 4
-=item B<-v>
+=item I
-Enable verbose operation. Repeat for more verbosity.
+Directory containing actual audio files and database file F<.id3fs>
+(unless otherwise specified with B<-f>).
-=item B<-h>
+=item I
-Show a short help message.
+Directory to mount the id3fs view of the files.
+
+=item SI> | SI>
+
+Maximum number of tags in an expression. A query with many ANDs and
+NOTs can get quite slow. This option allows a cutoff before things get
+too slow, as well as providing some eventual limit when processes
+recurse into the filesystem. The default is 10.
=item SI> | SI>
Use database in I. The default is I/B<.id3fs>.
+=item B<-v>
+
+Enable verbose operation. Repeat for more verbosity. If verbose is
+enabled, id3fsd does not detach from the terminal.
+
+=item B<-h>
+
+Show a short help message.
+
=item B<-->
End of options.
@@ -142,6 +178,10 @@ Example paths:
/krautrock/AND/year/1971/NOARTIST/unknown-track.mp3
/krautrock/AND/year/1971/TRACKS/01-Paperhouse.mp3
+id3fs supports OR, AND and NOT. NOT has the highest precedence,
+followed by AND, so F is parsed as
+(foo OR ((NOT bar) AND baz)).
+
=head2 Tags
Tags are extracted from the B tag of audio files with
@@ -224,27 +264,6 @@ traverse it.
Ensure your backups, cron jobs, F, etc. are
configured to exclude the mount point.
-=head1 EXAMPLES
-
-To mount an id3fs filesystem which indexes B<~/music/albums> on
-B<~/music/tags>:
-
-First create the index:
-
- id3fs-index -v ~/music/albums
-
-If you have a large collection of music, this may take some time.
-
-Then create the mountpoint:
-
- mkdir ~/music/tags
-
-and mount the filesystem:
-
- id3fsd ~/music/albums ~/music/tags
-
-Then explore the tags in ~/music/tags/
-
=head1 BUGS
Please report any found to ianb@erislabs.net