subcommand: Declare $opt as local.
[gsu.git] / config
diff --git a/config b/config
index 0663e340fdcf26e5824d69ae8821081abcfa9206..0f8bb596af8d1351c4c1d2d34d3190535cea24d6 100644 (file)
--- a/config
+++ b/config
@@ -1,10 +1,13 @@
 #!/bin/bash
+# Copyright (C) 2006 Andre Noll
+# Licensed under the LGPL, version 3. See COPYING and COPYING.LESSER.
 
 # Syntactically check the gsu_options array for errors and parse the config
 # file.
 gsu_check_options()
 {
-       local i conf="${gsu_config_file:=${HOME:-}/.$gsu_name.rc}" val
+       local i conf="${gsu_config_file:=${HOME:-}/.$gsu_name.rc}" val orig_val
+       local name option_type default_value required description help_text
 
        for ((i=0; i < ${#gsu_options[@]}; i++)); do
                eval "${gsu_options[$i]}"
@@ -15,19 +18,20 @@ gsu_check_options()
        [[ -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 orig_val
+               name=
+               option_type=
+               default_value=
+               required=
+               description=
+               help_text=
 
                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].
+               # only.  Moreover it must start with [a-zA-Z].
                ret=-$E_GSU_BAD_CONFIG_VAR
                result="name: '$name'"
-               # bash's =~ works only for 3.2 and newer, so use grep
-               echo "$name" | grep '^[a-zA-Z][a-zA-Z_0123456789]*$' &> /dev/null;
-               (($? != 0)) && return
+               [[ "$name" =~ ^[a-zA-Z][a-zA-Z_0123456789]*$ ]] || return
 
                eval orig_val='"'\$orig_${gsu_config_var_prefix}_$name'"'
                if [[ -z "$orig_val" ]]; then
@@ -80,6 +84,6 @@ gsu_check_options_or_die()
 
 if [[ "$(type -t _gsu_setup)" != "function" ]]; then
        gsu_dir=${gsu_dir:-${BASH_SOURCE[0]%/*}}
-       . $gsu_dir/common || exit 1
+       . "$gsu_dir/common" || exit 1
        _gsu_setup
 fi