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=""
|
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=
|
||||||
|
Reference in New Issue
Block a user