Wayne Davison [Sat, 4 Aug 2007 17:47:08 +0000 (17:47 +0000)]
- Call the rsync algorithm differential rather than incremental.
- Don't refer to --files-from in the talk of incremental recursion,
since it might make people think that --files-from disables
incremental recursion for any recursively scanned directories.
Wayne Davison [Sat, 4 Aug 2007 17:47:02 +0000 (17:47 +0000)]
- Use the new XMIT_NON_XFER_DIR flag.
- Make sure that non-inc-recurse mode sets FLAG_XFER_DIR on all
the non-implied directories.
- Don't set FLAG_XFER_DIR on non-directories.
Wayne Davison [Sun, 15 Jul 2007 05:42:30 +0000 (05:42 +0000)]
We now take a negative value specified to --max-delete as being
synonymous with --max-delete=0. We also pass a request for 0
deletions to the server as --max-delete=-1. This ensures that we
can send a backward-compatible option to old and new versions alike.
Wayne Davison [Sat, 14 Jul 2007 21:25:51 +0000 (21:25 +0000)]
- When --omit-implied-dirs is specified and the creation of a directory
fails, we must make sure that the item we're skipping has a name that
is still inside the missing hierarchy by using a prefix matching func.
- We now handle the failure to remove a file to create a dir the same
way as a failed mkdir() (skipping the failed dir's contents).
Wayne Davison [Tue, 10 Jul 2007 14:21:59 +0000 (14:21 +0000)]
- Use "filename", not "file name".
- Say "regular file" instead of "file" when itemizing a list of
non-directory types.
- Try to avoid "file" in its generic sense, as it is hard to figure
out when it includes dirs and when it doesn't.
Wayne Davison [Sun, 8 Jul 2007 20:53:31 +0000 (20:53 +0000)]
- Define DEV_EXTRA_CNT and DIRNODE_EXTRA_CNT.
- Define and use ACL_BUMP(), fixing a clash between -A and -x in a
directory's data.
- Tweaked the F_DIR_*() defines to have more consistent names.
- Don't make F_SUM() return a char pointer that is const.
Wayne Davison [Sun, 8 Jul 2007 06:25:51 +0000 (06:25 +0000)]
- Incremental recursion mode does not process the dirs while scanning a
file list's contents. Instead, it handles a parent dir prior to each
extra file list. This makes the dir-processing order the same in
protocol 30 as it is in earlier protocols.
- Moved the permission-fudging code for dirs into recv_generator() to
make the new protocol-30 dir-handling logic easier.
Wayne Davison [Sun, 8 Jul 2007 06:25:42 +0000 (06:25 +0000)]
- The sending side now sets the parent_ndx value in each file list.
- Leave a 1-entry gap between incremental file lists so that we can use
that index value to refer to the parent directory of each file list.
- Set and use the new ndx_end value in the file list. The incremental
recursion mode omits dirs in this value (except in the first list)
since the generator will be using the new "gap" ndx value to process
each parent dir.
Wayne Davison [Sat, 7 Jul 2007 16:01:59 +0000 (16:01 +0000)]
The length check in make_file() doesn't need to subtract pathname_len
anymore, as the sender code never concatenates the F_PATHNAME() value
with the dirname+basename string these days.
Wayne Davison [Mon, 2 Jul 2007 22:11:23 +0000 (22:11 +0000)]
Switch the checking of preserve_[ug]id var to checking [ug]id_ndx var
when the code is about to use the [ug]id_ndx value as an index (since
this saves a memory reference).
Wayne Davison [Mon, 2 Jul 2007 21:29:49 +0000 (21:29 +0000)]
Make option variables a little clearer by using separate FOO_ndx
values to index into the file-list extra-attribute array instead
of abusing the preserve_FOO variables.
Wayne Davison [Tue, 29 May 2007 04:19:47 +0000 (04:19 +0000)]
Unified the file-list pool used in incremental recursion mode so that
we use less memory, especially in small transfers. As file lists are
discarded, we use the new pool_boundary() and pool_free_old() functions
to discard pool extents that are no longer needed.
Wayne Davison [Tue, 29 May 2007 00:52:08 +0000 (00:52 +0000)]
- Fixed a bug where a pool_free() on the most-recently allocated pool
item was trying to make that memory available to the pool, but it
failed to adjust the right variable.
- Fixed a bug in pool_free() where the return of the entire live
extent back to unallocated status did not obey POOL_CLEAR.
- Use the new() and new_array() functions instead of malloc().
- Changed the sqew variable to skew.
- Some other minor formatting tweaks.
Wayne Davison [Thu, 24 May 2007 23:08:39 +0000 (23:08 +0000)]
Changed dup-detection code to keep the first item in the user's args.
This is more in keeping with the way cp works, and also makes the dir-
joining code (in inc_recurse mode) easier.
Wayne Davison [Thu, 24 May 2007 02:50:41 +0000 (02:50 +0000)]
- Added fsort() and fsort_tmp() that implement a mergesort routine
that ensures that any identical items in the file-list stay in the
same order as they had in the input. It will also obey the --qsort
option (which causes it to punt the sort to the qsort() routine).
- Changed the various places that sort the file-list to call fsort().
Wayne Davison [Wed, 23 May 2007 00:42:38 +0000 (00:42 +0000)]
- Output a -vvv(erbose) message in the touch_up_dirs() loop.
- Made the keep-alive counter in touch_up_dirs() work better.
- Use !(N & 0xFF) instead of !(N % 200).
Wayne Davison [Tue, 22 May 2007 05:50:47 +0000 (05:50 +0000)]
- Changed the dir_flist code on the sending side to derive its sorted
data from the sorted parent flist. This ensures that any entries
marked with FLAG_DUPLICATE are in the same order in the dir_flist
(where the flags get checked) as they are in the parent flist
(where the flags get set).
- Made the flist_expand() function static.
- Added a growth count arg to flist_expand().
- Made make_file() set a pool variable instead of tweaking flist.
- Improved the error message when a dir-number is out of bounds.