gsu: Add gsu_check_arg_count().
authorAndre Noll <maan@systemlinux.org>
Mon, 21 Jun 2010 14:29:20 +0000 (16:29 +0200)
committerAndre Noll <maan@tuebingen.mpg.de>
Fri, 29 Aug 2014 19:36:07 +0000 (21:36 +0200)
This function is open-coded $MANY times, so it makes sense to
have one globally visible function that can be called from all
scripts that use gsu.

funcs/gsu

index b80fc91..75e569c 100644 (file)
--- a/funcs/gsu
+++ b/funcs/gsu
@@ -14,6 +14,7 @@ E_GSU_BAD_CONFIG_VAR          invalid config variable
 E_GSU_NEED_VALUE               value required but not given
 E_GSU_BAD_BOOL                 bad value for boolian option
 E_GSU_BAD_OPTION_TYPE          invalid option type
+E_GSU_BAD_ARG_COUNT            invalid number of arguments
 E_NO_DEFAULT                   missing default value
 $gsu_errors
 "
@@ -44,6 +45,29 @@ gsu_is_a_number()
 }
 export -f gsu_is_a_number
 
+# Usage: gsu_check_arg_count <num_given> <num1> [<num2>]
+#
+# If only <num1> ist given, then <num_given> must equal <num1>.
+# Otherwise, <num1>..<num2> is treated as a range and it is checked
+# that <num_given> lies between <num1> and <num2> inclusively.
+gsu_check_arg_count()
+{
+       ret=-$E_GSU_BAD_ARG_COUNT
+       if [[ $# -eq 2 ]]; then # only num1 is given
+               result="exactly $2 args needed, $1 given"
+               [[ $1 -ne $2 ]] && return
+               ret=$GSU_SUCCESS
+               return
+       fi
+       # num1 and num2 given
+       result="need at least $2 args, $1 given"
+       [[ $1 -lt $2 ]] && return
+       result="need at most $3 args, $1 given"
+       [[ $1 -gt $3 ]] && return
+       ret=$GSU_SUCCESS
+}
+export -f gsu_check_arg_count
+
 gsu_short_msg()
 {
        echo "$1" 1>&2
@@ -62,6 +86,8 @@ gsu_date_msg()
 }
 export -f gsu_date_msg
 
+
+
 _gsu_banner_msg()
 {
        local txt="*** $_gsu_self --"