# function zfcd_match { emulate -L zsh # see zfcd for details of this hack if [[ $1 = $HOME || $1 = $HOME/* ]]; then 1="~${1#$HOME}" fi # error messages only local ZFTP_VERBOSE=45 # should we redirect 2>/dev/null or let the user see it? local tmpf=${TMPPREFIX}zfcm$$ if [[ $ZFTP_SYSTEM = UNIX* ]]; then # hoo, aren't we lucky: this makes things so much easier setopt localoptions rcexpandparam local dir if [[ $1 = ?*/* ]]; then dir=${1%/*} elif [[ $1 = /* ]]; then dir=/ fi # If we're using -F, we get away with using a directory # to list, but not a glob. Don't ask me why. # I hate having to rely on awk here. zftp ls -F $dir >$tmpf reply=($(awk '/\/$/ { print substr($1, 0, length($1)-1) }' $tmpf)) rm -f $tmpf if [[ $dir = / ]]; then reply=(${dir}$reply) elif [[ -n $dir ]]; then reply=($dir/$reply) fi else # I simply don't know what to do here. # Just use the list of files for the current directory. zfget_match $* fi # }