From bcea07f134a7ee452cf0f526c6af14eb2a55e36f Mon Sep 17 00:00:00 2001 From: Martin Winkler Date: Wed, 30 Mar 2022 23:13:33 +0200 Subject: [PATCH] Integrate rl::cleanpath into rl::rdlink, becaus it was only used once Adding some best practices for printf --- rdlink.sh | 45 +++++++++++++++++---------------------------- 1 file changed, 17 insertions(+), 28 deletions(-) diff --git a/rdlink.sh b/rdlink.sh index 7c85dbf..61dcc54 100755 --- a/rdlink.sh +++ b/rdlink.sh @@ -24,7 +24,7 @@ function rl::log () { local log_line="" while IFS=$'\n' read -r log_line; do - printf "%s [%9s] %s\n" "$(date -u +"%Y-%m-%d %H:%M:%S UTC")" "${log_level}" "${log_line}" 1>&2 + printf '%s [%9s] %s\n' "$(date -u +"%Y-%m-%d %H:%M:%S UTC")" "${log_level}" "${log_line}" 1>&2 done <<< "${@:-}" } emergency() { rl::log emergency "${@}"; exit 1; } @@ -39,13 +39,16 @@ msg() { echo "$@"; true; } ### Script rl::rdlink() { - local subject= + local subject="${1:-}" local work= - info "Processing: $*" + info "Processing: ${subject}" info " with pwd: $(pwd)" - subject="$(rl::cleanpath "${1:-}")" || true + # Remove multiple / + while [[ "${subject:-}" = *"//"* ]]; do + subject="${subject/\/\///}" + done # Follow multiple symlinks while subject="$(rl::quicklink "${subject}")" ; do @@ -60,7 +63,7 @@ rl::rdlink() { # (e.g. /proc/**/cwd) if [ -L "${subject}" ] ; then info " rl::rdlink exit - can't access link ${subject}" - printf "\n" + printf '\n' return 1 fi } @@ -68,13 +71,13 @@ rl::rdlink() { # Empty output if (dirname $subject) is not a valid path if ! work="$(rl::canon "${subject}")" ; then info " rl::rdlink exit - invalid path ${work}" - printf "\n" + printf '\n' return 1 else subject="${work}" fi - printf "%s\n" "${subject}" + printf '%s\n' "${subject}" } rl::quicklink() { @@ -85,7 +88,7 @@ rl::quicklink() { # Check if current candidate is a symlink if ! subject=$(readlink -- "${1:-}"); then - printf -- "%s\n" "${1:-}" + printf -- '%s\n' "${1:-}" return 1 fi info " rl::quicklink symlink ${1} -> ${subject}" @@ -97,7 +100,7 @@ rl::quicklink() { info " rl::quicklink relative link resolved: ${subject}" fi - printf "%s\n" "${subject}" + printf '%s\n' "${subject}" return 0 } @@ -124,7 +127,7 @@ rl::canon() { bname="$(basename -- "${start}")" # Special: / produces // - [[ "${work}" == "/" ]] && work= + [[ "${work}" = "/" ]] && work= subject="${work}${bname:+"/${bname}"}" info " rl::canon valid parent: ${subject}" @@ -156,26 +159,10 @@ rl::canon() { fi done - printf -- "%s\n" "${subject}" + printf -- '%s\n' "${subject}" return ${retval} } -rl::cleanpath() { - local work= - local rex_tmp= - - info "Cleaning path... ${1:-}" - work="${1:-}" - - # Remove multiple / - while [[ "${work:-}" = *"//"* ]]; do - work="${work/\/\///}" - done - - info " rl::cleanpath result: ${work}" - printf -- "%s\n" "${work}" -} - rl::normalize() { local work= @@ -204,9 +191,11 @@ rl::normalize() { fi info " rl::normalize result: ${work}" - printf -- "%s\n" "${work}" + printf -- '%s\n' "${work}" } +### Script Starter EOF + rl::main() { local file= local arg=