From 9c60453969b1be1c2d1011420a8e354c672c0f38 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Thu, 6 Apr 2006 13:11:27 +0000 Subject: tweak pattern matching for execute-as-is --- Functions/MIME/zsh-mime-handler | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'Functions') 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 || -- cgit 1.4.1