diff --git a/CHANGELOG.md b/CHANGELOG.md index 305dd69b00b84c30b5caa91dec9f97b6beaa4b92..fd1415efae27e94cb5edea8469c5049d246300ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +* #125 - `bend_symlinks` script did not allow whitespace in filename. * #122 - Dead-lock due to error in the DatabaseAccessManager. * #120 - Editing entities that were created with a no longer existing user leads to a server error. diff --git a/misc/bend_symlinks/src/main.sh b/misc/bend_symlinks/src/main.sh index c2a6a94766d437e41619c2602d1c62417e09ee42..1d148df30533529855f65141ba5705d76b0cb687 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 0e10fe9acc0c1c27fa3f2f58add8e7daf845e24c..2ddda289639a9a38e13540da2caad32dc439aa4a 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") + # white space + 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 9ffa6b1fffe9ec095ebbc3a25bdfa5ee767e1a69..2def1fda1450ad9c3b412f033a6085bddd840d8f 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 () {