diff options
author | kate.ward <kate.ward@forestent.com> | 2008-11-12 21:26:05 +0000 |
---|---|---|
committer | kate.ward <kate.ward@forestent.com> | 2008-11-12 21:26:05 +0000 |
commit | 1b600c53cdd5ad1b8a487d50ec1d1e9b0992166c (patch) | |
tree | 9ff94f0ed14f26ce1d63876e986ac8ccfb2ff6c4 /source/1.0/src/shflags | |
parent | cd0bafa6ee2ddd87a13d0eb14219b551cfa31a63 (diff) | |
download | shflags-1b600c53cdd5ad1b8a487d50ec1d1e9b0992166c.tar.gz |
fixed recursion bug in _flags_getFlagInfo(), and put more common stuff into test helpers
Diffstat (limited to 'source/1.0/src/shflags')
-rw-r--r-- | source/1.0/src/shflags | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/source/1.0/src/shflags b/source/1.0/src/shflags index bc3a10d..221ba51 100644 --- a/source/1.0/src/shflags +++ b/source/1.0/src/shflags @@ -376,27 +376,36 @@ _flags_genOptStr() # integer: one of FLAGS_{TRUE|FALSE|ERROR} _flags_getFlagInfo() { - _flags__name=$1 - _flags__info=$2 + _flags_name_=$1 + _flags_info_=$2 - _flags__var="__flags_${_flags__name}_${_flags__info}" - _flags__strToEval="_flags__value=\"\${${_flags__var}:-}\"" - eval "${_flags__strToEval}" - if [ -n "${_flags__value}" ]; then + _flags_nameVar_="__flags_${_flags_name_}_${_flags_info_}" + _flags_strToEval_="_flags_value_=\"\${${_flags_nameVar_}:-}\"" + eval "${_flags_strToEval_}" + if [ -n "${_flags_value_}" ]; then flags_return=${FLAGS_TRUE} else - _flags__type=`_flags_getFlagInfo "${_flags__name}" ${__FLAGS_INFO_TYPE_STR}` - if [ ${_flags__type} -eq ${__FLAGS_TYPE_STRING} ]; then + # see if the _flags_name_ variable is a string as strings can be empty... + # note: the DRY principle would say to have this function call itself for + # the next three lines, but doing so results in an infinite loop as an + # invalid _flags_name_ will also not have the associated _type variable. + # Because it doesn't (it will evaluate to an empty string) the logic will + # try to find the _type variable of the _type variable, and so on. Not so + # good ;-) + _flags_typeVar_="__flags_${_flags_name_}_${__FLAGS_INFO_TYPE_STR}" + _flags_strToEval_="_flags_type_=\"\${${_flags_typeVar_}:-}\"" + eval "${_flags_strToEval_}" + if [ "${_flags_type_}" = "${__FLAGS_TYPE_STRING}" ]; then flags_return=${FLAGS_TRUE} else flags_return=${FLAGS_ERROR} - flags_error="invalid variable name (${_flags__var})" + flags_error="invalid flag name (${_flags_nameVar_})" fi fi - echo "${_flags__value}" - unset _flags__info _flags__name _flags__strToEval _flags__type _flags__value \ - _flags__var + echo "${_flags_value_}" + unset _flags_info_ _flags_name_ _flags_strToEval_ _flags_type_ _flags_value_ \ + _flags_nameVar_ _flags_typeVar_ [ ${flags_return} -eq ${FLAGS_ERROR} ] && _flags_error "${flags_error}" return ${flags_return} } |