X-Git-Url: https://diplodocus.org/git/flac-archive/blobdiff_plain/c069d00b1502aa08be2bdf0a197ab1110ba350d5..a70f5a4b57e63a823faec313387d85b683bd6af0:/fa-flacd diff --git a/fa-flacd b/fa-flacd index 3e9e7cb..7c89d93 100755 --- 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 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 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, 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, 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