#
# set +o errexit -o noglob -o nounset is assumed.
#
rtl_export_vars() {
local _rev_unsetfl=0;
if [ "x${1}" = "x-u" ]; then
_rev_unsetfl=1; shift;
fi;
while [ "${#}" -ge 2 ]; do
if [ "${2:+1}" = 1 ]\
|| [ "${_rev_unsetfl}" -eq 1 ]; then
case "${_rev_unsetfl}" in
0) rtl_set_var_unsafe "${1}" "${2}";
export "${1}"; ;;
1) unset "${1}"; ;;
esac;
fi; shift 2;
done;
return 0;
};
rtl_head() {
local _rh_pattern="${1}" _rh_s="${2}" _rh_rs_out="${3#\$}";
while true; do
if [ "${_rh_s%%${_rh_pattern}}" = "${_rh_s}" ]; then
break;
else
_rh_s="${_rh_s%%${_rh_pattern}}";
fi;
done;
eval ${_rh_rs_out}='${_rh_s}';
return 0;
};
rtl_percentage() {
local _rp_in="${1}" _rp_max="${2}" _rp_rs_out="${3#\$}" \
_rp_perc;
_rp_perc=$((100 * ${_rp_in} + ${_rp_max} / 2));
_rp_perc=$((${_rp_perc} ? ${_rp_perc} / ${_rp_max} : ${_rp_perc}));
eval ${_rp_rs_out}='${_rp_perc}';
return 0;
};
rtl_percentage2() {
local _rp_rin="${1#\$}" _rp_rmax="${2#\$}" _rp_rs_out="${3#\$}" \
_rp_in=0 _rp_max=0 _rp_perc;
eval _rp_in=\"\${${_rp_rin}}\";
eval _rp_max=\"\${${_rp_rmax}}\";
_rp_perc=$((100 * ${_rp_in} + ${_rp_max} / 2));
_rp_perc=$((${_rp_perc} ? ${_rp_perc} / ${_rp_max} : ${_rp_perc}));
eval ${_rp_rs_out}='${_rp_perc}';
return 0;
};
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}";
return 0;
};
# vim:filetype=sh