Added quotes to the code to process options passed to the encoder on the command...
[clinton/abcde.git] / abcde
diff --git a/abcde b/abcde
index 55951fc..00440e1 100755 (executable)
--- a/abcde
+++ b/abcde
@@ -83,12 +83,17 @@ f_seq_row ()
 f_seq_line ()
 {
        i=$1
 f_seq_line ()
 {
        i=$1
-       while [ $i -ne `expr $2 + 1` ]
-       do
-               printf $i" "
-               i=`expr $i + 1`
-       done
-       echo
+       if echo i | grep -q "[[:digit:]]" ; then
+               while [ $i -ne `expr $2 + 1` ]
+               do
+                       printf $i" "
+                       i=`expr $i + 1`
+               done
+               echo
+       else
+               echo "abcde: syntax error while processing track numbers" >&2
+               exit 1
+       fi
 }
 
 # Functions to replace the need of awk {print $1} and {print $NF}
 }
 
 # Functions to replace the need of awk {print $1} and {print $NF}
@@ -315,34 +320,45 @@ do_gettracknum()
 
 do_replaygain()
 {
 
 do_replaygain()
 {
-       run_command "" echo "Adding reply-gain information..."
-       for OUTPUT in $( echo $OUTPUTTYPE | tr , \ )
-       do
-               OUTPUTFILES=""
-               for UTRACKNUM in $TRACKQUEUE
+       if checkstatus replaygain; then :; else
+               run_command "" echo "Adding reply-gain information..."
+               for OUTPUT in $( echo $OUTPUTTYPE | tr , \ )
+               # THE OUTPUT NEEDS TO BE CORRECTED WITH THE CONTAINER?
                do
                do
-                       CDDBTRACKNUM=$(expr $UTRACKNUM - 1)
-                       do_getcddbinfo TRACKNAME
-                       splitvarious
-                       TRACKFILE=$(mungefilename "$TRACKNAME")
-                       ARTISTFILE=$(mungefilename "$TRACKARTIST")
-                       ALBUMFILE=$(mungefilename "$DALBUM")
-                       do_gettrucknum
-                       if [ "$VARIOUSARTISTS" = "y" ]; then
-                               OUTPUTFILE=$(eval echo $VAOUTPUTFORMAT)
+                       OUTPUTFILES=""
+                       for UTRACKNUM in $TRACKQUEUE
+                       do
+                               CDDBTRACKNUM=$(expr $UTRACKNUM - 1)
+                               do_getcddbinfo TRACKNAME
+                               splitvarious
+                               TRACKFILE=$(mungefilename "$TRACKNAME")
+                               ARTISTFILE=$(mungefilename "$TRACKARTIST")
+                               ALBUMFILE=$(mungefilename "$DALBUM")
+                               do_gettracknum
+                               if [ "$VARIOUSARTISTS" = "y" ]; then
+                                       OUTPUTFILE=$(eval echo $VAOUTPUTFORMAT)
+                               else
+                                       OUTPUTFILE=$(eval echo $OUTPUTFORMAT)
+                               fi
+                               OUTPUTFILES="$OUTPUTDIR/$OUTPUTFILE.$OUTPUT $OUTPUTFILES"
+                       done
+                       case "$OUTPUT" in
+                               flac);;
+                               ogg);;
+                               *);;
+                       esac
+                       if [ "$RETURN" = "0" ]; then
+                               run_command replaygain-$OUTPUT true
                        else
                        else
-                               OUTPUTFILE=$(eval echo $OUTPUTFORMAT)
+                               runcommand replaygain-$OUTPUT false
                        fi
                        fi
-                       OUTPUTFILES="$OUTPUTDIR/$OUTPUTFILE.$OUTPUT $OUTPUTFILES"
                done
                done
-               case "$OUTPUT" in
-                       flac);;
-                       ogg);;
-                       *);;
-               esac
-               echo vorbisgain-$OUTPUT >> "$ABCDETEMPDIR/status"
-       done
-       echo vorbisgain >> "$ABCDETEMPDIR/status"
+               if checkerrors replaygain-.{3,4}; then
+                       run_command replaygain false
+               else
+                       run_command replaygain true
+               fi
+       fi
 }
 
 # This code splits the a Various Artist track name from one of the following
 }
 
 # This code splits the a Various Artist track name from one of the following
@@ -1176,7 +1192,7 @@ do_playlist ()
                        #       else
                        #               TRACKNUM=${UTRACKNUM}
                        #       fi
                        #       else
                        #               TRACKNUM=${UTRACKNUM}
                        #       fi
-                               do_gettrucknum
+                               do_gettracknum
                                if [ "$VARIOUSARTISTS" = "y" ]; then
                                        OUTPUTFILE=$(eval echo $VAOUTPUTFORMAT)
                                else
                                if [ "$VARIOUSARTISTS" = "y" ]; then
                                        OUTPUTFILE=$(eval echo $VAOUTPUTFORMAT)
                                else
@@ -2498,6 +2514,7 @@ DOENCODE=n
 DOPOSTPROCESS=n
 DOTAG=n
 DOMOVE=n
 DOPOSTPROCESS=n
 DOTAG=n
 DOMOVE=n
+DOREPLAYGAIN=n
 DOPLAYLIST=n
 DOCLEAN=n
 
 DOPLAYLIST=n
 DOCLEAN=n
 
@@ -2512,11 +2529,17 @@ do
 #              postprocess) DOPREPROCESS=y; DOENCODE=y; DOREAD=y;;
                tag) DOTAG=y; DOREAD=y; DOENCODE=y; DOCDDB=y;;
                move) DOMOVE=y; DOTAG=y; DOREAD=y; DOENCODE=y; DOCDDB=y;;
 #              postprocess) DOPREPROCESS=y; DOENCODE=y; DOREAD=y;;
                tag) DOTAG=y; DOREAD=y; DOENCODE=y; DOCDDB=y;;
                move) DOMOVE=y; DOTAG=y; DOREAD=y; DOENCODE=y; DOCDDB=y;;
+               replaygain) DOCDDB=y; DOREAD=y; DOENCODE=y; DOTAG=y; DOMOVE=y; DOREPLAYGAIN=y;;
                playlist) DOCDDB=y; DOPLAYLIST=y;;
                clean) DOCLEAN=y;;
        esac
 done
 
                playlist) DOCDDB=y; DOPLAYLIST=y;;
                clean) DOCLEAN=y;;
        esac
 done
 
+if [ "$DONORMALIZE" = "y" ] && [ "$DOREPLAYGAIN" = "y" ]; then
+       # FIXME # should we abort on error or just inform the user?
+       :
+fi
+
 for SHOWCDDBFIELD in $(echo $SHOWCDDBFIELDS | tr , \ ); do
        case $SHOWCDDBFIELD in
                y*|Y*) SHOWCDDBYEAR="y";;
 for SHOWCDDBFIELD in $(echo $SHOWCDDBFIELDS | tr , \ ); do
        case $SHOWCDDBFIELD in
                y*|Y*) SHOWCDDBYEAR="y";;
@@ -2621,7 +2644,7 @@ esac
 
 # Allow -o OUTPUT(1):OPTIONS(1),...,OUTPUT(N):OPTIONS(N) mode of operation
 if echo "$OUTPUTTYPE" | grep ":" > /dev/null 2>&1 ; then
 
 # Allow -o OUTPUT(1):OPTIONS(1),...,OUTPUT(N):OPTIONS(N) mode of operation
 if echo "$OUTPUTTYPE" | grep ":" > /dev/null 2>&1 ; then
-       for OUTPUT in $(echo $OUTPUTTYPE | tr , \ ); do
+       for OUTPUT in "$(echo "$OUTPUTTYPE" | tr , \ )"; do
                case "$OUTPUT" in
                        vorbis:*|ogg:*) OGGENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
                        mp3:*)  MP3ENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
                case "$OUTPUT" in
                        vorbis:*|ogg:*) OGGENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
                        mp3:*)  MP3ENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
@@ -2630,7 +2653,7 @@ if echo "$OUTPUTTYPE" | grep ":" > /dev/null 2>&1 ; then
                        mpc:*)  MPPENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
                esac
        done
                        mpc:*)  MPPENCODEROPTSCLI="$( echo $OUTPUT | cut -d: -f2- )" ;;
                esac
        done
-       for OUTPUT in $(echo $OUTPUTTYPE | tr , \ ); do
+       for OUTPUT in "$(echo "$OUTPUTTYPE" | tr , \ )"; do
                TEMPOUTPUT=$( echo "$OUTPUT" | cut -d: -f1 )
                TEMPOUTPUTTYPE="${TEMPOUTPUTTYPE:+$TEMPOUTPUTTYPE,}$TEMPOUTPUT"
        done
                TEMPOUTPUT=$( echo "$OUTPUT" | cut -d: -f1 )
                TEMPOUTPUTTYPE="${TEMPOUTPUTTYPE:+$TEMPOUTPUTTYPE,}$TEMPOUTPUT"
        done
@@ -3211,7 +3234,7 @@ if [ "$DOENCODE" = "y" -a "$USEPIPES" != "y" ]; then
 fi
 # If the above didn't catch the stragglers, this will
 wait
 fi
 # If the above didn't catch the stragglers, this will
 wait
-if checkstatus replaygain; then :; else
+if [ "$DOREPLAYGAIN" = "y" ]; then
        do_replaygain
 fi
 # Check to see if run_command logged any errors
        do_replaygain
 fi
 # Check to see if run_command logged any errors