=== modified file 'bin/confz' --- bin/confz 2014-06-26 19:27:11 +0000 +++ bin/confz 2014-06-26 18:23:05 +0000 @@ -96,10 +96,6 @@ # are variable assignments in the form of: # foo=bar -- sets ${vars[foo]} in calee to value "bar" # :foo -- passes ${vars[foo]} from caller to calee - # ?foo=bar -- sets ${vars[foo]} in calee to value of ${vars[bar]} - # iff it is defined in the caller - # ?foo -- passes ${vars[foo]} from caller to calee iff it is defined - # in the caller # %foo -- passes ${vars[foo]} from callee to caller # %foo=bar -- passes ${vars[foo]} from callee # to variable ${vars[bar]} of caller @@ -123,12 +119,7 @@ # parse variable assignments while (( $# )); do case $1 in - (:*) ((${+vars_prev[${1#:}]})) || \ - die "variable ${(qqq)1#:} not set, passed as :argument" - setvar ${1#:} ${vars_prev[${1#:}]};; - (\?*=*) (($+vars_prev[${${1#\?}#*=})) && \ - setvar ${${1#\?}%%=*} $vars_prev[${${1#\?}#*=};; - (\?*) setvar ${1#\?} ${vars_prev[${1#\?}]};; + (:*) setvar ${1#:} ${vars_prev[${1#:}]};; (%*=*) lift[${${1#%}%%=*}]=${${1#%}#*=};; (%*) lift[${1#%}]=${1#%};; (*=*) setvar ${1%%=*} ${1#*=};; @@ -194,8 +185,6 @@ # lift %variables from calee to caller for outer inner in ${(kv)lift}; do - ((${+vars_prev[$inner]})) || \ - die "variable ${(qqq)inner} not set, was requested by caller as ${(qqq)outer}" setvar $outer ${vars_prev[$inner]} done }