| |
| |
| |
| |
| rtl_basename() { |
| local _fname="${1##*/}"; printf "%s" "${_fname}"; |
| }; |
| |
| rtl_check_digest() { |
| local _fname="${1}" _digest_check="${2}" _digest=""; RTL_CHECK_DIGEST_DIGEST=""; |
| if ! [ -e "${_fname}" ]; then |
| return 1; |
| else set -- $(sha256sum "${_fname}"); |
| RTL_CHECK_DIGEST_DIGEST="${1}"; |
| if [ "${RTL_CHECK_DIGEST_DIGEST}" = "${_digest_check}" ]; then |
| return 0; |
| else |
| return 1; |
| fi; |
| fi; |
| }; |
| |
| rtl_check_digest_file() { |
| local _fname="${1}" _digest_check="${2}" _digest_fname="${3}" _digest="" RTL_CHECK_DIGEST_DIGEST=""; |
| if ! [ -e "${_digest_fname}" ]; then |
| return 1; |
| else _digest="$(cat "${_digest_fname}")"; |
| if [ "${_digest}" != "${_digest_check}" ]\ |
| || ! rtl_check_digest "${_fname}" "${_digest_check}"; then |
| return 1; |
| fi; |
| fi; |
| }; |
| |
| rtl_check_path_vars() { |
| local _vnames="${1}" _rc=0 _vname="" _vname_val=""; _status=""; |
| for _vname in ${_vnames}; do |
| _vname_val="$(rtl_get_var_unsafe "${_vname}")"; |
| if [ -z "${_vname_val}" ]; then |
| _rc=1; _status="Error: variable \`${_vname}' is empty or unset."; break; |
| elif [ "${_vname_val#* *}" != "${_vname_val}" ]; then |
| _rc=2; _status="Error: variable \`${_vname}' contains one or more whitespace characters."; break; |
| fi; |
| done; |
| return "${_rc}"; |
| }; |
| |
| rtl_dirname() { |
| local _dname="${1%/*}"; |
| case "${_dname}" in |
| "") _dname="."; ;; |
| *) while rtl_matchr "${_dname}" "*/"; do |
| _dname="${_dname%/}"; |
| done; ;; |
| esac; printf "%s" "${_dname:-/}"; |
| }; |
| |
| rtl_exists_any() { |
| local _subdir="${1}"; shift; |
| while [ "${#}" -gt 0 ]; do |
| if [ -e "${_subdir}/${1}" ]; then |
| return 0; |
| else |
| shift; |
| fi; |
| done; return 1; |
| }; |
| |
| rtl_flock_acquire() { |
| local _fd="${1}" _conflict_exit_code="${2:-253}" _wait="${3:-3600}" |
| while true; do |
| if flock -E "${_conflict_exit_code}" -w "${_wait}" "${_fd}"; then |
| break; |
| elif [ "${?}" -eq "${_conflict_exit_code}" ]; then |
| continue; |
| else |
| return "${?}"; |
| fi; |
| done; |
| }; |
| |
| rtl_is_newer() { |
| local _new_fname="${1}" _old_fname="${2}" _new_ts="" _old_ts=""; |
| if ! [ -e "${_old_fname}" ]; then |
| return 0; |
| else _new_ts="$(stat -c %Y "${_new_fname}" 2>/dev/null)"; |
| _old_ts="$(stat -c %Y "${_old_fname}" 2>/dev/null)"; |
| if [ "${_new_ts:-0}" -gt "${_old_ts:-0}" ]; then |
| return 0; |
| else |
| return 1; |
| fi; |
| fi; |
| }; |
| |
| |