This function is rather confused. It uses gsu_short_msg() to print
the header to stderr while the list of subcommands is printed to
stdout. This is "fixed" by executing all commands in a subshell and
redirecting stderr to stdout.
It's easier to just print everything to stdout. This patch also
renames the loop variable i to cmd, declares $count as a local
integer variable and switches to single quoted string constants.
}
_gsu_print_available_commands()
-{(
- local i count=0
- gsu_short_msg "Available commands:"
- for i in $gsu_cmds; do
- printf "$i"
- count=$(($count + 1))
- if test $(($count % 4)) -eq 0; then
- echo
+{
+ local cmd
+ local -i count=0
+
+ printf 'Available commands:\n'
+ for cmd in $gsu_cmds; do
+ printf '%s' "$cmd"
+ let count++
+ if (($count % 4)); then
+ printf '\t'
+ ((${#cmd} < 8)) && printf '\t'
else
- printf "\t"
- if test ${#i} -lt 8; then
- printf "\t"
- fi
+ printf '\n'
fi
done
- echo
-) 2>&1
+ printf '\n'
}
gsu_complete_options()