Integrate rl::cleanpath into rl::rdlink, becaus it was only used once
Adding some best practices for printf
This commit is contained in:
45
rdlink.sh
45
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=
|
||||
|
Reference in New Issue
Block a user