This is a preparatory patch for fixing #801154.
Ben.
---
This means we will deal correctly with various other characters than
'/' that also need to be escaped.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
scripts/functions | 32 +++++---------------------------
1 file changed, 5 insertions(+), 27 deletions(-)
diff --git a/scripts/functions b/scripts/functions
index aa53010..8f2fac7 100644
--- a/scripts/functions
+++ b/scripts/functions
@@ -297,35 +297,13 @@ read_fstab_entry() {
resolve_device() {
DEV="$1"
- case $DEV in
- LABEL=*)
- DEV="${DEV#LABEL=}"
-
- # support any / in LABEL= path (escape to \x2f)
- case "${DEV}" in
- */*)
- if command -v sed >/dev/null 2>&1; then
- DEV="$(echo ${DEV} | sed 's,/,\\x2f,g')"
+ case "$DEV" in
+ LABEL=* | UUID=*)
+ if command -v blkid >/dev/null 2>&1; then
+ DEV="$(blkid -l -t "$DEV" -o device)"
else
- if [ "${DEV}" != "${DEV#/}" ]; then
- DEV="\x2f${DEV#/}"
- fi
- if [ "${DEV}" != "${DEV%/}" ]; then
- DEV="${DEV%/}\x2f"
- fi
- IFS='/'
- newroot=
- for s in $DEV; do
- newroot="${newroot:+${newroot}\\x2f}${s}"
- done
- unset IFS
- DEV="${newroot}"
+ log_warning_msg "blkid not present, so cannot resolve $DEV"
fi
- esac
- DEV="/dev/disk/by-label/${DEV}"
- ;;
- UUID=*)
- DEV="/dev/disk/by-uuid/${DEV#UUID=}"
;;
esac
# Only canonicalise if a valid file, in case $DEV isn't a filename
Attachment:
signature.asc
Description: Digital signature