]> diplodocus.org Git - flac-archive/commitdiff
Copy run_or_die from fa-rip and use that to run flac | lame.
authorepg <>
Sat, 30 Oct 2004 17:46:27 +0000 (17:46 +0000)
committerepg <>
Sat, 30 Oct 2004 17:46:27 +0000 (17:46 +0000)
flac2mp3

index 3bdfa718344c11fe4cbd8340f745160659206776..8c4e7462efc18e08e62d962b946d913e913f1c8b 100755 (executable)
--- a/flac2mp3
+++ b/flac2mp3
@@ -22,8 +22,28 @@ and DATE tags.
 use strict;
 use warnings;
 
+use POSIX ':sys_wait_h';
 use Pod::Usage;
 
+sub run_or_die {
+    my $command = shift;
+    my $status;
+
+    $status = system($command);
+
+    if (WIFEXITED($status)) {
+        if (($status = WEXITSTATUS($status)) != 0) {
+            die("$command exited with status $status");
+        }
+    } elsif (WIFSIGNALED($status)) {
+        die("$command killed with signal ", WTERMSIG($status));
+    } elsif (WIFSTOPPED($status)) {
+        die("$command stopped with signal ", WSTOPSIG($status));
+    } else {
+        die("Major horkage on system($command): \$? = $? \$! = $!");
+    }
+}
+
 sub tformat {
     return sprintf('%02d:%02d.%02d', @_);
 }
@@ -116,8 +136,9 @@ sub flac2mp3 {
     $outfile =~ s/\//_/g;
 
     $until_arg ||= '';
-    # XXX
-    system("flac -cd $skip_arg $until_arg '$fn' | lame --preset standard --tt '$title' --ta '$artist' --tl '$album' --ty '$date' --tn $track - '$outfile'");
+    run_or_die(join(' ', "flac -cd $skip_arg $until_arg '$fn'",
+                    " | lame --preset standard --tt '$title' --ta '$artist'",
+                    " --tl '$album' --ty '$date' --tn $track - '$outfile'"));
 }
 
 MAIN: {