# for errors and parses the config file.
_gsu_check_options()
{
- local i conf="${gsu_config_file:=$HOME/.$gsu_name.rc}"
+ local i conf="${gsu_config_file:=$HOME/.$gsu_name.rc}" val
+
+ for ((i=0; i < ${#gsu_options[@]}; i++)); do
+ eval "${gsu_options[$i]}"
+ eval val='"'\$$name'"'
+ eval orig_${gsu_config_var_prefix}_$name='"'${val}'"'
+ done
[[ -r "$conf" ]] && source "$conf"
for ((i=0; i < ${#gsu_options[@]}; i++)); do
local name= option_type= default_value= required=
local description= help_text=
- local val
+ local val orig_val
eval "${gsu_options[$i]}"
echo "$name" | grep '^[a-zA-Z][a-zA-Z_0123456789]*$' &> /dev/null;
[[ $? -ne 0 ]] && return
- eval val='"'\$$name'"'
+ eval orig_val='"'\$orig_${gsu_config_var_prefix}_$name'"'
+ if [[ -z "$orig_val" ]]; then
+ eval val='"'\$$name'"'
+ else
+ val="$orig_val"
+ fi
case "$required" in
true|yes)
ret=-$E_GSU_NEED_VALUE