diff options
Diffstat (limited to 'subr.rtl/rtl_filepath.subr')
-rw-r--r-- | subr.rtl/rtl_filepath.subr | 84 |
1 files changed, 82 insertions, 2 deletions
diff --git a/subr.rtl/rtl_filepath.subr b/subr.rtl/rtl_filepath.subr index 7d4ec553..3e24057f 100644 --- a/subr.rtl/rtl_filepath.subr +++ b/subr.rtl/rtl_filepath.subr @@ -3,10 +3,23 @@ # set +o errexit -o noglob -o nounset is assumed. # +# +# rtl_basename() - obtain base name from filename +# @_rfname: inout reference to filename +# +# Returns: zero (0) on success, non-zero (>0) on failure +# rtl_basename() { rtl_basename2 "${1}" "${1}"; }; +# +# rtl_basename2() - obtain base name from filename +# @_rfname: in reference to filename +# @_rfname_out: out reference to new filename +# +# Returns: zero (0) on success, non-zero (>0) on failure +# rtl_basename2() { local _rb2_rfname="${1#\$}" _rb2_rfname_out="${2#\$}" \ _rb2_fname=""; @@ -16,6 +29,14 @@ rtl_basename2() { return 0; }; +# +# rtl_check_digest() - check digest of single file +# @_rdigest: out reference to digest of file +# @_fname: name of file to check +# @_digest_check: digest to check against +# +# Returns: zero (0) on success, non-zero (>0) on failure +# rtl_check_digest() { local _rcd_rdigest="${1#\$}" _rcd_fname="${2}" _rcd_digest_check="${3}" \ _rcd_digest=""; @@ -33,6 +54,14 @@ rtl_check_digest() { fi; }; +# +# rtl_check_digest_file() - check digest of single file w/ digest file +# @_fname: name of file to check +# @_digest_check: digest to check against +# @_digest_fname: name of file containing digest +# +# Returns: zero (0) on success, non-zero (>0) on failure +# rtl_check_digest_file() { local _rcdf_fname="${1}" _rcdf_digest_check="${2}" _rcdf_digest_fname="${3}" \ _rcdf_digest="" _rcdf_digest_file=""; @@ -51,6 +80,13 @@ rtl_check_digest_file() { fi; }; +# +# rtl_check_path_vars() - check pathname variables for validity +# @_rstatus: out reference to status string +# @_vnames: list of variable names +# +# Returns: zero (0) on success, non-zero (>0) on empty or unset pathname variable or pathname variable containing whitespace characters +# rtl_check_path_vars() { local _rcpv_rstatus="${1#\$}" _rcpv_vnames="${2}" \ _rcpv_rc=0 _rcpv_vname="" _rcpv_vname_val=""; @@ -70,15 +106,28 @@ rtl_check_path_vars() { return "${_rcpv_rc}"; }; +# +# rtl_dirname() - obtain directory name from filename +# @_rfname: inout reference to {file,directory} name +# +# Returns: zero (0) on success, non-zero (>0) on failure +# rtl_dirname() { rtl_dirname2 "${1}" "${1}"; }; +# +# rtl_dirname2() - obtain directory name from filename +# @_rfname: in reference to filename +# @_rfname_out: out reference to directory name +# +# Returns: zero (0) on success, non-zero (>0) on failure +# rtl_dirname2() { - local _rdname="${1#\$}" _rdname_out="${2#\$}" \ + local _rfname="${1#\$}" _rdname_out="${2#\$}" \ _rd2_dname=""; - eval _rd2_dname="\${${_rdname}}"; + eval _rd2_dname="\${${_rfname}}"; _rd2_dname="${_rd2_dname%/*}"; case "${_rd2_dname}" in @@ -92,6 +141,13 @@ rtl_dirname2() { return 0; }; +# +# rtl_exists_any() - check for existence of pathnames beneath directory +# @_subdir: single directory name +# @...: list of pathnames to check +# +# Returns: zero (0) on success, non-zero (>0) on failure +# rtl_exists_any() { local _rea_subdir="${1}"; shift; @@ -105,6 +161,14 @@ rtl_exists_any() { return 1; }; +# +# rtl_flock_acquire() - acquire file lock +# @_fd: single file descriptor +# @_conflict_exit_code: exit code on conflict +# @_wait: wait period in seconds +# +# Returns: zero (0) on success, non-zero (>0) on failure +# rtl_flock_acquire() { local _rfa_fd="${1}" _rfa_conflict_exit_code="${2:-253}" _rfa_wait="${3:-3600}"; @@ -123,6 +187,13 @@ rtl_flock_acquire() { done; }; +# +# rtl_is_newer() - check if single file is newer than other single file +# @_new_fname: single name of newer file +# @_old_fname: single name of older file +# +# Returns: zero (0) if @_new_fname is newer, non-zero (>0) if @_old_fname is newer +# rtl_is_newer() { local _ris_new_fname="${1}" _ris_old_fname="${2}" \ _ris_new_ts="" _ris_old_ts=""; @@ -141,6 +212,15 @@ rtl_is_newer() { fi; }; +# +# rtl_patch_files() - +# @_patch_cwd: patch(1) -d directory +# @_strip_count: patch(1) strip count +# @_fn: name of function that produces patch filenames and takes the arguments @_rpatch_fname @_patch_idx @... +# @... optional arguments to pass to @_fn +# +# Returns: zero (0) on success, non-zero (>0) on failure +# rtl_patch_files() { local _rpf_patch_cwd="${1}" _rpf_strip_count="${2}" _rpf_fn="${3}" \ _rpf_patch_fname="" _rpf_patch_idx=0; |