# UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT!
SRCDIR=$(dirname $0)
-PATH=$PWD/$SRCDIR:$SRCDIR:$SRCDIR/../utils:$PATH
+PATH=$PWD/$SRCDIR:$SRCDIR:$SRCDIR/../utils:$SRCDIR/../../pumount:$PATH
CHECKSTAT=${CHECKSTAT:-"checkstat -v"}
OPENFILE=${OPENFILE:-openfile}
umount_client "$MOUNT2"
if pumount $option "$MOUNT2"; then
- error "pumount $opt should fail"
+ error "'pumount $option' should fail"
fi
done
}
}
run_test 55e "pumount --print shows the right path (sort of)"
+test_55f() {
+ local dir=$(readlink --canonicalize "$DIR")
+ local name_esc='.\014\023\024\022:VOLATILE:0000:55f055f0'
+ local file=$(printf "%s/${name_esc}" "$dir")
+ local path
+ local fd
+ local pid
+
+ init_pumount_env
+
+ exec {fd}>"$file"
+ sleep $SLEEP_TIME &
+ pid=$!
+ exec {fd}>&-
+ sleep 1
+
+ # COMM=1 PID=2 REF=3 HANDLE_TYPE=4 HANDLE=5 PATH=6
+ path=$(pumount --dry-run "$MOUNT1" |
+ awk -v pid=$pid -v fd=$fd '$2 == pid && $3 == fd { print $6; }')
+
+ [[ "${path}" == "${dir}/${name_esc}" ]] ||
+ error "got escaped path '${path}, expected '${dir}/${name_esc}'"
+
+ kill_wait_signaled $pid $SIGKILL $SIGKILL
+}
+run_test 55f "pumount escapes volatile file paths correctly"
+
+test_55g() {
+ local dir=$(readlink --canonicalize "$DIR")
+ local file="$DIR/$tfile $tfile"
+ local path_esc="${dir}/${tfile}\040${tfile}"
+ local path
+ local fd
+ local pid
+
+ init_pumount_env
+
+ exec {fd}>"$file"
+ sleep $SLEEP_TIME &
+ pid=$!
+ exec {fd}>&-
+ sleep 1
+
+ # COMM=1 PID=2 REF=3 HANDLE_TYPE=4 HANDLE=5 PATH=6
+ path=$(pumount --dry-run "$MOUNT1" |
+ awk -v pid=$pid -v fd=$fd '$2 == pid && $3 == fd { print $6; }')
+
+ [[ "${path}" == "${path_esc}" ]] ||
+ error "got escaped path '${path}', expected '${path_esc}'"
+
+ kill_wait_signaled $pid $SIGKILL $SIGKILL
+}
+run_test 55g "pumount escapes paths with spaces correctly"
+
test_56a() {
local file=$DIR/$tfile
local fd