X-Git-Url: http://git.tuebingen.mpg.de/?p=gsu.git;a=blobdiff_plain;f=funcs%2Fgsu;h=b409bc50bc75d50969d60a800c0710358c34c2d9;hp=b80fc919659c008420cc54d79890ea7d14ae4d7f;hb=5102a3ed6cf2d4b1addecf52495faafc04107cc5;hpb=bc4497df245d5da1b1db0f78c7a071227436ac84 diff --git a/funcs/gsu b/funcs/gsu index b80fc91..b409bc5 100644 --- 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,37 @@ gsu_is_a_number() } export -f gsu_is_a_number +# Check number of arguments. +# +# Usage: gsu_check_arg_count [] +# +# Check that is between and inclusively. +# If only ist given, num2 is assumed to be infinity. +# +# Examples: +# 0 0 no argument allowed +# 1 1 exactly one argument required +# 0 2 at most two arguments admissible +# 2 at least two arguments reqired +# +gsu_check_arg_count() +{ + ret=-$E_GSU_BAD_ARG_COUNT + if [[ $# -eq 2 ]]; then # only num1 is given + result="at least $2 args required, $1 given" + [[ $1 -lt $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 +94,8 @@ gsu_date_msg() } export -f gsu_date_msg + + _gsu_banner_msg() { local txt="*** $_gsu_self --" @@ -331,7 +365,7 @@ _gsu_check_options() return esac - eval ${gsu_config_var_prefix}_$name="\"${val:=$default_value}\"" + eval ${gsu_config_var_prefix}_$name='"'${val:=$default_value}'"' # Check option type. ATM, only num and string are supported # Other types may be added without breaking compatibility case "$option_type" in