1#/bin/sh
2# Check that a digital audio CD with a start track number of >1 works.
3
4if test ! -d "$abs_top_builddir" ; then
5  abs_top_builddir=/src/external-vcs/github/rocky/libcdio-paranoia
6fi
7
8if test ! -d "$abs_top_srcdir" ; then
9  abs_top_srcdir=/src/external-vcs/github/rocky/libcdio-paranoia
10fi
11
12if test ! -d "abs_top_builddir" ; then
13  abs_top_builddir=/src/external-vcs/github/rocky/libcdio-paranoia
14fi
15
16test_dir=$abs_top_srcdir/test
17test_build_dir=$abs_top_builddir/test
18
19set -e
20
21if [ $($abs_top_builddir/test/get_libcdio_version) -le 20000 ] ; then
22    exit 77
23fi
24
25cd_paranoia=$abs_top_builddir/src/cd-paranoia
26base=start_track_not_one
27orig_cdda=$test_dir/data/cdda.bin
28
29# First we make a longer CDDA image.
30cdda=$test_build_dir/$base.bin
31cat $orig_cdda $orig_cdda $orig_cdda > $cdda
32
33# And a CUE file with a non-one start track.
34cue=$test_build_dir/$base.cue
35cat << EOF > $cue
36FILE "$cdda" BINARY
37  TRACK 07 AUDIO
38    FLAGS DCP
39    INDEX 01 00:00:00
40  TRACK 08 AUDIO
41    FLAGS DCP
42    INDEX 01 00:04:02
43  TRACK 09 AUDIO
44    FLAGS DCP
45    INDEX 01 00:08:04
46EOF
47
48# Use an awk program to parse/verify the TOC.
49# We check that we see only tracks 7, 8 and 9.
50awk_prog='
51BEGIN           { expect_track = 7; in_toc = 0; err = 0; num_tracks = 0 }
52/^TOTAL/        { in_toc = 0 }
53in_toc == 1  {
54                    if ($1 != expect_track ".") {
55                        print "Expected track " expect_track ", got " $1;
56                        err = 1
57                    }
58                    expect_track ++;
59                    num_tracks ++;
60                }
61/^===/          { in_toc = 1 }
62END             {
63                    if (num_tracks != 3) {
64                        print "Number of tracks was not 3.";
65                        err = 1
66                    }
67                    exit err;
68                }
69'
70
71$cd_paranoia -Q -d $cue 2>&1 | gawk "$awk_prog"
72