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;
}
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
=head1 SYNOPSIS
-B<fa-rip> [B<-d> I<device>] [B<-t> I<track-count>]
+B<fa-rip> [B<-d> I<device>] [B<-p> I<post-processor> [B<-t> I<track-count>]
=cut
CDDEV
);
+use Fcntl qw(O_CREAT O_WRONLY);
use File::Temp;
use Getopt::Long qw(:config gnu_getopt no_ignore_case);
use POSIX ':sys_wait_h';
die;
}
+sub make_post_processor {
+ my $command = shift;
+
+ defined($command) or return;
+
+ sysopen(F, 'post-processor', O_CREAT | O_WRONLY, 0555)
+ or die("sysopen(post-processor, O_CREAT | O_WRONLY, 0555): $!");
+ print(F $command, ' "$@"', "\n");
+ close(F) or die("close(post-processor, O_CREAT | O_WRONLY, 0555): $!");
+}
+
MAIN: {
+ my $post_processor;
my $trackcount;
my $help;
my $tempdir;
GetOptions(
'device|d=s' => \$CDDEV,
+ 'post-processor|p=s', \$post_processor,
'tracks|t=i' => \$trackcount,
'help|h|?' => \$help,
) or pod2usage();
$tempdir = File::Temp::tempdir('flac-archive.XXXXXXXXXX');
chdir($tempdir) or die("chdir($tempdir): $!");
+ make_post_processor($post_processor);
$trackcount = mkcue($CDDEV, $trackcount);
tags($CDDEV, $trackcount);
rip($CDDEV, $trackcount);
Use I<device> as the CD-ROM device, instead of the default
"/dev/cdrom" or the environment variable CDDEV.
+=item B<-p> [B<--post-processor>] I<post-processor>
+
+Create a "post-processor" file in the temporary directory containing
+the line 'I<post-processor> "$@"'. See B<fa-flacd>'s man page for
+information about this hook.
+
=item B<-t> [B<--tracks>] I<track-count>
Archive only the first I<track-count> tracks. This is handy for