chkfile="$scratchdir/rsync.chk"
outfile="$scratchdir/rsync.out"
-# This is only called if rsync was run with -v or -vv (not -i alone).
-# Higher levels of -v would require more filtering.
-filter_outfile() {
- sed -e '/^building file list /d' \
- -e '/^created directory /d' \
- -e '/^done$/d' \
- -e '/ --whole-file$/d' \
- -e '/^total: /d' \
- -e '/^$/,$d' \
- <"$outfile" >"$outfile.new"
- mv "$outfile.new" "$outfile"
-}
-
# Build some hardlinks
case `id -u` in
$RSYNC -ai "$fromdir/block" "$todir/block2" \
| tee "$outfile"
cat <<EOT >"$chkfile"
-cD++++++ block
+cD+++++++ block
EOT
diff $diffopt "$chkfile" "$outfile" || test_fail "test 1 failed"
$RSYNC -ai "$fromdir/block2" "$todir/block" \
| tee "$outfile"
cat <<EOT >"$chkfile"
-cD++++++ block2
+cD+++++++ block2
EOT
diff $diffopt "$chkfile" "$outfile" || test_fail "test 2 failed"
$RSYNC -Di "$fromdir/block3" "$todir/block" \
| tee "$outfile"
cat <<EOT >"$chkfile"
-cD..T... block3
+cD..T.... block3
EOT
diff $diffopt "$chkfile" "$outfile" || test_fail "test 3 failed"
| 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
+.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' \
( cd "$todir" && rsync_ls_lR . ) > "$tmpdir/ls-to"
diff $diffopt "$tmpdir/ls-from" "$tmpdir/ls-to"
+if test -b "$fromdir/block2.5"; then
+ set -x
+ $RSYNC -aii --link-dest="$todir" "$fromdir/" "$chkdir/" \
+ | tee "$outfile"
+ cat <<EOT >"$chkfile"
+cd ./
+hD block
+hD block2
+hD block2.5
+hD block3
+hD char
+hD char2
+hD char3
+hS fifo
+EOT
+ diff $diffopt "$chkfile" "$outfile" || test_fail "test 4 failed"
+fi
+
# The script would have aborted on error, so getting here means we've won.
exit 0