#
# $Id$
-VERSION='2.3.99-$Revision$'
+VERSION='2.3.99.8'
usage ()
{
if [ $PARSECHOICE1 -lt 1 ] || [ $PARSECHOICE1 -gt $CDDBDIFFCHOICES ] || \
[ $PARSECHOICE2 -lt 1 ] || [ $PARSECHOICE2 -gt $CDDBDIFFCHOICES ] || \
[ $PARSECHOICE1 -eq $PARSECHOICE2 ]; then
- echo "Invalid diff range. Please select two coma-separated numbers between 1 and $CDDBDIFFCHOICES" >&2
+ echo "Invalid diff range. Please select two comma-separated numbers between 1 and $CDDBDIFFCHOICES" >&2
else
# We parse the 2 choices to diff, store them in temporary files and diff them.
for PARSECHOICE in $(echo $CDDBDIFFCHOICE | tr , \ ); do
run_command replaygain-vorbis nice $ENCNICE $VORBISGAIN --album "${OUTPUTFILES[@]}"
;;
mp3)
- run_command replaygain-mp3 nice $ENCNICE $MP3GAIN -a "${OUTPUTFILES[@]}"
+ run_command replaygain-mp3 nice $ENCNICE $MP3GAIN -a -k "${OUTPUTFILES[@]}"
;;
mpc)
run_command replaygain-mpc nice $ENCNICE $MPPGAIN --auto "${OUTPUTFILES[@]}"
exit 1
fi
echo -n .
- # It's a directory, let's see if it's owned by us
- if [ ! -O "$ABCDETEMPDIR" ]; then
+ # It's a directory, let's see if it's writable by us
+ if [ ! -r "$ABCDETEMPDIR" ] || [ ! -w "$ABCDETEMPDIR" ] || [ ! -x "$ABCDETEMPDIR" ]; then
# Nope, complain and exit
echo >&2
- echo "abcde: directory $ABCDETEMPDIR already exists and is not owned by you." >&2
+ echo "abcde: directory $ABCDETEMPDIR already exists and is not writeable." >&2
echo "Please investigate, remove it, and rerun abcde." >&2
exit 1
fi
RESPONSECODE=$(head -n 1 "$ABCDETEMPDIR/cddbstat" | cut -f1 -d' ')
case "$RESPONSECODE" in
210) # 210 OK, status information follows (until terminating `.')
- rc=0;
+ rc=0
;;
- 501|*) # 501 Illegal CDDB protocol level: <n>.
+ 501) # 501 Illegal CDDB protocol level: <n>.
CDDBPROTO=`expr $CDDBPROTO - 1`
;;
+ *) # Try a cddb query, since freedb2.org doesn't support the stat or ver commands
+ # FreeDB TESTCD disc-id is used for query
+ $CDDBTOOL query $CDDBURL $CDDBPROTO $CDDBUSER $CDDBHOST 03015501 1 296 344 > "$ABCDETEMPDIR/cddbstat"
+ RESPONSECODE=$(head -n 1 "$ABCDETEMPDIR/cddbstat" | cut -f1 -d' ')
+ case "$RESPONSECODE" in
+ 2??) # Server responded, everything seems OK
+ rc=0
+ ;;
+ esac
+ ;;
esac
done
if test $rc -eq 1; then
if [ $PARSECHOICE1 -lt 1 ] || [ $PARSECHOICE1 -gt $CDDBCHOICES ] || \
[ $PARSECHOICE2 -lt 1 ] || [ $PARSECHOICE2 -gt $CDDBCHOICES ] || \
[ $PARSECHOICE1 -eq $PARSECHOICE2 ]; then
- echo "Invalid diff range. Please select two coma-separated numbers between 1 and $CDDBCHOICES" >&2
+ echo "Invalid diff range. Please select two comma-separated numbers between 1 and $CDDBCHOICES" >&2
else
# We parse the 2 choices to diff, store them in temporary files and diff them.
for PARSECHOICE in $(echo $CDDBCHOICE | tr , \ ); do
else
while [ $# -gt 0 ]; do
# Range parsing code courtesy of Vincent Ho
- RSTART=$(echo $1 | cut -f1 -d-)
- REND=$(echo $1 | cut -f2 -d-)
- if [ "$RSTART" = "$REND" ]; then
- NEWTRACKS="$RSTART"
- else
- NEWTRACKS=$(f_seq_line $RSTART $REND)
- fi
- TRACKQUEUE=$(echo "$TRACKQUEUE" "$NEWTRACKS")
+ # Cleaned up to use shell built-ins by Charles Steinkuehler
+ if [ "${1#*[^0-9-]}" != "$1" ]; then
+ log error "syntax error while processing track numbers"
+ else
+ RSTART=${1%%-*}
+ REND=${1##*-}
+ while [ ${RSTART:=1} -le ${REND:=0} ] ; do
+ TRACKQUEUE="$TRACKQUEUE $RSTART"
+ RSTART=$(( $RSTART + 1 ))
+ done
+ fi
shift
done
fi
FLACENCODER="$FLAC"
if [ "$DOREPLAYGAIN" = "y" ]; then
FLACENCODEROPTS="${FLACENCODEROPTS} --replay-gain"
+ fi
# FLAC streams can be encapsulated on a Ogg transport layer
if echo "$FLACENCODEROPTS" | egrep -- "(^| )--ogg($| )" > /dev/null 2>&1 ;then
log error "FLAC on an Ogg container is not yet supported"
TAGGEROPTS="$ID3V2OPTS"
fi
-# Specific for NOGAP is the use of lame. Another encoder fails...
+# NOGAP is specific to lame. Other encoders fail ...
if [ "$NOGAP" = "y" ] && [ ! "$MP3ENCODER" = "lame" ]; then
- log warning "the NOGAP option is specific of lame. Deactivating..."
+ log warning "the NOGAP option is specific to lame. Deactivating..."
NOGAP=n
fi