Output an FERROR* for a general io_error, and an FWARNING for other
[rsync/rsync.git] / OLDNEWS
diff --git a/OLDNEWS b/OLDNEWS
index bcc480d..bb0f17d 100644 (file)
--- a/OLDNEWS
+++ b/OLDNEWS
@@ -1,3 +1,831 @@
+NEWS for rsync 3.0.3 (29 Jun 2008)
+Protocol: 30 (unchanged)
+Changes since 3.0.2:
+
+  BUG FIXES:
+
+    - Fixed a wildcard matching problem in the daemon when a module has
+      "use chroot" enabled.
+
+    - Fixed a crash bug in the hard-link code.
+
+    - Fixed the sending of xattr directory information when the code finds a
+      --link-dest or --copy-dest directory with unchanged xattrs -- the
+      destination directory now gets these unchanged xattrs properly applied.
+
+    - Fixed an xattr-sending glitch that could cause an "Internal abbrev"
+      error.
+
+    - Fixed the combination of --xattrs and --backup.
+
+    - The generator no longer allows a '.' dir to be excluded by a daemon-
+      exclude rule.
+
+    - Fixed deletion handling when copying a single, empty directory (with no
+      files) to a differently named, non-existent directory.
+
+    - Fixed the conversion of spaces into dashes in the %M log escape.
+
+    - Fixed several places in the code that were not returning the right
+      errno when a function failed.
+
+    - Fixed the backing up of a device or special file into a backup dir.
+
+    - Moved the setting of the socket options prior to the connect().
+
+    - If rsync exits in the middle of a --progress output, it now outputs a
+      newline to help prevent the progress line from being overwritten.
+
+    - Fixed a problem with how a destination path with a trailing slash or
+      a trailing dot-dir was compared against the daemon excludes.
+
+    - Fixed the sending of large (size > 16GB) files when talking to an older
+      rsync (protocols < 30):  we now use a compatible block size limit.
+
+    - If a file's length is so huge that we overflow a checksum buffer count
+      (i.e. several hundred TB), warn the user and avoid sending an invalid
+      checksum struct over the wire.
+
+    - If a source arg is excluded, --relative no longer adds the excluded
+      arg's implied dirs to the transfer.  This fix also made the exclude
+      check happen in the better place in the sending code.
+
+    - Use the overflow_exit() function for overflows, not out_of_memory().
+
+    - Improved the code to better handle a system that has only 32-bit file
+      offsets.
+
+  ENHANCEMENTS:
+
+    - The rsyncd.conf manpage now consistently refers to the parameters in
+      the daemon config file as "parameters".
+
+    - The description of the --inplace option was improved.
+
+  EXTRAS:
+
+    - Added a new script in the support directory, deny-rsync, which allows
+      an admin to (temporarily) replace the rsync command with a script that
+      sends an error message to the remote client via the rsync protocol.
+
+  DEVELOPER RELATED:
+
+    - Fixed a testcase failure if the tests are run as root and made some
+      compatibility improvements.
+
+    - Improved the daemon tests, including checking module comments, the
+      listing of files, and the ensuring that daemon excludes can't affect
+      a dot-dir arg.
+
+    - Improved some build rules for those that build in a separate directory
+      from the source, including better install rules for the man pages, and
+      the fixing of a proto.h-tstamp rule that could make the binaries get
+      rebuild without cause.
+
+    - Improved the testsuite to work around a problem with some utilities
+      (e.g. cp -p & touch -r) rounding sub-second timestamps.
+
+    - Ensure that the early patches don't cause any generated-file hunks to
+      bleed-over into patches that follow.
+
+\f
+NEWS for rsync 3.0.2 (8 Apr 2008)
+Protocol: 30 (unchanged)
+Changes since 3.0.1:
+
+  BUG FIXES:
+
+    - Fixed a potential buffer overflow in the xattr code.
+
+  ENHANCEMENTS:
+
+    - None.
+
+  DEVELOPER RELATED:
+
+    - The RPM spec file was improved to install more useful files.
+
+    - A few developer-oriented scripts were moved from the support dir
+      to the packaging dir.
+
+\f
+NEWS for rsync 3.0.1 (3 Apr 2008)
+Protocol: 30 (unchanged)
+Changes since 3.0.0:
+
+  NOTABLE CHANGES IN BEHAVIOR:
+
+    - Added the 'c'-flag to the itemizing of non-regular files so that the
+      itemized output doesn't get hidden if there were no attribute changes,
+      and also so that the itemizing of a --copy-links run will distinguish
+      between copying an identical non-regular file and the creation of a
+      revised version with a new value (e.g. a changed symlink referent, a
+      new device number, etc.).
+
+  BUG FIXES:
+
+    - Fixed a crash bug when a single-use rsync daemon (via remote shell) was
+      run without specifying a --config=FILE option.
+
+    - Fixed a crash when backing up a directory that has a default ACL.
+
+    - Fixed a bug in the handling of xattr values that could cause rsync to
+      not think that a file's extended attributes are up-to-date.
+
+    - Fixed the working of --fake-super with --link-dest and --xattrs.
+
+    - Fixed a hang when combining --dry-run with --remove-source-files.
+
+    - Fixed a bug with --iconv's handling of files that cannot be converted:
+      a failed name can no longer cause a transfer failure.
+
+    - Fixed the building of the rounding.h file on systems that need custom
+      CPPFLAGS to be used.  Also improved the error reporting if the building
+      of rounding.h fails.
+
+    - Fixed the use of the --protect-args (-s) option when talking to a daemon.
+
+    - Fixed the --ignore-existing option's protection of files on the receiver
+      that are non-regular files on the sender (e.g. if a symlink or a dir on
+      the sender is trying to replace a file on the receiver).  The reverse
+      protection (protecting a dir/symlink/device from being replaced by a
+      file) was already working.
+
+    - Fixed an assert failure if --hard-links is combined with an option that
+      can skip a file in a set of hard-linked files (i.e. --ignore-existing,
+      --append, etc.), without skipping all the files in the set.
+
+    - Avoid setting the modify time on a directory that already has the right
+      modify time set.  This avoids tweaking the dir's ctime.
+
+    - Improved the daemon-exclude handling to do a better job of applying the
+      exclude rules to path entries.  It also sends the user an error just as
+      if the files were actually missing (instead of silently ignoring the
+      user's args), and avoids sending the user the filter-action messages
+      for these non-user-initiated rules.
+
+    - Fixed some glitches with the dry-run code's missing-directory
+      handling, including a problem when combined with --fuzzy.
+
+    - Fixed some glitches with the skipped-directory handling.
+
+    - Fixed the 'T'-flag itemizing of symlinks when --time isn't preserved.
+
+    - Fixed a glitch in the itemizing of permissions with the -E option.
+
+    - The --append option's restricting of transfers to those that add data no
+      longer prevents the updating of non-content changes to otherwise up-to-
+      date files (i.e. those with the same content but differing permissions,
+      ownership, xattrs, etc.).
+
+    - Don't allow --fake-super to be specified with -XX (double --xattrs)
+      because the options conflict.  If a daemon has "fake super" enabled,
+      it automatically downgrades a -XX request to -X.
+
+    - Fixed a couple bugs in the parsing of daemon-config excludes that could
+      make a floating exclude rule get treated as matching an absolute path.
+
+    - A daemon doesn't try to auto-refuse the "iconv" option if iconv-support
+      wasn't compiled in to the daemon (avoiding a warning in the logs).
+
+    - Fixed the inclusion of per-dir merge files from implied dirs.
+
+    - Fixed the support/rrsync script to work with the latest options that
+      rsync sends (including its flag-specifying use of -e to the server).
+
+  ENHANCEMENTS:
+
+    - Added the --old-dirs (--old-d) option to make it easier for a user to
+      ask for file-listings with older rsync versions (this is easier than
+      having to type "-r --exclude='/*/*'" manually).
+
+    - When getting an error while asking an older rsync daemon for a file
+      listing, rsync will try to notice if the error is a rejection of the
+      --dirs (-d) option and let the user know how to work around the issue.
+
+    - Added a few more --no-OPTION overrides.
+
+    - Improved the documentation of the --append option.
+
+    - Improved the documentation of the filter/exclude/include daemon
+      parameters.
+
+  INTERNAL:
+
+    - Fixed a couple minor bugs in the included popt library (ones which I
+      sent to the official popt project for inclusion in the 1.14 release).
+
+    - Fixed a stat() call that should have been do_stat() so that the proper
+      normal/64-bit stat() function gets called.  (Was in an area that should
+      not have caused problems, though.)
+
+    - Changed the file-glob code to do a directory scan without using the
+      "glob" and "glob.h".  This lets us do the globbing with less memory
+      churn, and also avoid adding daemon-excluded items to the returned
+      args.
+
+  DEVELOPER RELATED:
+
+    - The configure script tries to get the user's compiler to not warn about
+      unused function parameters if the build is not including one or more of
+      the ACL/xattrs/iconv features.
+
+    - The configure script now has better checks for figuring out if the
+      included popt code should be used or not.
+
+    - Fixed two testsuite glitches: avoid a failure if someone's "cd" command
+      outputs the current directory when cd-ing to a relative path, and made
+      the itemized test query how rsync was built to determine if it should
+      expect hard-linked symlinks or not.
+
+    - Updated the testsuite to verify that various bug fixes remain fixed.
+
+    - The RPM spec file was updated to have: (1) comments for how to use the
+      rsync-patch tar file, and (2) an /etc/xinetd.d/rsync file.
+
+    - Updated the build scripts to work with a revised FTP directory
+      structure.
+
+\f
+NEWS for rsync 3.0.0 (1 Mar 2008)
+Protocol: 30 (changed)
+Changes since 2.6.9:
+
+  NOTABLE CHANGES IN BEHAVIOR:
+
+    - The handling of implied directories when using --relative has changed to
+      send them as directories (e.g. no implied dir is ever sent as a symlink).
+      This avoids unexpected behavior and should not adversely affect most
+      people.  If you're one of those rare individuals who relied upon having
+      an implied dir be duplicated as a symlink, you should specify the
+      transfer of the symlink and the transfer of the referent directory as
+      separate args.  (See also --keep-dirlinks and --no-implied-dirs.)
+      Also, exclude rules no longer have a partial effect on implied dirs.
+
+    - Requesting a remote file-listing without specifying -r (--recursive) now
+      sends the -d (--dirs) option to the remote rsync rather than sending -r
+      along with an extra exclude of /*/*.  If the remote rsync does not
+      understand the -d option (i.e. it is 2.6.3 or older), you will need to
+      either turn off -d (--no-d), or specify  -r --exclude='/*/*'  manually.
+
+    - In --dry-run mode, the last line of the verbose summary text is output
+      with a "(DRY RUN)" suffix to help remind you that no updates were made.
+      Similarly, --only-write-batch outputs "(BATCH ONLY)".
+
+    - A writable rsync daemon with "use chroot" disabled now defaults to a
+      symlink-munging behavior designed to make symlinks safer while also
+      allowing absolute symlinks to be stored and retrieved.  This also has
+      the effect of making symlinks unusable while they're in the daemon's
+      hierarchy.  See the daemon's "munge symlinks" parameter for details.
+
+    - Starting up an extra copy of an rsync daemon will not clobber the pidfile
+      for the running daemon -- if the pidfile exists, the new daemon will exit
+      with an error.  This means that your wrapper script that starts the rsync
+      daemon should be made to handle lock-breaking (if you want any automatic
+      breaking of locks to be done).
+
+  BUG FIXES:
+
+    - A daemon with "use chroot = no" and excluded items listed in the daemon
+      config file now properly checks an absolute-path arg specified for these
+      options:  --compare-dest, --link-dest, --copy-dest, --partial-dir,
+      --backup-dir, --temp-dir, and --files-from.
+
+    - A daemon can now be told to disable all user- and group-name translation
+      on a per-module basis.  This avoids a potential problem with a writable
+      daemon module that has "use chroot" enabled -- if precautions weren't
+      taken, a user could try to add a missing library and get rsync to use
+      it.  This makes rsync safer by default, and more configurable when id-
+      translation is not desired.  See the daemon's "numeric ids" parameter
+      for full details.
+
+    - A chroot daemon can now indicate which part of its path should affect the
+      chroot call, and which part should become an inside-chroot path for the
+      module.  This allows you to have outside-the-transfer paths (such as for
+      libraries) even when you enable chroot protection.  The idiom used in the
+      rsyncd.conf file is:  path = /chroot/dirs/./dirs/inside
+
+    - If a file's data arrived successfully on the receiving side but the
+      rename of the temporary file to the destination file failed AND the
+      --remove-source-files (or the deprecated --remove-sent-files) option
+      was specified, rsync no longer erroneously removes the associated
+      source file.
+
+    - Fixed the output of -ii when combined with one of the --*-dest options:
+      it now itemizes all the items, not just the changed ones.
+
+    - Made the output of all file types consistent when using a --*-dest
+      option.  Prior versions would output too many creation events for
+      matching items.
+
+    - The code that waits for a child pid now handles being interrupted by a
+      signal.  This fixes a problem with the pre-xfer exec function not being
+      able to get the exit status from the script.
+
+    - A negated filter rule (i.e. with a '!' modifier) no longer loses the
+      negation when sending the filter rules to the remote rsync.
+
+    - Fixed a problem with the --out-format (aka --log-format) option %f:  it
+      no longer outputs superfluous directory info for a non-daemon rsync.
+
+    - Fixed a problem with -vv (double --verbose) and --stats when "pushing"
+      files (which includes local copies).  Version 2.6.9 would complete the
+      copy, but exit with an error when the receiver output its memory stats.
+
+    - If --password-file is used on a non-daemon transfer, rsync now complains
+      and exits.  This should help users figure out that they can't use this
+      option to control a remote shell's password prompt.
+
+    - Make sure that directory permissions of a newly-created destination
+      directory are handled right when --perms is left off.
+
+    - The itemized output of a newly-created destination directory is now
+      output as a creation event, not a change event.
+
+    - Improved --hard-link so that more corner cases are handled correctly
+      when combined with options such as --link-dest and/or --ignore-existing.
+
+    - The --append option no longer updates a file that has the same size.
+
+    - Fixed a bug when combining --backup and --backup-dir with --inplace:
+      any missing backup directories are now created.
+
+    - Fixed a bug when using --backup and --inplace with --whole-file or
+      --read-batch: backup files are actually created now.
+
+    - The daemon pidfile is checked and created sooner in the startup sequence.
+
+    - If a daemon module's "path" value is not an absolute pathname, the code
+      now makes it absolute internally (making it work properly).
+
+    - Ensure that a temporary file always has owner-write permission while we
+      are writing to it.  This avoids problems with some network filesystems
+      when transfering read-only files.
+
+    - Any errors output about password-file reading no longer cause an error at
+      the end of the run about a partial transfer.
+
+    - The --read-batch option for protocol 30 now ensures that several more
+      options are set correctly for the current batch file:  --iconv, --acls,
+      --xattrs, --inplace, --append, and --append-verify.
+
+    - Using --only-write-batch to a daemon receiver now works properly (older
+      versions would update some files while writing the batch).
+
+    - Avoid outputting a "file has vanished" message when the file is a broken
+      symlink and --copy-unsafe-links or --copy-dirlinks is used (the code
+      already handled this for --copy-links).
+
+    - Fixed the combination of --only-write-batch and --dry-run.
+
+    - Fixed rsync's ability to remove files that are not writable by the file's
+      owner when rsync is running as the same user.
+
+    - When transferring large files, the sender's hashtable of checksums is
+      kept at a more reasonable state of fullness (no more than 80% full) so
+      that the scanning of the hashtable will not bog down as the number of
+      blocks increases.
+
+  ENHANCEMENTS:
+
+    - A new incremental-recursion algorithm is now used when rsync is talking
+      to another 3.x version.  This starts the transfer going more quickly
+      (before all the files have been found), and requires much less memory.
+      See the --recursive option in the manpage for some restrictions.
+
+    - Lowered memory use in the non-incremental-recursion algorithm for typical
+      option values (usually saving from 21-29 bytes per file).
+
+    - The default --delete algorithm is now --delete-during when talking to a
+      3.x rsync.  This is a faster scan than using --delete-before (which is
+      the default when talking to older rsync versions), and is compatible with
+      the new incremental recursion mode.
+
+    - Rsync now allows multiple remote-source args to be specified rather than
+      having to rely on a special space-splitting side-effect of the remote-
+      shell.  Additional remote args must specify the same host or an empty one
+      (e.g. empty:  :file1  or  ::module/file2).  For example, this means that
+      local use of brace expansion now works:  rsync -av host:dir/{f1,f2} .
+
+    - Added the --protect-args (-s) option, that tells rsync to send most of
+      the command-line args at the start of the transfer rather than as args
+      to the remote-shell command.  This protects them from space-splitting,
+      and only interprets basic wildcard special shell characters (*?[).
+
+    - Added the --delete-delay option, which is a more efficient way to delete
+      files at the end of the transfer without needing a separate delete pass.
+
+    - Added the --acls (-A) option to preserve Access Control Lists.  This is
+      an improved version of the prior patch that was available, and it even
+      supports OS X ACLs.  If you need to have backward compatibility with old,
+      ACL-patched versions of rsync, apply the acls.diff file from the patches
+      dir.
+
+    - Added the --xattrs (-X) option to preserve extended attributes.  This is
+      an improved version of the prior patch that was available, and it even
+      supports OS X xattrs (which includes their resource fork data).  If you
+      need to have backward compatibility with old, xattr-patched versions of
+      rsync, apply the xattrs.diff file from the patches dir.
+
+    - Added the --fake-super option that allows a non-super user to preserve
+      all attributes of a file by using a special extended-attribute idiom.
+      It even supports the storing of foreign ACL data on your backup server.
+      There is also an analogous "fake super" parameter for an rsync daemon.
+
+    - Added the --iconv option, which allows rsync to convert filenames from
+      one character-set to another during the transfer.  The default is to
+      make this feature available as long as your system has iconv_open().
+      If compilation fails, specify --disable-iconv to configure, and then
+      rebuild.  If you want rsync to perform character-set conversions by
+      default, you can specify --enable-iconv=CONVERT_STRING with the default
+      value for the --iconv option that you wish to use.  For example,
+      "--enable-iconv=." is a good choice.  See the rsync manpage for an
+      explanation of the --iconv option's settings.
+
+    - A new daemon config parameter, "charset", lets you control the character-
+      set that is used during an --iconv transfer to/from a daemon module.  You
+      can also set your daemon to refuse "no-iconv" if you want to force the
+      client to use an --iconv transfer (requiring an rsync 3.x client).
+
+    - Added the --skip-compress=LIST option to override the default list of
+      file suffixes that will not be compressed when using --compress (-z).
+
+    - The daemon's default for "dont compress" was extended to include:
+         *.7z *.mp[34] *.mov *.avi *.ogg *.jpg *.jpeg
+      The name-matching routine was also optimized to run more quickly.
+
+    - The --max-delete option now outputs a warning if it skipped any file
+      deletions, including a count of how many deletions were skipped.  (Older
+      versions just silently stopped deleting things.)
+
+    - You may specify --max-delete=0 to a 3.0.0 client to request that it warn
+      about extraneous files without deleting anything.  If you're not sure
+      what version the client is, you can use the less-obvious --max-delete=-1,
+      as both old and new versions will treat that as the same request (though
+      older versions don't warn).
+
+    - The --hard-link option now uses less memory on both the sending and
+      receiving side for all protocol versions.  For protocol 30, the use of a
+      hashtable on the sending side allows us to more efficiently convey to the
+      receiver what files are linked together.  This reduces the amount of data
+      sent over the socket by a considerable margin (rather than adding more
+      data), and limits the in-memory storage of the device+inode information
+      to just the sending side for the new protocol 30, or to the receiving
+      side when speaking an older protocol (note that older rsync versions kept
+      the device+inode information on both sides).
+
+    - The filter rules now support a perishable ("p") modifier that marks rules
+      that should not have an effect in a directory that is being deleted.  e.g.
+      -f '-p .svn/' would only affect "live" .svn directories.
+
+    - Rsync checks all the alternate-destination args for validity (e.g.
+      --link-dest).  This lets the user know when they specified a directory
+      that does not exist.
+
+    - If we get an ENOSYS error setting the time on a symlink, we don't
+      complain about it anymore (for those systems that even support the
+      setting of the modify-time on a symlink).
+
+    - Protocol 30 now uses MD5 checksums instead of MD4.
+
+    - Changed the --append option to not checksum the existing data in the
+      destination file, which speeds up file appending.
+
+    - Added the --append-verify option, which works like the older --append
+      option (verifying the existing data in the destination file).  For
+      compatibility with older rsync versions, any use of --append that is
+      talking protocol 29 or older will revert to the --append-verify method.
+
+    - Added the --contimeout=SECONDS option that lets the user specify a
+      connection timeout for rsync daemon access.
+
+    - Documented and extended the support for the RSYNC_CONNECT_PROG variable
+      that can be used to enhance the client side of a daemon connection.
+
+    - Improved the dashes and double-quotes in the nroff manpage output.
+
+    - Rsync now supports a lot more --no-OPTION override options.
+
+  INTERNAL:
+
+    - The file-list sorting algorithm now uses a sort that keeps any same-
+      named items in the same order as they were specified.  This allows
+      rsync to always ensure that the first of the duplicates is the one
+      that will be included in the copy.  The new sort is also faster
+      than the glibc version of qsort() and mergesort().
+
+    - Rsync now supports the transfer of 64-bit timestamps (time_t values).
+
+    - Made the file-deletion code use a little less stack when recursing
+      through a directory hierarchy of extraneous files.
+
+    - Fixed a build problem with older (2.x) versions of gcc.
+
+    - Added some isType() functions that make dealing with signed characters
+      easier without forcing variables via casts.
+
+    - Changed strcat/strcpy/sprintf function calls to use safer versions.
+
+    - Upgraded the included popt version to 1.10.2 and improved its use of
+      string-handling functions.
+
+    - Added missing prototypes for compatibility functions from the lib dir.
+
+    - Configure determines if iconv() has a const arg, allowing us to avoid a
+      compiler warning.
+
+    - Made the sending of some numbers more efficient for protocol 30.
+
+    - Make sure that a daemon process doesn't mind if the client was weird and
+      omitted the --server option.
+
+    - There are more internal logging categories available in protocol 30 than
+      the age-old FINFO and FERROR, including FERROR_XFER and FWARN.  These new
+      categories allow some errors and warnings to go to stderr without causing
+      an erroneous end-of-run warning about some files not being able to be
+      transferred.
+
+    - Improved the use of "const" on pointers.
+
+    - Improved J.W.'s pool_alloc routines to add a way of incrementally freeing
+      older sections of a pool's memory.
+
+    - The getaddrinfo.c compatibility code in the "lib" dir was replaced with
+      some new code (derived from samba, derived from PostgreSQL) that has a
+      better license than the old code.
+
+  DEVELOPER RELATED:
+
+    - Rsync is now licensed under the GPLv3 or later.
+
+    - Rsync is now being maintained in a "git" repository instead of CVS
+      (though the old CVS repository still exists for historical access).
+      Several maintenance scripts were updated to work with git.
+
+    - Generated files are no longer committed into the source repository.  The
+      autoconf and autoheader commands are now automatically run during the
+      normal use of "configure" and "make".  The latest dev versions of all
+      generated files can also be copied from the samba.org web site (see the
+      prepare-source script's fetch option).
+
+    - The "patches" directory of diff files is now built from branches in the
+      rsync git repository (branch patch/FOO creates file patches/FOO.diff).
+      This directory is now distributed in a separate separate tar file named
+      rsync-patches-VERSION.tar.gz instead of the main rsync-VERSION.tar.gz.
+
+    - The proto.h file is now built using a simple perl script rather than a
+      complex awk script, which proved to be more widely compatible.
+
+    - When running the tests, we now put our per-test temp dirs into a sub-
+      directory named testtmp (which is created, if missing).  This allows
+      someone to symlink the testtmp directory to another filesystem (which is
+      useful if the build dir's filesystem does not support ACLs and xattrs,
+      but another filesystem does).
+
+    - Rsync now has a way of handling protocol-version changes during the
+      development of a new protocol version.  This causes any out-of-sync
+      versions to speak an older protocol rather than fail in a cryptic manner.
+      This addition makes it safer to deploy a pre-release version that may
+      interact with the public.  This new exchange of sub-version info does not
+      interfere with the {MIN,MAX}_PROTOCOL_VERSION checking algorithm (which
+      does not have enough range to allow the main protocol number to be
+      incremented for every minor tweak in that happens during development).
+
+    - The csprotocol.txt file was updated to mention the daemon protocol change
+      in the 3.0.0 release.
+
+\f
+NEWS for rsync 2.6.9 (6 Nov 2006)
+Protocol: 29 (unchanged)
+Changes since 2.6.8:
+
+  BUG FIXES:
+
+    - If rsync is interrupted via a handled signal (such as SIGINT), it will
+      once again clean-up its temp file from the destination dir.
+
+    - Fixed an overzealous sanitizing bug in the handling of the --link-dest,
+      --copy-dest, and --compare-dest options to a daemon without chroot: if
+      the copy's destination dir is deeper than the top of the module's path,
+      these options now accept a safe number of parent-dir (../) references
+      (since these options are relative to the destination dir).  The old code
+      incorrectly chopped off all "../" prefixes for these options, no matter
+      how deep the destination directory was in the module's hierarchy.
+
+    - Fixed a bug where a deferred info/error/log message could get sent
+      directly to the sender instead of being handled by rwrite() in the
+      generator.  This fixes an "unexpected tag 3" fatal error, and should
+      also fix a potential problem where a deferred info/error message from
+      the receiver might bypass the log file and get sent only to the client
+      process.  (These problems could only affect an rsync daemon that was
+      receiving files.)
+
+    - Fixed a bug when --inplace was combined with a --*-dest option and we
+      update a file's data using an alternate basis file.  The code now
+      notices that it needs to copy the matching data from the basis file
+      instead of (wrongly) assuming that it was already present in the file.
+
+    - Fixed a bug where using --dry-run with a --*-dest option with a path
+      relative to a directory that does not yet exist:  the affected option
+      gets its proper path value so that the output of the dry-run is right.
+
+    - Fixed a bug in the %f logfile escape when receiving files: the
+      destination path is now included in the output (e.g. you can now tell
+      when a user specifies a subdir inside a module).
+
+    - If the receiving side fails to create a directory, it will now skip
+      trying to update everything that is inside that directory.
+
+    - If --link-dest is specified with --checksum but without --times, rsync
+      will now allow a hard-link to be created to a matching link-dest file
+      even when the file's modify-time doesn't match the server's file.
+
+    - The daemon now calls more timezone-using functions prior to doing a
+      chroot.  This should help some C libraries to generate proper timestamps
+      from inside a chrooted daemon (and to not try to access /etc/timezone
+      over and over again).
+
+    - Fixed a bug in the handling of an absolute --partial-dir=ABS_PATH option:
+      it now deletes an alternate basis file from the partial-dir that was used
+      to successfully update a destination file.
+
+    - Fixed a bug in the handling of --delete-excluded when using a per-dir
+      merge file:  the merge file is now honored on the receiving side, and
+      only its unqualified include/exclude commands are ignored (just as is
+      done for global include/excludes).
+
+    - Fixed a recent bug where --delete was not working when transferring from
+      the root (/) of the filesystem with --relative enabled.
+
+    - Fixed a recent bug where an --exclude='*' could affect the root (/) of
+      the filesystem with --relative enabled.
+
+    - When --inplace creates a file, it is now created with owner read/write
+      permissions (0600) instead of no permissions at all.  This avoids a
+      problem continuing a transfer that was interrupted (since --inplace
+      will not update a file that has no write permissions).
+
+    - If either --remove-source-files or --remove-sent-files is enabled and we
+      are unable to remove the source file, rsync now outputs an error.
+
+    - Fixed a bug in the daemon's "incoming chmod" rule:  newly-created
+      directories no longer get the 'F' (file) rules applied to them.
+
+    - Fixed an infinite loop bug when a filter rule was rejected due to being
+      overly long.
+
+    - When the server receives a --partial-dir option from the client, it no
+      longer runs the client-side code that adds an assumed filter rule (since
+      the client will be sending us the rules in the usual manner, and they
+      may have chosen to override the auto-added rule).
+
+  ENHANCEMENTS:
+
+    - Added the --log-file=FILE and --log-file-format=FORMAT options.  These
+      can be used to tell any rsync to output what it is doing to a log file.
+      They work with a client rsync, a non-daemon server rsync (see the man
+      page for instructions), and also allows the overriding of rsyncd.conf
+      settings when starting a daemon.
+
+    - The --log-format option was renamed to be --out-format to avoid confusing
+      it with affecting the log-file output.  (The old option remains as an
+      alias for the new to preserve backward compatibility.)
+
+    - Made "log file" and "syslog facility" settable on a per-module basis in
+      the daemon's config file.
+
+    - Added the --remove-source-files option as a replacement for the (now
+      deprecated) --remove-sent-files option.  This new option removes all
+      non-dirs from the source directories, even if the file was already
+      up-to-date.  This fixes a problem where interrupting an rsync that
+      was using --remove-sent-files and restarting it could leave behind
+      a file that the earlier rsync synchronized, but didn't get to remove.
+      (The deprecated --remove-sent-files is still understood for now, and
+      still behaves in the same way as before.)
+
+    - Added the option --no-motd to suppress the message-of-the-day output
+      from a daemon when doing a copy.  (See the manpage for a caveat.)
+
+    - Added a new environment variable to the pre-/post-xfer exec commands (in
+      the daemon's config file):  RSYNC_PID.  This value will be the same in
+      both the pre- and post-xfer commands, so it can be used as a unique ID
+      if the pre-xfer command wants to cache some arg/request info for the
+      post-xfer command.
+
+  INTERNAL:
+
+    - Did a code audit using IBM's code-checker program and made several
+      changes, including: replacing most of the strcpy() and sprintf()
+      calls with strlcpy(), snprintf(), and memcpy(), adding a 0-value to
+      an enum that had been intermingling a literal 0 with the defined enum
+      values, silencing some uninitialized memory checks, marking some
+      functions with a "noreturn" attribute, and changing an "if" that
+      could never succeed on some platforms into a pre-processor directive
+      that conditionally compiles the code.
+
+    - Fixed a potential bug in f_name_cmp() when both the args are a
+      top-level "." dir (which doesn't happen in normal operations).
+
+    - Changed exit_cleanup() so that it can never return instead of exit.
+      The old code might return if it found the exit_cleanup() function
+      was being called recursively.  The new code is segmented so that
+      any recursive calls move on to the next step of the exit-processing.
+
+    - The macro WIFEXITED(stat) will now be defined if the OS didn't already
+      define it.
+
+  DEVELOPER RELATED:
+
+    - The acls.diff and xattrs.diff patches have received a bunch of work to
+      make them much closer to being acceptable in the main distribution.
+      The xattrs patch also has some preliminary Mac OS X and FreeBSD
+      compatibility code that various system types to exchange extended
+      file-attributes.
+
+    - A new diff in the patches dir, fake-root.diff, allows rsync to
+      maintain a backup hierarchy with full owner, group, and device info
+      without actually running as root.  It does this using a special
+      extended attribute, so it depends on xattrs.diff (which depends on
+      acls.diff).
+
+    - The rsync.yo and rsyncd.conf.yo files have been updated to work
+      better with the latest yodl 2.x releases.
+
+    - Updated config.guess and config.sub to their 2006-07-02 versions.
+
+    - Updated various files to include the latest FSF address and to have
+      consistent opening comments.
+
+\f
+NEWS for rsync 2.6.8 (22 Apr 2006)
+Protocol: 29 (unchanged)
+Changes since 2.6.7:
+
+  BUG FIXES:
+
+    - Fixed a bug in the exclude code where an anchored exclude without any
+      wildcards fails to match an absolute source arg, but only when --relative
+      is in effect.
+
+    - Improved the I/O code for the generator to fix a potential hang when the
+      receiver gets an EOF on the socket but the generator's select() call
+      never indicates that the socket is writable for it to be notified about
+      the EOF.  (This can happen when using stunnel).
+
+    - Fixed a problem with the file-reading code where a failed read (such as
+      that caused by a bad sector) would not advance the file's read-position
+      beyond the failed read's data.
+
+    - Fixed a logging bug where the "log file" directive was not being honored
+      in a single-use daemon (one spawned by a remote-shell connection or by
+      init).
+
+    - If rsync cannot honor the --delete option, we output an error and exit
+      instead of silently ignoring the option.
+
+    - Fixed a bug in the --link-dest code that prevented special files (such as
+      fifos) from being linked.
+
+    - The ability to hard-link symlinks and special files is now determined at
+      configure time instead of at runtime.  This fixes a bug with --link-dest
+      creating a hard-link to a symlink's referent on a BSD system.
+
+  ENHANCEMENTS:
+
+    - In daemon mode, if rsync fails to bind to the requested port, the
+      error(s) returned by socket() and/or bind() are now logged.
+
+    - When we output a fatal error, we now output the version of rsync in the
+      message.
+
+    - Improved the documentation for the --owner and --group options.
+
+    - The rsyncstats script in "support" has an improved line-parsing regex
+      that is easier to read and also makes it to parse syslog-generated lines.
+
+    - A new script in "support": file-attr-restore, can be used to restore the
+      attributes of a file-set (the permissions, ownership, and group info)
+      taken from the cached output of a "find ARG... -ls" command.
+
+  DEVELOPER RELATED:
+
+    - Removed the unused function write_int_named(), the unused variable
+      io_read_phase, and the rarely used variable io_write_phase.  This also
+      elides the confusing 'phase "unknown"' part of one error message.
+
+    - Removed two unused configure checks and two related (also unused)
+      compatibility functions.
+
+    - The xattrs.diff patch received a security fix that prevents a potential
+      buffer overflow in the receive_xattr() code.
+
+    - The acls.diff patch has been improved quite a bit, with more to come.
+
+    - A new patch was added: log-file.diff.  This contains an early version of
+      a future option, --log-file=FILE, that will allow any rsync to log its
+      actions to a file (something that only a daemon supports at present).
+
+\f
 NEWS for rsync 2.6.7 (11 Mar 2006)
 Protocol: 29 (unchanged)
 Changes since 2.6.6:
 NEWS for rsync 2.6.7 (11 Mar 2006)
 Protocol: 29 (unchanged)
 Changes since 2.6.6:
@@ -75,8 +903,8 @@ Changes since 2.6.6:
     - Fixed the matching of the dont-compress items (e.g. *.gz) against files
       that have a path component containing a slash.
 
     - Fixed the matching of the dont-compress items (e.g. *.gz) against files
       that have a path component containing a slash.
 
-    - If code reading a filter/exclude file an EINTR error, rsync now clears
-      the error flag on the file handle so it can keep on reading.
+    - If the code reading a filter/exclude file gets an EINTR error, rsync now
+      clears the error flag on the file handle so it can keep on reading.
 
     - If --relative is active, the sending side cleans up trailing "/" or "/."
       suffixes to avoid triggering a bug in older rsync versions.  Also, we now
 
     - If --relative is active, the sending side cleans up trailing "/" or "/."
       suffixes to avoid triggering a bug in older rsync versions.  Also, we now
@@ -1091,6 +1919,8 @@ Changes since 2.6.2:
       user chose to combine the output of rsync's stdout and stderr (e.g.
       using the "2>&1").
 
       user chose to combine the output of rsync's stdout and stderr (e.g.
       using the "2>&1").
 
+    - Fixed an option-parsing bug when --files-from got passed to a daemon.
+
   ENHANCEMENTS:
 
     - Added the --partial-dir=DIR option that lets you specify where to
   ENHANCEMENTS:
 
     - Added the --partial-dir=DIR option that lets you specify where to
@@ -1357,6 +2187,9 @@ Changes since 2.6.0:
     - Fixed the ability to request an empty backup --suffix when sending
       files to an rsync daemon.
 
     - Fixed the ability to request an empty backup --suffix when sending
       files to an rsync daemon.
 
+    - Fixed an option-parsing bug when --files-from was sent to a server
+      sender.
+
   INTERNAL:
 
     - Most of the I/O is now buffered, which results in a pretty large
   INTERNAL:
 
     - Most of the I/O is now buffered, which results in a pretty large
@@ -1616,7 +2449,7 @@ Changes since 2.5.5:
     * The --suffix option can now be used with --backup-dir.  (Michael
       Zimmerman)
 
     * The --suffix option can now be used with --backup-dir.  (Michael
       Zimmerman)
 
-    * Combining "::" syntax with the -rsh/-e option now uses the
+    * Combining "::" syntax with the --rsh/-e option now uses the
       specified remote-shell as a transport to talk to a (newly-spawned)
       server-daemon.  This allows someone to use daemon features, such
       as modules, over a secure protocol, such as ssh.  (JD Paul)
       specified remote-shell as a transport to talk to a (newly-spawned)
       server-daemon.  This allows someone to use daemon features, such
       as modules, over a secure protocol, such as ssh.  (JD Paul)
@@ -2008,6 +2841,13 @@ Changes since 2.4.6:
 \f
 Partial Protocol History
        RELEASE DATE    VER.    DATE OF COMMIT* PROTOCOL
 \f
 Partial Protocol History
        RELEASE DATE    VER.    DATE OF COMMIT* PROTOCOL
+       ?? ??? 2008     3.1.0                   30
+       29 Jun 2008     3.0.3                   30
+       08 Apr 2008     3.0.2                   30
+       03 Apr 2008     3.0.1                   30
+       01 Mar 2008     3.0.0   11 Nov 2006     30
+       06 Nov 2006     2.6.9                   29
+       22 Apr 2006     2.6.8                   29
        11 Mar 2006     2.6.7                   29
        28 Jul 2005     2.6.6                   29
        01 Jun 2005     2.6.5                   29
        11 Mar 2006     2.6.7                   29
        28 Jul 2005     2.6.6                   29
        01 Jun 2005     2.6.5                   29