Wayne Davison [Sat, 21 Jan 2006 20:59:19 +0000 (20:59 +0000)]
- Got rid of the filesystem_dev variable now that --one-file-system
is handled in a new way.
- Moved a stat out of delete_in_dir() into do_delete_pass() to make
--delete-during more efficient.
- Added a missing "#ifdef SUPPORT_LINKS...#endif" block around some
symlink code.
Wayne Davison [Sat, 21 Jan 2006 20:59:16 +0000 (20:59 +0000)]
- Changed how --one-file-system works so that we can skip all mount
points (including "bind" mounts).
- The --chmod option now affects devices (only skipping symlinks).
Wayne Davison [Sat, 21 Jan 2006 19:52:55 +0000 (19:52 +0000)]
- We now set some saw_delete* vars to keep track of the case where
we disabled a delete option that the client sent us (since we may
still need to await exclude information from the client in such a
case).
- If -d and --delete are in effect without -r, we may need to send
the -d to the server even if it was implied, and we may need to
send --no-r to the server to ensure that we don't get into a
protocol-corrupting situation should the remote rsync disable the
--delete option (this works because the --no-r option was added in
the same version as the functionality which allows --delete to
work with -d sans -r.
Wayne Davison [Sat, 21 Jan 2006 08:03:18 +0000 (08:03 +0000)]
Handle the --chmod option as either the sender or the receiver so
that only the client needs to know about --chmod (but if an older
version sends the option to the server, we'll still handle it).
Wayne Davison [Fri, 20 Jan 2006 21:21:43 +0000 (21:21 +0000)]
- Changed send_file_entry() into a static function again.
- Made send_file_entry() derive the base_flag value from *file.
- Added a flags arg to make_file().
- The flag we send to send_file_name() is a FLAG_* value, not an
XMIT_* value.
Wayne Davison [Thu, 19 Jan 2006 21:16:44 +0000 (21:16 +0000)]
The code in send_file_list() needed a little more improvement to
handle --relative really well:
- We must set "is_dot_dir" when we strip off a trailing "/" or "/.".
- If a trailing "/" or "/." caused us to treat a symlink as a dir,
we now pass our stat() info down to make_file() so that it will
always treat the cleaned-up name as a dir too.
- We must not strip a leading "/".
- Improved the check for ".." elements in the implied dirs.
Wayne Davison [Tue, 17 Jan 2006 04:26:12 +0000 (04:26 +0000)]
- Fixed the --help and --version output to avoid using embedded
newlines (which are no longer allowed in rprint()).
- Updated the Copyright info for 2006.
Wayne Davison [Sun, 15 Jan 2006 07:11:23 +0000 (07:11 +0000)]
- Improved get_local_name() using ideas from Matt McCutchen's
version: lots more comments, and a "local name" copy now
does a chdir to the parent dir of the destination file.
- Moved the setlocale() call prior to the parse_arguments() call.
Wayne Davison [Sat, 14 Jan 2006 20:26:28 +0000 (20:26 +0000)]
- We now filter all rwrite() output when it goes out to the terminal
to make sure that it contains readable characters.
- Got rid of the buf[len] = '\0' in rwrite().
- Call f_name() with revised args (which also replaces f_name_to()).
Wayne Davison [Thu, 5 Jan 2006 02:29:16 +0000 (02:29 +0000)]
+ Changed two buffers to use BIGPATHBUFLEN instead of MAXPATHLEN+512.
+ Changed a strncpy() call into a (more appropriate) memcpy() call.
+ Made the ellipsis[] string static because some older compilers may
not like the dynamic initialization of a character string.
+ Expanded some 1-line "case ... break;" statements onto separate
lines.
Wayne Davison [Mon, 2 Jan 2006 17:46:18 +0000 (17:46 +0000)]
We use the new wildmatch_array() and litmatch_array() functions to
make our include/exclude code easier to read and maintain, and to
eliminate a buffer copy when handling an absolute-path pattern
(which eliminated the full_name[] buffer). Also added handling
for the new MATCHFLG_WILD3_SUFFIX define that allows a string that
ends with "dir/***" to match the "dir" as well as its contents.
Wayne Davison [Mon, 2 Jan 2006 17:46:15 +0000 (17:46 +0000)]
Added a new function, wildmatch_array(), that lets the caller pass
the text-string as an array of strings (with a terminating NULL
pointer at the end). Also added litmatch_array(), which does a
literal match (no wildcards or special chars) against an array of
strings.