]> git.tuebingen.mpg.de Git - gsu.git/blobdiff - funcs/gsu
gsu: Allow help/man/prefs command even on invalid configs.
[gsu.git] / funcs / gsu
index 81066f71b23210483e028f3d9a044dec9c9c2035..9ee2d72442d4b0694f4c151559c2b383cdf860e0 100644 (file)
--- a/funcs/gsu
+++ b/funcs/gsu
@@ -149,7 +149,7 @@ com_prefs()
                local name= option_type= default_value= required=
                local description= help_text=
                eval "${gsu_options[$i]}"
-               eval val='"$'${gsu_name}_$name'"'
+               eval val='"$'${gsu_config_var_prefix}_$name'"'
                case "$required" in
                true|yes)
                        printf "# required"
@@ -294,6 +294,7 @@ _gsu_check_options()
 
                eval "${gsu_options[$i]}"
 
+
                # Check name. It must be non-empty and consist of [a-zA-Z_0-9]
                # only.  Moreover it must not start with [a-zA-Z].
 
@@ -311,9 +312,6 @@ _gsu_check_options()
                        [[ -z "$val" ]] && return
                        ;;
                false|no)
-                       ret=-$E_NO_DEFAULT
-                       result="$name"
-                       [[ -z "$default_value" ]] && return
                        ;;
                *)
                        ret=-$E_GSU_BAD_BOOL
@@ -321,7 +319,7 @@ _gsu_check_options()
                        return
                esac
 
-               eval ${gsu_name}_$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
@@ -333,7 +331,7 @@ _gsu_check_options()
                        [[ $ret -lt 0 ]] && return
                        ;;
                *)
-                       ret=-$E_BAD_OPTION_TYPE
+                       ret=-$E_GSU_BAD_OPTION_TYPE
                        result="$name/$option_type"
                        return
                esac
@@ -347,11 +345,15 @@ gsu()
        local i
 
        _gsu_self="$(basename $0)"
+       gsu_name="${gsu_name:=$_gsu_self}"
+       gsu_config_var_prefix="${gsu_config_var_prefix:=$gsu_name}"
        _gsu_init_errors
        _gsu_check_options
        if [[ "$ret" -lt 0 ]]; then
-               gsu_err_msg
-               exit 1
+               if [[ "$1" != "help" && "$1" != "man" && "$1" != "prefs" ]]; then
+                       gsu_err_msg
+                       exit 1
+               fi
        fi
        _gsu_available_commands
        gsu_cmds="$result"