changeset 23948:66a261a0e0f2

Much smaller command line parser This removes all code duplication for setting and unsetting -(no)flags specified on the command line
author ivo
date Tue, 31 Jul 2007 14:48:13 +0000
parents afce92865498
children 26db94620073
files TOOLS/checktree.sh
diffstat 1 files changed, 21 insertions(+), 90 deletions(-) [+]
line wrap: on
line diff
--- 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"
         ;;