The only missing part of one flac and embedded cuesheet is the actual embedding
[clinton/abcde.git] / abcde
diff --git a/abcde b/abcde
index a9950dc..310b7ad 100755 (executable)
--- a/abcde
+++ b/abcde
@@ -1628,15 +1628,19 @@ do_localcddb ()
 
                if [ "$CDDBLOCALRECURSIVE" = "y" ]; then
                        CDDBLOCALRESULTS="$(find ${CDDBLOCALDIR} -name "${CDDBDISCID}" -type f 2> /dev/null)"
-                       if   (( $(echo "${CDDBLOCALRESULTS}" | wc -l) == 1 )); then
-                               CDDBLOCALFILE="${CDDBLOCALDIR}/${CDDBLOCALRESULTS}"
-                               CDDBLOCALMATCH=single
-                       elif (( $(echo "${CDDBLOCALRESULTS}" | wc -l) > 1 )); then
-                               CDDBLOCALMATCH=multiple
+                       if [ ! "${CDDBLOCALRESULTS}" = "" ]; then
+                               if   (( $(echo "${CDDBLOCALRESULTS}" | wc -l) == 1 )); then
+                                       CDDBLOCALFILE="${CDDBLOCALRESULTS}"
+                                       CDDBLOCALMATCH=single
+                                       echo "${CDDBLOCALRESULTS}" : $(echo "${CDDBLOCALRESULTS}" | wc -l )
+                                       echo CDDBLOCALMATCH=single
+                               elif (( $(echo "${CDDBLOCALRESULTS}" | wc -l) > 1 )); then
+                                       CDDBLOCALMATCH=multiple
+                               fi
                        else
                                CDDBLOCALMATCH=none
                        fi
-               elif [ -r "${CDDBLOCALDIR}/${CDDBDISCID}" ]; then
+               elif [ "$CDDBLOCALMATCH" = "none" ] && [ -r "${CDDBLOCALDIR}/${CDDBDISCID}" ]; then
                        CDDBLOCALFILE="${CDDBLOCALDIR}/${CDDBDISCID}"
                        CDDBLOCALMATCH=single
                else
@@ -1646,6 +1650,7 @@ do_localcddb ()
                # If the user has selected to check a local CDDB repo, we proceed with it
                case $CDDBLOCALMATCH in
                        multiple)
+                               echo "Processing multiple matching CDDB entries..." >> "$ABCDETEMPDIR/cddblocalchoices"
                                X=0
                                echo "$CDDBLOCALRESULTS" | while read RESULT ; do
                                        X=$(expr $X + 1)
@@ -1655,6 +1660,7 @@ do_localcddb ()
                                        {       
                                                echo -n "#$X: "
                                                do_cddbparse "${CDDBLOCALREAD}" 
+                                               echo ""
                                        } >> "$ABCDETEMPDIR/cddblocalchoices"
                                done
                                CDDBLOCALCHOICES=$( echo "$CDDBLOCALRESULTS" | wc -l )
@@ -1688,7 +1694,11 @@ do_localcddb ()
                        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
@@ -2290,6 +2300,9 @@ do_cdread ()
                ### FIXME ### use an exception for flac, since it uses -o
                ### FIXME ### Shall we just use -o $FILEARG ??
                flac)
+                       # Avoid problems wit math expressions by unpadding the given UTRACKNUM
+                       _TRACKNUM=$UTRACKNUM
+                       UTRACKNUM=$(expr $_TRACKNUM + 0)
                        nice $READNICE $FLAC -d --cue=${READTRACKNUMS:-$UTRACKNUM.1-$(($UTRACKNUM + 1)).0} "$FILEARG" "$CDROM" ;;
                cdparanoia) 
                        echo "nice $READNICE $CDROMREADER -$CDPARANOIACDROMBUS $CDROM ${READTRACKNUMS:-$UTRACKNUM} "$FILEARG" $REDIR ;;" > /tmp/log
@@ -2374,7 +2387,7 @@ vecho ()
 {
 if [ x"$EXTRAVERBOSE" != "x" ]; then
        case $1 in
-               warning) log warning "$@" ;;
+               warning) shift ; log warning "$@" ;;
                *) echo "$@" ;;
        esac
 fi
@@ -2727,8 +2740,10 @@ shift $(($OPTIND - 1))
 
 # 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
+       # Added a need on CUE2DISCID until we manage to convert the python script to bash.
+       NEEDCUE2DISCID=y
        if [ "$EJECTCD" = "y" ];then
                vecho "abcde: CDROM flac mode, deactivating EJECTCD..."
                EJECTCD=n
@@ -2736,7 +2751,7 @@ if echo $CDROM | grep -i -q '.flac$'; then
 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