Wayne Davison [Sat, 19 Feb 2005 02:39:26 +0000 (02:39 +0000)]
- Tweaked the letters output by "%i", including adding support for
logging a deleted item and an identical item.
- Added log_delete(), a routine that either logs the fact that a
deletion happened, or sends a MSG_DELETED message to the client
side (or both if we're a daemon server receiver).
Wayne Davison [Sat, 19 Feb 2005 02:39:23 +0000 (02:39 +0000)]
- Changed the calling args to delete_file() to take an st_mode instead
of a DEL_DIR flag.
- Call log_delete() instead of outputting "deleting ..." messages..
- Log deletions if either verbose or log-format is specified.
Wayne Davison [Sat, 19 Feb 2005 02:39:21 +0000 (02:39 +0000)]
- Send the itemized data for every file, changed or not, if verbose > 1.
- Don't call set_perms() with PERMS_REPORT if we're itemizing changes.
- Don't call delete_file() with DEL_TERSE if we're itemizing changes.
- Call delete_file() with its new arg.
Wayne Davison [Sat, 19 Feb 2005 02:39:18 +0000 (02:39 +0000)]
- Allow send_msg() to be called by the delete code in flist.c and
have it figure out if it should send the message to our sibling
or the other side.
- Handle the new MSG_DELETED message in both the generator and the
sender. This message is used to let the client side log each
deletion when the server side is the receiver.
Wayne Davison [Fri, 18 Feb 2005 20:17:20 +0000 (20:17 +0000)]
- Tweaked code in itemize() a bit.
- Use the new write_short() function.
- Mention the delete() when an item replaces an item of a different type.
- Make sure that this replacing of a non-same item is marked as a new
transfer in the itemized output.
Wayne Davison [Fri, 18 Feb 2005 17:58:03 +0000 (17:58 +0000)]
- Fixed a few bugs and compile warnings.
- Use the long-option parser for better option handling.
- Output a usage message if the options are wrong.
- Improved the option-variable names.
- Parse the new default daemon log-file format.
- Handle filenames that have spaces in them.
Wayne Davison [Wed, 16 Feb 2005 17:02:16 +0000 (17:02 +0000)]
- The itemized flags are now 2 bytes instead of 1.
- Always send/receive the itemized flags for protocols >= 29.
- The output of the verbose log-the-transfer messages is always handled
via log_send() (when we're the client).
Wayne Davison [Wed, 16 Feb 2005 17:02:13 +0000 (17:02 +0000)]
- The itemized flags are now 2 bytes instead of 1.
- Always send/receive the itemized flags for protocols >= 29.
- The output of the verbose log-the-transfer messages is always handled
via log_recv() (when we're the client).
Wayne Davison [Wed, 16 Feb 2005 17:02:11 +0000 (17:02 +0000)]
- The itemized flags are now 2 bytes instead of 1.
- Always send the itemized flags for protocols >= 29.
- Sent an itemized-flag update for dirs and symlinks for protocols >= 29
(instead of outputting a message directly).
Wayne Davison [Wed, 16 Feb 2005 17:02:08 +0000 (17:02 +0000)]
- Auto-set --verbose if --dry-run is specified w/o --log-format.
- When verbose w/o a log_format specified, set it to "%n%L".
- There's no longer a need to send -i to the server.
Wayne Davison [Wed, 16 Feb 2005 08:10:45 +0000 (08:10 +0000)]
- We now accept an itemized-changes flag-byte over the socket if we're
the local client and --itemized-changes was specified. If the item
is not being updated, just call log_recv().
- We reject an attempt to file-update any non-regular file, not just
dirs.
- Avoid the verbose "log the transfer" output if --log-format was
specified and log_before_transfer is in effect.
- Call log_recv() with its new iflags arg.
Wayne Davison [Wed, 16 Feb 2005 08:10:41 +0000 (08:10 +0000)]
- We now accept an itemized-changes flag byte over the socket if we're
in --itemized-changes mode. If the item is not being updated,
either pass it along to the receiver (if we're the server) or just
call log_send().
- We reject an attempt to file-update any non-regular file, not just
dirs.
- Avoid the verbose "log the transfer" output if --log-format was
specified and log_before_transfer is in effect.
- Call log_send() with its new iflags arg.
Wayne Davison [Wed, 16 Feb 2005 08:10:31 +0000 (08:10 +0000)]
- If log_before_transfer is possible, don't force --verbose on for
--progress.
- If --log-format contains %i, set --itemize-changes (-i).
- Always send -i to the remote rsync if it was specified/implied.
Wayne Davison [Wed, 16 Feb 2005 08:10:28 +0000 (08:10 +0000)]
- Improved log_formatted() to handle long filenames better.
- Added %i, for the list of itemized changes, %n for the normal
filename (might be shorter than %f), and %L for a " -> symlink"
string IIF the item is a symlink (else "").
- The log_{send,recv}() functions now take an "iflags" arg.
Wayne Davison [Wed, 16 Feb 2005 08:10:25 +0000 (08:10 +0000)]
Changed showchg() into itemize(), which now ships off a flag byte of
what changed over to the sender instead of outputting a string itself.
This does mean that we now ship off indexes of non-file items that got
updated, but the sender will know what to do with it.
Wayne Davison [Mon, 14 Feb 2005 02:41:23 +0000 (02:41 +0000)]
- If send_file_name() gets f set to -2, it skips the local filter rules.
- Added get_dirlist(), which returns a file_list structure for the
desired directory, optionally with local filter rules disabled.
Wayne Davison [Mon, 14 Feb 2005 01:29:17 +0000 (01:29 +0000)]
If f_name_cmp() discovers that two directory strings compare to an
equal value without being equal pointers, substitute one of the
pointers for the other in the file list. This optimizes future name
comparisons. Note also that this optimization won't be triggered
very often (because rsync tends to send the names grouped by dir-
name at transmission time), but it's nice to be able to assume that
all files in the same dir have identical dir-name pointers after the
qsort is finished.
Wayne Davison [Sun, 13 Feb 2005 21:15:47 +0000 (21:15 +0000)]
- Made receive_file_entry() return the file_struct pointer instead
of storing it into the files[] array.
- Made flist_find() return "no match" if the found item differs in
its directory-ness from the search item.
- Changed f_name_cmp() to sort sub-directories after non-directories
for each directory's contents. This makes things like the upcoming
--fuzzy patch easier to get right.
- One complicating factor is that clean_flist() needed some extra
code to ensure that a directory doesn't duplicate a non-directory
of the same name.
- Make sure that the "strip_root" code in clean_flist() (for relative
paths) strips off all leading slashes.
Wayne Davison [Sat, 12 Feb 2005 21:18:58 +0000 (21:18 +0000)]
When --dry-run is set, note when a directory is missing and avoid
trying to stat() any items inside that dir's hierarchy. This fixes
a bug where a symlink to a dir getting replaced by a dir with
identical contents to the dir at the other end of the symlink would
not report the updated files in the new hierarchy. (See bug #1673)
Wayne Davison [Sat, 12 Feb 2005 19:52:26 +0000 (19:52 +0000)]
- Added modifiers for the include/exclude rules that makes them
apply to the indicated (sender/receiver) side.
- Added the hide/show and protect/risk filter rules as an alternate
way to specify sender-/receiver-specific include/exclude rules.
- send_rules() now allows f_out to be -1 to indicate that the list
should be scanned but not sent.
- send_rules() now filters the list to remove any items that don't
apply to the current side (after sending the item to the other
side when f_out != -1).
- {send,recv}_filter_list() now transfer the list, even when the
receiver is the server and --delete-excluded was specified (the
exchanged list is appropriately filtered, of course).
- recv_filter_list() uses send_rules() to trim non-applicable rules
when we're a local-server (because we got our filter list without
send/recv calls when fork() duplicated it).
Wayne Davison [Sat, 12 Feb 2005 19:52:18 +0000 (19:52 +0000)]
We don't need to avoid the local filter list in send_file_name()
when --delete-excluded is set because our list has been trimmed to
only include rules that apply in the current mode.
Wayne Davison [Sat, 12 Feb 2005 18:40:15 +0000 (18:40 +0000)]
- Since send_file_list() is no longer called with f == -1, got rid
of all the conditional code to support that.
- Improved the comment before send_directory() to indicate that it
gets called with f == -1 from delete_in_dir().