echo $TO
}
+checkexec ()
+{
+ if [ ! "$@" = "" ]; then
+ # Cut off the command-line options we just added in
+ X=$(echo $@ | cut -d' ' -f2)
+ if [ "$(which $X)" = "" ]; then
+ log error "$X is not in your path." >&2
+ exit 1
+ elif [ ! -x $(which $X) ]; then
+ log error "$X is not executable." >&2
+ exit 1
+ fi
+ fi
+}
+
# do_getcddbinfo
# Finds an specific field from cddbinfo
do_getcddbinfo()
case "$2" in
%local*%)
case "$FLACENCODERSYNTAX" in
- flac) $RUN_COMMAND nice $ENCNICE $FLACENCODER -f $FLACENCODEROPTS -o "$OUT" "$IN" ;;
+ flac) $RUN_COMMAND nice $ENCNICE $FLACENCODER -f ${IMPORTCUESHEET:+--cuesheet="$ABCDETEMPDIR/$CUEFILE"} $FLACENCODEROPTS -o "$OUT" "$IN" ;;
esac
;;
*)
disktool -u ${CDROM#/dev/}
fi
if [ "$CDROMREADERSYNTAX" = "flac" ] ; then
- TRACKINFO=$($METAFLAC $METAFLACOPTS --export-cuesheet-to=- $CDROM | $CUE2DISCID)
+ if [ "$TRACKINFO" = "" ]; then
+ TRACKINFO=$($METAFLAC $METAFLACOPTS --export-cuesheet-to=- $CDROM | $CUE2DISCID)
+ else
+ if $METAFLAC $METAFLACOPTS --export-cuesheet-to=- $CDROM > /dev/null 2>&1 ; then :; else
+ log error "the input flac file does not contain a cuesheet."
+ exit 1
+ fi
+ fi
else
case "$CDDBMETHOD" in
cddb) TRACKINFO=$($CDDISCID $CDROM) ;;
single)
# List out disc title/author and contents
do_cddbparse "${CDDBLOCALFILE}"
- echo -n "Locally cached CDDB entry found, use it? [y/n] (y): " >&2
+ if [ "$CDROMREADERSYNTAX" = "flac" ] ; then
+ echo -n "Embedded cuesheet entry found, use ut? [y/n] (y): " >&2
+ else
+ echo -n "Locally cached CDDB entry found, use it? [y/n] (y): " >&2
+ fi
if [ "$INTERACTIVE" = "y" ]; then
read USELOCALRESP
while [ "$USELOCALRESP" != "y" ] && [ "$USELOCALRESP" != "n" ] && [ "$USELOCALRESP" != "" ] ; do
### FIXME ### use an exception for flac, since it uses -o
### FIXME ### Shall we just use -o $FILEARG ??
flac)
- nice $READNICE $FLAC -d --cue=${READTRACKNUMS:-$UTRACKNUM.1-$(($UTRACKNUM + 1)).0} "$FILEARG" "$CDROM" ;;
+ # Avoid problems wit math expressions by unpadding the given UTRACKNUM
+ STRIPTRACKNUM=$(expr $UTRACKNUM + 0)
+ nice $READNICE $FLAC -d -f --cue=${READTRACKNUMS:-$STRIPTRACKNUM.1-$(($STRIPTRACKNUM + 1)).0} "$FILEARG" "$CDROM" ;;
cdparanoia)
- echo "nice $READNICE $CDROMREADER -$CDPARANOIACDROMBUS $CDROM ${READTRACKNUMS:-$UTRACKNUM} "$FILEARG" $REDIR ;;" > /tmp/log
nice $READNICE $CDROMREADER -$CDPARANOIACDROMBUS $CDROM ${READTRACKNUMS:-$UTRACKNUM} "$FILEARG" $REDIR ;;
cdda2wav)
if [ "$OSFLAVOUR" = "OSX" ] ; then
{
if [ x"$EXTRAVERBOSE" != "x" ]; then
case $1 in
- warning) log warning "$@" ;;
+ warning) shift ; log warning "$@" ;;
*) echo "$@" ;;
esac
fi
# If the user specified a flac file, then switch to special flac mode
if echo $CDROM | grep -i -q '.flac$'; then
- vecho "abcde: switching to flac CDROMREADERSYNTAX..."
+ vecho warning "abcde: switching to flac CDROMREADERSYNTAX..."
CDROMREADERSYNTAX=flac
- if [ "$EJECTCD" = "y" ];then
- vecho "abcde: CDROM flac mode, deactivating EJECTCD..."
- EJECTCD=n
- fi
+ # Added a need on CUE2DISCID until we manage to convert the python script to bash.
+ NEEDCUE2DISCID=y
+ NEEDMETAFLAC=y
+ EJECTCD=n
fi
# If the user provided a DISCID, disable eject
-if [ -n "$DISCID" ]; then EJECTCD=n ; fi
+if [ -n "$DISCID" ] || [ "$CDROMREADERSYNTAX" = "flac" ]; then EJECTCD=n ; fi
# Check the available cd rippers in the system, from the ones we know.
if [ "$CDROMREADERSYNTAX" = "" ]; then
[ "$FLACENCODERSYNTAX" = "default" ] && FLACENCODERSYNTAX=flac
[ "$DOTAG" = "y" ] && NEEDMETAFLAC=y
[ "$DOREPLAYGAIN" = "y" ] && NEEDMETAFLAC=y
+ if [ "$ONETRACK" = "y" ]; then
+ [ "$MAKECUEFILE" = "y" ] && IMPORTCUESHEET=y
+ fi
;;
spx)
[ "$SPEEXENCODERSYNTAX" = "default" ] && SPEEXENCODERSYNTAX=speexenc
NEEDCUEREADER=y
fi
-if [ X"$CDSPEEDVALUE" != "X" ]; then
+if [ X"$CDSPEEDVALUE" != "X" ] && [ "$DOREAD" = "y"]; then
case "$CDROMREADERSYNTAX" in
cdparanoia|debug) CDROMREADEROPTS="$CDPARANOIAOPTS -S $CDSPEEDVALUE" ;;
### FIXME ### translate "cue2discid" from python to bash
- flac) NEEDMETAFLAC=y ; NEEDCUE2DISCID=y ;;
+ flac) NEEDMETAFLAC=y ; NEEDCUE2DISCID=y ; CDSPEEDVALUE="" ;;
*) NEEDCDSPEED=y ;;
esac
fi
${NEEDDISKTOOL+disktool} ${NEEDCDSPEED+$CDSPEED} \
${NEEDVORBISGAIN+$VORBISGAIN} ${NEEDMP3GAIN+$MP3GAIN} \
${NEEDMPPGAIN+$MPPGAIN} \
- ${NEEDCUEREADER+$CUEREADER} ${NEEDCUE2DISCID+$CUE2DISCID}
+ ${NEEDCUEREADER+$CUEREADER}
do
- # Cut off the command-line options we just added in
- X=$(echo $X | cut -d' ' -f2)
- if [ "$(which $X)" = "" ]; then
- log error "$X is not in your path." >&2
- exit 1
- elif [ ! -x $(which $X) ]; then
- log error "$X is not executable." >&2
- exit 1
- fi
+ checkexec "$X"
done
-CDROMREADER="$CDROMREADER $CDROMREADEROPTS"
-CDDBTOOL="$CDDBTOOL $CDDBTOOLOPTS"
-HTTPGET="$HTTPGET $HTTPGETOPTS"
-
# And last but not least, check if we can diff between files
if [ -x $(which $DIFF) ]; then :; else
vecho warning "Disabling diff since we cannot find it in the \$PATH..."
DIFF=""
fi
+# Now that we have metaflac, check if we need cue2discid
+case $CDROMREADERSYNTAX in
+ flac)
+ TRACKINFO=$($METAFLAC --show-tag=CDDB $CDROM | cut -d"=" -f2 | egrep "[a-f0-9]{8}")
+ if [ "$TRACKINFO" = "" ]; then
+ checkexec ${NEEDCUE2DISCID+$CUE2DISCID}
+ fi
+ ;;
+esac
+
+CDROMREADER="$CDROMREADER $CDROMREADEROPTS"
+CDDBTOOL="$CDDBTOOL $CDDBTOOLOPTS"
+HTTPGET="$HTTPGET $HTTPGETOPTS"
+
# Here it used to say:
# One thousand lines in, we can start doing stuff with things
-# Well, right now we are at line 2736 ;)
+# Well, right now we are at line 3306 ;)
# Export needed things so they can be read in this subshell
export CDDBTOOL ABCDETEMPDIR TRACKQUEUE LOWDISK EJECTCD EJECT EJECTOPTS
fi
if [ "$ONETRACK" = "y" ]; then
+ # Reuse the CUEFILE in case we created it in a previous run
+ if CUEFILE=$(checkstatus cuefile) >/dev/null ; then
+ IMPORTCUESHEET=y
+ fi
TRACKS="$FIRSTTRACK"
if checkstatus readtrack-$FIRSTTRACK; then :; else
if [ "$USEPIPES" = "y" ]; then