The generator can skip a directory's contents altogether due to
--ignore-non-existing, a daemon exclude, or a mkdir failure. On a
--dry-run, the generator can also note the missingness of a directory
while still scanning its contents. These two scenarios were conflated
using a single set of missing_below/missing_dir variables in combination
with transient increments in dry_run; this caused at least three bugs.
Now recv_generator has separate variables for the two scenarios, called
skip_dir and dry_missing_dir, respectively. For simplicity, we take the
F_DEPTH instead of having separate *_below variables. We mark both
kinds of missing dirs with FLAG_MISSING_DIR. (dry_run > 1) iff the
*root* of the destination does not exist; it is no longer incremented
for missing subdirs. I added tests for the three fixed bugs in
missing.test.
the FLAG_SKIP_HLINK flag, which gets set on any hard-linked file that
the user wants to skip (e.g. via --ignore-existing, --append, etc.).
The code in hlink.c now deals with the skipped files instead of
triggering an assert() error.
create a directory in the backup-path area.
- Fixed a bug where make_file() was setting F_PATHNAME() on the
receiving side.
- A non-pool (temp-memory) file structure now stores the size of
its extra_cnt value in the F_DEPTH() int so that unmake_file()
can always be sure of how to free() the memory.
- The ACL-preserving code no longer allocates 4 more bytes per
file entry than it needs.
- Got rid of a useless adding of the symlink length to "bp".
- If a symlink/device/special-file changes its value without any
attribute changes, the itemized event no longer gets dropped.
- We put a 'c' into the checksum/change field now to indicate when
a symlink/device/special-file changes its value without changing
its type. This lets us properly interpret the --copy-links output
to know which items are getting copied without changes and which
are getting created with new content.
- Fixed the 'T' itemized output for a symlink when rsync tries to
set the right time but fails due to lack of OS/disk support.
- Fixed a bug in short-opt parsing when an abutting arg has an '='.
- Allow a short-opt to be separated from its arg by an '='.
- Avoid an IBM-checker warning about an impossible case in a switch
and a warning about a potential NULL-pointer dereference.
- Fixed a memory leak.
Fixed the munging of non-user namespace xattrs w/--fake-super.
Fixed the sorting of received xattrs when name-munging occurs.
Added xattr tests to verify that these things stay fixed.