[pacman-dev] [PATCH] parseopts: remove superfluous continue/shift statements

Dave Reisner dreisner at archlinux.org
Tue Jan 1 22:43:20 EST 2013


Fun fact about bash: the below is valid and will only ever print 'a'!

  fn() {
    continue 2
  }

  for x in {1..5}; do
    for y in {a..e}; do
      echo "$y"
      fn
    done
  done

Signed-off-by: Dave Reisner <dreisner at archlinux.org>
---
 scripts/library/parseopts.sh | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/scripts/library/parseopts.sh b/scripts/library/parseopts.sh
index 11589ce..cf6aa6c 100644
--- a/scripts/library/parseopts.sh
+++ b/scripts/library/parseopts.sh
@@ -92,26 +92,22 @@ parseopts() {
 						# --longopt
 						else
 							OPTRET+=("--$opt")
-							shift
-							continue 2
 						fi
 						;;
 					1)
 						# --longopt=optarg
 						if [[ $optarg ]]; then
 							OPTRET+=("--$opt" "$optarg")
-							shift
 						# --longopt optarg
 						elif [[ $2 ]]; then
 							OPTRET+=("--$opt" "$2" )
-							shift 2
+							shift
 						# parse failure
 						else
 							printf "@SCRIPTNAME@: $(gettext "option '%s' requires an argument")\n" "--$opt" >&2
 							OPTRET=(--)
 							return 1
 						fi
-						continue 2
 						;;
 					254)
 						# ambiguous option -- error was reported for us by longoptmatch()
-- 
1.8.0.3



More information about the pacman-dev mailing list