Much smaller command line parser

This removes all code duplication for setting and unsetting -(no)flags specified
on the command line


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23968 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
ivo 2007-07-31 14:48:13 +00:00
parent bbc21b2104
commit c9be32501b
1 changed files with 21 additions and 90 deletions

View File

@ -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 @@ for i in "$@"; do
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 @@ for i in "$@"; do
-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"
;;