Integrate rl::cleanpath into rl::rdlink, becaus it was only used once

Adding some best practices for printf
This commit is contained in:
2022-03-30 23:13:33 +02:00
parent aaa796d4b4
commit bcea07f134

View File

@@ -24,7 +24,7 @@ function rl::log () {
local log_line="" local log_line=""
while IFS=$'\n' read -r log_line; do 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 <<< "${@:-}" done <<< "${@:-}"
} }
emergency() { rl::log emergency "${@}"; exit 1; } emergency() { rl::log emergency "${@}"; exit 1; }
@@ -39,13 +39,16 @@ msg() { echo "$@"; true; }
### Script ### Script
rl::rdlink() { rl::rdlink() {
local subject= local subject="${1:-}"
local work= local work=
info "Processing: $*" info "Processing: ${subject}"
info " with pwd: $(pwd)" info " with pwd: $(pwd)"
subject="$(rl::cleanpath "${1:-}")" || true # Remove multiple /
while [[ "${subject:-}" = *"//"* ]]; do
subject="${subject/\/\///}"
done
# Follow multiple symlinks # Follow multiple symlinks
while subject="$(rl::quicklink "${subject}")" ; do while subject="$(rl::quicklink "${subject}")" ; do
@@ -60,7 +63,7 @@ rl::rdlink() {
# (e.g. /proc/**/cwd) # (e.g. /proc/**/cwd)
if [ -L "${subject}" ] ; then if [ -L "${subject}" ] ; then
info " rl::rdlink exit - can't access link ${subject}" info " rl::rdlink exit - can't access link ${subject}"
printf "\n" printf '\n'
return 1 return 1
fi fi
} }
@@ -68,13 +71,13 @@ rl::rdlink() {
# Empty output if (dirname $subject) is not a valid path # Empty output if (dirname $subject) is not a valid path
if ! work="$(rl::canon "${subject}")" ; then if ! work="$(rl::canon "${subject}")" ; then
info " rl::rdlink exit - invalid path ${work}" info " rl::rdlink exit - invalid path ${work}"
printf "\n" printf '\n'
return 1 return 1
else else
subject="${work}" subject="${work}"
fi fi
printf "%s\n" "${subject}" printf '%s\n' "${subject}"
} }
rl::quicklink() { rl::quicklink() {
@@ -85,7 +88,7 @@ rl::quicklink() {
# Check if current candidate is a symlink # Check if current candidate is a symlink
if ! subject=$(readlink -- "${1:-}"); then if ! subject=$(readlink -- "${1:-}"); then
printf -- "%s\n" "${1:-}" printf -- '%s\n' "${1:-}"
return 1 return 1
fi fi
info " rl::quicklink symlink ${1} -> ${subject}" info " rl::quicklink symlink ${1} -> ${subject}"
@@ -97,7 +100,7 @@ rl::quicklink() {
info " rl::quicklink relative link resolved: ${subject}" info " rl::quicklink relative link resolved: ${subject}"
fi fi
printf "%s\n" "${subject}" printf '%s\n' "${subject}"
return 0 return 0
} }
@@ -124,7 +127,7 @@ rl::canon() {
bname="$(basename -- "${start}")" bname="$(basename -- "${start}")"
# Special: / produces // # Special: / produces //
[[ "${work}" == "/" ]] && work= [[ "${work}" = "/" ]] && work=
subject="${work}${bname:+"/${bname}"}" subject="${work}${bname:+"/${bname}"}"
info " rl::canon valid parent: ${subject}" info " rl::canon valid parent: ${subject}"
@@ -156,26 +159,10 @@ rl::canon() {
fi fi
done done
printf -- "%s\n" "${subject}" printf -- '%s\n' "${subject}"
return ${retval} 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() { rl::normalize() {
local work= local work=
@@ -204,9 +191,11 @@ rl::normalize() {
fi fi
info " rl::normalize result: ${work}" info " rl::normalize result: ${work}"
printf -- "%s\n" "${work}" printf -- '%s\n' "${work}"
} }
### Script Starter EOF
rl::main() { rl::main() {
local file= local file=
local arg= local arg=