+makepath "$fromdir/foo" "$fromdir/bar/baz"
+makepath "$todir"
+echo one >"$fromdir/foo/one"
+echo two >"$fromdir/bar/two"
+echo three >"$fromdir/bar/baz/three"
+
+cd "$scratchdir"
+
+ln -s test-rsyncd.conf rsyncd.conf
+
+confopt=''
+case `id -u` in
+0)
+ # Root needs to specify the config file, or it uses /etc/rsyncd.conf.
+ echo "Forcing --config=$conf"
+ confopt=" --config=$conf"
+ ;;
+esac
+
+$RSYNC -ve "$SSH" --rsync-path="$RSYNC$confopt" localhost::
+
+RSYNC_CONNECT_PROG="$RSYNC --config=$conf --daemon"
+export RSYNC_CONNECT_PROG
+
+$RSYNC -v localhost:: \
+ | tee "$outfile"
+# These have a space-padded 15-char name, then a tab, then a comment.
+sed 's/NOCOMMENT//' <<EOT >"$chkfile"
+test-from r/o
+test-to r/w
+test-scratch NOCOMMENT
+EOT
+diff $diffopt "$chkfile" "$outfile" || test_fail "test 1 failed"
+
+$RSYNC -r localhost::test-hidden \
+ | sed "$FILE_REPL" | sed "$DIR_REPL" | sed "$LS_REPL" \
+ | tee "$outfile"
+cat <<EOT >"$chkfile"
+drwxr-xr-x DIR ####/##/## ##:##:## .
+drwxr-xr-x DIR ####/##/## ##:##:## bar
+-rw-r--r-- 4 ####/##/## ##:##:## bar/two
+drwxr-xr-x DIR ####/##/## ##:##:## bar/baz
+-rw-r--r-- 6 ####/##/## ##:##:## bar/baz/three
+drwxr-xr-x DIR ####/##/## ##:##:## foo
+-rw-r--r-- 4 ####/##/## ##:##:## foo/one
+EOT
+diff $diffopt "$chkfile" "$outfile" || test_fail "test 2 failed"
+
+$RSYNC -r localhost::test-from/f* \
+ | sed "$FILE_REPL" | sed "$DIR_REPL" | sed "$LS_REPL" \
+ | tee "$outfile"
+cat <<EOT >"$chkfile"
+drwxr-xr-x DIR ####/##/## ##:##:## foo
+-rw-r--r-- 4 ####/##/## ##:##:## foo/one
+EOT
+diff $diffopt "$chkfile" "$outfile" || test_fail "test 3 failed"