+$RSYNC -aiHvv "$fromdir/" "$todir/" \
+ | tee "$outfile"
+filter_outfile
+cat <<EOT >"$chkfile"
+.d..t... ./
+cD..t... block
+cD...... block2
+cD++++++ block3
+hD++++++ block2.5 => block3
+cD++++++ char
+cD++++++ char2
+cD++++++ char3
+cS++++++ fifo
+EOT
+if test ! -b "$fromdir/block2.5"; then
+ sed -e '/block2\.5/d' \
+ <"$chkfile" >"$chkfile.new"
+ mv "$chkfile.new" "$chkfile"
+fi
+diff $diffopt "$chkfile" "$outfile" || test_fail "test 4 failed"
+
+echo "check how the directory listings compare with diff:"
+echo ""
+( cd "$fromdir" && rsync_ls_lR . ) > "$tmpdir/ls-from"
+( cd "$todir" && rsync_ls_lR . ) > "$tmpdir/ls-to"
+diff $diffopt "$tmpdir/ls-from" "$tmpdir/ls-to"
+
+# The script would have aborted on error, so getting here means we've won.
+exit 0