summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVille Skyttä <ville.skytta@iki.fi>2011-12-14 21:54:49 +0200
committerVille Skyttä <ville.skytta@iki.fi>2011-12-14 21:54:49 +0200
commita229ea46e701af1c8d55ae44bb61b025af00ec1e (patch)
tree6622002bb3e35a293aba12564ba86495d324d15e
parent2c4d20a02e3193470440b75032a8baf32a8a8a62 (diff)
downloadbash-completion-a229ea46e701af1c8d55ae44bb61b025af00ec1e.tar.gz
_parse_help, _parse_usage: More command arg sanitization.
http://thread.gmane.org/gmane.comp.shells.bash.completion.devel/3620
-rw-r--r--bash_completion14
1 files changed, 10 insertions, 4 deletions
diff --git a/bash_completion b/bash_completion
index ebebb8e0..84e43517 100644
--- a/bash_completion
+++ b/bash_completion
@@ -750,9 +750,12 @@ __parse_options()
#
_parse_help()
{
- eval local cmd=$1
+ eval local cmd=$( quote "$1" )
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
[[ $line == *([ $'\t'])-* ]] || continue
@@ -772,9 +775,12 @@ _parse_help()
#
_parse_usage()
{
- eval local cmd=$1
+ eval local cmd=$( quote "$1" )
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 [[ $line =~ \[[[:space:]]*(-[^]]+)[[:space:]]*\] ]]; do