]> diplodocus.org Git - flac-archive/blobdiff - fa-flacd
(get_tags): http://us.xiph.org/ogg/vorbis/doc/v-comment.html says the
[flac-archive] / fa-flacd
index 3e9e7cb8059bdbdb7c55830d3fc1a76784e5c3c1..7c89d9359cfa4cc57d350d2457da0d0d7f712a0a 100755 (executable)
--- a/fa-flacd
+++ b/fa-flacd
@@ -21,6 +21,7 @@ use Getopt::Long qw(:config gnu_getopt no_ignore_case);
 use POSIX ':sys_wait_h';
 use Pod::Usage;
 
+my $debug;
 my $verbose;
 my @jobs;
 my @finished;
@@ -52,7 +53,7 @@ sub get_tags {
             verbose("ARTIST $artist from $fn\n");
         } elsif (/^ALBUM=/) {
             $album = $value;
-            verbose("ALBUM $album from $fn\n");
+            verbose("ALBUM $album from $fn\n"); # cperl-mode sucks "
         }
     }
     close(TAGS) or die("close($fn): $!");
@@ -108,11 +109,18 @@ sub flac {
     rename('log', "../$artist/$outfile.log")
       or die("rename(log, ../$artist/$outfile.log): $!");
     chdir('..') or die("chdir(..): $!");
-    rmdir($dir) or die("rmdir($dir): $!");
 
     rename("$artist/$outfile.flac-tmp", "$artist/$outfile.flac")
       or die("rename($artist/$outfile.flac-tmp, $artist/$outfile.flac): $!");
 
+    if (-x "$dir/post-processor") {
+        verbose("Running './$dir/post-processor $artist/$outfile.flac'\n");
+        system("./$dir/post-processor", "$artist/$outfile.flac");
+        unlink("$dir/post-processor") or die("unlink($dir/post-processor): $!");
+    }
+
+    rmdir($dir) or die("rmdir($dir): $!");
+
     return 0;
 }
 
@@ -130,10 +138,14 @@ sub newjob {
     my $dir = shift;
     my $pid;
 
-    $pid = fork();
-    if (not defined($pid)) {
-        die("fork: $!");
-    } elsif ($pid == 0) {
+    if (not $debug) {
+        $pid = fork();
+        if (not defined($pid)) {
+            die("fork: $!");
+        }
+    }
+
+    if ($debug or $pid == 0) {
         $SIG{CHLD} = 'IGNORE';
         open(STDERR, ">$dir/log") or die("open(STDERR, >$dir/log): $!");
         exit(flac($dir));
@@ -198,6 +210,7 @@ MAIN: {
 
     $jobs = 4;
     GetOptions(
+               'debug|X' => \$debug,
                'jobs|j=i' => \$jobs,
                'verbose|v' => \$verbose,
                'help|h|?' => \$help,
@@ -241,6 +254,17 @@ the "log" file.  Finally, B<fa-flacd> moves the "cue" and "log" files
 to the artist directory (named by album) and removes the temporary
 directory.
 
+If the temporary directory contains an executable file named
+"post-processor", B<fa-flacd> executes that file with the relative
+path to the output FLAC file as an argument.  The output files are in
+their final location when "post-processor" starts.  Possible uses are
+running B<flac2mp3>, moving the output files to a different location,
+removing the lock file, or adding to a database.  The standard input,
+output, and error streams are inherited from B<fa-flacd>, so they may
+be connected to anything from a tty to /dev/null.  This means that you
+may want to redirect these streams, if you want to save them or do any
+logging.
+
 =head1 OPTIONS
 
 =over 4