diff options
Diffstat (limited to 'subr.rtl')
-rw-r--r-- | subr.rtl/rtl_complex.subr | 16 | ||||
-rw-r--r-- | subr.rtl/rtl_platform.subr | 14 |
2 files changed, 15 insertions, 15 deletions
diff --git a/subr.rtl/rtl_complex.subr b/subr.rtl/rtl_complex.subr index 61637f69..f315fd90 100644 --- a/subr.rtl/rtl_complex.subr +++ b/subr.rtl/rtl_complex.subr @@ -4,15 +4,15 @@ rtl_export_vars() { local _unsetfl=0; [ "x${1}" = "x-u" ] && { _unsetfl=1; shift; }; + while [ "${#}" -ge 2 ]; do - if [ -n "${2}" ]; then - if [ "${_unsetfl:-0}" -eq 0 ]; then - rtl_set_var_unsafe "${1}" "${2}"; export "${1}"; - else - unset "${1}"; - fi; - fi; - shift 2; + if [ "${2:+1}" = 1 ]\ + || [ "${_unsetfl}" -eq 1 ]; then + case "${_unsetfl}" in + 0) rtl_set_var_unsafe "${1}" "${2}"; export "${1}"; ;; + 1) unset "${1}"; ;; + esac; + fi; shift 2; done; }; diff --git a/subr.rtl/rtl_platform.subr b/subr.rtl/rtl_platform.subr index c8137e56..ac411c87 100644 --- a/subr.rtl/rtl_platform.subr +++ b/subr.rtl/rtl_platform.subr @@ -108,17 +108,17 @@ rtl_run_cmd_unsplit() { rtl_set_vars() { local _vars_set_vname="${1}" _vname_dst="${2}" _vname_src_tmpls="${3}" \ _vars_set_old="" _vars_set_tmp="" _vname_src=""; + for _vname_src in $(rtl_toupper "${_vname_src_tmpls}"); do _vname_src="${_vname_src}_${_vname_dst}"; - _vval_src="$(rtl_get_var_unsafe "${_vname_src}")"; - if [ -n "${_vval_src}" ]; then - rtl_set_var_unsafe "PKG_${_vname_dst}" "${_vval_src}"; - _vars_set_tmp="$(rtl_lconcat "${_vars_set_tmp}" "PKG_${_vname_dst}")"; + eval _vval_src='${'"${_vname_src}"':-}'; + if [ "${_vval_src:+1}" = 1 ]; then + eval PKG_${_vname_dst}='${_vval_src}'; + _vars_set_tmp="${_vars_set_tmp:+${_vars_set_tmp} }PKG_${_vname_dst}"; fi; done; - _vars_set_old="$(rtl_get_var_unsafe "${_vars_set_vname}")"; - rtl_set_var_unsafe "${_vars_set_vname}" \ - "$(rtl_lconcat "${_vars_set_old}" "${_vars_set_tmp}")"; + eval _vars_set_old='${'"${_vars_set_vname}"'}'; + rtl_set_var_unsafe "${_vars_set_vname}" "${_vars_set_old:+${_vars_set_old} }${_vars_set_tmp}"; }; # vim:filetype=sh |