-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Package: abcde
Version: 2.3.99-$Revision: 223 $

While playing with abcde, I noticed the range processing code is pretty
ugly, and kind of broken.

If you give abcde a "backwards" range (ie: abcde 3-1), it still counts
up, getting into a nearly endless loop.

The patch provided fixes this behavior (matching the original seq
behavior of silently dropping improper range specifications):

  "Reverse" ranges are ignored
  If the LHS is missing, it is assumed to be one
  If the RHS is missing, the range is ignored
  If there are multiple dashes, they are "collapsed"

ie:
  1--234-3 is the same as 1-3 = 1 2 3
  -1-234-3 is the same as -3 is the same as 1-3 = 1 2 3
  1-234-3- is the same as 1- is the same as 1-0 = ignored

- --
Charles Steinkuehler
[EMAIL PROTECTED]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.4 (MingW32)

iD8DBQFFHApUenk4xp+mH40RAjaqAJ9BIsAzVpLgcs7QDW86d359gvk6PACgv2XA
GbCvPSSnpjfg+ZKClat5LgY=
=xGka
-----END PGP SIGNATURE-----
--- abcde.svn.toc	2006-09-28 11:44:28.203700281 -0500
+++ abcde.svn.range	2006-09-28 12:43:05.189844508 -0500
@@ -3287,14 +3287,17 @@
 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"
+		# 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
-			NEWTRACKS=$(f_seq_line $RSTART $REND)
+			RSTART=${1%%-*}
+			REND=${1##*-}
+			while [ ${RSTART:=1} -le ${REND:=0} ] ; do
+				TRACKQUEUE="$TRACKQUEUE $RSTART"
+				RSTART=$(( $RSTART + 1 ))
+			done
 		fi
-		TRACKQUEUE=$(echo "$TRACKQUEUE" "$NEWTRACKS")
 		shift
 	done
 fi

Reply via email to