From 9c60453969b1be1c2d1011420a8e354c672c0f38 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Thu, 6 Apr 2006 13:11:27 +0000 Subject: [PATCH] tweak pattern matching for execute-as-is --- ChangeLog | 5 +++++ 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 + + * 22405: Functions/MIME/zsh-mime-handler: pattern matching + in 22394 needed tweaking. + 2006-04-05 Clint Adams * 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 ||