X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=funcs%2Fgsu;h=7e066f7664016186cba91db735977e36dfd5c164;hb=b809fa90a89462bf30746325c9fe152851a000bd;hp=9ee2d72442d4b0694f4c151559c2b383cdf860e0;hpb=7cc3cdb5fc9245ea8654411098c859b6d928be42;p=gsu.git diff --git a/funcs/gsu b/funcs/gsu index 9ee2d72..7e066f7 100644 --- a/funcs/gsu +++ b/funcs/gsu @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # gsu -- the global subcommand utility # (C) 2006-2009 Andre Noll @@ -163,6 +163,7 @@ com_prefs() printf " [$default_value]" fi echo + [[ -n "$help_text" ]] && sed -e '/^[ ]*$/d; s/^[ ]*/# /g' <<< "$help_text" printf "$name=$val" [[ "$val" == "$default_value" ]] && printf " # default" echo @@ -283,14 +284,20 @@ export -f com_help # 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]}" @@ -304,7 +311,12 @@ _gsu_check_options() 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 @@ -350,7 +362,7 @@ gsu() _gsu_init_errors _gsu_check_options if [[ "$ret" -lt 0 ]]; then - if [[ "$1" != "help" && "$1" != "man" && "$1" != "prefs" ]]; then + if [[ "$1" != "help" && "$1" != "man" ]]; then gsu_err_msg exit 1 fi