aboutsummaryrefslogtreecommitdiff
path: root/wav2dao
blob: 910aed63280abf5580e2f320491e68f394f2fbd9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/usr/bin/perl

use strict 'subs';
use strict 'refs';

@dev = ('--device', '/dev/pg0:0,0');

sub help {
	print "Syntax: $0 [-H] [options] audiofiles\n";
	print <<"EOF" ;
Use cdrdao on the wav audio file arguments, making an appropriate toc file.
-d cdrw	Use cdrw as the CDRW device (default: $dev[1]).
-o file	Output the toc file on this file - do not use a temporary file.
-p	Perform a 'print-size' cdrdao command.
-i	Perform a 'toc-info' cdrdao command.
-c	Perform a 'show-toc' cdrdao command.
-t	Perform a 'read-test' cdrdao command.
-w	Write the CD in DAO mode (default, if no other action is specified).
-s	Simulate writing only ('simulate' instead of 'write' command).
-j	Do not eject the CD after writing it.
-n	Print the cdrdao commands, instead of executing them.
EOF
}

require 'getopts.pl';
&Getopts('o:pictwsjnH');
if ($opt_H) { &help ; exit }
$dev[1] = $opt_d if $opt_d;
$opt_w = 1 unless $opt_p || $opt_i || $opt_c || $opt_t || $opt_w || $opt_s || $opt_o ne "";

die "Usage: $0 [options] audiofiles" unless @ARGV;

$fname = $opt_o ne "" ? $opt_o : "/tmp/toc$$";
open(F, "> $fname") || die "open($fname): $!, stopped";
print F "CD_DA\n";

foreach (@ARGV) {
	print F "\nTRACK AUDIO\nNO COPY\n";
#	print F "NO PRE_EMPHASIS\nTWO_CHANNEL_AUDIO\n";
	print F "FILE \"$_\" 0\n";
#	print F "START 00:02:00\n" if $no++;
}
close F;

if ($opt_p) {
	if ($opt_n) { print "cdrdao print-size $fname\n" }
	else { system 'cdrdao', 'print-size', $fname}
}

if ($opt_i) {
	if ($opt_n) { print "cdrdao toc-info $fname\n" }
	else { system 'cdrdao', 'toc-info', $fname}
}

if ($opt_c) {
	if ($opt_n) { print "cdrdao show-toc $fname\n" }
	else { system 'cdrdao', 'show-toc', $fname}
}
if ($opt_t) {
	if ($opt_n) { print "cdrdao read-test $fname\n" }
	else { system 'cdrdao', 'read-test', $fname}
}

if ($opt_w || $opt_s) {
	unshift @dev, $opt_s ? 'simulate' : 'write';
	push @dev, '--eject' unless $opt_s || $opt_j;
	push @dev, $fname;
	if ($opt_n) { print "cdrdao @dev\n" } else { system 'cdrdao', @dev }
}
unlink $fname unless $opt_o ne "";
__END__