]> git.tuebingen.mpg.de Git - gsu.git/blobdiff - misc/gsu/subcommand
Fix gsu com_complete().
[gsu.git] / misc / gsu / subcommand
index e1130efce334f19964155e751c580c66026c7eba..7ba4850b66baf62b34f5a5c1db7c47e48c50c641 100644 (file)
@@ -92,7 +92,13 @@ _com_prefs()
 {
        local i conf="${gsu_config_file:=$HOME/.$gsu_name.rc}"
 
-       if [[ "$1" = "-e" ]]; then
+       gsu_getopts "e"
+       eval "$result"
+       (($ret < 0)) && return
+       gsu_check_arg_count $# 0 0
+       (($ret < 0)) && return
+
+       if [[ "$o_e" == "true" ]]; then
                ret=-$E_GSU_MKDIR
                result="${conf%/*}"
                mkdir -p "$result"
@@ -351,7 +357,7 @@ gsu_getopts()
                        exit 1
                esac
        done
-       result="local opt"
+       result="local _gsu_getopts_opt"
        for ((i=0; i < ${#1}; i++)); do
                c1=${1:$i:1}
                c2=${1:$(($i + 1)):1}
@@ -364,8 +370,8 @@ gsu_getopts()
        done
        result+="
        OPTIND=1
-       while getopts $1 opt \"\$@\"; do
-               case \"\$opt\" in
+       while getopts $1 _gsu_getopts_opt \"\$@\"; do
+               case \"\$_gsu_getopts_opt\" in
 "
        for ((i=0; i < ${#1}; i++)); do
                c1=${1:$i:1}
@@ -394,7 +400,7 @@ gsu_getopts()
 
 _com_complete()
 {
-       local cmd n cword="$1"
+       local cmd n cword
        local -a words
 
        if (($# == 0)); then
@@ -405,9 +411,13 @@ _com_complete()
                candidates=(\$($0 complete "\$COMP_CWORD" "\${COMP_WORDS[@]}"));
                COMPREPLY=(\$(compgen -W "\${candidates[*]}" -- "\$cur"));
 EOF
+               ret=$GSU_SUCCESS
+               return
        fi
 
-       [[ -z "$cword" ]] && return
+       cword="$1"
+       gsu_is_a_number "$cword"
+       (($ret < 0)) && return
        if (($cword <= 1)); then
                _gsu_available_commands
                echo "${result}"