diff options
author | maximilian attems <maks@debian.org> | 2009-02-17 18:12:56 +0100 |
---|---|---|
committer | maximilian attems <maks@debian.org> | 2009-02-17 18:12:56 +0100 |
commit | 9e5ff69508479c10548e0fcf4d6f3ee043cff1fe (patch) | |
tree | e0f9243472ddfc6302dd84ec5984b3e0f794b109 /scripts | |
parent | f91fdf2b9763f2774ff237d3fd04e8cc7b8aaa10 (diff) | |
download | initramfs-tools-9e5ff69508479c10548e0fcf4d6f3ee043cff1fe.tar.gz initramfs-tools-9e5ff69508479c10548e0fcf4d6f3ee043cff1fe.zip |
scripts/local-premount/resume: Fix resume with LABEL containing '/'.
do the same dance here, same code, just slightly renamed variables.
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/local-premount/resume | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/scripts/local-premount/resume b/scripts/local-premount/resume index 6bf95e5..b2b0e1d 100755 --- a/scripts/local-premount/resume +++ b/scripts/local-premount/resume @@ -20,10 +20,37 @@ 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 [ -x "$(command -v sed)" ]; 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 + if [ -z "${newresume}" ]; then + newresume="${s}" + else + newresume="${newresume}\\x2f${s}" + fi + done + unset IFS + resume="${newresume}" + fi + esac + resume="/dev/disk/by-label/${resume}" ;; - UUID=*) +UUID=*) resume="/dev/disk/by-uuid/${resume#UUID=}" ;; esac |