Wayne Davison [Tue, 6 May 2008 17:39:19 +0000 (10:39 -0700)]
Added options to tls.c to allow us to ask for mtime and ownership info
on symlinks. The testsuite will now pass these options to tls if rsync
is configured to affect such attributes on symlinks.
Wayne Davison [Tue, 29 Apr 2008 04:17:36 +0000 (21:17 -0700)]
- Changed prev_name into a buffer so that there is no chance that its
contents can be overwritten by other calls to f_name().
- Changed an hlink assert into a check that provides more debug info.
Wayne Davison [Sat, 19 Apr 2008 02:55:08 +0000 (19:55 -0700)]
Reorder the filenames to touch to try to avoid a weird error on Solaris
5.8. Also, use lsh in one of the runs in order to try a hard-link run
that uses a (pretend) remote shell.
Wayne Davison [Fri, 18 Apr 2008 14:20:30 +0000 (07:20 -0700)]
Added a --no-cd option to support/lsh so that the script can be used by
the testsuite. Improved the home-directory-changing code and added an
error message when "localhost" is not the hostname specified. Use the
updated script in the testsuite instead of creating a pretend-ssh script
in a couple spots.
Wayne Davison [Tue, 15 Apr 2008 15:39:59 +0000 (08:39 -0700)]
When running in --progress mode with a progress message active, the
client now outputs a newline prior to an error message, which avoids
overwriting the active file's last progress line.
Wayne Davison [Tue, 1 Apr 2008 19:19:36 +0000 (12:19 -0700)]
Define a "srcdir" in the spec file and use it in the URLs for the
source files so that they use the unchanging src or src-preview
subdirectory location for the file.
Wayne Davison [Sun, 30 Mar 2008 22:40:34 +0000 (15:40 -0700)]
Improved the chdir() code:
- Renamed push_dir() to change_dir() and revised it a little so that it
can chdir() to a relative path without an intervening chdir() back to
the staring path.
- Renamed push_pathname() to change_pathname() and revised it to take
different args and to only call path_is_daemon_excluded() on a new
path (not a revisit of a file's already-checked path).
- Fixed change_pathname() to set the right pathname value when a chdir()
call fails.
- Set orig_dir once outside of the change_pathname() function.
- Got rid of pop_dir().
Wayne Davison [Sun, 30 Mar 2008 05:53:03 +0000 (22:53 -0700)]
Improved the code that protects a '.' dir from exclusion.
This fixed a glitch in the daemon-exclusion code that allowed
an exclude rule such as ".*" or "*/" to affect a '.' dir.
Wayne Davison [Fri, 28 Mar 2008 17:30:19 +0000 (10:30 -0700)]
Allow the file-list sending code to set XMIT_SAME_UID/XMIT_SAME_GID
when owner/group info isn't being preserved. This helps to ensure
that the lower 8 bits of the xflags aren't 0, and is what older
rsync versions did.
Wayne Davison [Tue, 25 Mar 2008 17:46:06 +0000 (10:46 -0700)]
Fixed the way rsync handles iconv-conversion problems in the file-list:
- If the sender cannot convert a name, the discarding of the entry now
occurs soon enough to avoid affecting the sender's list (which was
causing the file-list on the receiving side to be out of sync).
- If the receiver cannot convert a name, its transformation of the name
into an empty name (which indicates that the entry should be skipped)
is no longer thwarted by the clean_fname() call (which was changing
the name into a ".").
Wayne Davison [Tue, 25 Mar 2008 03:30:44 +0000 (20:30 -0700)]
Some more improvements for the packaging/release-rsync script:
- Check early if the version tag already exists, so it aborts right
away if the release script can't do its work.
- Update the files in the "patches" dir while merging the master branch
into the patch branches (done before creating the release patches for
the rsync-patches tar file).
- Allow the user to ask to visit each patch when updating them.
- Pause after initial patch updating so that any extra patch changes
can be done before the creating of the tar files.
- Ask for the GPG signing passphrase once for all signing commands.
Wayne Davison [Tue, 25 Mar 2008 02:30:51 +0000 (19:30 -0700)]
Some improvements for support/patch-update:
- Added a --shell option which starts a sub-shell on each patch branch.
- Don't allow the user to exit a sub-shell if the branch is not clean.
- If the sub-shell exited with a non-zero exit status, prompt to see if
the user wanted to abort rather than assuming that.
- Wait to start the new patch-file output until after the shell runs.
- Always return to the starting branch on exit.
Wayne Davison [Mon, 24 Mar 2008 16:33:07 +0000 (09:33 -0700)]
Improved --dirs/--no-dirs/--list-only option handling:
- Moved setting of list_only and xfer_dirs from main.c to options.c.
- Fixed the ability of the user to force --no-dirs.
- Added the --old-dirs/--old-d option to make it easier to interact
in list-only mode with an older rsync.
- Suggest the use of --old-d instead of "-r --exclude='/*/*'".
Wayne Davison [Sat, 22 Mar 2008 22:29:34 +0000 (15:29 -0700)]
Made the filename arg-parsing code skip args that have excluded path
components, returning the same errors that would occur if the path
elements didn't actually exist. The glob_match() code was also
changed to no longer truncate an arg with an excluded path element
(it just omits excluded items from glob matching).
Wayne Davison [Sat, 22 Mar 2008 19:30:43 +0000 (12:30 -0700)]
A couple fixes in add_rule() for XFLG_ABS_IF_SLASH:
- Remove the trailing slash earlier, so that it doesn't
affect the XFLG_ABS_IF_SLASH check.
- Count the slashes earlier so that the XFLG_ABS_IF_SLASH
can use it instead of using a strchr() all that could
scan past the end of the input.
Wayne Davison [Fri, 21 Mar 2008 23:28:20 +0000 (16:28 -0700)]
Some RPM spec file improvements:
- Added installation of new /etc/xinetd.d/rsync config file.
- Added commented-out lines to demonstrate how to use rsync-patches.
Wayne Davison [Fri, 21 Mar 2008 14:11:37 +0000 (07:11 -0700)]
A couple improvements to the new arg-globbing code:
- Put all the state variables into a single struct.
- Reuse the buffer memory for each glob_expand() call until a final
call with a NULL pointer tells us to free it.
Wayne Davison [Fri, 21 Mar 2008 05:51:03 +0000 (22:51 -0700)]
Changed the arg-globbing routine to use a custom arg-globbing algorithm
that does not include any daemon-excluded items in the matches. It is
also not subverted by the presence of one or more dot-dir elements in
an arg.
Wayne Davison [Thu, 20 Mar 2008 18:59:54 +0000 (11:59 -0700)]
Some improvements to the file-name cleaning code:
- Removed the CFN_KEEP_LEADING_DOT_DIR flag for clean_fname().
- Explicitly add an implied dot-dir to the transfer rather than keeping
a leading a "./" prefix as a part of a relative pathname.
- Added the CFN_KEEP_DOT_DIRS flag for clean_fname().
- Added the SP_KEEP_DOT_DIRS flag for sanitize_path().
- Call clean_fname() a couple more times.
Matt McCutchen [Wed, 19 Mar 2008 02:16:41 +0000 (22:16 -0400)]
Unsnarl missing_below/dry_run logic.
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.
Wayne Davison [Mon, 17 Mar 2008 01:06:47 +0000 (18:06 -0700)]
Fixed hard-linking when some of the files can get skipped. This adds
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.
Wayne Davison [Mon, 17 Mar 2008 00:50:28 +0000 (17:50 -0700)]
Moved the --append check so that files that don't need to be transferred
still get their non-content attributes updated, and combining --append
with --hard-links will not prevent the discovery of unchanged files.
Wayne Davison [Mon, 17 Mar 2008 00:06:52 +0000 (17:06 -0700)]
Make the --ignore-existing option not overwrite a regular file with
a dir/symlink/device/special-file, just like it already refuses to
overwrite a non-regular file with a regular file.