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 <[email protected]>
---
 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

Reply via email to