_parse_help, _parse_usage: More command arg sanitization.

http://thread.gmane.org/gmane.comp.shells.bash.completion.devel/3620
This commit is contained in:
Ville Skyttä 2011-12-14 21:54:49 +02:00
parent 2c4d20a02e
commit a229ea46e7

View File

@ -750,9 +750,12 @@ __parse_options()
# #
_parse_help() _parse_help()
{ {
eval local cmd=$1 eval local cmd=$( quote "$1" )
local line local line
{ case $cmd in -) cat ;; *) "$cmd" ${2:---help} 2>&1 ;; esac } \ { case $cmd in
-) cat ;;
*) "$( dequote "$cmd" )" ${2:---help} 2>&1 ;;
esac } \
| while read -r line; do | while read -r line; do
[[ $line == *([ $'\t'])-* ]] || continue [[ $line == *([ $'\t'])-* ]] || continue
@ -772,9 +775,12 @@ _parse_help()
# #
_parse_usage() _parse_usage()
{ {
eval local cmd=$1 eval local cmd=$( quote "$1" )
local line match option i char local line match option i char
{ case $cmd in -) cat ;; *) "$cmd" ${2:---usage} 2>&1 ;; esac } \ { case $cmd in
-) cat ;;
*) "$( dequote "$cmd" )" ${2:---usage} 2>&1 ;;
esac } \
| while read -r line; do | while read -r line; do
while [[ $line =~ \[[[:space:]]*(-[^]]+)[[:space:]]*\] ]]; do while [[ $line =~ \[[[:space:]]*(-[^]]+)[[:space:]]*\] ]]; do