diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2006-04-06 13:11:27 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2006-04-06 13:11:27 +0000 |
commit | 9c60453969b1be1c2d1011420a8e354c672c0f38 (patch) | |
tree | ecaa58419e0c45d01a0e6a894429c8af87ec1f44 | |
parent | 87660ee4c8d49eda269ae3ecd1c3b616f91aec79 (diff) | |
download | zsh-9c60453969b1be1c2d1011420a8e354c672c0f38.tar.gz zsh-9c60453969b1be1c2d1011420a8e354c672c0f38.tar.xz zsh-9c60453969b1be1c2d1011420a8e354c672c0f38.zip |
tweak pattern matching for execute-as-is
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Functions/MIME/zsh-mime-handler | 21 |
2 files changed, 22 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog index 03e6f79fb..155018ecb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-04-06 Peter Stephenson <pws@csr.com> + + * 22405: Functions/MIME/zsh-mime-handler: pattern matching + in 22394 needed tweaking. + 2006-04-05 Clint Adams <clint@zsh.org> * 22404: Completion/Unix/Command/_cowsay: diff --git a/Functions/MIME/zsh-mime-handler b/Functions/MIME/zsh-mime-handler index ab0c27fb0..34082011e 100644 --- a/Functions/MIME/zsh-mime-handler +++ b/Functions/MIME/zsh-mime-handler @@ -54,12 +54,25 @@ local -a exec_asis zstyle -a $context execute-as-is exec_asis || exec_asis=('*(*)') local pattern +local -a files + +# In case the pattern contains glob qualifiers, as it does by default, +# we need to do real globbing, not just pattern matching. +# The strategy is to glob the files in the directory using the +# pattern and see if the one we've been passed is in the list. +local dirpref=${1%/*} +if [[ $dirpref = $1 ]]; then + dirpref= +else + dirpref+=/ +fi for pattern in $exec_asis; do - if [[ $1 = ${~pattern} ]]; then - "$@" - return 0 - fi + files=(${dirpref}${~pattern}) + if [[ -n ${files[(r)$1]} ]]; then + "$@" + return 0 + fi done zstyle -s $context handler handler || |