# HG changeset patch # User ivo # Date 1185893293 0 # Node ID 66a261a0e0f26072b2e3249da136fffc51d4173d # Parent afce928654988e28f2003bc1e1e96aa2a996b472 Much smaller command line parser This removes all code duplication for setting and unsetting -(no)flags specified on the command line diff -r afce92865498 -r 66a261a0e0f2 TOOLS/checktree.sh --- a/TOOLS/checktree.sh Tue Jul 31 14:21:32 2007 +0000 +++ b/TOOLS/checktree.sh Tue Jul 31 14:48:13 2007 +0000 @@ -27,6 +27,12 @@ # ----------------------------------------------------------------------------- +# All yes/no flags. Spaces around flagnames are important! + +testflags=" spaces extensions crlf tabs trailws rcsid oll charset stupid gnu \ +res " +allflags="$testflags showcont color head svn " + # Default settings _spaces=yes @@ -141,78 +147,6 @@ echo -e "If there are, -(no)svn has no effect.\n" exit ;; - -stupid) - _stupid=yes - ;; - -nostupid) - _stupid=no - ;; - -charset) - _charset=yes - ;; - -nocharset) - _charset=no - ;; - -oll) - _oll=yes - ;; - -nooll) - _oll=no - ;; - -svn) - _svn=yes - ;; - -nosvn) - _svn=no - ;; - -head) - _head=yes - ;; - -nohead) - _head=no - ;; - -color) - _color=yes - ;; - -nocolor) - _color=no - ;; - -spaces) - _spaces=yes - ;; - -nospaces) - _spaces=no - ;; - -extensions) - _extensions=yes - ;; - -noextensions) - _extensions=no - ;; - -crlf) - _crlf=yes - ;; - -nocrlf) - _crlf=no - ;; - -tabs) - _tabs=yes - ;; - -notabs) - _tabs=no - ;; - -trailws) - _trailws=yes - ;; - -notrailws) - _trailws=no - ;; - -rcsid) - _rcsid=yes - ;; - -norcsid) - _rcsid=no - ;; -all) enable_all_tests ;; @@ -222,28 +156,25 @@ -none) disable_all_tests ;; - -showcont) - _showcont=yes - ;; - -noshowcont) - _showcont=no - ;; - -gnu) - _gnu=yes - ;; - -nognu) - _gnu=no - ;; - -res) - _res=yes - ;; - -nores) - _res=no - ;; -*) + var=`echo X$i | sed 's/^X-//'` + val=yes + case "$var" in + no*) + var=`echo "$var" | cut -c 3-` + val=no + ;; + esac + case "$allflags" in + *\ $var\ *) + eval _$var=$val + ;; + *) echo "unknown option: $i" >&2 exit 0 ;; + esac + ;; *) _files="$_files $i" ;;