diff options
Diffstat (limited to 'subr/rtl_fileop.subr')
-rw-r--r-- | subr/rtl_fileop.subr | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/subr/rtl_fileop.subr b/subr/rtl_fileop.subr deleted file mode 100644 index dd82311e..00000000 --- a/subr/rtl_fileop.subr +++ /dev/null @@ -1,143 +0,0 @@ -# -# set +o errexit -o noglob -o nounset is assumed. -# - -# -# Private globals and subroutines -# -RTLP_FILEOP_LOG=0; -rtl_fileop_set_log() { RTLP_FILEOP_LOG="${1}"; }; - -rtlp_fileop_check() { - local _prefix="${1}" _pname="" _rname=""; shift; - while [ "${#}" -gt 0 ]; do - return 0; - shift; done; -}; - -rtlp_fileop_log() { - local _msg="${1}"; - if [ "${RTLP_FILEOP_LOG:-0}" -eq 1 ]; then - rtl_log_msg debug "${_msg}"; - fi; -}; - - -rtl_fileop() { - local _op="${1}" _dst="" _mode="" _install_args="" _owner="" _rc=0 _src=""; shift; - case "${_op}" in - cd) if [ \( -z "${1}" \) -o ! \( -L "${1}" -o -e "${1}" \) ]; then - rtl_log_msg fatalexit "Invalid or non-existent directory \`%s'." "${1}"; - elif rtlp_fileop_check "${PREFIX:-}" "${1}"; then - rtlp_fileop_log "Changing working directory to \`${1}'."; - cd -- "${1}"; _rc="${?}"; - fi; ;; - chmod) if [ "${#}" -lt 2 ]; then - rtl_log_msg fatalexit "Missing parameters (in: chmod %s.)" "${*}"; - elif _mode="${1}" && shift\ - && rtlp_fileop_check "${PREFIX:-}" "${*}"; then - rtlp_fileop_log "Changing file mode bits of \`${*}' to \`${_mode}'."; - chmod -- "${_mode}" "${@}"; _rc="${?}"; - fi; ;; - chown) if [ "${#}" -lt 2 ]; then - rtl_log_msg fatalexit "Missing parameters (in: chown %s.)" "${*}"; - elif _owner="${1}" && shift\ - && rtlp_fileop_check "${PREFIX:-}" "${*}"; then - rtlp_fileop_log "Changing file owner of \`${*}' to \`${_owner}'."; - chown -- "${_owner}" "${@}"; _rc="${?}"; - fi; ;; - cp_follow) - if [ "${#}" -lt 2 ]; then - rtl_log_msg fatalexit "Missing parameters (in: cp_follow %s}.)" "${*}"; - elif rtlp_fileop_check "${PREFIX:-}" "${*}"; then - _src="${*}"; _src="${_src% *}"; - _dst="${*}"; _dst="${_dst##* }"; - rtlp_fileop_log "Copying \`${_src}' into \`${_dst}' w/ -pLR."; - cp -pLR -- "${@}"; _rc="${?}"; - fi; ;; - cp) if [ "${#}" -lt 2 ]; then - rtl_log_msg fatalexit "Missing parameters (in: cp %s.)" "${*}"; - elif rtlp_fileop_check "${PREFIX:-}" "${*}"; then - _src="${*}"; _src="${_src% *}"; - _dst="${*}"; _dst="${_dst##* }"; - rtlp_fileop_log "Copying \`${_src}' into \`${_dst}' w/ -pPR."; - cp -pPR -- "${@}"; _rc="${?}"; - fi; ;; - install) - if [ "${#}" -lt 2 ]; then - rtl_log_msg fatalexit "Missing parameters (in: install %s.)" "${*}"; - else _dst="$(while [ ""${#}"" -gt 2 ]; do shift; done; printf "%s" "${2}")"; - _install_args="$(while [ ""${#}"" -gt 2 ]; do printf "%s" "${1}"; shift; done)"; - _src="$(while [ ""${#}"" -gt 2 ]; do shift; done; printf "%s" "${1}")"; - if rtlp_fileop_check "${PREFIX:-}" "${_dst}" "${_src}"; then - rtlp_fileop_log "Installing \`${_src}' into \`${_dst}' w/ ${_install_args}."; - install "${@}"; _rc="${?}"; - fi; - fi; ;; - ln_symbolic) - if [ \( -z "${1}" \) -o \( -z "${2}" \) ]; then - rtl_log_msg fatalexit "Missing parameters (in: ln_symbolic %s.)" "${*}"; - elif rtlp_fileop_check "${PREFIX:-}" "${2}"; then - if rtl_fileop test "${2}"; then - rtl_fileop rm "${2}"; - fi; - if [ "${?}" -eq 0 ]; then - rtlp_fileop_log "Linking \`${1}' to \`${2}' w/ -fs"; - ln -fs -- "${1}" "${2}"; _rc="${?}"; - fi; - fi; ;; - mv) if [ \( -z "${1}" \) -o \( -z "${2}" \) ]; then - rtl_log_msg fatalexit "Missing parameters (in: mv %s.)" "${*}"; - elif rtlp_fileop_check "${PREFIX:-}" "${1}" "${2}"; then - rtlp_fileop_log "Moving \`${1}' to \`${2}' w/ -fs"; - mv -f -- "${1}" "${2}"; _rc="${?}"; - fi; ;; - mkdir|mkfifo|rm|source|source_opt|test|touch) - while [ \( "${?}" -eq 0 \) -a \( ""${#}"" -gt 0 \) ]; do - if [ -z "${1}" ]; then - rtl_log_msg fatalexit "Missing parameters (in: %s %s.)" "${_op}" "${*}"; - elif [ "${_op}" = mkdir ]\ - && [ ! -d "${1}" ]\ - && rtlp_fileop_check "${PREFIX:-}" "${1}"; then - if rtl_fileop test "${1}"; then - rtl_fileop rm "${1}"; - fi; - rtlp_fileop_log "Making directory \`${1}'."; - mkdir -p -- "${1}"; _rc="${?}"; - elif [ "${_op}" = mkfifo ]\ - && rtlp_fileop_check "${PREFIX:-}" "${1}"; then - if rtl_fileop test "${1}"; then - rtl_fileop rm "${1}"; - fi; - rtlp_fileop_log "Creating FIFO \`${1}'."; - rtlp_fileop_check "${PREFIX:-}" "${1}"; - mkfifo -- "${1}"; _rc="${?}"; - elif [ "${_op}" = rm ]\ - && rtl_fileop test "${1}"\ - && rtlp_fileop_check "${PREFIX:-}" "${1}"; then - rtlp_fileop_log "Removing directory or file \`${1}'."; - rm -rf -- "${1}"; _rc="${?}"; - elif [ "${_op}" = source ]\ - && rtlp_fileop_check "${PREFIX:-}" "${1}"; then - rtlp_fileop_log "Sourcing file \`${1}'."; - . "${1}"; _rc="${?}"; - elif [ "${_op}" = source_opt ]\ - && rtl_fileop test "${1}"\ - && rtlp_fileop_check "${PREFIX:-}" "${1}"; then - rtlp_fileop_log "Sourcing file \`${1}'."; - . "${1}"; _rc="${?}"; - elif [ "${_op}" = test ]\ - && rtlp_fileop_check "${PREFIX:-}" "${1}"\ - && ! [ \( -L "${1}" \) -o \( -e "${1}" \) ]; then - return 1; - elif [ "${_op}" = touch ]\ - && rtlp_fileop_check "${PREFIX:-}" "${1}"; then - rtlp_fileop_log "Touching file \`${1}'."; - touch -- "${1}"; _rc="${?}"; - fi; shift; - done; ;; - *) rtl_log_msg fatalexit "Error: rtl_fileop() called w/ invalid parameter(s): %s" "${*}"; ;; - esac; return "${_rc}"; -}; - -# vim:filetype=sh |