summaryrefslogtreecommitdiff
path: root/scripts/local-premount
diff options
context:
space:
mode:
authorAn-Cheng Huang <ancheng@vyatta.com>2010-09-09 14:10:39 -0700
committerAn-Cheng Huang <ancheng@vyatta.com>2010-09-09 14:10:39 -0700
commitd000689490bbc3508f18b878757b3d2bb04d8a69 (patch)
tree40388b9f23e75fc4c0884f7fb076f2d6382e1136 /scripts/local-premount
parentb9c92a3bb82e860c8368eb7933f5ec4ddcd74bcb (diff)
parent3963c563cf1ea4b1126a4c1949181029a0ff2305 (diff)
downloadinitramfs-tools-d000689490bbc3508f18b878757b3d2bb04d8a69.tar.gz
initramfs-tools-d000689490bbc3508f18b878757b3d2bb04d8a69.zip
Merge remote branch 'debian/master' into upstream
Diffstat (limited to 'scripts/local-premount')
-rwxr-xr-xscripts/local-premount/resume29
1 files changed, 26 insertions, 3 deletions
diff --git a/scripts/local-premount/resume b/scripts/local-premount/resume
index 6bf95e5..11acfc7 100755
--- a/scripts/local-premount/resume
+++ b/scripts/local-premount/resume
@@ -20,10 +20,33 @@ if [ -z "${resume}" ]; then
fi
case $resume in
- LABEL=*)
- resume="/dev/disk/by-label/${resume#LABEL=}"
+LABEL=*)
+ resume="${resume#LABEL=}"
+
+ # support any / in LABEL= path (escape to \x2f)
+ case "${resume}" in
+ */*)
+ if command -v sed >/dev/null 2>&1; then
+ resume="$(echo ${resume} | sed 's,/,\\x2f,g')"
+ else
+ if [ "${resume}" != "${resume#/}" ]; then
+ resume="\x2f${resume#/}"
+ fi
+ if [ "${resume}" != "${resume%/}" ]; then
+ resume="${resume%/}\x2f"
+ fi
+ IFS='/'
+ newresume=
+ for s in $resume; do
+ newresume="${newresume:+${newresume}\\x2f}${s}"
+ done
+ unset IFS
+ resume="${newresume}"
+ fi
+ esac
+ resume="/dev/disk/by-label/${resume}"
;;
- UUID=*)
+UUID=*)
resume="/dev/disk/by-uuid/${resume#UUID=}"
;;
esac