| |
| |
| |
| |
| rtl_export_vars() { |
| local _unsetfl=0; [ "x${1}" = "x-u" ] && { _unsetfl=1; shift; }; |
| |
| while [ "${#}" -ge 2 ]; do |
| 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; |
| }; |
| |
| rtl_filter_vars() { |
| local _fn="${1}" _fnfl=0 _qchar="" _var_spec="" _vars="" _vname="" IFS; |
| rtl_set_IFS_nl; |
| for _var_spec in $(set); do |
| case "${_qchar}" in |
| "\"") if [ "${_var_spec%\"}" != "${_var_spec}" ]; then |
| _qchar=""; |
| fi; |
| if [ "${_fnfl:-0}" -eq 1 ]; then |
| _vars="$(rtl_lconcat "${_vars}" "${_var_spec}" "\n")"; |
| fi; |
| continue; ;; |
| "\'") if [ "${_var_spec%\'}" != "${_var_spec}" ]; then |
| _qchar=""; |
| fi; |
| if [ "${_fnfl:-0}" -eq 1 ]; then |
| _vars="$(rtl_lconcat "${_vars}" "${_var_spec}" "\n")"; |
| fi; |
| continue; ;; |
| *) case "${_var_spec}" in |
| [!=]*=\"*\") _qchar=""; _vname="${_var_spec%%=\"*}"; ;; |
| [!=]*=\"*) _qchar="\""; _vname="${_var_spec%%=\"*}"; ;; |
| [!=]*=\'*\') _qchar=""; _vname="${_var_spec%%=\'*}"; ;; |
| [!=]*=\'*) _qchar="\'"; _vname="${_var_spec%%=\'*}"; ;; |
| [!=]*=*) _qchar=""; _vname="${_var_spec%%=*}"; ;; |
| esac; ;; |
| esac; |
| if "${_fn}" "${_vname}"; then |
| _vars="${_vars:+${_vars} |
| }${_var_spec}"; _fnfl=1; |
| else |
| _fnfl=0; |
| fi; |
| done; |
| printf "%s" "${_vars}"; |
| }; |
| |
| rtl_head() { |
| local _pattern="${1}" _s="${2}"; |
| while true; do |
| if [ "${_s%%${_pattern}}" = "${_s}" ]; then |
| break; |
| else |
| _s="${_s%%${_pattern}}"; |
| fi; |
| done; |
| printf "%s" "${_s}"; |
| }; |
| |
| rtl_percentage() { |
| local _in="${1}" _max="${2}" _perc; |
| _perc="$((100 * ${_in} + ${_max} / 2))"; |
| _perc="$((${_perc} ? ${_perc} / ${_max} : ${_perc}))"; |
| printf "%d\n" "${_perc}"; |
| }; |
| |
| rtl_sunset() { |
| local _rs_rset="${1#\$}" _rs_kname="" IFS=" "; |
| eval set -- '${'"${_rs_rset}"'}'; |
| while [ "${#}" -gt 0 ]; do |
| unset "${_rs_rset}${_rs_kname}"; shift; |
| done; unset "${_rs_rset}"; |
| }; |
| |
| |