From 5c81cccb426ddca02d7056e14682858826648375 Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Wed, 24 Mar 2021 13:06:44 +0100
Subject: [PATCH] Fix bend_symlinks script for empty space

---
 misc/bend_symlinks/src/main.sh        |  4 +++-
 misc/bend_symlinks/src/utils.sh       |  2 ++
 misc/bend_symlinks/test/test_suite.sh | 13 +++++++++----
 3 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/misc/bend_symlinks/src/main.sh b/misc/bend_symlinks/src/main.sh
index c2a6a947..1d148df3 100644
--- a/misc/bend_symlinks/src/main.sh
+++ b/misc/bend_symlinks/src/main.sh
@@ -66,8 +66,10 @@ if [ $IS_MOVE -eq 1 ] ; then
     REPLACEMENT=$(new_dir "$REPLACEMENT")
 fi
 
+
 set -o noglob
-for syml in $(find -P $(realpath $FILE_SYSTEM_ROOT) -type l) ; do
+find -P $(realpath $FILE_SYSTEM_ROOT) -type l -print0 |
+        while ISF= read -r -d '' syml; do
   OLD_TARGET=$(realpath -m "$syml" | sed -n -r "/$REGEX_OLD/p")
   if [ -z "$OLD_TARGET" ] ; then
     # filter non matching
diff --git a/misc/bend_symlinks/src/utils.sh b/misc/bend_symlinks/src/utils.sh
index 0e10fe9a..d72035ae 100644
--- a/misc/bend_symlinks/src/utils.sh
+++ b/misc/bend_symlinks/src/utils.sh
@@ -37,6 +37,8 @@ function escape_simple_path () {
     SPATH=$(echo "$SPATH" | sed -r "s/\(/\\\\(/g")
     # {
     SPATH=$(echo "$SPATH" | sed -r "s/\{/\\\\{/g")
+    # \s
+    SPATH=$(echo "$SPATH" | sed -r "s/ /\\ /g")
     echo "$SPATH"
 }
 
diff --git a/misc/bend_symlinks/test/test_suite.sh b/misc/bend_symlinks/test/test_suite.sh
index 9ffa6b1f..2def1fda 100755
--- a/misc/bend_symlinks/test/test_suite.sh
+++ b/misc/bend_symlinks/test/test_suite.sh
@@ -23,8 +23,11 @@ tearDown () {
 
 _make_test_file () {
     touch "$DATA_DIR/$1"
-    ln -s $(realpath "$DATA_DIR/$1") "$FILE_SYSTEM_ROOT/$1"
-    assertEquals "initial target $1" $(realpath "$FILE_SYSTEM_ROOT/$1") $(realpath "$DATA_DIR/$1")
+    TARGET=$(realpath "$DATA_DIR/$1")
+    LINK=$FILE_SYSTEM_ROOT/$1
+    ln -s "$TARGET" "$LINK"
+    LINKED=$(realpath "$LINK")
+    assertEquals "initial target $1" "$LINKED" "$TARGET"
 }
 
 _break_link_move_file () {
@@ -35,7 +38,8 @@ _break_link_move_file () {
     NEW_PATH_REAL=$(realpath "$NEW_PATH")
     LINK="$FILE_SYSTEM_ROOT/$1"
     mv "$OLD_PATH_REAL" "$NEW_PATH_REAL"
-    assertEquals "still target $OLD_PATH_REAL" $(realpath "$LINK") "$OLD_PATH_REAL"
+    LINKED=$(realpath "$LINK")
+    assertEquals "still target $OLD_PATH_REAL" "$LINKED" "$OLD_PATH_REAL"
     assertFalse "$LINK link is broken" "[ -f '$LINK' ]"
     assertFalse "$OLD_PATH_REAL was moved" "[ -f '$OLD_PATH_REAL' ]"
     assertTrue "$NEW_PATH_REAL is there" "[ -f '$NEW_PATH_REAL' ]"
@@ -51,7 +55,7 @@ assertLinkOk () {
     LINK=$(realpath "$FILE_SYSTEM_ROOT/$1")
     TARGET=$(realpath "$DATA_DIR/$2")
     assertTrue "target exists $LINK" "[ -f '$LINK' ]"
-    assertEquals "target matches $TARGET" $TARGET "$LINK"
+    assertEquals "target matches $TARGET" "$TARGET" "$LINK"
     set +o noglob
 }
 
@@ -135,6 +139,7 @@ testFullPathWithStrangeChars () {
     _testFullPathWithStrageChars "{"
     _testFullPathWithStrageChars "]"
     _testFullPathWithStrageChars "[.]"
+    _testFullPathWithStrageChars " "
 }
 
 testRegex () {
-- 
GitLab