Annotation of embedaddon/rsync/OLDNEWS, revision 1.1

1.1     ! misho       1: NEWS for rsync 3.0.8 (26 Mar 2011)
        !             2: Protocol: 30 (unchanged)
        !             3: Changes since 3.0.7:
        !             4: 
        !             5:   BUG FIXES:
        !             6: 
        !             7:     - Fixed two buffer-overflow issues: one where a directory path that is
        !             8:       exactly MAXPATHLEN was not handled correctly, and one handling a
        !             9:       --backup-dir that is extra extra large.
        !            10: 
        !            11:     - Fixed a data-corruption issue when preserving hard-links without
        !            12:       preserving file ownership, and doing deletions either before or during
        !            13:       the transfer (CVE-2011-1097).  This fixes some assert errors in the
        !            14:       hard-linking code, and some potential failed checksums (via -c) that
        !            15:       should have matched.
        !            16: 
        !            17:     - Fixed a potential crash when an rsync daemon has a filter/exclude list
        !            18:       and the transfer is using ACLs or xattrs.
        !            19: 
        !            20:     - Fixed a hang if a really large file is being processed by an rsync that
        !            21:       can't handle 64-bit numbers.  Rsync will now complain about the file
        !            22:       being too big and skip it.
        !            23: 
        !            24:     - For devices and special files, we now avoid gathering useless ACL and/or
        !            25:       xattr information for files that aren't being copied.  (The un-copied
        !            26:       files are still put into the file list, but there's no need to gather
        !            27:       data that is not going to be used.)  This ensures that if the user uses
        !            28:       --no-D, that rsync can't possibly complain about being unable to gather
        !            29:       extended information from special files that are in the file list (but
        !            30:       not in the transfer).
        !            31: 
        !            32:     - Properly handle requesting remote filenames that start with a dash.  This
        !            33:       avoids a potential error where a filename could be interpreted as a
        !            34:       (usually invalid) option.
        !            35: 
        !            36:     - Fixed a bug in the comparing of upper-case letters in file suffixes for
        !            37:       --skip-compress.
        !            38: 
        !            39:     - If an rsync daemon has a module configured without a path setting, rsync
        !            40:       will now disallow access to that module.
        !            41: 
        !            42:     - If the destination arg is an empty string, it will be treated as a
        !            43:       reference to the current directory (as 2.x used to do).
        !            44: 
        !            45:     - If rsync was compiled with a newer time-setting function (such as
        !            46:       lutimes), rsync will fall-back to an older function (such as utimes) on a
        !            47:       system where the newer function is not around.  This helps to make the
        !            48:       rsync binary more portable in mixed-OS-release situations.
        !            49: 
        !            50:     - Fixed a batch-file writing bug that would not write out the full set of
        !            51:       compatibility flags that the transfer was using.  This fixes a potential
        !            52:       protocol problem for a batch file that contains a sender-side I/O error:
        !            53:       it would have been sent in a way that the batch-reader wasn't expecting.
        !            54: 
        !            55:     - Some improvements to the hard-linking code to ensure that device-number
        !            56:       hashing is working right, and to supply more information if the hard-link
        !            57:       code fails.
        !            58: 
        !            59:     - The --inplace code was improved to not search for an impossible checksum
        !            60:       position.  The quadruple-verbose chunk[N] message will now mention when
        !            61:       an inplace chunk was handled by a seek rather than a read+write.
        !            62: 
        !            63:     - Improved ACL mask handling, e.g. for Solaris.
        !            64: 
        !            65:     - Fixed a bug that prevented --numeric-ids from disabling the translation
        !            66:       of user/group IDs for ACLs.
        !            67: 
        !            68:     - Fixed an issue where an xattr and/or ACL transfer that used an alt-dest
        !            69:       option (e.g. --link-dest) could output an error trying to itemize the
        !            70:       changes against the alt-dest directory's xattr/ACL info but was instead
        !            71:       trying to access the not-yet-existing new destination directory.
        !            72: 
        !            73:     - Improved xattr system-error messages to mention the full path to the
        !            74:       file.
        !            75: 
        !            76:     - The --link-dest checking for identical symlinks now avoids considering
        !            77:       attribute differences that cannot be changed on the receiver.
        !            78: 
        !            79:     - Avoid trying to read/write xattrs on certain file types for certain OSes.
        !            80:       Improved configure to set NO_SYMLINK_XATTRS, NO_DEVICE_XATTRS, and/or
        !            81:       NO_SPECIAL_XATTRS defines in config.h.
        !            82: 
        !            83:     - Improved the unsafe-symlink errors messages.
        !            84: 
        !            85:     - Fixed a bug setting xattrs on new files that aren't user writable.
        !            86: 
        !            87:     - Avoid re-setting xattrs on a hard-linked file w/the same xattrs.
        !            88: 
        !            89:     - Fixed a bug with --fake-super when copying files and dirs that aren't
        !            90:       user writable.
        !            91: 
        !            92:     - Fixed a bug where a sparse file could have its last sparse block turned
        !            93:       into a real block when rsync sets the file size (requires ftruncate).
        !            94: 
        !            95:     - If a temp-file name is too long, rsync now avoids truncating the name in
        !            96:       the middle of adjacent high-bit characters.  This prevents a potential
        !            97:       filename error if the filesystem doesn't allow a name to contain an
        !            98:       invalid multi-byte sequence.
        !            99: 
        !           100:     - If a muli-protocol socket connection fails (i.e., when contacting a
        !           101:       daemon), we now report all the failures, not just the last one.  This
        !           102:       avoids losing a relevant error (e.g. an IPv4 connection-refused error)
        !           103:       that happened before the final error (e.g. an IPv6 protocol-not-supported
        !           104:       error).
        !           105: 
        !           106:     - Generate a transfer error if we try to call chown with a -1 for a uid or
        !           107:       a gid (which is not settable).
        !           108: 
        !           109:     - Fixed the working of --force when used with --one-file-system.
        !           110: 
        !           111:     - Fix the popt arg parsing so that an option that doesn't take an arg will
        !           112:       reject an attempt to supply one (can configure --with-included-popt if
        !           113:       your system's popt library doesn't yet have this fix).
        !           114: 
        !           115:     - A couple minor option tweaks to the support/rrsync script, and also some
        !           116:       regex changes that make vim highlighting happier.
        !           117: 
        !           118:     - Fixed some issues in the support/mnt-excl script.
        !           119: 
        !           120:     - Various manpage improvements.
        !           121: 
        !           122:   ENHANCEMENTS:
        !           123: 
        !           124:     - Added ".hg/" to the default cvs excludes (see -C & --cvs-exclude).
        !           125: 
        !           126:   DEVELOPER RELATED:
        !           127: 
        !           128:     - Use lchmod() whenever it is available (not just on symlinks).
        !           129: 
        !           130:     - A couple fixes to the socketpair_tcp() routine.
        !           131: 
        !           132:     - Updated the helper scripts in the packaging subdirectory.
        !           133: 
        !           134:     - Renamed configure.in to configure.ac.
        !           135: 
        !           136:     - Fixed configure's checking for iconv routines for newer OS X versions.
        !           137: 
        !           138:     - Fixed the testsuite/xattrs.test script on OS X.
        !           139: 
        !           140: 
        !           141: NEWS for rsync 3.0.7 (31 Dec 2009)
        !           142: Protocol: 30 (unchanged)
        !           143: Changes since 3.0.6:
        !           144: 
        !           145:   BUG FIXES:
        !           146: 
        !           147:     - Fixed a bogus free when using --xattrs with --backup.
        !           148: 
        !           149:     - Avoid an error when --dry-run  was trying to stat a prior hard-link file
        !           150:       that hasn't really been created.
        !           151: 
        !           152:     - Fixed a problem with --compress (-z) where the receiving side could
        !           153:       return the error "inflate (token) returned -5".
        !           154: 
        !           155:     - Fixed a bug where --delete-during could delete in a directory before it
        !           156:       noticed that the sending side sent an I/O error for that directory (both
        !           157:       sides of the transfer must be at least 3.0.7).
        !           158: 
        !           159:     - Improved --skip-compress's error handling of bad character-sets and got
        !           160:       rid of a lingering debug fprintf().
        !           161: 
        !           162:     - Fixed the daemon's conveyance of io_error value from the sender.
        !           163: 
        !           164:     - An rsync daemon use seteuid() (when available) if it used setuid().
        !           165: 
        !           166:     - Get the permissions right on a --fake-super transferred directory that
        !           167:       needs more owner permissions to emulate root behavior.
        !           168: 
        !           169:     - An absolute-path filter rule (i.e. with a '/' modifier) no longer loses
        !           170:       its modifier when sending the filter rules to the remote rsync.
        !           171: 
        !           172:     - Improved the "--delete does not work without -r or -d" message.
        !           173: 
        !           174:     - Improved rsync's handling of --timeout to avoid a weird timeout case
        !           175:       where the sender could timeout even though it has recently written data
        !           176:       to the socket (but hasn't read data recently, due to the writing).
        !           177: 
        !           178:     - Some misc manpage improvements.
        !           179: 
        !           180:     - Fixed the chmod-temp-dir testsuite on a system without /var/tmp.
        !           181: 
        !           182:     - Make sure that a timeout specified in the daemon's config is used as a
        !           183:       maximum timeout value when the user also specifies a timeout.
        !           184: 
        !           185:     - Improved the error-exit reporting when rsync gets an error trying to
        !           186:       cleanup after an error:  the initial error is reported.
        !           187: 
        !           188:     - Improved configure's detection of IPv6 for solaris and cygwin.
        !           189: 
        !           190:     - The AIX sysacls routines will now return ENOSYS if ENOTSUP is missing.
        !           191: 
        !           192:     - Made our (only used if missing) getaddrinfo() routine use inet_pton()
        !           193:       (which we also provide) instead of inet_aton().
        !           194: 
        !           195:     - The exit-related debug messages now mention the program's role so it is
        !           196:       clear who output what message.
        !           197: 
        !           198:   DEVELOPER RELATED:
        !           199: 
        !           200:     - Got rid of type-punned compiler warnings output by newer gcc versions.
        !           201: 
        !           202:     - The Makefile now ensures that proto.h will be rebuilt if config.h changes.
        !           203: 
        !           204:     - The testsuite no longer uses "id -u", so it works better on solaris.
        !           205: 
        !           206: 
        !           207: NEWS for rsync 3.0.6 (8 May 2009)
        !           208: Protocol: 30 (unchanged)
        !           209: Changes since 3.0.5:
        !           210: 
        !           211:   BUG FIXES:
        !           212: 
        !           213:     - Fixed a --read-batch hang when rsync is reading a batch file that was
        !           214:       created from an incremental-recursion transfer.
        !           215: 
        !           216:     - Fixed the daemon's socket code to handle the simultaneous arrival of
        !           217:       multiple connections.
        !           218: 
        !           219:     - Fix --safe-links/--copy-unsafe-links to properly handle symlinks that
        !           220:       have consecutive slashes in the value.
        !           221: 
        !           222:     - Fixed the parsing of an [IPv6_LITERAL_ADDR] when a USER@ is prefixed.
        !           223: 
        !           224:     - The sender now skips a (bogus) symlink that has a 0-length value, which
        !           225:       avoids a transfer error in the receiver.
        !           226: 
        !           227:     - Fixed a case where the sender could die with a tag-0 error if there was
        !           228:       an I/O during the sending of the file list.
        !           229: 
        !           230:     - Fixed the rrsync script to avoid a server-side problem when -e is at the
        !           231:       start of the short options.
        !           232: 
        !           233:     - Fixed a problem where a vanished directory could turn into an exit code
        !           234:       23 instead of the proper exit code 24.
        !           235: 
        !           236:     - Fixed the --iconv conversion of symlinks when doing a local copy.
        !           237: 
        !           238:     - Fixed a problem where --one-file-system was not stopping deletions on the
        !           239:       receiving side when a mount-point directory did not match a directory in
        !           240:       the transfer.
        !           241: 
        !           242:     - Fixed the dropping of an ACL mask when no named ACL values were present.
        !           243: 
        !           244:     - Fixed an ACL/xattr corruption issue where the --backup option could cause
        !           245:       rsync to associate the wrong ACL/xattr information with received files.
        !           246: 
        !           247:     - Fixed the use of --xattrs with --only-write-batch.
        !           248: 
        !           249:     - Fixed the use of --dry-run with --read-batch.
        !           250: 
        !           251:     - Fixed configure's erroneous use of target.
        !           252: 
        !           253:     - Fixed configure's --disable-debug option.
        !           254: 
        !           255:     - Fixed a run-time issue for systems that can't find iconv_open() by adding
        !           256:       the --disable-iconv-open configure option.
        !           257: 
        !           258:     - Complain and die if the user tries to combine --remove-source-files (or
        !           259:       the deprecated --remove-sent-files) with --read-batch.
        !           260: 
        !           261:     - Fixed an failure transferring special files from Solaris to Linux.
        !           262: 
        !           263: 
        !           264: NEWS for rsync 3.0.5 (28 Dec 2008)
        !           265: Protocol: 30 (unchanged)
        !           266: Changes since 3.0.4:
        !           267: 
        !           268:   BUG FIXES:
        !           269: 
        !           270:     - Initialize xattr data in a couple spots in the hlink code, which avoids a
        !           271:       crash when the xattr pointer's memory happens to start out non-zero.
        !           272:       Also fixed the itemizing of an alt-dest file's xattrs when hard-linking.
        !           273: 
        !           274:     - Don't send a bogus "-" option to an older server if there were no short
        !           275:       options specified.
        !           276: 
        !           277:     - Fixed skipping of unneeded updates in a batch file when incremental
        !           278:       recursion is active.  Added a test for this.  Made batch-mode handle
        !           279:       "redo" files properly (and without hanging).
        !           280: 
        !           281:     - Fix the %P logfile escape when the daemon logs from inside a chroot.
        !           282: 
        !           283:     - Fixed the use of -s (--protect-args) when used with a remote source or
        !           284:       destination that had an empty path (e.g. "host:").  Also fixed a problem
        !           285:       when -s was used when accessing a daemon via a remote-shell.
        !           286: 
        !           287:     - Fixed the use of a dot-dir path (e.g. foo/./bar) inside a --files-from
        !           288:       file when the root of the transfer isn't the current directory.
        !           289: 
        !           290:     - Fixed a bug with "-K --delete" removing symlinks to directories when
        !           291:       incremental recursion is active.
        !           292: 
        !           293:     - Fixed a hard to trigger hang when using --remove-source-files.
        !           294: 
        !           295:     - Got rid of an annoying delay when accessing a daemon via a remote-shell.
        !           296: 
        !           297:     - Properly ignore (superfluous) source args on a --read-batch command.
        !           298: 
        !           299:     - Improved the manpage's description of the '*' wildcard to remove the
        !           300:       confusing "non-empty" qualifier.
        !           301: 
        !           302:     - Fixed reverse lookups in the compatibility-library version of
        !           303:       getnameinfo().
        !           304: 
        !           305:     - Fixed a bug when using --sparse on a sparse file that has over 2GB of
        !           306:       consecutive sparse data.
        !           307: 
        !           308:     - Avoid a hang when using at least 3 --verbose options on a transfer with a
        !           309:       client sender (which includes local copying).
        !           310: 
        !           311:     - Fixed a problem with --delete-delay reporting an error when it was ready
        !           312:       to remove a directory that was now gone.
        !           313: 
        !           314:     - Got rid of a bunch of "warn_unused_result" compiler warnings.
        !           315: 
        !           316:     - If an ftruncate() on a received file fails, it now causes a partial-
        !           317:       transfer warning.
        !           318: 
        !           319:     - Allow a path with a leading "//" to be preserved (CYGWIN only).
        !           320: 
        !           321:   ENHANCEMENTS:
        !           322: 
        !           323:     - Made the support/atomic-rsync script able to perform a fully atomic
        !           324:       update of the copied hierarchy when the destination is setup using a
        !           325:       particular symlink idiom.
        !           326: 
        !           327: 
        !           328: NEWS for rsync 3.0.4 (6 Sep 2008)
        !           329: Protocol: 30 (unchanged)
        !           330: Changes since 3.0.3:
        !           331: 
        !           332:   BUG FIXES:
        !           333: 
        !           334:     - Fixed a bug in the hard-linking code where it would sometimes try to
        !           335:       allocate 0 bytes of memory (which fails on some OSes, such as AIX).
        !           336: 
        !           337:     - Fixed the hard-linking of files from a device that has a device number
        !           338:       of 0 (which seems to be a common device number on NetBSD).
        !           339: 
        !           340:     - Fixed the handling of a --partial-dir that cannot be created.  This
        !           341:       particularly impacts the --delay-updates option (since the files cannot
        !           342:       be delayed without a partial-dir), and was potentially destructive if
        !           343:       the --remove-source-files was also specified.
        !           344: 
        !           345:     - Fixed a couple issues in the --fake-super handling of xattrs when the
        !           346:       destination files have root-level attributes (e.g. selinux values) that
        !           347:       a non-root copy can't affect.
        !           348: 
        !           349:     - Improved the keep-alive check in the generator to fire consistently in
        !           350:       incremental-recursion mode when --timeout is enabled.
        !           351: 
        !           352:     - The --iconv option now converts the content of a symlink too, instead
        !           353:       of leaving it in the wrong character-set (requires 3.0.4 on both sides
        !           354:       of the transfer).
        !           355: 
        !           356:     - When using --iconv, if a filename fails to convert on the receiving side,
        !           357:       this no longer makes deletions in the root-dir of the transfer fail
        !           358:       silently (the user now gets a warning about deletions being disabled
        !           359:       due to IO error as long as --ignore-errors was not specified).
        !           360: 
        !           361:     - When using --iconv, if a server-side receiver can't convert a filename,
        !           362:       the error message sent back to the client no longer mangles the name
        !           363:       with the wrong charset conversion.
        !           364: 
        !           365:     - Fixed a potential alignment issue in the IRIX ACL code when allocating
        !           366:       the initial "struct acl" object.  Also, cast mallocs to avoid warnings.
        !           367: 
        !           368:     - Changed some errors that were going to stdout to go to stderr.
        !           369: 
        !           370:     - Made human_num() and human_dnum() able to output a negative number
        !           371:       (rather than outputting a cryptic string of punctuation).
        !           372: 
        !           373:   ENHANCEMENTS:
        !           374: 
        !           375:     - Rsync will avoid sending an -e option to the server if an older protocol
        !           376:       is requested (and thus the option would not be useful).  This lets the
        !           377:       user specify the --protocol=29 option to access an overly-restrictive
        !           378:       server that is rejecting the protocol-30 use of -e to the server.
        !           379: 
        !           380:     - Improved the message output for an RERR_PARTIAL exit.
        !           381: 
        !           382:   DEVELOPER RELATED:
        !           383: 
        !           384:     - The Makefile will not halt for just a timestamp change on the Makefile
        !           385:       or the configure files, only for actual changes in content.
        !           386: 
        !           387:     - Changed some commands in the testsuite's xattrs.test that called "rsync"
        !           388:       instead of "$RSYNC".
        !           389: 
        !           390:     - Enhanced the release scripts to be able to handle a branch release and
        !           391:       to do even more consistency checks on the files.
        !           392: 
        !           393: 
        !           394: NEWS for rsync 3.0.3 (29 Jun 2008)
        !           395: Protocol: 30 (unchanged)
        !           396: Changes since 3.0.2:
        !           397: 
        !           398:   BUG FIXES:
        !           399: 
        !           400:     - Fixed a wildcard matching problem in the daemon when a module has
        !           401:       "use chroot" enabled.
        !           402: 
        !           403:     - Fixed a crash bug in the hard-link code.
        !           404: 
        !           405:     - Fixed the sending of xattr directory information when the code finds a
        !           406:       --link-dest or --copy-dest directory with unchanged xattrs -- the
        !           407:       destination directory now gets these unchanged xattrs properly applied.
        !           408: 
        !           409:     - Fixed an xattr-sending glitch that could cause an "Internal abbrev"
        !           410:       error.
        !           411: 
        !           412:     - Fixed the combination of --xattrs and --backup.
        !           413: 
        !           414:     - The generator no longer allows a '.' dir to be excluded by a daemon-
        !           415:       exclude rule.
        !           416: 
        !           417:     - Fixed deletion handling when copying a single, empty directory (with no
        !           418:       files) to a differently named, non-existent directory.
        !           419: 
        !           420:     - Fixed the conversion of spaces into dashes in the %M log escape.
        !           421: 
        !           422:     - Fixed several places in the code that were not returning the right
        !           423:       errno when a function failed.
        !           424: 
        !           425:     - Fixed the backing up of a device or special file into a backup dir.
        !           426: 
        !           427:     - Moved the setting of the socket options prior to the connect().
        !           428: 
        !           429:     - If rsync exits in the middle of a --progress output, it now outputs a
        !           430:       newline to help prevent the progress line from being overwritten.
        !           431: 
        !           432:     - Fixed a problem with how a destination path with a trailing slash or
        !           433:       a trailing dot-dir was compared against the daemon excludes.
        !           434: 
        !           435:     - Fixed the sending of large (size > 16GB) files when talking to an older
        !           436:       rsync (protocols < 30):  we now use a compatible block size limit.
        !           437: 
        !           438:     - If a file's length is so huge that we overflow a checksum buffer count
        !           439:       (i.e. several hundred TB), warn the user and avoid sending an invalid
        !           440:       checksum struct over the wire.
        !           441: 
        !           442:     - If a source arg is excluded, --relative no longer adds the excluded
        !           443:       arg's implied dirs to the transfer.  This fix also made the exclude
        !           444:       check happen in the better place in the sending code.
        !           445: 
        !           446:     - Use the overflow_exit() function for overflows, not out_of_memory().
        !           447: 
        !           448:     - Improved the code to better handle a system that has only 32-bit file
        !           449:       offsets.
        !           450: 
        !           451:   ENHANCEMENTS:
        !           452: 
        !           453:     - The rsyncd.conf manpage now consistently refers to the parameters in
        !           454:       the daemon config file as "parameters".
        !           455: 
        !           456:     - The description of the --inplace option was improved.
        !           457: 
        !           458:   EXTRAS:
        !           459: 
        !           460:     - Added a new script in the support directory, deny-rsync, which allows
        !           461:       an admin to (temporarily) replace the rsync command with a script that
        !           462:       sends an error message to the remote client via the rsync protocol.
        !           463: 
        !           464:   DEVELOPER RELATED:
        !           465: 
        !           466:     - Fixed a testcase failure if the tests are run as root and made some
        !           467:       compatibility improvements.
        !           468: 
        !           469:     - Improved the daemon tests, including checking module comments, the
        !           470:       listing of files, and the ensuring that daemon excludes can't affect
        !           471:       a dot-dir arg.
        !           472: 
        !           473:     - Improved some build rules for those that build in a separate directory
        !           474:       from the source, including better install rules for the man pages, and
        !           475:       the fixing of a proto.h-tstamp rule that could make the binaries get
        !           476:       rebuild without cause.
        !           477: 
        !           478:     - Improved the testsuite to work around a problem with some utilities
        !           479:       (e.g. cp -p & touch -r) rounding sub-second timestamps.
        !           480: 
        !           481:     - Ensure that the early patches don't cause any generated-file hunks to
        !           482:       bleed-over into patches that follow.
        !           483: 
        !           484: 
        !           485: NEWS for rsync 3.0.2 (8 Apr 2008)
        !           486: Protocol: 30 (unchanged)
        !           487: Changes since 3.0.1:
        !           488: 
        !           489:   BUG FIXES:
        !           490: 
        !           491:     - Fixed a potential buffer overflow in the xattr code.
        !           492: 
        !           493:   ENHANCEMENTS:
        !           494: 
        !           495:     - None.
        !           496: 
        !           497:   DEVELOPER RELATED:
        !           498: 
        !           499:     - The RPM spec file was improved to install more useful files.
        !           500: 
        !           501:     - A few developer-oriented scripts were moved from the support dir
        !           502:       to the packaging dir.
        !           503: 
        !           504: 
        !           505: NEWS for rsync 3.0.1 (3 Apr 2008)
        !           506: Protocol: 30 (unchanged)
        !           507: Changes since 3.0.0:
        !           508: 
        !           509:   NOTABLE CHANGES IN BEHAVIOR:
        !           510: 
        !           511:     - Added the 'c'-flag to the itemizing of non-regular files so that the
        !           512:       itemized output doesn't get hidden if there were no attribute changes,
        !           513:       and also so that the itemizing of a --copy-links run will distinguish
        !           514:       between copying an identical non-regular file and the creation of a
        !           515:       revised version with a new value (e.g. a changed symlink referent, a
        !           516:       new device number, etc.).
        !           517: 
        !           518:   BUG FIXES:
        !           519: 
        !           520:     - Fixed a crash bug when a single-use rsync daemon (via remote shell) was
        !           521:       run without specifying a --config=FILE option.
        !           522: 
        !           523:     - Fixed a crash when backing up a directory that has a default ACL.
        !           524: 
        !           525:     - Fixed a bug in the handling of xattr values that could cause rsync to
        !           526:       not think that a file's extended attributes are up-to-date.
        !           527: 
        !           528:     - Fixed the working of --fake-super with --link-dest and --xattrs.
        !           529: 
        !           530:     - Fixed a hang when combining --dry-run with --remove-source-files.
        !           531: 
        !           532:     - Fixed a bug with --iconv's handling of files that cannot be converted:
        !           533:       a failed name can no longer cause a transfer failure.
        !           534: 
        !           535:     - Fixed the building of the rounding.h file on systems that need custom
        !           536:       CPPFLAGS to be used.  Also improved the error reporting if the building
        !           537:       of rounding.h fails.
        !           538: 
        !           539:     - Fixed the use of the --protect-args (-s) option when talking to a daemon.
        !           540: 
        !           541:     - Fixed the --ignore-existing option's protection of files on the receiver
        !           542:       that are non-regular files on the sender (e.g. if a symlink or a dir on
        !           543:       the sender is trying to replace a file on the receiver).  The reverse
        !           544:       protection (protecting a dir/symlink/device from being replaced by a
        !           545:       file) was already working.
        !           546: 
        !           547:     - Fixed an assert failure if --hard-links is combined with an option that
        !           548:       can skip a file in a set of hard-linked files (i.e. --ignore-existing,
        !           549:       --append, etc.), without skipping all the files in the set.
        !           550: 
        !           551:     - Avoid setting the modify time on a directory that already has the right
        !           552:       modify time set.  This avoids tweaking the dir's ctime.
        !           553: 
        !           554:     - Improved the daemon-exclude handling to do a better job of applying the
        !           555:       exclude rules to path entries.  It also sends the user an error just as
        !           556:       if the files were actually missing (instead of silently ignoring the
        !           557:       user's args), and avoids sending the user the filter-action messages
        !           558:       for these non-user-initiated rules.
        !           559: 
        !           560:     - Fixed some glitches with the dry-run code's missing-directory
        !           561:       handling, including a problem when combined with --fuzzy.
        !           562: 
        !           563:     - Fixed some glitches with the skipped-directory handling.
        !           564: 
        !           565:     - Fixed the 'T'-flag itemizing of symlinks when --time isn't preserved.
        !           566: 
        !           567:     - Fixed a glitch in the itemizing of permissions with the -E option.
        !           568: 
        !           569:     - The --append option's restricting of transfers to those that add data no
        !           570:       longer prevents the updating of non-content changes to otherwise up-to-
        !           571:       date files (i.e. those with the same content but differing permissions,
        !           572:       ownership, xattrs, etc.).
        !           573: 
        !           574:     - Don't allow --fake-super to be specified with -XX (double --xattrs)
        !           575:       because the options conflict.  If a daemon has "fake super" enabled,
        !           576:       it automatically downgrades a -XX request to -X.
        !           577: 
        !           578:     - Fixed a couple bugs in the parsing of daemon-config excludes that could
        !           579:       make a floating exclude rule get treated as matching an absolute path.
        !           580: 
        !           581:     - A daemon doesn't try to auto-refuse the "iconv" option if iconv-support
        !           582:       wasn't compiled in to the daemon (avoiding a warning in the logs).
        !           583: 
        !           584:     - Fixed the inclusion of per-dir merge files from implied dirs.
        !           585: 
        !           586:     - Fixed the support/rrsync script to work with the latest options that
        !           587:       rsync sends (including its flag-specifying use of -e to the server).
        !           588: 
        !           589:   ENHANCEMENTS:
        !           590: 
        !           591:     - Added the --old-dirs (--old-d) option to make it easier for a user to
        !           592:       ask for file-listings with older rsync versions (this is easier than
        !           593:       having to type "-r --exclude='/*/*'" manually).
        !           594: 
        !           595:     - When getting an error while asking an older rsync daemon for a file
        !           596:       listing, rsync will try to notice if the error is a rejection of the
        !           597:       --dirs (-d) option and let the user know how to work around the issue.
        !           598: 
        !           599:     - Added a few more --no-OPTION overrides.
        !           600: 
        !           601:     - Improved the documentation of the --append option.
        !           602: 
        !           603:     - Improved the documentation of the filter/exclude/include daemon
        !           604:       parameters.
        !           605: 
        !           606:   INTERNAL:
        !           607: 
        !           608:     - Fixed a couple minor bugs in the included popt library (ones which I
        !           609:       sent to the official popt project for inclusion in the 1.14 release).
        !           610: 
        !           611:     - Fixed a stat() call that should have been do_stat() so that the proper
        !           612:       normal/64-bit stat() function gets called.  (Was in an area that should
        !           613:       not have caused problems, though.)
        !           614: 
        !           615:     - Changed the file-glob code to do a directory scan without using the
        !           616:       "glob" and "glob.h".  This lets us do the globbing with less memory
        !           617:       churn, and also avoid adding daemon-excluded items to the returned
        !           618:       args.
        !           619: 
        !           620:   DEVELOPER RELATED:
        !           621: 
        !           622:     - The configure script tries to get the user's compiler to not warn about
        !           623:       unused function parameters if the build is not including one or more of
        !           624:       the ACL/xattrs/iconv features.
        !           625: 
        !           626:     - The configure script now has better checks for figuring out if the
        !           627:       included popt code should be used or not.
        !           628: 
        !           629:     - Fixed two testsuite glitches: avoid a failure if someone's "cd" command
        !           630:       outputs the current directory when cd-ing to a relative path, and made
        !           631:       the itemized test query how rsync was built to determine if it should
        !           632:       expect hard-linked symlinks or not.
        !           633: 
        !           634:     - Updated the testsuite to verify that various bug fixes remain fixed.
        !           635: 
        !           636:     - The RPM spec file was updated to have: (1) comments for how to use the
        !           637:       rsync-patch tar file, and (2) an /etc/xinetd.d/rsync file.
        !           638: 
        !           639:     - Updated the build scripts to work with a revised FTP directory
        !           640:       structure.
        !           641: 
        !           642: 
        !           643: NEWS for rsync 3.0.0 (1 Mar 2008)
        !           644: Protocol: 30 (changed)
        !           645: Changes since 2.6.9:
        !           646: 
        !           647:   NOTABLE CHANGES IN BEHAVIOR:
        !           648: 
        !           649:     - The handling of implied directories when using --relative has changed to
        !           650:       send them as directories (e.g. no implied dir is ever sent as a symlink).
        !           651:       This avoids unexpected behavior and should not adversely affect most
        !           652:       people.  If you're one of those rare individuals who relied upon having
        !           653:       an implied dir be duplicated as a symlink, you should specify the
        !           654:       transfer of the symlink and the transfer of the referent directory as
        !           655:       separate args.  (See also --keep-dirlinks and --no-implied-dirs.)
        !           656:       Also, exclude rules no longer have a partial effect on implied dirs.
        !           657: 
        !           658:     - Requesting a remote file-listing without specifying -r (--recursive) now
        !           659:       sends the -d (--dirs) option to the remote rsync rather than sending -r
        !           660:       along with an extra exclude of /*/*.  If the remote rsync does not
        !           661:       understand the -d option (i.e. it is 2.6.3 or older), you will need to
        !           662:       either turn off -d (--no-d), or specify  -r --exclude='/*/*'  manually.
        !           663: 
        !           664:     - In --dry-run mode, the last line of the verbose summary text is output
        !           665:       with a "(DRY RUN)" suffix to help remind you that no updates were made.
        !           666:       Similarly, --only-write-batch outputs "(BATCH ONLY)".
        !           667: 
        !           668:     - A writable rsync daemon with "use chroot" disabled now defaults to a
        !           669:       symlink-munging behavior designed to make symlinks safer while also
        !           670:       allowing absolute symlinks to be stored and retrieved.  This also has
        !           671:       the effect of making symlinks unusable while they're in the daemon's
        !           672:       hierarchy.  See the daemon's "munge symlinks" parameter for details.
        !           673: 
        !           674:     - Starting up an extra copy of an rsync daemon will not clobber the pidfile
        !           675:       for the running daemon -- if the pidfile exists, the new daemon will exit
        !           676:       with an error.  This means that your wrapper script that starts the rsync
        !           677:       daemon should be made to handle lock-breaking (if you want any automatic
        !           678:       breaking of locks to be done).
        !           679: 
        !           680:   BUG FIXES:
        !           681: 
        !           682:     - A daemon with "use chroot = no" and excluded items listed in the daemon
        !           683:       config file now properly checks an absolute-path arg specified for these
        !           684:       options:  --compare-dest, --link-dest, --copy-dest, --partial-dir,
        !           685:       --backup-dir, --temp-dir, and --files-from.
        !           686: 
        !           687:     - A daemon can now be told to disable all user- and group-name translation
        !           688:       on a per-module basis.  This avoids a potential problem with a writable
        !           689:       daemon module that has "use chroot" enabled -- if precautions weren't
        !           690:       taken, a user could try to add a missing library and get rsync to use
        !           691:       it.  This makes rsync safer by default, and more configurable when id-
        !           692:       translation is not desired.  See the daemon's "numeric ids" parameter
        !           693:       for full details.
        !           694: 
        !           695:     - A chroot daemon can now indicate which part of its path should affect the
        !           696:       chroot call, and which part should become an inside-chroot path for the
        !           697:       module.  This allows you to have outside-the-transfer paths (such as for
        !           698:       libraries) even when you enable chroot protection.  The idiom used in the
        !           699:       rsyncd.conf file is:  path = /chroot/dirs/./dirs/inside
        !           700: 
        !           701:     - If a file's data arrived successfully on the receiving side but the
        !           702:       rename of the temporary file to the destination file failed AND the
        !           703:       --remove-source-files (or the deprecated --remove-sent-files) option
        !           704:       was specified, rsync no longer erroneously removes the associated
        !           705:       source file.
        !           706: 
        !           707:     - Fixed the output of -ii when combined with one of the --*-dest options:
        !           708:       it now itemizes all the items, not just the changed ones.
        !           709: 
        !           710:     - Made the output of all file types consistent when using a --*-dest
        !           711:       option.  Prior versions would output too many creation events for
        !           712:       matching items.
        !           713: 
        !           714:     - The code that waits for a child pid now handles being interrupted by a
        !           715:       signal.  This fixes a problem with the pre-xfer exec function not being
        !           716:       able to get the exit status from the script.
        !           717: 
        !           718:     - A negated filter rule (i.e. with a '!' modifier) no longer loses the
        !           719:       negation when sending the filter rules to the remote rsync.
        !           720: 
        !           721:     - Fixed a problem with the --out-format (aka --log-format) option %f:  it
        !           722:       no longer outputs superfluous directory info for a non-daemon rsync.
        !           723: 
        !           724:     - Fixed a problem with -vv (double --verbose) and --stats when "pushing"
        !           725:       files (which includes local copies).  Version 2.6.9 would complete the
        !           726:       copy, but exit with an error when the receiver output its memory stats.
        !           727: 
        !           728:     - If --password-file is used on a non-daemon transfer, rsync now complains
        !           729:       and exits.  This should help users figure out that they can't use this
        !           730:       option to control a remote shell's password prompt.
        !           731: 
        !           732:     - Make sure that directory permissions of a newly-created destination
        !           733:       directory are handled right when --perms is left off.
        !           734: 
        !           735:     - The itemized output of a newly-created destination directory is now
        !           736:       output as a creation event, not a change event.
        !           737: 
        !           738:     - Improved --hard-link so that more corner cases are handled correctly
        !           739:       when combined with options such as --link-dest and/or --ignore-existing.
        !           740: 
        !           741:     - The --append option no longer updates a file that has the same size.
        !           742: 
        !           743:     - Fixed a bug when combining --backup and --backup-dir with --inplace:
        !           744:       any missing backup directories are now created.
        !           745: 
        !           746:     - Fixed a bug when using --backup and --inplace with --whole-file or
        !           747:       --read-batch: backup files are actually created now.
        !           748: 
        !           749:     - The daemon pidfile is checked and created sooner in the startup sequence.
        !           750: 
        !           751:     - If a daemon module's "path" value is not an absolute pathname, the code
        !           752:       now makes it absolute internally (making it work properly).
        !           753: 
        !           754:     - Ensure that a temporary file always has owner-write permission while we
        !           755:       are writing to it.  This avoids problems with some network filesystems
        !           756:       when transfering read-only files.
        !           757: 
        !           758:     - Any errors output about password-file reading no longer cause an error at
        !           759:       the end of the run about a partial transfer.
        !           760: 
        !           761:     - The --read-batch option for protocol 30 now ensures that several more
        !           762:       options are set correctly for the current batch file:  --iconv, --acls,
        !           763:       --xattrs, --inplace, --append, and --append-verify.
        !           764: 
        !           765:     - Using --only-write-batch to a daemon receiver now works properly (older
        !           766:       versions would update some files while writing the batch).
        !           767: 
        !           768:     - Avoid outputting a "file has vanished" message when the file is a broken
        !           769:       symlink and --copy-unsafe-links or --copy-dirlinks is used (the code
        !           770:       already handled this for --copy-links).
        !           771: 
        !           772:     - Fixed the combination of --only-write-batch and --dry-run.
        !           773: 
        !           774:     - Fixed rsync's ability to remove files that are not writable by the file's
        !           775:       owner when rsync is running as the same user.
        !           776: 
        !           777:     - When transferring large files, the sender's hashtable of checksums is
        !           778:       kept at a more reasonable state of fullness (no more than 80% full) so
        !           779:       that the scanning of the hashtable will not bog down as the number of
        !           780:       blocks increases.
        !           781: 
        !           782:   ENHANCEMENTS:
        !           783: 
        !           784:     - A new incremental-recursion algorithm is now used when rsync is talking
        !           785:       to another 3.x version.  This starts the transfer going more quickly
        !           786:       (before all the files have been found), and requires much less memory.
        !           787:       See the --recursive option in the manpage for some restrictions.
        !           788: 
        !           789:     - Lowered memory use in the non-incremental-recursion algorithm for typical
        !           790:       option values (usually saving from 21-29 bytes per file).
        !           791: 
        !           792:     - The default --delete algorithm is now --delete-during when talking to a
        !           793:       3.x rsync.  This is a faster scan than using --delete-before (which is
        !           794:       the default when talking to older rsync versions), and is compatible with
        !           795:       the new incremental recursion mode.
        !           796: 
        !           797:     - Rsync now allows multiple remote-source args to be specified rather than
        !           798:       having to rely on a special space-splitting side-effect of the remote-
        !           799:       shell.  Additional remote args must specify the same host or an empty one
        !           800:       (e.g. empty:  :file1  or  ::module/file2).  For example, this means that
        !           801:       local use of brace expansion now works:  rsync -av host:dir/{f1,f2} .
        !           802: 
        !           803:     - Added the --protect-args (-s) option, that tells rsync to send most of
        !           804:       the command-line args at the start of the transfer rather than as args
        !           805:       to the remote-shell command.  This protects them from space-splitting,
        !           806:       and only interprets basic wildcard special shell characters (*?[).
        !           807: 
        !           808:     - Added the --delete-delay option, which is a more efficient way to delete
        !           809:       files at the end of the transfer without needing a separate delete pass.
        !           810: 
        !           811:     - Added the --acls (-A) option to preserve Access Control Lists.  This is
        !           812:       an improved version of the prior patch that was available, and it even
        !           813:       supports OS X ACLs.  If you need to have backward compatibility with old,
        !           814:       ACL-patched versions of rsync, apply the acls.diff file from the patches
        !           815:       dir.
        !           816: 
        !           817:     - Added the --xattrs (-X) option to preserve extended attributes.  This is
        !           818:       an improved version of the prior patch that was available, and it even
        !           819:       supports OS X xattrs (which includes their resource fork data).  If you
        !           820:       need to have backward compatibility with old, xattr-patched versions of
        !           821:       rsync, apply the xattrs.diff file from the patches dir.
        !           822: 
        !           823:     - Added the --fake-super option that allows a non-super user to preserve
        !           824:       all attributes of a file by using a special extended-attribute idiom.
        !           825:       It even supports the storing of foreign ACL data on your backup server.
        !           826:       There is also an analogous "fake super" parameter for an rsync daemon.
        !           827: 
        !           828:     - Added the --iconv option, which allows rsync to convert filenames from
        !           829:       one character-set to another during the transfer.  The default is to
        !           830:       make this feature available as long as your system has iconv_open().
        !           831:       If compilation fails, specify --disable-iconv to configure, and then
        !           832:       rebuild.  If you want rsync to perform character-set conversions by
        !           833:       default, you can specify --enable-iconv=CONVERT_STRING with the default
        !           834:       value for the --iconv option that you wish to use.  For example,
        !           835:       "--enable-iconv=." is a good choice.  See the rsync manpage for an
        !           836:       explanation of the --iconv option's settings.
        !           837: 
        !           838:     - A new daemon config parameter, "charset", lets you control the character-
        !           839:       set that is used during an --iconv transfer to/from a daemon module.  You
        !           840:       can also set your daemon to refuse "no-iconv" if you want to force the
        !           841:       client to use an --iconv transfer (requiring an rsync 3.x client).
        !           842: 
        !           843:     - Added the --skip-compress=LIST option to override the default list of
        !           844:       file suffixes that will not be compressed when using --compress (-z).
        !           845: 
        !           846:     - The daemon's default for "dont compress" was extended to include:
        !           847:          *.7z *.mp[34] *.mov *.avi *.ogg *.jpg *.jpeg
        !           848:       The name-matching routine was also optimized to run more quickly.
        !           849: 
        !           850:     - The --max-delete option now outputs a warning if it skipped any file
        !           851:       deletions, including a count of how many deletions were skipped.  (Older
        !           852:       versions just silently stopped deleting things.)
        !           853: 
        !           854:     - You may specify --max-delete=0 to a 3.0.0 client to request that it warn
        !           855:       about extraneous files without deleting anything.  If you're not sure
        !           856:       what version the client is, you can use the less-obvious --max-delete=-1,
        !           857:       as both old and new versions will treat that as the same request (though
        !           858:       older versions don't warn).
        !           859: 
        !           860:     - The --hard-link option now uses less memory on both the sending and
        !           861:       receiving side for all protocol versions.  For protocol 30, the use of a
        !           862:       hashtable on the sending side allows us to more efficiently convey to the
        !           863:       receiver what files are linked together.  This reduces the amount of data
        !           864:       sent over the socket by a considerable margin (rather than adding more
        !           865:       data), and limits the in-memory storage of the device+inode information
        !           866:       to just the sending side for the new protocol 30, or to the receiving
        !           867:       side when speaking an older protocol (note that older rsync versions kept
        !           868:       the device+inode information on both sides).
        !           869: 
        !           870:     - The filter rules now support a perishable ("p") modifier that marks rules
        !           871:       that should not have an effect in a directory that is being deleted.  e.g.
        !           872:       -f '-p .svn/' would only affect "live" .svn directories.
        !           873: 
        !           874:     - Rsync checks all the alternate-destination args for validity (e.g.
        !           875:       --link-dest).  This lets the user know when they specified a directory
        !           876:       that does not exist.
        !           877: 
        !           878:     - If we get an ENOSYS error setting the time on a symlink, we don't
        !           879:       complain about it anymore (for those systems that even support the
        !           880:       setting of the modify-time on a symlink).
        !           881: 
        !           882:     - Protocol 30 now uses MD5 checksums instead of MD4.
        !           883: 
        !           884:     - Changed the --append option to not checksum the existing data in the
        !           885:       destination file, which speeds up file appending.
        !           886: 
        !           887:     - Added the --append-verify option, which works like the older --append
        !           888:       option (verifying the existing data in the destination file).  For
        !           889:       compatibility with older rsync versions, any use of --append that is
        !           890:       talking protocol 29 or older will revert to the --append-verify method.
        !           891: 
        !           892:     - Added the --contimeout=SECONDS option that lets the user specify a
        !           893:       connection timeout for rsync daemon access.
        !           894: 
        !           895:     - Documented and extended the support for the RSYNC_CONNECT_PROG variable
        !           896:       that can be used to enhance the client side of a daemon connection.
        !           897: 
        !           898:     - Improved the dashes and double-quotes in the nroff manpage output.
        !           899: 
        !           900:     - Rsync now supports a lot more --no-OPTION override options.
        !           901: 
        !           902:   INTERNAL:
        !           903: 
        !           904:     - The file-list sorting algorithm now uses a sort that keeps any same-
        !           905:       named items in the same order as they were specified.  This allows
        !           906:       rsync to always ensure that the first of the duplicates is the one
        !           907:       that will be included in the copy.  The new sort is also faster
        !           908:       than the glibc version of qsort() and mergesort().
        !           909: 
        !           910:     - Rsync now supports the transfer of 64-bit timestamps (time_t values).
        !           911: 
        !           912:     - Made the file-deletion code use a little less stack when recursing
        !           913:       through a directory hierarchy of extraneous files.
        !           914: 
        !           915:     - Fixed a build problem with older (2.x) versions of gcc.
        !           916: 
        !           917:     - Added some isType() functions that make dealing with signed characters
        !           918:       easier without forcing variables via casts.
        !           919: 
        !           920:     - Changed strcat/strcpy/sprintf function calls to use safer versions.
        !           921: 
        !           922:     - Upgraded the included popt version to 1.10.2 and improved its use of
        !           923:       string-handling functions.
        !           924: 
        !           925:     - Added missing prototypes for compatibility functions from the lib dir.
        !           926: 
        !           927:     - Configure determines if iconv() has a const arg, allowing us to avoid a
        !           928:       compiler warning.
        !           929: 
        !           930:     - Made the sending of some numbers more efficient for protocol 30.
        !           931: 
        !           932:     - Make sure that a daemon process doesn't mind if the client was weird and
        !           933:       omitted the --server option.
        !           934: 
        !           935:     - There are more internal logging categories available in protocol 30 than
        !           936:       the age-old FINFO and FERROR, including FERROR_XFER and FWARN.  These new
        !           937:       categories allow some errors and warnings to go to stderr without causing
        !           938:       an erroneous end-of-run warning about some files not being able to be
        !           939:       transferred.
        !           940: 
        !           941:     - Improved the use of "const" on pointers.
        !           942: 
        !           943:     - Improved J.W.'s pool_alloc routines to add a way of incrementally freeing
        !           944:       older sections of a pool's memory.
        !           945: 
        !           946:     - The getaddrinfo.c compatibility code in the "lib" dir was replaced with
        !           947:       some new code (derived from samba, derived from PostgreSQL) that has a
        !           948:       better license than the old code.
        !           949: 
        !           950:   DEVELOPER RELATED:
        !           951: 
        !           952:     - Rsync is now licensed under the GPLv3 or later.
        !           953: 
        !           954:     - Rsync is now being maintained in a "git" repository instead of CVS
        !           955:       (though the old CVS repository still exists for historical access).
        !           956:       Several maintenance scripts were updated to work with git.
        !           957: 
        !           958:     - Generated files are no longer committed into the source repository.  The
        !           959:       autoconf and autoheader commands are now automatically run during the
        !           960:       normal use of "configure" and "make".  The latest dev versions of all
        !           961:       generated files can also be copied from the samba.org web site (see the
        !           962:       prepare-source script's fetch option).
        !           963: 
        !           964:     - The "patches" directory of diff files is now built from branches in the
        !           965:       rsync git repository (branch patch/FOO creates file patches/FOO.diff).
        !           966:       This directory is now distributed in a separate separate tar file named
        !           967:       rsync-patches-VERSION.tar.gz instead of the main rsync-VERSION.tar.gz.
        !           968: 
        !           969:     - The proto.h file is now built using a simple perl script rather than a
        !           970:       complex awk script, which proved to be more widely compatible.
        !           971: 
        !           972:     - When running the tests, we now put our per-test temp dirs into a sub-
        !           973:       directory named testtmp (which is created, if missing).  This allows
        !           974:       someone to symlink the testtmp directory to another filesystem (which is
        !           975:       useful if the build dir's filesystem does not support ACLs and xattrs,
        !           976:       but another filesystem does).
        !           977: 
        !           978:     - Rsync now has a way of handling protocol-version changes during the
        !           979:       development of a new protocol version.  This causes any out-of-sync
        !           980:       versions to speak an older protocol rather than fail in a cryptic manner.
        !           981:       This addition makes it safer to deploy a pre-release version that may
        !           982:       interact with the public.  This new exchange of sub-version info does not
        !           983:       interfere with the {MIN,MAX}_PROTOCOL_VERSION checking algorithm (which
        !           984:       does not have enough range to allow the main protocol number to be
        !           985:       incremented for every minor tweak in that happens during development).
        !           986: 
        !           987:     - The csprotocol.txt file was updated to mention the daemon protocol change
        !           988:       in the 3.0.0 release.
        !           989: 
        !           990: 
        !           991: NEWS for rsync 2.6.9 (6 Nov 2006)
        !           992: Protocol: 29 (unchanged)
        !           993: Changes since 2.6.8:
        !           994: 
        !           995:   BUG FIXES:
        !           996: 
        !           997:     - If rsync is interrupted via a handled signal (such as SIGINT), it will
        !           998:       once again clean-up its temp file from the destination dir.
        !           999: 
        !          1000:     - Fixed an overzealous sanitizing bug in the handling of the --link-dest,
        !          1001:       --copy-dest, and --compare-dest options to a daemon without chroot: if
        !          1002:       the copy's destination dir is deeper than the top of the module's path,
        !          1003:       these options now accept a safe number of parent-dir (../) references
        !          1004:       (since these options are relative to the destination dir).  The old code
        !          1005:       incorrectly chopped off all "../" prefixes for these options, no matter
        !          1006:       how deep the destination directory was in the module's hierarchy.
        !          1007: 
        !          1008:     - Fixed a bug where a deferred info/error/log message could get sent
        !          1009:       directly to the sender instead of being handled by rwrite() in the
        !          1010:       generator.  This fixes an "unexpected tag 3" fatal error, and should
        !          1011:       also fix a potential problem where a deferred info/error message from
        !          1012:       the receiver might bypass the log file and get sent only to the client
        !          1013:       process.  (These problems could only affect an rsync daemon that was
        !          1014:       receiving files.)
        !          1015: 
        !          1016:     - Fixed a bug when --inplace was combined with a --*-dest option and we
        !          1017:       update a file's data using an alternate basis file.  The code now
        !          1018:       notices that it needs to copy the matching data from the basis file
        !          1019:       instead of (wrongly) assuming that it was already present in the file.
        !          1020: 
        !          1021:     - Fixed a bug where using --dry-run with a --*-dest option with a path
        !          1022:       relative to a directory that does not yet exist:  the affected option
        !          1023:       gets its proper path value so that the output of the dry-run is right.
        !          1024: 
        !          1025:     - Fixed a bug in the %f logfile escape when receiving files: the
        !          1026:       destination path is now included in the output (e.g. you can now tell
        !          1027:       when a user specifies a subdir inside a module).
        !          1028: 
        !          1029:     - If the receiving side fails to create a directory, it will now skip
        !          1030:       trying to update everything that is inside that directory.
        !          1031: 
        !          1032:     - If --link-dest is specified with --checksum but without --times, rsync
        !          1033:       will now allow a hard-link to be created to a matching link-dest file
        !          1034:       even when the file's modify-time doesn't match the server's file.
        !          1035: 
        !          1036:     - The daemon now calls more timezone-using functions prior to doing a
        !          1037:       chroot.  This should help some C libraries to generate proper timestamps
        !          1038:       from inside a chrooted daemon (and to not try to access /etc/timezone
        !          1039:       over and over again).
        !          1040: 
        !          1041:     - Fixed a bug in the handling of an absolute --partial-dir=ABS_PATH option:
        !          1042:       it now deletes an alternate basis file from the partial-dir that was used
        !          1043:       to successfully update a destination file.
        !          1044: 
        !          1045:     - Fixed a bug in the handling of --delete-excluded when using a per-dir
        !          1046:       merge file:  the merge file is now honored on the receiving side, and
        !          1047:       only its unqualified include/exclude commands are ignored (just as is
        !          1048:       done for global include/excludes).
        !          1049: 
        !          1050:     - Fixed a recent bug where --delete was not working when transferring from
        !          1051:       the root (/) of the filesystem with --relative enabled.
        !          1052: 
        !          1053:     - Fixed a recent bug where an --exclude='*' could affect the root (/) of
        !          1054:       the filesystem with --relative enabled.
        !          1055: 
        !          1056:     - When --inplace creates a file, it is now created with owner read/write
        !          1057:       permissions (0600) instead of no permissions at all.  This avoids a
        !          1058:       problem continuing a transfer that was interrupted (since --inplace
        !          1059:       will not update a file that has no write permissions).
        !          1060: 
        !          1061:     - If either --remove-source-files or --remove-sent-files is enabled and we
        !          1062:       are unable to remove the source file, rsync now outputs an error.
        !          1063: 
        !          1064:     - Fixed a bug in the daemon's "incoming chmod" rule:  newly-created
        !          1065:       directories no longer get the 'F' (file) rules applied to them.
        !          1066: 
        !          1067:     - Fixed an infinite loop bug when a filter rule was rejected due to being
        !          1068:       overly long.
        !          1069: 
        !          1070:     - When the server receives a --partial-dir option from the client, it no
        !          1071:       longer runs the client-side code that adds an assumed filter rule (since
        !          1072:       the client will be sending us the rules in the usual manner, and they
        !          1073:       may have chosen to override the auto-added rule).
        !          1074: 
        !          1075:   ENHANCEMENTS:
        !          1076: 
        !          1077:     - Added the --log-file=FILE and --log-file-format=FORMAT options.  These
        !          1078:       can be used to tell any rsync to output what it is doing to a log file.
        !          1079:       They work with a client rsync, a non-daemon server rsync (see the man
        !          1080:       page for instructions), and also allows the overriding of rsyncd.conf
        !          1081:       settings when starting a daemon.
        !          1082: 
        !          1083:     - The --log-format option was renamed to be --out-format to avoid confusing
        !          1084:       it with affecting the log-file output.  (The old option remains as an
        !          1085:       alias for the new to preserve backward compatibility.)
        !          1086: 
        !          1087:     - Made "log file" and "syslog facility" settable on a per-module basis in
        !          1088:       the daemon's config file.
        !          1089: 
        !          1090:     - Added the --remove-source-files option as a replacement for the (now
        !          1091:       deprecated) --remove-sent-files option.  This new option removes all
        !          1092:       non-dirs from the source directories, even if the file was already
        !          1093:       up-to-date.  This fixes a problem where interrupting an rsync that
        !          1094:       was using --remove-sent-files and restarting it could leave behind
        !          1095:       a file that the earlier rsync synchronized, but didn't get to remove.
        !          1096:       (The deprecated --remove-sent-files is still understood for now, and
        !          1097:       still behaves in the same way as before.)
        !          1098: 
        !          1099:     - Added the option --no-motd to suppress the message-of-the-day output
        !          1100:       from a daemon when doing a copy.  (See the manpage for a caveat.)
        !          1101: 
        !          1102:     - Added a new environment variable to the pre-/post-xfer exec commands (in
        !          1103:       the daemon's config file):  RSYNC_PID.  This value will be the same in
        !          1104:       both the pre- and post-xfer commands, so it can be used as a unique ID
        !          1105:       if the pre-xfer command wants to cache some arg/request info for the
        !          1106:       post-xfer command.
        !          1107: 
        !          1108:   INTERNAL:
        !          1109: 
        !          1110:     - Did a code audit using IBM's code-checker program and made several
        !          1111:       changes, including: replacing most of the strcpy() and sprintf()
        !          1112:       calls with strlcpy(), snprintf(), and memcpy(), adding a 0-value to
        !          1113:       an enum that had been intermingling a literal 0 with the defined enum
        !          1114:       values, silencing some uninitialized memory checks, marking some
        !          1115:       functions with a "noreturn" attribute, and changing an "if" that
        !          1116:       could never succeed on some platforms into a pre-processor directive
        !          1117:       that conditionally compiles the code.
        !          1118: 
        !          1119:     - Fixed a potential bug in f_name_cmp() when both the args are a
        !          1120:       top-level "." dir (which doesn't happen in normal operations).
        !          1121: 
        !          1122:     - Changed exit_cleanup() so that it can never return instead of exit.
        !          1123:       The old code might return if it found the exit_cleanup() function
        !          1124:       was being called recursively.  The new code is segmented so that
        !          1125:       any recursive calls move on to the next step of the exit-processing.
        !          1126: 
        !          1127:     - The macro WIFEXITED(stat) will now be defined if the OS didn't already
        !          1128:       define it.
        !          1129: 
        !          1130:   DEVELOPER RELATED:
        !          1131: 
        !          1132:     - The acls.diff and xattrs.diff patches have received a bunch of work to
        !          1133:       make them much closer to being acceptable in the main distribution.
        !          1134:       The xattrs patch also has some preliminary Mac OS X and FreeBSD
        !          1135:       compatibility code that various system types to exchange extended
        !          1136:       file-attributes.
        !          1137: 
        !          1138:     - A new diff in the patches dir, fake-root.diff, allows rsync to
        !          1139:       maintain a backup hierarchy with full owner, group, and device info
        !          1140:       without actually running as root.  It does this using a special
        !          1141:       extended attribute, so it depends on xattrs.diff (which depends on
        !          1142:       acls.diff).
        !          1143: 
        !          1144:     - The rsync.yo and rsyncd.conf.yo files have been updated to work
        !          1145:       better with the latest yodl 2.x releases.
        !          1146: 
        !          1147:     - Updated config.guess and config.sub to their 2006-07-02 versions.
        !          1148: 
        !          1149:     - Updated various files to include the latest FSF address and to have
        !          1150:       consistent opening comments.
        !          1151: 
        !          1152: 
        !          1153: NEWS for rsync 2.6.8 (22 Apr 2006)
        !          1154: Protocol: 29 (unchanged)
        !          1155: Changes since 2.6.7:
        !          1156: 
        !          1157:   BUG FIXES:
        !          1158: 
        !          1159:     - Fixed a bug in the exclude code where an anchored exclude without any
        !          1160:       wildcards fails to match an absolute source arg, but only when --relative
        !          1161:       is in effect.
        !          1162: 
        !          1163:     - Improved the I/O code for the generator to fix a potential hang when the
        !          1164:       receiver gets an EOF on the socket but the generator's select() call
        !          1165:       never indicates that the socket is writable for it to be notified about
        !          1166:       the EOF.  (This can happen when using stunnel).
        !          1167: 
        !          1168:     - Fixed a problem with the file-reading code where a failed read (such as
        !          1169:       that caused by a bad sector) would not advance the file's read-position
        !          1170:       beyond the failed read's data.
        !          1171: 
        !          1172:     - Fixed a logging bug where the "log file" directive was not being honored
        !          1173:       in a single-use daemon (one spawned by a remote-shell connection or by
        !          1174:       init).
        !          1175: 
        !          1176:     - If rsync cannot honor the --delete option, we output an error and exit
        !          1177:       instead of silently ignoring the option.
        !          1178: 
        !          1179:     - Fixed a bug in the --link-dest code that prevented special files (such as
        !          1180:       fifos) from being linked.
        !          1181: 
        !          1182:     - The ability to hard-link symlinks and special files is now determined at
        !          1183:       configure time instead of at runtime.  This fixes a bug with --link-dest
        !          1184:       creating a hard-link to a symlink's referent on a BSD system.
        !          1185: 
        !          1186:   ENHANCEMENTS:
        !          1187: 
        !          1188:     - In daemon mode, if rsync fails to bind to the requested port, the
        !          1189:       error(s) returned by socket() and/or bind() are now logged.
        !          1190: 
        !          1191:     - When we output a fatal error, we now output the version of rsync in the
        !          1192:       message.
        !          1193: 
        !          1194:     - Improved the documentation for the --owner and --group options.
        !          1195: 
        !          1196:     - The rsyncstats script in "support" has an improved line-parsing regex
        !          1197:       that is easier to read and also makes it to parse syslog-generated lines.
        !          1198: 
        !          1199:     - A new script in "support": file-attr-restore, can be used to restore the
        !          1200:       attributes of a file-set (the permissions, ownership, and group info)
        !          1201:       taken from the cached output of a "find ARG... -ls" command.
        !          1202: 
        !          1203:   DEVELOPER RELATED:
        !          1204: 
        !          1205:     - Removed the unused function write_int_named(), the unused variable
        !          1206:       io_read_phase, and the rarely used variable io_write_phase.  This also
        !          1207:       elides the confusing 'phase "unknown"' part of one error message.
        !          1208: 
        !          1209:     - Removed two unused configure checks and two related (also unused)
        !          1210:       compatibility functions.
        !          1211: 
        !          1212:     - The xattrs.diff patch received a security fix that prevents a potential
        !          1213:       buffer overflow in the receive_xattr() code.
        !          1214: 
        !          1215:     - The acls.diff patch has been improved quite a bit, with more to come.
        !          1216: 
        !          1217:     - A new patch was added: log-file.diff.  This contains an early version of
        !          1218:       a future option, --log-file=FILE, that will allow any rsync to log its
        !          1219:       actions to a file (something that only a daemon supports at present).
        !          1220: 
        !          1221: 
        !          1222: NEWS for rsync 2.6.7 (11 Mar 2006)
        !          1223: Protocol: 29 (unchanged)
        !          1224: Changes since 2.6.6:
        !          1225: 
        !          1226:   OUTPUT CHANGES:
        !          1227: 
        !          1228:     - The letter 'D' in the itemized output was being used for both devices
        !          1229:       (character or block) as well as other special files (such as fifos and
        !          1230:       named sockets).  This has changed to separate non-device special files
        !          1231:       under the 'S' designation (e.g. "cS+++++++ path/fifo").  See also the
        !          1232:       "--specials" option, below.
        !          1233: 
        !          1234:     - The way rsync escapes unreadable characters has changed.  First, rsync
        !          1235:       now has support for recognizing valid multibyte character sequences in
        !          1236:       your current locale, allowing it to escape fewer characters than before
        !          1237:       for a locale such as UTF-8.  Second, it now uses an escape idiom of
        !          1238:       "\#123", which is the literal string "\#" followed by exactly 3 octal
        !          1239:       digits.  Rsync no longer doubles a backslash character in a filename
        !          1240:       (e.g. it used to output "foo\\bar" when copying "foo\bar") -- now it only
        !          1241:       escapes a backslash that is followed by a hash-sign and 3 digits (0-9)
        !          1242:       (e.g. it will output "foo\#134#789" when copying "foo\#789").  See also
        !          1243:       the --8-bit-output (-8) option, mentioned below.
        !          1244: 
        !          1245:       Script writers: the local rsync is the one that outputs escaped names,
        !          1246:       so if you need to support unescaping of filenames for older rsyncs, I'd
        !          1247:       suggest that you parse the output of "rsync --version" and only use the
        !          1248:       old unescaping rules for 2.6.5 and 2.6.6.
        !          1249: 
        !          1250:   BUG FIXES:
        !          1251: 
        !          1252:     - Fixed a really old bug that caused --checksum (-c) to checksum all the
        !          1253:       files encountered during the delete scan (ouch).
        !          1254: 
        !          1255:     - Fixed a potential hang in a remote generator:  when the receiver gets a
        !          1256:       read-error on the socket, it now signals the generator about this so that
        !          1257:       the generator does not try to send any of the terminating error messages
        !          1258:       to the client (avoiding a potential hang in some setups).
        !          1259: 
        !          1260:     - Made hard-links work with symlinks and devices again.
        !          1261: 
        !          1262:     - If the sender gets an early EOF reading a source file, we propagate this
        !          1263:       error to the receiver so that it can discard the file and try requesting
        !          1264:       it again (which is the existing behavior for other kinds of read errors).
        !          1265: 
        !          1266:     - If a device-file/special-file changes permissions, rsync now updates the
        !          1267:       permissions without recreating the file.
        !          1268: 
        !          1269:     - If the user specifies a remote-host for both the source and destination,
        !          1270:       we now output a syntax error rather than trying to open the destination
        !          1271:       hostspec as a filename.
        !          1272: 
        !          1273:     - When --inplace creates a new destination file, rsync now creates it with
        !          1274:       permissions 0600 instead of 0000 -- this makes restarting possible when
        !          1275:       the transfer gets interrupted in the middle of sending a new file.
        !          1276: 
        !          1277:     - Reject the combination of --inplace and --sparse since the sparse-output
        !          1278:       algorithm doesn't work when overwriting existing data.
        !          1279: 
        !          1280:     - Fixed the directory name in the error that is output when pop_dir()
        !          1281:       fails.
        !          1282: 
        !          1283:     - Really fixed the parsing of a "!" entry in .cvsignore files this time.
        !          1284: 
        !          1285:     - If the generator gets a stat() error on a file, output it (this used to
        !          1286:       require at least -vv for the error to be seen).
        !          1287: 
        !          1288:     - If waitpid() fails or the child rsync didn't exit cleanly, we now handle
        !          1289:       the exit status properly and generate a better error.
        !          1290: 
        !          1291:     - Fixed some glitches in the double-verbose output when using --copy-dest,
        !          1292:       --link-dest, or --compare-dest.  Also improved how the verbose output
        !          1293:       handles hard-links (within the transfer) that had an up-to-date alternate
        !          1294:       "dest" file, and copied files (via --copy-dest).
        !          1295: 
        !          1296:     - Fixed the matching of the dont-compress items (e.g. *.gz) against files
        !          1297:       that have a path component containing a slash.
        !          1298: 
        !          1299:     - If the code reading a filter/exclude file gets an EINTR error, rsync now
        !          1300:       clears the error flag on the file handle so it can keep on reading.
        !          1301: 
        !          1302:     - If --relative is active, the sending side cleans up trailing "/" or "/."
        !          1303:       suffixes to avoid triggering a bug in older rsync versions.  Also, we now
        !          1304:       reject a ".." dir if it would be sent as a relative dir.
        !          1305: 
        !          1306:     - If a non-directory is in the way of a directory and rsync is run with
        !          1307:       --dry-run and --delete, rsync no longer complains about not being able
        !          1308:       to opendir() the not-yet present directory.
        !          1309: 
        !          1310:     - When --list-only is used and a non-existent local destination dir was
        !          1311:       also specified as a destination, rsync no longer generates a warning
        !          1312:       about being unable to create the missing directory.
        !          1313: 
        !          1314:     - Fixed some problems with --relative --no-implied-dirs when the
        !          1315:       destination directory did not yet exist:  we can now create a symlink or
        !          1316:       device when it is the first thing in the missing dir, and --fuzzy no
        !          1317:       longer complains about being unable to open the missing dir.
        !          1318: 
        !          1319:     - Fixed a bug where the --copy-links option would not affect implied
        !          1320:       directories without --copy-unsafe-links (see --relative).
        !          1321: 
        !          1322:     - Got rid of the need for --force to be used in some circumstances with
        !          1323:       --delete-after (making it consistent with --delete-before/-during).
        !          1324: 
        !          1325:     - Rsync now ignores the SIGXFSZ signal, just in case your OS sends this
        !          1326:       when a file is too large (rsync handles the write error).
        !          1327: 
        !          1328:     - Fixed a bug in the Proxy-Authorization header's base64-encoded value: it
        !          1329:       was not properly padded with trailing '=' chars.  This only affects a
        !          1330:       user that need to use a password-authenticated proxy for an outgoing
        !          1331:       daemon-rsync connection.
        !          1332: 
        !          1333:     - If we're transferring an empty directory to a new name, rsync no longer
        !          1334:       forces S_IWUSR if it wasn't already set, nor does it accidentally leave
        !          1335:       it set.
        !          1336: 
        !          1337:     - Fixed a bug in the debug output (-vvvvv) that could mention the wrong
        !          1338:       checksum for the current file offset.
        !          1339: 
        !          1340:     - Rsync no longer allows a single directory to be copied over a non-
        !          1341:       directory destination arg.
        !          1342: 
        !          1343:   ENHANCEMENTS:
        !          1344: 
        !          1345:     - Added the --append option that makes rsync append data onto files that
        !          1346:       are longer on the source than the destination (this includes new files).
        !          1347: 
        !          1348:     - Added the --min-size=SIZE option to exclude small files from the
        !          1349:       transfer.
        !          1350: 
        !          1351:     - Added the --compress-level option to allow you to set how aggressive
        !          1352:       rsync's compression should be (this option implies --compress).
        !          1353: 
        !          1354:     - Enhanced the parsing of the SIZE value for --min-size and --max-size to
        !          1355:       allow easy entry of multiples of 1000 (instead of just multiples of 1024)
        !          1356:       and off-by-one values too (e.g. --max-size=8mb-1).
        !          1357: 
        !          1358:     - Added the --8-bit-output (-8) option, which tells rsync to avoid escaping
        !          1359:       high-bit characters that it thinks are unreadable in the current locale.
        !          1360: 
        !          1361:     - The new option --human-readable (-h) changes the output of --progress,
        !          1362:       --stats, and the end-of-run summary to be easier to read.  If repeated,
        !          1363:       the units become powers of 1024 instead of powers of 1000.  (The old
        !          1364:       meaning of -h, as a shorthand for --help, still works as long as you
        !          1365:       just use it on its own, as in "rsync -h".)
        !          1366: 
        !          1367:     - If lutimes() and/or lchmod() are around, use them to allow the
        !          1368:       preservation of attributes on symlinks.
        !          1369: 
        !          1370:     - The --link-dest option now affects symlinks and devices (when possible).
        !          1371: 
        !          1372:     - Added two config items to the rsyncd.conf parsing:  "pre-xfer exec" and
        !          1373:       "post-xfer exec".  These allow a command to be specified on a per-module
        !          1374:       basis that will be run before and/or after a daemon-mode transfer.  (See
        !          1375:       the man page for a list of the environment variables that are set with
        !          1376:       information about the transfer.)
        !          1377: 
        !          1378:     - When using the --relative option, you can now insert a dot dir in
        !          1379:       the source path to indicate where the replication of the source dirs
        !          1380:       should start.  For example, if you specify a source path of
        !          1381:       rsync://host/module/foo/bar/./baz/dir with -R, rsync will now only
        !          1382:       replicate the "baz/dir" part of the source path (note: a trailing
        !          1383:       dot dir is unaffected unless it also has a trailing slash).
        !          1384: 
        !          1385:     - Added some new --no-FOO options that make it easier to override unwanted
        !          1386:       implied or default options.  For example, "-a --no-o" (aka "--archive
        !          1387:       --no-owner") can be used to turn off the preservation of file ownership
        !          1388:       that is implied by -a.
        !          1389: 
        !          1390:     - Added the --chmod=MODE option that allows the destination permissions to
        !          1391:       be changed from the source permissions.  E.g. --chmod=g+w,o-rwx
        !          1392: 
        !          1393:     - Added the "incoming chmod" and "outgoing chmod" daemon options that allow
        !          1394:       a module to specify what permissions changes should be applied to all
        !          1395:       files copied to and from the daemon.
        !          1396: 
        !          1397:     - Allow the --temp-dir option to be specified when starting a daemon, which
        !          1398:       sets the default temporary directory for incoming files.
        !          1399: 
        !          1400:     - If --delete is combined with --dirs without --recursive, rsync will now
        !          1401:       delete in any directory whose content is being synchronized.
        !          1402: 
        !          1403:     - If --backup is combined with --delete without --backup-dir (and without
        !          1404:       --delete-excluded), we add a "protect" filter-rule to ensure that files
        !          1405:       with the backup suffix are not deleted.
        !          1406: 
        !          1407:     - The file-count stats that are output by --progress were improved to
        !          1408:       better indicate what the numbers mean.  For instance, the output:
        !          1409:       "(xfer#5, to-check=8383/9999)" indicates that this was the fifth file
        !          1410:       to be transferred, and we still need to check 8383 more files out of
        !          1411:       a total of 9999.
        !          1412: 
        !          1413:     - The include/exclude code now allows a dir/*** directive (with 3 trailing
        !          1414:       stars) to match both the dir itself as well as all the content below the
        !          1415:       dir (dir/** would not match the dir).
        !          1416: 
        !          1417:     - Added the --prune-empty-dirs (-m) option that makes the receiving rsync
        !          1418:       discard empty chains of directories from the file-list.  This makes it
        !          1419:       easier to selectively copy files from a source hierarchy and end up with
        !          1420:       just the directories needed to hold the resulting files.
        !          1421: 
        !          1422:     - If the --itemize-changes (-i) option is repeated, rsync now includes
        !          1423:       unchanged files in the itemized output (similar to -vv, but without all
        !          1424:       the other verbose messages that can get in the way).  Of course, the
        !          1425:       client must be version 2.6.7 for this to work, but the remote rsync only
        !          1426:       needs to be 2.6.7 if you're pushing files.
        !          1427: 
        !          1428:     - Added the --specials option to tell rsync to copy non-device special
        !          1429:       files (which rsync now attempts even as a normal user).  The --devices
        !          1430:       option now requests the copying of just devices (character and block).
        !          1431:       The -D option still requests both (e.g. --devices and --specials), -a
        !          1432:       still implies -D, and non-root users still get a silent downgrade that
        !          1433:       omits device copying.
        !          1434: 
        !          1435:     - Added the --super option to make the receiver always attempt super-user
        !          1436:       activities.  This is useful for systems that allow things such as devices
        !          1437:       to be created or ownership to be set without being UID 0, and is also
        !          1438:       useful for someone who wants to ensure that errors will be output if the
        !          1439:       receiving rsync isn't being run as root.
        !          1440: 
        !          1441:     - Added the --sockopts option for those few who want to customize the TCP
        !          1442:       options used to contact a daemon rsync.
        !          1443: 
        !          1444:     - Added a way for the --temp-dir option to be combined with a partial-dir
        !          1445:       setting that lets rsync avoid non-atomic updates (for those times when
        !          1446:       --temp-dir is not being used because space is tight).
        !          1447: 
        !          1448:     - A new support script, files-to-excludes, will transform a list of files
        !          1449:       into a set of include/exclude directives that will copy those files.
        !          1450: 
        !          1451:     - A new option, --executability (-E) can be used to preserve just the
        !          1452:       execute bit on files, for those times when using the --perms option is
        !          1453:       not desired.
        !          1454: 
        !          1455:     - The daemon now logs each connection and also each module-list request
        !          1456:       that it receives.
        !          1457: 
        !          1458:     - New log-format options: %M (modtime), %U (uid), %G (gid), and %B
        !          1459:       (permission bits, e.g. "rwxr-xrwt").
        !          1460: 
        !          1461:     - The --dry-run option no longer forces the enabling of --verbose.
        !          1462: 
        !          1463:     - The --remove-sent-files option now does a better job of incrementally
        !          1464:       removing the sent files on the sending side (older versions tended to
        !          1465:       clump up all the removals at the end).
        !          1466: 
        !          1467:     - A daemon now supersedes its minimal SIGCHLD handler with the standard
        !          1468:       PID-remembering version after forking.  This ensures that the generator
        !          1469:       can get the child-exit status from the receiver.
        !          1470: 
        !          1471:     - Use of the --bwlimit option no longer interferes with the remote rsync
        !          1472:       sending error messages about invalid/refused options.
        !          1473: 
        !          1474:     - Rsync no longer returns a usage error when used with one local source arg
        !          1475:       and no destination: this now implies the --list-only option, just like
        !          1476:       the comparable situation with a remote source arg.
        !          1477: 
        !          1478:     - Added the --copy-dirlinks option, a more limited version of --copy-links.
        !          1479: 
        !          1480:     - Various documentation improvements, including: a better synopsis, some
        !          1481:       improved examples, a better discussion of the presence and absence of
        !          1482:       --perms (including how it interacts with the new --executability and
        !          1483:       --chmod options), an extended discussion of --temp-dir, an improved
        !          1484:       discussion of --partial-dir, a better description of rsync's pattern
        !          1485:       matching characters, an improved --no-implied-dirs section, and the
        !          1486:       documenting of what the --stats option outputs.
        !          1487: 
        !          1488:     - Various new and updated diffs in the patches dir, including: acls.diff,
        !          1489:       xattrs.diff, atimes.diff, detect-renamed.diff, and slp.diff.
        !          1490: 
        !          1491:   INTERNAL:
        !          1492: 
        !          1493:     - We now use sigaction() and sigprocmask() if possible, and fall back on
        !          1494:       signal() if not.  Using sigprocmask() ensures that rsync enables all the
        !          1495:       signals that it needs, just in case it was started in a masked state.
        !          1496: 
        !          1497:     - Some buffer sizes were expanded a bit, particularly on systems where
        !          1498:       MAXPATHLEN is overly small (e.g. cygwin).
        !          1499: 
        !          1500:     - If io_printf() tries to format more data than fits in the buffer, exit
        !          1501:       with an error instead of transmitting a truncated buffer.
        !          1502: 
        !          1503:     - If a va_copy macro is defined, lib/snprintf.c will use it when defining
        !          1504:       the VA_COPY macro.
        !          1505: 
        !          1506:     - Reduced the amount of stack memory needed for each level of directory
        !          1507:       recursion by nearly MAXPATHLEN bytes.
        !          1508: 
        !          1509:     - The wildmatch function was extended to allow an array of strings to be
        !          1510:       supplied as the string to match.  This allows the exclude code to do less
        !          1511:       string copying.
        !          1512: 
        !          1513:     - Got rid of the safe_fname() function (and all the myriad calls) and
        !          1514:       replaced it with a new function in the log.c code that filters all the
        !          1515:       output going to the terminal.
        !          1516: 
        !          1517:     - Unified the f_name() and the f_name_to() functions.
        !          1518: 
        !          1519:     - Improved the hash-table code the sender uses to handle checksums to make
        !          1520:       it use slightly less memory and run just a little faster.
        !          1521: 
        !          1522:   DEVELOPER RELATED:
        !          1523: 
        !          1524:     - The diffs in the patches dir now require "patch -p1 <DIFF" instead of
        !          1525:       the previous -p0.  Also, the version included in the release tar now
        !          1526:       affect generated files (e.g. configure, rsync.1, proto.h, etc.), so
        !          1527:       it is no longer necessary to run autoconf and/or yodl unless you're
        !          1528:       applying a patch that was checked out from CVS.
        !          1529: 
        !          1530:     - Several diffs in the patches dir now use the proper --enable-FOO
        !          1531:       configure option instead of --with-FOO to turn on the inclusion of
        !          1532:       the newly patched feature.
        !          1533: 
        !          1534:     - There is a new script, "prepare-source" than can be used to update the
        !          1535:       various generated files (proto.h, configure, etc.) even before configure
        !          1536:       has created the Makefile (this is mainly useful when patching the source
        !          1537:       with a patch that doesn't affect generated files).
        !          1538: 
        !          1539:     - The testsuite now sets HOME so that it won't be affected by a file such
        !          1540:       as ~/.popt.
        !          1541: 
        !          1542: 
        !          1543: NEWS for rsync 2.6.6 (28 Jul 2005)
        !          1544: Protocol: 29 (unchanged)
        !          1545: Changes since 2.6.5:
        !          1546: 
        !          1547:   SECURITY FIXES:
        !          1548: 
        !          1549:     - The zlib code was upgraded to version 1.2.3 in order to make it more
        !          1550:       secure.  While the widely-publicized security problem in zlib 1.2.2 did
        !          1551:       not affect rsync, another security problem surfaced that affects rsync's
        !          1552:       zlib 1.1.4.
        !          1553: 
        !          1554:   BUG FIXES:
        !          1555: 
        !          1556:     - The setting of flist->high in clean_flist() was wrong for an empty list.
        !          1557:       This could cause flist_find() to crash in certain rare circumstances
        !          1558:       (e.g. if just the right directory setup was around when --fuzzy was
        !          1559:       combined with --link-dest).
        !          1560: 
        !          1561:     - The outputting of hard-linked files when verbosity was > 1 was not right:
        !          1562:       (1) Without -i it would output the name of each hard-linked file as
        !          1563:       though it had been changed; it now outputs a "is hard linked" message for
        !          1564:       the file. (2) With -i it would output all dots for the unchanged
        !          1565:       attributes of a hard-link; it now changes those dots to spaces, as is
        !          1566:       done for other totally unchanged items.
        !          1567: 
        !          1568:     - When backing up a changed symlink or device, get rid of any old backup
        !          1569:       item so that we don't get an "already exists" error.
        !          1570: 
        !          1571:     - A couple places that were comparing a local and a remote modification-
        !          1572:       time were not honoring the --modify-window option.
        !          1573: 
        !          1574:     - Fixed a bug where the 'p' (permissions) itemized-changes flag might get
        !          1575:       set too often (if some non-significant mode bits differed).
        !          1576: 
        !          1577:     - Fixed a really old, minor bug that could cause rsync to warn about being
        !          1578:       unable to mkdir() a path that ends in "/." because it just created the
        !          1579:       directory (required --relative, --no-implied-dirs, a source path that
        !          1580:       ended in either a trailing slash or a trailing "/.", and a non-existing
        !          1581:       destination dir to tickle the bug in a recent version).
        !          1582: 
        !          1583:   ENHANCEMENTS:
        !          1584: 
        !          1585:     - Made the "max verbosity" setting in the rsyncd.conf file settable on a
        !          1586:       per-module basis (which now matches the documentation).
        !          1587: 
        !          1588:     - The support/rrsync script has been upgraded to verify the args of options
        !          1589:       that take args (instead of rejecting any such options).  The script was
        !          1590:       also changed to try to be more secure and to fix a problem in the parsing
        !          1591:       of a pull operation that has multiple sources.
        !          1592: 
        !          1593:     - Improved the documentation that explains the difference between a
        !          1594:       normal daemon transfer and a daemon-over remote-shell transfer.
        !          1595: 
        !          1596:     - Some of the diffs supplied in the patches dir were fixed and/or
        !          1597:       improved.
        !          1598: 
        !          1599:   BUILD CHANGES:
        !          1600: 
        !          1601:     - Made configure define NOBODY_USER (currently hard-wired to "nobody") and
        !          1602:       NOBODY_GROUP (set to either "nobody" or "nogroup" depending on what we
        !          1603:       find in the /etc/group file).
        !          1604: 
        !          1605:     - Added a test to the test suite, itemized.test, that tests the output of
        !          1606:       -i (log-format w/%i) and some double-verbose messages.
        !          1607: 
        !          1608: 
        !          1609: NEWS for rsync 2.6.5 (1 Jun 2005)
        !          1610: Protocol: 29 (unchanged)
        !          1611: Changes since 2.6.4:
        !          1612: 
        !          1613:   OUTPUT CHANGES:
        !          1614: 
        !          1615:     - Non-printable chars in filenames are now output using backslash-
        !          1616:       escaped characters rather than '?'s.  Any non-printable character is
        !          1617:       output using 3 digits of octal (e.g. "\n" -> "\012"), and a backslash
        !          1618:       is now output as "\\".  Rsync also uses your locale setting, which
        !          1619:       can make it treat fewer high-bit characters as non-printable.
        !          1620: 
        !          1621:     - If rsync received an empty file-list when pulling files, it would
        !          1622:       output a "nothing to do" message and exit with a 0 (success) exit
        !          1623:       status, even if the remote rsync returned an error (it did not do
        !          1624:       this under the same conditions when pushing files).  This was changed
        !          1625:       to make the pulling behavior the same as the pushing behavior:  we
        !          1626:       now do the normal end-of-run outputting (depending on options) and
        !          1627:       exit with the appropriate exit status.
        !          1628: 
        !          1629:   BUG FIXES:
        !          1630: 
        !          1631:     - A crash bug was fixed when a daemon had its "path" set to "/", did
        !          1632:       not have chroot enabled, and used some anchored excludes in the
        !          1633:       rsyncd.conf file.
        !          1634: 
        !          1635:     - Fixed a bug in the transfer of a single file when -H is specified
        !          1636:       (rsync would either infinite loop or perhaps crash).
        !          1637: 
        !          1638:     - Fixed a case where the generator might try (and fail) to tweak the
        !          1639:       write-permissions of a read-only directory in list-only mode (this
        !          1640:       only caused an annoying warning message).
        !          1641: 
        !          1642:     - If --compare-dest or --link-dest uses a locally-copied file as the
        !          1643:       basis for an updated version, log this better when --verbose or -i
        !          1644:       is in effect.
        !          1645: 
        !          1646:     - Fixed the accidental disabling of --backup during the --delete-after
        !          1647:       processing.
        !          1648: 
        !          1649:     - Restored the ability to use the --address option in client mode (in
        !          1650:       addition to its use in daemon mode).
        !          1651: 
        !          1652:     - Make sure that some temporary progress information from the delete
        !          1653:       processing does not get left on the screen when it is followed by a
        !          1654:       newline.
        !          1655: 
        !          1656:     - When --existing skips a directory with extra verbosity, refer to it
        !          1657:       as a "directory", not a "file".
        !          1658: 
        !          1659:     - When transferring a single file to a different-named file, any
        !          1660:       generator messages that are source-file related no longer refer to
        !          1661:       the file by the destination filename.
        !          1662: 
        !          1663:     - Fixed a bug where hard-linking a group of files might fail if the
        !          1664:       generator hasn't created a needed destination directory yet.
        !          1665: 
        !          1666:     - Fixed a bug where a hard-linked group of files that is newly-linked
        !          1667:       to a file in a --link-dest dir doesn't link the files from the rest
        !          1668:       of the cluster.
        !          1669: 
        !          1670:     - When deleting files with the --one-file-system (-x) option set, rsync
        !          1671:       no longer tries to remove files from inside a mount-point on the
        !          1672:       receiving side.  Also, we don't complain about being unable to remove
        !          1673:       the mount-point dir.
        !          1674: 
        !          1675:     - Fixed a compatibility problem when using --cvs-ignore (-C) and
        !          1676:       sending files to an older rsync without using --delete.
        !          1677: 
        !          1678:     - Make sure that a "- !" or "+ !" include/exclude pattern does not
        !          1679:       trigger the list-clearing action that is reserved for "!".
        !          1680: 
        !          1681:     - Avoid a timeout in the generator when the sender/receiver aren't
        !          1682:       handling the generator's checksum output quickly enough.
        !          1683: 
        !          1684:     - Fixed the omission of some directories in the delete processing when
        !          1685:       --relative (-R) was combined with a source path that had a trailing
        !          1686:       slash.
        !          1687: 
        !          1688:     - Fixed a case where rsync would erroneously delete some files and then
        !          1689:       re-transfer them when the options --relative (-R) and --recursive
        !          1690:       (-r) were both enabled (along with --delete) and a source path had a
        !          1691:       trailing slash.
        !          1692: 
        !          1693:     - Make sure that --max-size doesn't affect a device or a symlink.
        !          1694: 
        !          1695:     - Make sure that a system with a really small MAXPATHLEN does not cause
        !          1696:       the buffers in readfd_unbuffered() to be too small to receive normal
        !          1697:       messages.  (This mainly affected Cygwin.)
        !          1698: 
        !          1699:     - If a source pathname ends with a filename of "..", treat it as if
        !          1700:       "../" had been specified (so that we don't copy files to the parent
        !          1701:       dir of the destination).
        !          1702: 
        !          1703:     - If --delete is combined with a file-listing rsync command (i.e. no
        !          1704:       transfer is happening), avoid outputting a warning that we couldn't
        !          1705:       delete anything.
        !          1706: 
        !          1707:     - If --stats is specified with --delete-after, ensure that all the
        !          1708:       "deleting" messages are output before the statistics.
        !          1709: 
        !          1710:     - Improved one "if" in the deletion code that was only checking errno
        !          1711:       for ENOTEMPTY when it should have also been checking for EEXIST (for
        !          1712:       compatibility with OS variations).
        !          1713: 
        !          1714:   ENHANCEMENTS:
        !          1715: 
        !          1716:     - Added the --only-write-batch=FILE option that may be used (instead
        !          1717:       of --write-batch=FILE) to create a batch file without doing any
        !          1718:       actual updating of the destination.  This allows you to divert all
        !          1719:       the file-updating data away from a slow data link (as long as you
        !          1720:       are pushing the data to the remote server when creating the batch).
        !          1721: 
        !          1722:     - When the generator is taking a long time to fill up its output buffer
        !          1723:       (e.g. if the transferred files are few, small, or missing), it now
        !          1724:       periodically flushes the output buffer so that the sender/receiver
        !          1725:       can get started on the files sooner rather than later.
        !          1726: 
        !          1727:     - Improved the keep-alive code to handle a long silence between the
        !          1728:       sender and the receiver that can occur when the sender is receiving
        !          1729:       the checksum data for a large file.
        !          1730: 
        !          1731:     - Improved the auth-errors that are logged by the daemon to include
        !          1732:       some information on why the authorization failed:  wrong user,
        !          1733:       password mismatch, etc.  (The client-visible message is unchanged!)
        !          1734: 
        !          1735:     - Improved the client's handling of an "@ERROR" from a daemon so that
        !          1736:       it does not complain about an unexpectedly closed socket (since we
        !          1737:       really did expect the socket to close).
        !          1738: 
        !          1739:     - If the daemon can't open the log-file specified in rsyncd.conf, fall
        !          1740:       back to using syslog and log an appropriate warning.  This is better
        !          1741:       than what was typically a totally silent (and fatal) failure (since a
        !          1742:       daemon is not usually run with the --no-detach option that was
        !          1743:       necessary to see the error on stderr).
        !          1744: 
        !          1745:     - The man pages now consistently refer to an rsync daemon as a "daemon"
        !          1746:       instead of a "server" (to distinguish it from the server process in a
        !          1747:       non-daemon transfer).
        !          1748: 
        !          1749:     - Made a small change to the rrsync script (restricted rsync -- in the
        !          1750:       support dir) to make a read-only server reject all --remove-* options
        !          1751:       when sending files (to future-proof it against the possibility of
        !          1752:       other similar options being added at some point).
        !          1753: 
        !          1754:   INTERNAL:
        !          1755: 
        !          1756:     - Rsync now calls setlocale(LC_CTYPE, "").  This enables isprint() to
        !          1757:       better discern which filename characters need to be escaped in
        !          1758:       messages (which should result in fewer escaped characters in some
        !          1759:       locales).
        !          1760: 
        !          1761:     - Improved the naming of the log-file open/reopen/close functions.
        !          1762: 
        !          1763:     - Removed some protocol-compatibility code that was only needed to help
        !          1764:       someone running a pre-release of 2.6.4.
        !          1765: 
        !          1766:   BUILD CHANGES:
        !          1767: 
        !          1768:     - Added configure option "--disable-locale" to disable any use of
        !          1769:       setlocale() in the binary.
        !          1770: 
        !          1771:     - Fixed a bug in the SUPPORT{,_HARD}_LINKS #defines which prevented
        !          1772:       rsync from being built without symlink or hard-link support.
        !          1773: 
        !          1774:     - Only #define HAVE_REMSH if it is going to be set to 1.
        !          1775: 
        !          1776:     - Configure now disables the use of mkstemp() under HP-UX (since they
        !          1777:       refuse to fix its broken handling of large files).
        !          1778: 
        !          1779:     - Configure now explicitly checks for the lseek64() function so that
        !          1780:       the code can use HAVE_LSEEK64 instead of inferring lseek64()'s
        !          1781:       presence based on the presence of the off64_t type.
        !          1782: 
        !          1783:     - Configure no longer mentions the change in the default remote-shell
        !          1784:       (from rsh to ssh) that occurred for the 2.6.0 release.
        !          1785: 
        !          1786:     - Some minor enhancements to the test scripts.
        !          1787: 
        !          1788:     - Added a few new *.diff files to the patches dir, including a patch
        !          1789:       that enables the optional copying of extended attributes.
        !          1790: 
        !          1791: 
        !          1792: NEWS for rsync 2.6.4 (30 March 2005)
        !          1793: Protocol: 29 (changed)
        !          1794: Changes since 2.6.3:
        !          1795: 
        !          1796:   OUTPUT CHANGES:
        !          1797: 
        !          1798:     - When rsync deletes a directory and outputs a verbose message about
        !          1799:       it, it now appends a trailing slash to the name instead of (only
        !          1800:       sometimes) outputting a preceding "directory " string.
        !          1801: 
        !          1802:     - The --stats output will contain file-list time-statistics if both
        !          1803:       sides are 2.6.4, or if the local side is 2.6.4 and the files are
        !          1804:       being pushed (since the stats come from the sending side).
        !          1805:       (Requires protocol 29 for a pull.)
        !          1806: 
        !          1807:     - The "%o" (operation) log-format escape now has a third value (besides
        !          1808:       "send" and "recv"):  "del." (with trailing dot to make it 4 chars).
        !          1809:       This changes the way deletions are logged in the daemon's log file.
        !          1810: 
        !          1811:     - When the --log-format option is combined with --verbose, rsync now
        !          1812:       avoids outputting the name of the file twice in most circumstances.
        !          1813:       As long as the --log-format item does not refer to any post-transfer
        !          1814:       items (such as %b or %c), the --log-format message is output prior to
        !          1815:       the transfer, so --verbose is now the equivalent of a --log-format of
        !          1816:       '%n%L' (which outputs the name and any link info).  If the log output
        !          1817:       must occur after the transfer to be complete, the only time the name
        !          1818:       is also output prior to the transfer is when --progress was specified
        !          1819:       (so that the name will precede the progress stats, and the full
        !          1820:       --log-format output will come after).
        !          1821: 
        !          1822:     - Non-printable characters in filenames are replaced with a '?' to
        !          1823:       avoid corrupting the screen or generating empty lines in the output.
        !          1824:   
        !          1825:   BUG FIXES:
        !          1826: 
        !          1827:     - Restore the list-clearing behavior of "!" in a .cvsignore file (2.6.3
        !          1828:       was only treating it as a special token in an rsync include/exclude
        !          1829:       file).
        !          1830: 
        !          1831:     - The combination of --verbose and --dry-run now mentions the full list
        !          1832:       of changes that would be output without --dry-run.
        !          1833: 
        !          1834:     - Avoid a mkdir warning when removing a directory in the destination
        !          1835:       that already exists in the --backup-dir.
        !          1836: 
        !          1837:     - An OS that has a binary mode for its files (such as cygwin) needed
        !          1838:       setmode(fd, O_BINARY) called on the temp-file we opened with
        !          1839:       mkstemp().  (Fix derived from cygwin's 2.6.3 rsync package.)
        !          1840: 
        !          1841:     - Fixed a potential hang when verbosity is high, the client side is
        !          1842:       the sender, and the file-list is large.
        !          1843: 
        !          1844:     - Fixed a potential protocol-corrupting bug where the generator could
        !          1845:       merge a message from the receiver into the middle of a multiplexed
        !          1846:       packet of data if only part of that data had been written out to the
        !          1847:       socket when the message from the generator arrived.
        !          1848: 
        !          1849:     - We now check if the OS doesn't support using mknod() for creating
        !          1850:       FIFOs and sockets, and compile-in some compatibility code using
        !          1851:       mkfifo() and socket() when necessary.
        !          1852: 
        !          1853:     - Fixed an off-by-one error in the handling of --max-delete=N.  Also,
        !          1854:       if the --max-delete limit is exceeded during a run, we now output a
        !          1855:       warning about this at the end of the run and exit with a new error
        !          1856:       code (25).
        !          1857: 
        !          1858:     - One place in the code wasn't checking if fork() failed.
        !          1859: 
        !          1860:     - The "ignore nonreadable" daemon parameter used to erroneously affect
        !          1861:       readable symlinks that pointed to a non-existent file.
        !          1862: 
        !          1863:     - If the OS does not have lchown() and a chown() of a symlink will
        !          1864:       affect the referent of a symlink (as it should), we no longer try
        !          1865:       to set the user and group of a symlink.
        !          1866: 
        !          1867:     - The generator now properly runs the hard-link loop and the dir-time
        !          1868:       rewriting loop after we're sure that the redo phase is complete.
        !          1869: 
        !          1870:     - When --backup was specified with --partial-dir=DIR, where DIR is a
        !          1871:       relative path, the backup code was erroneously trying to backup a
        !          1872:       file that was put into the partial-dir.
        !          1873: 
        !          1874:     - If a file gets resent in a single transfer and the --backup option is
        !          1875:       enabled along with --inplace, rsync no longer performs a duplicate
        !          1876:       backup (it used to overwrite the first backup with the failed file).
        !          1877: 
        !          1878:     - One call to flush_write_file() was not being checked for an error.
        !          1879: 
        !          1880:     - The --no-relative option was not being sent from the client to a
        !          1881:       server sender.
        !          1882: 
        !          1883:     - If an rsync daemon specified "dont compress = ..." for a file and the
        !          1884:       client tried to specify --compress, the libz code was not handling a
        !          1885:       compression level of 0 properly.  This could cause a transfer failure
        !          1886:       if the block-size for a file was large enough (e.g. rsync might have
        !          1887:       exited with an error for large files).
        !          1888: 
        !          1889:     - Fixed a bug that would sometimes surface when using --compress and
        !          1890:       sending a file with a block-size larger than 64K (either manually
        !          1891:       specified, or computed due to the file being really large).  Prior
        !          1892:       versions of rsync would sometimes fail to decompress the data
        !          1893:       properly, and thus the transferred file would fail its verification.
        !          1894: 
        !          1895:     - If a daemon can't open the specified log file (i.e. syslog is not
        !          1896:       being used), die without crashing.  We also output an error about
        !          1897:       the failure on stderr (which will only be seen if --no-detach was
        !          1898:       specified) and exit with a new error code (6).
        !          1899: 
        !          1900:     - A local transfer no longer duplicates all its include/exclude options
        !          1901:       (since the forked process already has a copy of the exclude list,
        !          1902:       there's no need to send them a set of duplicates).
        !          1903: 
        !          1904:     - The output of the items that are being updated by the generator (dirs,
        !          1905:       symlinks, devices) is now intermingled in the proper order with the
        !          1906:       output from the items that the receiver is updating (regular files)
        !          1907:       when pulling.  This misordering was particularly bad when --progress
        !          1908:       was specified.  (Requires protocol 29.)
        !          1909: 
        !          1910:     - When --timeout is specified, lulls that occur in the transfer while
        !          1911:       the generator is doing work that does not generate socket traffic
        !          1912:       (looking for changed files, deleting files, doing directory-time
        !          1913:       touch-ups, etc.) will cause a new keep-alive packet to be sent that
        !          1914:       should keep the transfer going as long as the generator continues to
        !          1915:       make progress.  (Requires protocol 29.)
        !          1916: 
        !          1917:     - The stat size of a device is not added to the total file size of the
        !          1918:       items in the transfer (the size might be undefined on some OSes).
        !          1919: 
        !          1920:     - Fixed a problem with refused-option messages sometimes not making it
        !          1921:       back to the client side when a remote --files-from was in effect and
        !          1922:       the daemon was the receiver.
        !          1923: 
        !          1924:     - The --compare-dest option was not updating a file that differed in
        !          1925:       (the preserved) attributes from the version in the compare-dest DIR.
        !          1926: 
        !          1927:     - When rsync is copying files into a write-protected directory, fixed
        !          1928:       the change-report output for the directory so that we don't report
        !          1929:       an identical directory as changed.
        !          1930: 
        !          1931:   ENHANCEMENTS:
        !          1932: 
        !          1933:     - Rsync now supports popt's option aliases, which means that you can
        !          1934:       use /etc/popt and/or ~/.popt to create your own option aliases.
        !          1935: 
        !          1936:     - Added the --delete-during (--del) option which will delete files
        !          1937:       from the receiving side incrementally as each directory in the
        !          1938:       transfer is being processed.  This makes it more efficient than the
        !          1939:       default, before-the-transfer behavior, which is now also available as
        !          1940:       --delete-before (and is still the default --delete-WHEN option that
        !          1941:       will be chosen if --delete or --delete-excluded is specified without
        !          1942:       a --delete-WHEN choice).  All the --del* options infer --delete, so
        !          1943:       an rsync daemon that refuses "delete" will still refuse to allow any
        !          1944:       file-deleting options (including the new --remove-sent-files option).
        !          1945: 
        !          1946:     - All the --delete-WHEN options are now more memory efficient:
        !          1947:       Previously an duplicate set of file-list objects was created on the
        !          1948:       receiving side for the entire destination hierarchy.  The new
        !          1949:       algorithm only creates one directory of objects at a time (for files
        !          1950:       inside the transfer).
        !          1951: 
        !          1952:     - Added the --copy-dest option, which works like --link-dest except
        !          1953:       that it locally copies identical files instead of hard-linking them.
        !          1954: 
        !          1955:     - Added support for specifying multiple --compare-dest, --copy-dest, or
        !          1956:       --link-dest options, but only of a single type. (Promoted from the
        !          1957:       patches dir and enhanced.) (Requires protocol 29.)
        !          1958: 
        !          1959:     - Added the --max-size option. (Promoted from the patches dir.)
        !          1960: 
        !          1961:     - The daemon-mode options are now separated from the normal rsync
        !          1962:       options so that they can't be mixed together.  This makes it
        !          1963:       impossible to start a daemon that has improper default option values
        !          1964:       (which could cause problems when a client connects, such as hanging
        !          1965:       or crashing).
        !          1966: 
        !          1967:     - The --bwlimit option may now be used in combination with --daemon
        !          1968:       to specify both a default value for the daemon side and a value
        !          1969:       that cannot be exceeded by a user-specified --bwlimit option.
        !          1970: 
        !          1971:     - Added the "port" parameter to the rsyncd.conf file. (Promoted from
        !          1972:       the patches dir.)  Also added "address".  The command-line options
        !          1973:       take precedence over a config-file option, as expected.
        !          1974: 
        !          1975:     - In _exit_cleanup(): when we are exiting with a partially-received
        !          1976:       file, we now flush any data in the write-cache before closing the
        !          1977:       partial file.
        !          1978: 
        !          1979:     - The --inplace support was enhanced to work with --compare-dest,
        !          1980:       --link-dest, and (the new) --copy-dest options. (Requires protocol
        !          1981:       29.)
        !          1982: 
        !          1983:     - Added the --dirs (-d) option for an easier way to copy directories
        !          1984:       without recursion.  Any directories that are encountered are created
        !          1985:       on the destination.  Specifying a directory with a trailing slash
        !          1986:       copies its immediate contents to the destination.
        !          1987: 
        !          1988:     - The --files-from option now implies --dirs (-d).
        !          1989: 
        !          1990:     - Added the --list-only option, which is mainly a way for the client to
        !          1991:       put the server into listing mode without needing to resort to any
        !          1992:       internal option kluges (e.g. the age-old use of "-r --exclude="/*/*"
        !          1993:       for a non-recursive listing).  This option is used automatically
        !          1994:       (behind the scenes) when a modern rsync speaks to a modern daemon,
        !          1995:       but may also be specified manually if you want to force the use of
        !          1996:       the --list-only option over a remote-shell connection.
        !          1997: 
        !          1998:     - Added the --omit-dir-times (-O) option, which will avoid updating
        !          1999:       the modified time for directories when --times was specified.  This
        !          2000:       option will avoid an extra pass through the file-list at the end of
        !          2001:       the transfer (to tweak all the directory times), which may provide
        !          2002:       an appreciable speedup for a really large transfer. (Promoted from
        !          2003:       the patches dir.)
        !          2004: 
        !          2005:     - Added the --filter (-f) option and its helper option, -F.  Filter
        !          2006:       rules are an extension to the existing include/exclude handling
        !          2007:       that also supports nested filter files as well as per-directory
        !          2008:       filter files (like .cvsignore, but with full filter-rule parsing).
        !          2009:       This new option was chosen in order to ensure that all existing
        !          2010:       include/exclude processing remained 100% compatible with older
        !          2011:       versions.  Protocol 29 is needed for full filter-rule support, but
        !          2012:       backward-compatible rules work with earlier protocol versions.
        !          2013:       (Promoted from the patches dir and enhanced.)
        !          2014: 
        !          2015:     - Added the --delay-updates option that puts all updated files into
        !          2016:       a temporary directory (by default ".~tmp~", but settable via the
        !          2017:       --partial-dir=DIR option) until the end of the transfer.  This
        !          2018:       makes the updates a little more atomic for a large transfer.
        !          2019: 
        !          2020:     - If rsync is put into the background, any output from --progress is
        !          2021:       reduced.
        !          2022: 
        !          2023:     - Documented the "max verbosity" setting for rsyncd.conf.  (This
        !          2024:       setting was added a couple releases ago, but left undocumented.)
        !          2025: 
        !          2026:     - The sender and the generator now double-check the file-list index
        !          2027:       they are given, and refuse to try to do a file transfer on a
        !          2028:       non-file index (since that would indicate that something had gone
        !          2029:       very wrong).
        !          2030: 
        !          2031:     - Added the --itemize-changes (-i) option, which is a way to output a
        !          2032:       more detailed list of what files changed and in what way.  The effect
        !          2033:       is the same as specifying a --log-format of "%i %n%L" (see both the
        !          2034:       rsync and rsyncd.conf manpages).  Works with --dry-run too.
        !          2035: 
        !          2036:     - Added the --fuzzy (-y) option, which attempts to find a basis file
        !          2037:       for a file that is being created from scratch.  The current algorithm
        !          2038:       only looks in the destination directory for the created file, but it
        !          2039:       does attempt to find a match based on size/mod-time (in case the file
        !          2040:       was renamed with no other changes) as well as based on a fuzzy
        !          2041:       name-matching algorithm.  This option requires protocol 29 because it
        !          2042:       needs the new file-sorting order.  (Promoted from patches dir and
        !          2043:       enhanced.) (Requires protocol 29.)
        !          2044: 
        !          2045:     - Added the --remove-sent-files option, which lets you move files
        !          2046:       between systems.
        !          2047: 
        !          2048:     - The hostname in HOST:PATH or HOST::PATH may now be an IPv6 literal
        !          2049:       enclosed in '[' and ']' (e.g. "[::1]").  (We already allowed IPv6
        !          2050:       literals in the rsync://HOST:PORT/PATH format.)
        !          2051: 
        !          2052:     - When rsync recurses to build the file list, it no longer keeps open
        !          2053:       one or more directory handles from the dir's parent dirs.
        !          2054: 
        !          2055:     - When building under windows, the default for --daemon is now to
        !          2056:       avoid detaching, requiring the new --detach option to force rsync
        !          2057:       to detach.
        !          2058: 
        !          2059:     - The --dry-run option can now be combined with either --write-batch or
        !          2060:       --read-batch, allowing you to run a do-nothing test command to see
        !          2061:       what would happen without --dry-run.
        !          2062: 
        !          2063:     - The daemon's "read only" config item now sets an internal read_only
        !          2064:       variable that makes extra sure that no write/delete calls on the
        !          2065:       read-only side can succeed.
        !          2066: 
        !          2067:     - The log-format % escapes can now have a numeric field width in
        !          2068:       between the % and the escape letter (e.g. "%-40n %08p").
        !          2069: 
        !          2070:     - Improved the option descriptions in the --help text.
        !          2071: 
        !          2072:   SUPPORT FILES:
        !          2073: 
        !          2074:     - Added atomic-rsync to the support dir: a perl script that will
        !          2075:       transfer some files using rsync, and then move the updated files into
        !          2076:       place all at once at the end of the transfer.  Only works when
        !          2077:       pulling, and uses --link-dest and a parallel hierarchy of files to
        !          2078:       effect its update.
        !          2079: 
        !          2080:     - Added mnt-excl to the support dir: a perl script that takes the
        !          2081:       /proc/mounts file and translates it into a set of excludes that will
        !          2082:       exclude all mount points (even mapped mounts to the same disk).  The
        !          2083:       excludes are made relative to the specified source dir and properly
        !          2084:       anchored.
        !          2085: 
        !          2086:     - Added savetransfer.c to the support dir: a C program that can make
        !          2087:       a copy of all the data that flows over the wire.  This lets you test
        !          2088:       for data corruption (by saving the data on both the sending side and
        !          2089:       the receiving side) and provides one way to debug a protocol error.
        !          2090: 
        !          2091:     - Added rrsync to the support dir: this is an updated version of Joe
        !          2092:       Smith's restricted rsync perl script.  This helps to ensure that only
        !          2093:       certain rsync commands can be run by an ssh invocation.
        !          2094: 
        !          2095:   INTERNAL:
        !          2096: 
        !          2097:     - Added better checking of the checksum-header values that come over
        !          2098:       the socket.
        !          2099: 
        !          2100:     - Merged a variety of file-deleting functions into a single function so
        !          2101:       that it is easier to maintain.
        !          2102: 
        !          2103:     - Improved the type of some variables (particularly blocksize vars) for
        !          2104:       consistency and proper size.
        !          2105: 
        !          2106:     - Got rid of the uint64 type (which we didn't need).
        !          2107: 
        !          2108:     - Use a slightly more compatible set of core #include directives.
        !          2109: 
        !          2110:     - Defined int32 in a way that ensures that the build dies if we can't
        !          2111:       find a variable with at least 32 bits.
        !          2112: 
        !          2113:   PROTOCOL DIFFERENCES FOR VERSION 29:
        !          2114: 
        !          2115:     - A 16-bit flag-word is transmitted after every file-list index.  This
        !          2116:       indicates what is changing between the sender and the receiver.  The
        !          2117:       generator now transmits an index and a flag-word to indicate when
        !          2118:       dirs and symlinks have changed (instead of producing a message),
        !          2119:       which makes the outputting of the information more consistent and
        !          2120:       less prone to screen corruption (because the local receiver/sender is
        !          2121:       now outputting all the file-change info messages).
        !          2122: 
        !          2123:     - If a file is being hard-linked, the ITEM_XNAME_FOLLOWS bit is enabled
        !          2124:       in the flag-word and the name of the file that was linked immediately
        !          2125:       follows in vstring format (see below).
        !          2126: 
        !          2127:     - If a file is being transferred with an alternate-basis file, the
        !          2128:       ITEM_BASIS_TYPE_FOLLOWS bit is enabled in the flag-word and a single
        !          2129:       byte follows, indicating what type of basis file was chosen.  If that
        !          2130:       indicates that a fuzzy-match was selected, the ITEM_XNAME_FOLLOWS bit
        !          2131:       is set in the flag-word and the name of the match in vstring format
        !          2132:       follows the basis byte.  A vstring is a variable length string that
        !          2133:       has its size written prior to the string, and no terminating null.
        !          2134:       If the string is from 1-127 bytes, the length is a single byte.  If
        !          2135:       it is from 128-32767 bytes, the length is written as ((len >> 8) |
        !          2136:       0x80) followed by (len % 0x100).
        !          2137: 
        !          2138:     - The sending of exclude names is done using filter-rule syntax.  This
        !          2139:       means that all names have a prefixed rule indicator, even excludes
        !          2140:       (which used to be sent as a bare pattern, when possible).  The -C
        !          2141:       option will include the per-dir .cvsignore merge file in the list of
        !          2142:       filter rules so it is positioned correctly (unlike in some older
        !          2143:       transfer scenarios).
        !          2144: 
        !          2145:     - Rsync sorts the filename list in a different way: it sorts the subdir
        !          2146:       names after the non-subdir names for each dir's contents, and it
        !          2147:       always puts a dir's contents immediately after the dir's name in the
        !          2148:       list.  (Previously an item named "foo.txt" would sort in between
        !          2149:       directory "foo/" and "foo/bar".)
        !          2150: 
        !          2151:     - When talking to a protocol 29 rsync daemon, a list-only request
        !          2152:       is able to note this before the options are sent over the wire and
        !          2153:       the new --list-only option is included in the options.
        !          2154: 
        !          2155:     - When the --stats bytes are sent over the wire (or stored in a batch),
        !          2156:       they now include two elapsed-time values: one for how long it took to
        !          2157:       build the file-list, and one for how long it took to send it over the
        !          2158:       wire (each expressed in thousandths of a second).
        !          2159: 
        !          2160:     - When --delete-excluded is specified with some filter rules (AKA
        !          2161:       excludes), a client sender will now initiate a send of the rules to
        !          2162:       the receiver (older protocols used to omit the sending of excludes in
        !          2163:       this situation since there were no receiver-specific rules that
        !          2164:       survived --delete-excluded back then).  Note that, as with all the
        !          2165:       filter-list sending, only items that are significant to the other
        !          2166:       side will actually be sent over the wire, so the filter-rule list
        !          2167:       that is sent in this scenario is often empty.
        !          2168: 
        !          2169:     - An index equal to the file-list count is sent as a keep-alive packet
        !          2170:       from the generator to the sender, which then forwards it on to the
        !          2171:       receiver.  This normally invalid index is only a valid keep-alive
        !          2172:       packet if the 16-bit flag-word that follows it contains a single bit
        !          2173:       (ITEM_IS_NEW, which is normally an illegal flag to appear alone).
        !          2174: 
        !          2175:     - A protocol-29 batch file includes a bit for the setting of the --dirs
        !          2176:       option and for the setting of the --compress option.  Also, the shell
        !          2177:       script created by --write-batch will use the --filter option instead
        !          2178:       of --exclude-from to capture any filter rules.
        !          2179: 
        !          2180:   BUILD CHANGES:
        !          2181: 
        !          2182:     - Handle an operating system that use mkdev() in place of makedev().
        !          2183: 
        !          2184:     - Improved configure to better handle cross-compiling.
        !          2185: 
        !          2186: 
        !          2187: NEWS for rsync 2.6.3 (30 Sep 2004)
        !          2188: Protocol: 28 (unchanged)
        !          2189: Changes since 2.6.2:
        !          2190: 
        !          2191:   SECURITY FIXES:
        !          2192: 
        !          2193:     - A bug in the sanitize_path routine (which affects a non-chrooted
        !          2194:       rsync daemon) could allow a user to craft a pathname that would get
        !          2195:       transformed into an absolute path for certain options (but not for
        !          2196:       file-transfer names).  If you're running an rsync daemon with chroot
        !          2197:       disabled, *please upgrade*, ESPECIALLY if the user privs you run
        !          2198:       rsync under is anything above "nobody".
        !          2199: 
        !          2200:   OUTPUT CHANGES (ATTN: those using a script to parse the verbose output):
        !          2201: 
        !          2202:     - Please note that the 2-line footer (output when verbose) now uses the
        !          2203:       term "sent" instead of "wrote" and "received" instead of "read".  If
        !          2204:       you are not parsing the numeric values out of this footer, a script
        !          2205:       would be better off using the empty line prior to the footer as the
        !          2206:       indicator that the verbose output is over.
        !          2207:       
        !          2208:     - The output from the --stats option was similarly affected to change
        !          2209:       "written" to "sent" and "read" to "received".
        !          2210: 
        !          2211:     - Rsync ensures that a filename that contains a newline gets mentioned
        !          2212:       with each newline transformed into a question mark (which prevents a
        !          2213:       filename from causing an empty line to be output).
        !          2214: 
        !          2215:     - The "backed up ..." message that is output when at least 2 --verbose
        !          2216:       options are specified is now the same both with and without the
        !          2217:       --backup-dir option.
        !          2218: 
        !          2219:   BUG FIXES:
        !          2220: 
        !          2221:     - Fixed a crash bug that might appear when --delete was used and
        !          2222:       multiple source directories were specified.
        !          2223: 
        !          2224:     - Fixed a 32-bit truncation of the file length when generating the
        !          2225:       checksums.
        !          2226: 
        !          2227:     - The --backup code no longer attempts to create some directories
        !          2228:       over and over again (generating warnings along the way).
        !          2229: 
        !          2230:     - Fixed a bug in the reading of the secrets file (by the daemon) and
        !          2231:       the password file (by the client):  the files no longer need to be
        !          2232:       terminated by a newline for their content to be read in.
        !          2233: 
        !          2234:     - If a file has a read error on the sending side or the reconstructed
        !          2235:       data doesn't match the expected checksum (perhaps due to the basis
        !          2236:       file changing during the transfer), the receiver will no longer
        !          2237:       retain the resulting file unless the --partial option was specified.
        !          2238:       (Note: for the read-error detection to work, neither side can be
        !          2239:       older than 2.6.3 -- older receivers will always retain the file, and
        !          2240:       older senders don't tell the receiver that the file had a read
        !          2241:       error.)
        !          2242: 
        !          2243:     - If a file gets resent in a single transfer and the --backup option
        !          2244:       is enabled, rsync no longer performs a duplicate backup (it used to
        !          2245:       overwrite the original file in the backup area).
        !          2246: 
        !          2247:     - Files specified in the daemon's "exclude" or "exclude from" config
        !          2248:       items are now excluded from being uploaded (assuming that the module
        !          2249:       allows uploading at all) in addition to the old download exclusion.
        !          2250: 
        !          2251:     - Got rid of a potential hang in the receiver when near the end of a
        !          2252:       phase.
        !          2253: 
        !          2254:     - When using --backup without a --backup-dir, rsync no longer preserves
        !          2255:       the modify time on directories.  This avoids confusing NFS.
        !          2256: 
        !          2257:     - When --copy-links (-L) is specified, we now output a separate error
        !          2258:       for a symlink that has no referent instead of claiming that a file
        !          2259:       "vanished".
        !          2260: 
        !          2261:     - The --copy-links (-L) option no longer has the side-effect of telling
        !          2262:       the receiving side to follow symlinks.  See the --keep-dirlinks
        !          2263:       option (mentioned below) for a way to specify that behavior.
        !          2264: 
        !          2265:     - Error messages from the daemon server's option-parsing (such as
        !          2266:       refused options) are now successfully transferred back to the client
        !          2267:       (the server used to fail to send the message because the socket
        !          2268:       wasn't in the right state for the message to get through).
        !          2269: 
        !          2270:     - Most transfer errors that occur during a daemon transfer are now
        !          2271:       returned to the user in addition to being logged (some messages are
        !          2272:       intended to be daemon-only and are not affected by this).
        !          2273: 
        !          2274:     - Fixed a bug in the daemon authentication code when using one of the
        !          2275:       batch-processing options.
        !          2276: 
        !          2277:     - We try to work around some buggy IPv6 implementations that fail to
        !          2278:       implement IPV6_V6ONLY.  This should fix the "address in use" error
        !          2279:       that some daemons get when running on an OS with a buggy IPv6
        !          2280:       implementation.  Also, if the new code gets this error, we might
        !          2281:       suggest that the user specify --ipv4 or --ipv6 (if we think it will
        !          2282:       help).
        !          2283: 
        !          2284:     - When the remote rsync dies, make a better effort to recover any error
        !          2285:       messages it may have sent before dying (the local rsync used to just
        !          2286:       die with a socket-write error).
        !          2287: 
        !          2288:     - When using --delete and a --backup-dir that contains files that are
        !          2289:       hard-linked to their destination equivalents, rsync now makes sure
        !          2290:       that removed files really get removed (avoids a really weird rename()
        !          2291:       behavior).
        !          2292: 
        !          2293:     - Avoid a bogus run-time complaint about a lack of 64-bit integers when
        !          2294:       the int64 type is defined as an off_t and it actually has 64-bits.
        !          2295: 
        !          2296:     - Added a configure check for open64() without mkstemp64() so that we
        !          2297:       can avoid using mkstemp() when such a combination is encountered.
        !          2298:       This bypasses a problem writing out large temp files on OSes such as
        !          2299:       AIX and HP-UX.
        !          2300: 
        !          2301:     - Fixed an age-old crash problem with --read-batch on a local copy
        !          2302:       (rsync was improperly assuming --whole-file for the local copy).
        !          2303: 
        !          2304:     - When --dry-run (-n) is used and the destination directory does not
        !          2305:       exist, rsync now produces a correct report of files that would be
        !          2306:       sent instead of dying with a chdir() error.
        !          2307: 
        !          2308:     - Fixed a bug that could cause a slow-to-connect rsync daemon to die
        !          2309:       with an error instead of waiting for the connection to finish.
        !          2310: 
        !          2311:     - Fixed an ssh interaction that could cause output to be lost when the
        !          2312:       user chose to combine the output of rsync's stdout and stderr (e.g.
        !          2313:       using the "2>&1").
        !          2314: 
        !          2315:     - Fixed an option-parsing bug when --files-from got passed to a daemon.
        !          2316: 
        !          2317:   ENHANCEMENTS:
        !          2318: 
        !          2319:     - Added the --partial-dir=DIR option that lets you specify where to
        !          2320:       (temporarily) put a partially transferred file (instead of over-
        !          2321:       writing the destination file).  E.g.  --partial-dir=.rsync-partial
        !          2322:       Also added support for the RSYNC_PARTIAL_DIR environment variable
        !          2323:       that, when found, transforms a regular --partial option (such as
        !          2324:       the convenient -P option) into one that also specifies a directory.
        !          2325: 
        !          2326:     - Added --keep-dirlinks (-K), which allows you to symlink a directory
        !          2327:       onto another partition on the receiving side and have rsync treat it
        !          2328:       as matching a normal directory from the sender.
        !          2329: 
        !          2330:     - Added the --inplace option that tells rsync to write each destination
        !          2331:       file without using a temporary file.  The matching of existing data
        !          2332:       in the destination file can be severely limited by this, but there
        !          2333:       are also cases where this is more efficient (such as appending data).
        !          2334:       Use only when needed (see the man page for more details).
        !          2335: 
        !          2336:     - Added the "write only" option for the daemon's config file.
        !          2337: 
        !          2338:     - Added long-option names for -4 and -6 (namely --ipv4 and --ipv6)
        !          2339:       and documented all these options in the man page.
        !          2340: 
        !          2341:     - Improved the handling of the --bwlimit option so that it's less
        !          2342:       bursty, more accurate, and works properly over a larger range of
        !          2343:       values.
        !          2344: 
        !          2345:     - The rsync daemon-over-ssh code now looks for SSH_CONNECTION and
        !          2346:       SSH2_CLIENT in addition to SSH_CLIENT to figure out the IP address.
        !          2347: 
        !          2348:     - Added the --checksum-seed=N option for advanced users.
        !          2349: 
        !          2350:     - Batch writing/reading has a brand-new implementation that is simpler,
        !          2351:       fixes a few weird problems with the old code (such as no longer
        !          2352:       sprinkling the batch files into different dirs or even onto different
        !          2353:       systems), and is much less intrusive into the code (making it easier
        !          2354:       to maintain for the future).  The new code generates just one data
        !          2355:       file instead of three, which makes it possible to read the batch on
        !          2356:       stdin via a remote shell.  Also, the old requirement of forcing the
        !          2357:       same fixed checksum-seed for all batch processing has been removed.
        !          2358: 
        !          2359:     - If an rsync daemon has a module set with "list = no" (which hides its
        !          2360:       presence in the list of available modules), a user that fails to
        !          2361:       authenticate gets the same "unknown module" error that they would get
        !          2362:       if the module were actually unknown (while still logging the real
        !          2363:       error to the daemon's log file).  This prevents fishing for module
        !          2364:       names.
        !          2365: 
        !          2366:     - The daemon's "refuse options" config item now allows you to match
        !          2367:       option names using wildcards and/or the single-letter option names.
        !          2368: 
        !          2369:     - Each transferred file now gets its permissions and modified-time
        !          2370:       updated before the temp-file gets moved into place.  Previously, the
        !          2371:       finished file would have a very brief window where its permissions
        !          2372:       disallowed all group and world access.
        !          2373: 
        !          2374:     - Added the ability to parse a literal IPv6 address in an "rsync:" URL
        !          2375:       (e.g. rsync://[2001:638:500:101::21]:873/module/dir).
        !          2376: 
        !          2377:     - The daemon's wildcard expanding code can now handle more than 1000
        !          2378:       filenames (it's now limited by memory instead of having a hard-wired
        !          2379:       limit).
        !          2380: 
        !          2381:   INTERNAL:
        !          2382: 
        !          2383:     - Some cleanup in the exclude code has saved some per-exclude memory
        !          2384:       and made the code easier to maintain.
        !          2385: 
        !          2386:     - Improved the argv-overflow checking for a remote command that has a
        !          2387:       lot of args.
        !          2388: 
        !          2389:     - Use rsyserr() in the various places that were still calling rprintf()
        !          2390:       with strerror() as an arg.
        !          2391: 
        !          2392:     - If an rsync daemon is listening on multiple sockets (to handle both
        !          2393:       IPv4 and IPv6 to a single port), we now close all the unneeded file
        !          2394:       handles after we accept a connection (we used to close just one of
        !          2395:       them).
        !          2396: 
        !          2397:     - Optimized the handling of larger block sizes (rsync used to slow to a
        !          2398:       crawl if the block size got too large).
        !          2399: 
        !          2400:     - Optimized away a loop in hash_search().
        !          2401: 
        !          2402:     - Some improvements to the sanitize_path() and clean_fname() functions
        !          2403:       makes them more efficient and produce better results (while still
        !          2404:       being compatible with the file-name cleaning that gets done on both
        !          2405:       sides when sending the file-list).
        !          2406: 
        !          2407:     - Got rid of alloc_sanitize_path() after adding a destination-buffer
        !          2408:       arg to sanitize_path() made it possible to put all the former's
        !          2409:       functionality into the latter.
        !          2410: 
        !          2411:     - The file-list that is output when at least 4 verbose options are
        !          2412:       specified reports the uid value on the sender even when rsync is
        !          2413:       not running as root (since we might be sending to a root receiver).
        !          2414: 
        !          2415:   BUILD CHANGES:
        !          2416: 
        !          2417:     - Added a "gen" target to rebuild most of the generated files,
        !          2418:       including configure, config.h.in, the man pages, and proto.h.
        !          2419: 
        !          2420:     - If "make proto" doesn't find some changes in the prototypes, the
        !          2421:       proto.h file is left untouched (its time-stamp used to always be
        !          2422:       updated).
        !          2423: 
        !          2424:     - The variable $STRIP (that is optionally set by the install-strip
        !          2425:       target's rule) was changed to $INSTALL_STRIP because some systems
        !          2426:       have $STRIP already set in the environment.
        !          2427: 
        !          2428:     - Fixed a build problem when SUPPORT_HARD_LINKS isn't defined.
        !          2429: 
        !          2430:     - When cross-compiling, the gettimeofday() function is now assumed to
        !          2431:       be a modern version that takes two-args (since we can't test it).
        !          2432: 
        !          2433:   DEVELOPER RELATED:
        !          2434: 
        !          2435:     - The scripts in the testsuite dir were cleaned up a bit and a few
        !          2436:       new tests added.
        !          2437: 
        !          2438:     - Some new diffs were added to the patches dir, and some accepted
        !          2439:       ones were removed.
        !          2440: 
        !          2441: 
        !          2442: NEWS for rsync 2.6.2 (30 Apr 2004)
        !          2443: Protocol: 28 (unchanged)
        !          2444: Changes since 2.6.1:
        !          2445: 
        !          2446:   BUG FIXES:
        !          2447: 
        !          2448:     - Fixed a major bug in the sorting of the filenames when --relative
        !          2449:       is used for some sources (just sources such as "/" and "/*" were
        !          2450:       affected).  This fix ensures that we ask for the right file-list
        !          2451:       item when requesting changes from the sender.
        !          2452: 
        !          2453:     - Rsync now checks the return value of the close() function to
        !          2454:       better report disk-full problems on an NFS file system.
        !          2455: 
        !          2456:     - Restored the old daemon-server behavior of logging error messages
        !          2457:       rather than returning them to the user.  (A better long-term fix
        !          2458:       will be sought in the future.)
        !          2459: 
        !          2460:     - An obscure uninitialized-variable bug was fixed in the uid/gid
        !          2461:       code.  (This bug probably had no ill effects.)
        !          2462: 
        !          2463:   BUILD CHANGES:
        !          2464: 
        !          2465:     - Got rid of the configure check for sys/sysctl.h (it wasn't used
        !          2466:       and was causing a problem on some systems).  Also improved the
        !          2467:       broken-largefile-locking test to try to avoid failure due to an
        !          2468:       NFS build-dir.
        !          2469: 
        !          2470:     - Fixed a compile problem on systems that don't define
        !          2471:       AI_NUMERICHOST.
        !          2472: 
        !          2473:     - Fixed a compile problem in the popt source for compilers that
        !          2474:       don't support __attribute__.
        !          2475: 
        !          2476:   DEVELOPER RELATED:
        !          2477: 
        !          2478:     - Improved the testsuite's "merge" test to work on OSF1.
        !          2479: 
        !          2480:     - Two new diffs were added to the patches dir.
        !          2481: 
        !          2482: 
        !          2483: NEWS for rsync 2.6.1 (26 Apr 2004)
        !          2484: Protocol: 28 (changed)
        !          2485: Changes since 2.6.0:
        !          2486: 
        !          2487:   SECURITY FIXES:
        !          2488: 
        !          2489:     - Paths sent to an rsync daemon are more thoroughly sanitized when
        !          2490:       chroot is not used.  If you're running a non-read-only rsync
        !          2491:       daemon with chroot disabled, *please upgrade*, ESPECIALLY if the
        !          2492:       user privs you run rsync under is anything above "nobody".
        !          2493: 
        !          2494:   ENHANCEMENTS:
        !          2495: 
        !          2496:     - Lower memory use, more optimal transfer of data over the socket,
        !          2497:       and lower CPU usage (see the INTERNAL section for details).
        !          2498: 
        !          2499:     - The RSYNC_PROXY environment variable can now contain a
        !          2500:       "USER:PASS@" prefix before the "HOST:PORT" information.
        !          2501:       (Bardur Arantsson)
        !          2502: 
        !          2503:     - The --progress output now mentions how far along in the transfer
        !          2504:       we are, including both a count of files transferred and a
        !          2505:       percentage of the total file-count that we've processed.  It also
        !          2506:       shows better current-rate-of-transfer and remaining-transfer-time
        !          2507:       values.
        !          2508: 
        !          2509:     - Documentation changes now attempt to describe some often mis-
        !          2510:       understood features more clearly.
        !          2511: 
        !          2512:   BUG FIXES:
        !          2513: 
        !          2514:     - When -x (--one-file-system) is combined with -L (--copy-links) or
        !          2515:       --copy-unsafe-links, no symlinked files are skipped, even if the
        !          2516:       referent file is on a different filesystem.
        !          2517: 
        !          2518:     - The --link-dest code now works properly for a non-root user when
        !          2519:       (1) the UIDs of the source and destination differ and -o was
        !          2520:       specified, or (2) when the group of the source can't be used on
        !          2521:       the destination and -g was specified.
        !          2522: 
        !          2523:     - Fixed a bug in the handling of -H (hard-links) that might cause
        !          2524:       the expanded PATH/NAME value of the current item to get
        !          2525:       overwritten (due to an expanded-name caching bug).
        !          2526:       
        !          2527:     - We now reset the "new data has been sent" flag at the start of
        !          2528:       each file we send.  This makes sure that an interrupted transfer
        !          2529:       with the --partial option set doesn't keep a shorter temp file
        !          2530:       than the current basis file when no new data has been transferred
        !          2531:       over the wire for that file.
        !          2532: 
        !          2533:     - Fixed a byte-order problem in --batch-mode on big-endian machines.
        !          2534:       (Jay Fenlason)
        !          2535: 
        !          2536:     - When using --cvs-exclude, the exclude items we get from a
        !          2537:       per-directory's .cvsignore file once again only affect that one
        !          2538:       directory (not all following directories too).  The items are also
        !          2539:       now properly word-split and parsed without any +/- prefix parsing.
        !          2540: 
        !          2541:     - When specifying the USER@HOST: prefix for a file, the USER part
        !          2542:       can now contain an '@', if needed (i.e. the last '@' is used to
        !          2543:       find the HOST, not the first).
        !          2544: 
        !          2545:     - Fixed some bugs in the handling of group IDs for non-root users:
        !          2546:       (1) It properly handles a group that the sender didn't have a name
        !          2547:       for (it would previously skip changing the group on any files in
        !          2548:       that group).  (2) If --numeric-ids is used, rsync no longer
        !          2549:       attempts to set groups that the user doesn't have the permission
        !          2550:       to set.
        !          2551: 
        !          2552:     - Fixed the "refuse options" setting in the rsyncd.conf file.
        !          2553: 
        !          2554:     - Improved the -x (--one-file-system) flag's handling of any mount-
        !          2555:       point directories we encounter.  It is both more optimal (in that
        !          2556:       it no longer does a useless scan of the contents of the mount-
        !          2557:       point dirs) and also fixes a bug where a remapped mount of the
        !          2558:       original filesystem could get discovered in a subdir we should be
        !          2559:       ignoring.
        !          2560: 
        !          2561:     - Rsync no longer discards a double-slash at the start of a filename
        !          2562:       when trying to open the file.  It also no longer constructs names
        !          2563:       that start with a double slash (unless the user supplied them).
        !          2564: 
        !          2565:     - Path-specifying options to a daemon should now work the same with
        !          2566:       or without chroot turned on.  Previously, such a option (such as
        !          2567:       --link-dest) would get its absolute path munged into a relative
        !          2568:       one if chroot was not on, making that setting fairly useless.
        !          2569:       Rsync now transforms the path into one that is based on the
        !          2570:       module's base dir when chroot is not enabled.
        !          2571: 
        !          2572:     - Fixed a compatibility problem interacting with older rsync
        !          2573:       versions that might send us an empty --suffix value without
        !          2574:       telling us that --backup-dir was specified.
        !          2575: 
        !          2576:     - The "hosts allow" option for a daemon-over-remote-shell process
        !          2577:       now has improved support for IPv6 addresses and a fix for systems
        !          2578:       that have a length field in their socket structs.
        !          2579: 
        !          2580:     - Fixed the ability to request an empty backup --suffix when sending
        !          2581:       files to an rsync daemon.
        !          2582: 
        !          2583:     - Fixed an option-parsing bug when --files-from was sent to a server
        !          2584:       sender.
        !          2585: 
        !          2586:   INTERNAL:
        !          2587: 
        !          2588:     - Most of the I/O is now buffered, which results in a pretty large
        !          2589:       speedup when running under MS Windows.  (Craig Barratt)
        !          2590: 
        !          2591:     - Optimizations to the name-handling/comparing code have made some
        !          2592:       significant reductions in user-CPU time for large file sets.
        !          2593: 
        !          2594:     - Some cleanup of the variable types make the code more consistent.
        !          2595: 
        !          2596:     - Reduced memory requirements of hard link preservation.
        !          2597:       (J.W. Schultz)
        !          2598: 
        !          2599:     - Implemented a new algorithm for hard-link handling that speeds up
        !          2600:       the code significantly.  (J.W. Schultz and Wayne Davison)
        !          2601: 
        !          2602:     - The --hard-link option now uses the first existing file in the
        !          2603:       group of linked files as the basis for the transfer.  This
        !          2604:       prevents the sub-optimal transfer of a file's data when a new
        !          2605:       hardlink is added on the sending side and it sorts alphabetically
        !          2606:       earlier in the list than the files that are already present on the
        !          2607:       receiving side.
        !          2608: 
        !          2609:     - Dropped support for protocol versions less than 20 (2.3.0 released
        !          2610:       15 Mar 1999) and activated warnings for protocols less than 25
        !          2611:       (2.5.0 released 23 Aug 2001). (Wayne Davison and J.W. Schultz,
        !          2612:       severally)
        !          2613: 
        !          2614:     - More optimal data transmission for --hard-links (protocol 28).
        !          2615: 
        !          2616:     - More optimal data transmission for --checksum (protocol 28).
        !          2617: 
        !          2618:     - Less memory is used when --checksum is specified.
        !          2619: 
        !          2620:     - Less memory is used in the file list (a per-file savings).
        !          2621: 
        !          2622:     - The generator is now better about not modifying the file list
        !          2623:       during the transfer in order to avoid a copy-on-write memory
        !          2624:       bifurcation (on systems where fork() uses shared memory).
        !          2625:       Previously, rsync's shared memory would slowly become unshared,
        !          2626:       resulting in real memory usage nearly doubling on the receiving
        !          2627:       side by the end of the transfer.  Now, as long as permissions
        !          2628:       are being preserved, the shared memory should remain that way
        !          2629:       for the entire transfer.
        !          2630: 
        !          2631:     - Changed hardlink info and file_struct + strings to use allocation
        !          2632:       pools.  This reduces memory use for large file-sets and permits
        !          2633:       freeing memory to the OS.  (J.W. Schultz) 
        !          2634: 
        !          2635:     - The 2 pipes used between the receiver and generator processes
        !          2636:       (which are forked on the same machine) were reduced to 1 pipe and
        !          2637:       the protocol improved so that (1) it is now impossible to have the
        !          2638:       "redo" pipe fill up and hang rsync, and (2) trailing messages from
        !          2639:       the receiver don't get lost on their way through the generator
        !          2640:       over to the sender (which mainly affected hard-link messages and
        !          2641:       verbose --stats output).
        !          2642: 
        !          2643:     - Improved the internal uid/gid code to be more portable and a
        !          2644:       little more optimized.
        !          2645: 
        !          2646:     - The device numbers sent when using --devices are now sent as
        !          2647:       separate major/minor values with 32-bit accuracy (protocol 28).
        !          2648:       Previously, the copied devices were sent as a single 32-bit
        !          2649:       number.  This will make inter-operation of 64-bit binaries more
        !          2650:       compatible with their 32-bit brethren (with both ends of the
        !          2651:       connection are using protocol 28).  Note that optimizations in the
        !          2652:       binary protocol for sending the device numbers often results in
        !          2653:       fewer bytes being used than before, even though more precision is
        !          2654:       now available.
        !          2655: 
        !          2656:     - Some cleanup of the exclude/include structures and its code made
        !          2657:       things clearer (internally), simpler, and more efficient.
        !          2658: 
        !          2659:     - The reading & writing of the file-list in batch-mode is now
        !          2660:       handled by the same code that sends & receives the list over the
        !          2661:       wire.  This makes it much easier to maintain.  (Note that the
        !          2662:       batch code is still considered to be experimental.)
        !          2663: 
        !          2664:   BUILD CHANGES:
        !          2665: 
        !          2666:     - The configure script now accepts --with-rsyncd-conf=PATH to
        !          2667:       override the default value of the /etc/rsyncd.conf file.
        !          2668: 
        !          2669:     - Fixed configure bug when running "./configure --disable-ipv6".
        !          2670: 
        !          2671:     - Fixed compilation problem on Tru64 Unix (having to do with
        !          2672:       sockaddr.sa_len and sockaddr.sin_len).
        !          2673: 
        !          2674:   DEVELOPER RELATED:
        !          2675: 
        !          2676:     - Fixed "make test" bug when build dir is not the source dir.
        !          2677: 
        !          2678:     - Added a couple extra diffs in the "patches" dir, removed the ones
        !          2679:       that got applied, and rebuilt the rest.
        !          2680: 
        !          2681: 
        !          2682: NEWS for rsync 2.6.0 (1 Jan 2004)
        !          2683: Protocol: 27 (changed)
        !          2684: Changes since 2.5.7:
        !          2685: 
        !          2686:   ENHANCEMENTS:
        !          2687: 
        !          2688:     * "ssh" is now the default remote shell for rsync.  If you want to
        !          2689:       change this, configure like this:  "./configure --with-rsh=rsh".
        !          2690: 
        !          2691:     * Added --files-from, --no-relative, --no-implied-dirs, and --from0.
        !          2692:       Note that --from0 affects the line-ending character for all the
        !          2693:       files read by the --*-from options. (Wayne Davison)
        !          2694: 
        !          2695:     * Length of csum2 is now per-file starting with protocol version
        !          2696:       27. (J.W. Schultz)
        !          2697: 
        !          2698:     * Per-file dynamic block size is now sqrt(file length).  The
        !          2699:       per-file checksum size is determined according to an algorithm
        !          2700:       provided by Donovan Baarda which reduces the probability of rsync
        !          2701:       algorithm corrupting data and falling back using the whole md4
        !          2702:       checksums. (J.W. Schultz, Donovan Baarda)
        !          2703: 
        !          2704:     * The --stats option no longer includes the (debug) malloc summary
        !          2705:       unless the verbose option was specified at least twice.
        !          2706: 
        !          2707:     * Added a new error/warning code for when files vanish from the
        !          2708:       sending side.  Made vanished source files not interfere with the
        !          2709:       file-deletion pass when --delete-after was specified.
        !          2710: 
        !          2711:     * Various trailing-info sections are now preceded by a newline.
        !          2712: 
        !          2713:   BUG FIXES:
        !          2714: 
        !          2715:     * Fixed several exclude/include matching bugs when using wild-cards.
        !          2716:       This has a several user-visible effects, all of which make the
        !          2717:       matching more consistent and intuitive.  This should hopefully not
        !          2718:       cause anyone problems since it makes the matching work more like
        !          2719:       what people are expecting. (Wayne Davison)
        !          2720: 
        !          2721:       - A pattern with a "**" no longer causes a "*" to match slashes.
        !          2722:         For example, with "/*/foo/**", "foo" must be 2 levels deep.
        !          2723:        [If your string has BOTH "*" and "**" wildcards, changing the
        !          2724:        "*" wildcards to "**" will provide the old behavior in all
        !          2725:        versions.]
        !          2726: 
        !          2727:       - "**/foo" now matches at the base of the transfer (like /foo
        !          2728:         does).  [Use "/**/foo" to get the old behavior in all versions.]
        !          2729: 
        !          2730:       - A non-anchored wildcard term floats to match beyond the base of
        !          2731:         the transfer.  E.g. "CVS/R*" matches at the end of the path,
        !          2732:         just like the non-wildcard term "CVS/Root" does. [Use "/CVS/R*"
        !          2733:         to get the old behavior in all versions.]
        !          2734: 
        !          2735:       - Including a "**" in the match term causes it to be matched
        !          2736:         against the entire path, not just the name portion, even if
        !          2737:         there aren't any interior slashes in the term.  E.g. "foo**bar"
        !          2738:         would exclude "/path/foo-bar" (just like before) as well as
        !          2739:         "/foo-path/baz-bar" (unlike before).  [Use "foo*bar" to get the
        !          2740:         old behavior in all versions.]
        !          2741: 
        !          2742:     * The exclude list specified in the daemon's config file is now
        !          2743:       properly applied to the pulled items no matter how deep the
        !          2744:       user's file-args are in the source tree.  (Wayne Davison)
        !          2745: 
        !          2746:     * For protocol version >= 27, mdfour_tail() is called when the
        !          2747:       block size (including checksum_seed) is a multiple of 64.
        !          2748:       Previously it was not called, giving the wrong MD4 checksum.
        !          2749:       (Craig Barratt)
        !          2750: 
        !          2751:     * For protocol version >= 27, a 64 bit bit counter is used in
        !          2752:       mdfour.c as required by the RFC.  Previously only a 32 bit bit
        !          2753:       counter was used, causing incorrect MD4 file checksums for
        !          2754:       file sizes >= 512MB - 4.  (Craig Barratt)
        !          2755: 
        !          2756:     * Fixed a crash bug when interacting with older rsync versions and
        !          2757:       multiple files of the same name are destined for the same dir.
        !          2758:       (Wayne Davison)
        !          2759: 
        !          2760:     * Keep tmp names from overflowing MAXPATHLEN.
        !          2761: 
        !          2762:     * Make --link-dest honor the absence of -p, -o, and -g.
        !          2763: 
        !          2764:     * Made rsync treat a trailing slash in the destination in a more
        !          2765:       consistent manner.
        !          2766: 
        !          2767:     * Fixed file I/O error detection.  (John Van Essen)
        !          2768: 
        !          2769:     * Fixed bogus "malformed address {hostname}" message in rsyncd log
        !          2770:       when checking IP address against hostnames from "hosts allow"
        !          2771:       and "hosts deny" parameters in config file.
        !          2772: 
        !          2773:     * Print heap statistics when verbose >= 2 instead of when >= 1.
        !          2774: 
        !          2775:     * Fixed a compression (-z) bug when syncing a mostly-matching file
        !          2776:       that contains already-compressed data.  (Yasuoka Masahiko and
        !          2777:       Wayne Davison)
        !          2778: 
        !          2779:     * Fixed a bug in the --backup code that could cause deleted files
        !          2780:       to not get backed up.
        !          2781: 
        !          2782:     * When the backup code makes new directories, create them with mode
        !          2783:       0700 instead of 0755 (since the directory permissions in the
        !          2784:       backup tree are not yet copied from the main tree).
        !          2785: 
        !          2786:     * Call setgroups() in a more portable manner.
        !          2787: 
        !          2788:     * Improved file-related error messages to better indicate exactly
        !          2789:       what pathname failed. (Wayne Davison)
        !          2790: 
        !          2791:     * Fixed some bugs in the handling of --delete and --exclude when
        !          2792:       using the --relative (-R) option. (Wayne Davison)
        !          2793: 
        !          2794:     * Fixed bug that prevented regular files from replacing
        !          2795:       special files and caused a directory in --link-dest or
        !          2796:       --compare-dest to block the creation of a file with the
        !          2797:       same path.  A directory still cannot be replaced by a
        !          2798:       regular file unless --delete specified.  (J.W. Schultz)
        !          2799: 
        !          2800:     * Detect and report when open or opendir succeed but read and
        !          2801:       readdir fail caused by network filesystem issues and truncated
        !          2802:       files.  (David Norwood, Michael Brown, J.W. Schultz)
        !          2803: 
        !          2804:     * Added a fix that should give ssh time to restore the tty settings
        !          2805:       if the user presses Ctrl-C at an ssh password prompt.
        !          2806: 
        !          2807:   INTERNAL:
        !          2808: 
        !          2809:     * Eliminated vestigial support for old versions that we stopped
        !          2810:       supporting. (J.W. Schultz)
        !          2811: 
        !          2812:     * Simplified some of the option-parsing code. (Wayne Davison)
        !          2813: 
        !          2814:     * Some cleanup made to the exclude code, as well as some new
        !          2815:       defines added to enhance readability. (Wayne Davison)
        !          2816: 
        !          2817:     * Changed the protocol-version code so that it can interact at a
        !          2818:       lower protocol level than the maximum supported by both sides.
        !          2819:       Added an undocumented option, --protocol=N, to force the value
        !          2820:       we advertise to the other side (primarily for testing purposes).
        !          2821:       (Wayne Davison)
        !          2822: 
        !          2823: 
        !          2824: NEWS for rsync 2.5.7 (4 Dec 2003)
        !          2825: Protocol: 26 (unchanged)
        !          2826: Changes since 2.5.6:
        !          2827: 
        !          2828:   SECURITY FIXES:
        !          2829: 
        !          2830:     * Fix buffer handling bugs.  (Andrew Tridgell, Martin Pool, Paul
        !          2831:       Russell, Andrea Barisani)
        !          2832: 
        !          2833: 
        !          2834: NEWS for rsync 2.5.6, aka "the dwd-between-jobs release" (26 Jan 2003)
        !          2835: Protocol: 26 (unchanged)
        !          2836: Changes since 2.5.5:
        !          2837: 
        !          2838:   ENHANCEMENTS:
        !          2839: 
        !          2840:     * The --delete-after option now implies --delete.  (Wayne Davison)
        !          2841: 
        !          2842:     * The --suffix option can now be used with --backup-dir.  (Michael
        !          2843:       Zimmerman)
        !          2844: 
        !          2845:     * Combining "::" syntax with the --rsh/-e option now uses the
        !          2846:       specified remote-shell as a transport to talk to a (newly-spawned)
        !          2847:       server-daemon.  This allows someone to use daemon features, such
        !          2848:       as modules, over a secure protocol, such as ssh.  (JD Paul)
        !          2849: 
        !          2850:     * The rsync:// syntax for daemon connections is now accepted in the
        !          2851:       destination field.
        !          2852: 
        !          2853:     * If the file name given to --include-from or --exclude-from is "-",
        !          2854:       rsync will read from standard input.  (J.W. Schultz)
        !          2855: 
        !          2856:     * New option --link-dest which is like --compare-dest except that
        !          2857:       unchanged files are hard-linked in to the destination directory.
        !          2858:       (J.W. Schultz)
        !          2859: 
        !          2860:     * Don't report an error if an excluded file disappears during an
        !          2861:       rsync run.  (Eugene Chupriyanov and Bo Kersey)
        !          2862: 
        !          2863:     * Added .svn to --cvs-exclude list to support subversion.  (Jon
        !          2864:       Middleton)
        !          2865: 
        !          2866:     * Properly support IPv6 addresses in the rsyncd.conf "hosts allow"
        !          2867:       and "hosts deny" fields.  (Hideaki Yoshifuji)
        !          2868: 
        !          2869:     * Changed exclude file handling to permit DOS or MAC style line
        !          2870:       terminations.  (J.W. Schultz)
        !          2871: 
        !          2872:     * Ignore errors from chmod when -p/-a/--preserve-perms is not set.
        !          2873:       (Dave Dykstra)
        !          2874: 
        !          2875:   BUG FIXES:
        !          2876: 
        !          2877:     * Fix "forward name lookup failed" errors on AIX 4.3.3.  (John
        !          2878:       L. Allen, Martin Pool)
        !          2879: 
        !          2880:     * Generate each file's rolling-checksum data as we send it, not
        !          2881:       in a separate (memory-eating) pass before hand.  This prevents
        !          2882:       timeout errors on really large files. (Stefan Nehlsen)
        !          2883: 
        !          2884:     * Fix compilation on Tru64.  (Albert Chin, Zoong Pham)
        !          2885: 
        !          2886:     * Better handling of some client-server errors.  (Martin Pool)
        !          2887: 
        !          2888:     * Fixed a crash that would occur when sending a list of files that
        !          2889:       contains a duplicate name (if it sorts to the end of the file
        !          2890:       list) and using --delete.  (Wayne Davison)
        !          2891: 
        !          2892:     * Fixed the file-name duplicate-removal code when dealing with multiple
        !          2893:       dups in a row. (Wayne Davison)
        !          2894: 
        !          2895:     * Fixed a bug that caused rsync to lose the exit status of its child
        !          2896:       processes and sometimes return an exit code of 0 instead of showing
        !          2897:       an error.  (David R. Staples, Dave Dykstra)
        !          2898: 
        !          2899:     * Fixed bug in --copy-unsafe-links that caused it to be completely
        !          2900:       broken.  (Dave Dykstra)
        !          2901: 
        !          2902:     * Prevent infinite recursion in cleanup code under certain circumstances.
        !          2903:       (Sviatoslav Sviridov and Marc Espie)
        !          2904: 
        !          2905:     * Fixed a bug that prevented rsync from creating intervening directories
        !          2906:       when --relative-paths/-R is set.  (Craig Barratt)
        !          2907: 
        !          2908:     * Prevent "Connection reset by peer" messages from Cygwin. (Randy O'Meara)
        !          2909: 
        !          2910:   INTERNAL:
        !          2911: 
        !          2912:     * Many code cleanups and improved internal documentation.  (Martin
        !          2913:       Pool, Nelson Beebe)
        !          2914: 
        !          2915:     * Portability fixes. (Dave Dykstra and Wayne Davison)
        !          2916: 
        !          2917:     * More test cases.  (Martin Pool)
        !          2918: 
        !          2919:     * Some test-case fixes.  (Brian Poole, Wayne Davison)
        !          2920: 
        !          2921:     * Updated included popt to the latest vendor drop, version 1.6.4.
        !          2922:       (Jos Backus)
        !          2923: 
        !          2924:     * Updated config.guess and config.sub to latest versions; this
        !          2925:       means rsync should build on more platforms.  (Paul Green)
        !          2926: 
        !          2927: 
        !          2928: NEWS for rsync 2.5.5, aka Snowy River (2 Apr 2002)
        !          2929: Protocol: 26 (unchanged)
        !          2930: Changes since 2.5.4:
        !          2931: 
        !          2932:   ENHANCEMENTS:
        !          2933: 
        !          2934:     * With --progress, when a transfer is complete show the time taken;
        !          2935:       otherwise show expected time to complete. (Cameron Simpson)
        !          2936: 
        !          2937:     * Make "make install-strip" works properly, and "make install"
        !          2938:       accepts a DESTDIR variable for help in building binary packages.
        !          2939:       (Peter Breitenlohner, Greg Louis)
        !          2940: 
        !          2941:     * If configured with --enable-maintainer-mode, then on receipt of
        !          2942:       a fatal signal rsync will try to open an xterm running gdb,
        !          2943:       similarly to Samba's "panic action" or GNOME's bug-buddy.
        !          2944:       (Martin Pool)
        !          2945: 
        !          2946: 
        !          2947:   BUG FIXES:
        !          2948: 
        !          2949:     * Fix situation where failure to fork (e.g. because out of process
        !          2950:       slots) would cause rsync to kill all processes owned by the
        !          2951:       current user.  Yes, really!  (Paul Haas, Martin Pool)
        !          2952: 
        !          2953:     * Fix test suite on Solaris.  (Jos Backus, Martin Pool)
        !          2954: 
        !          2955:     * Fix minor memory leak in socket code.  (Dave Dykstra, Martin
        !          2956:       Pool.)
        !          2957: 
        !          2958:     * Fix --whole-file problem that caused it to be the default even
        !          2959:       for remote connections.  (Martin Pool, Frank Schulz)
        !          2960: 
        !          2961:     * Work around bug in Mac OS X mkdir(2), which cannot handle
        !          2962:       trailing slashes.
        !          2963:       <http://www.opensource.apple.com/bugs/X/BSD%20Kernel/2734739.html>
        !          2964:       (Martin Pool)
        !          2965: 
        !          2966:     * Improved network error handling.  (Greg A. Woods)
        !          2967: 
        !          2968: 
        !          2969: NEWS for rsync 2.5.4, aka "Imitation lizard skin" (13 Mar 2002)
        !          2970: Protocol: 26 (unchanged)
        !          2971: Changes since 2.5.3:
        !          2972: 
        !          2973:   BUG FIXES:
        !          2974: 
        !          2975:     * Additional fix for zlib double-free bug.  (Martin Pool, Andrew
        !          2976:       Tridgell) (CVE CAN-2002-0059)
        !          2977: 
        !          2978:   ENHANCEMENTS:
        !          2979: 
        !          2980:     * Merge in changes from zlib 1.1.3 to zlib 1.1.4.  (Jos Backus)
        !          2981:       (Note that rsync still uses a custom version of zlib; you can
        !          2982:       not just link against a system library.  See zlib/README.rsync)
        !          2983: 
        !          2984:     * Additional test cases for --compress.  (Martin Pool)
        !          2985: 
        !          2986: 
        !          2987: NEWS for rsync 2.5.3, aka "Happy 26" (11 Mar 2002)
        !          2988: Protocol: 26 (unchanged)
        !          2989: Changes since 2.5.2:
        !          2990: 
        !          2991:   SECURITY FIXES:
        !          2992: 
        !          2993:     * Make sure that supplementary groups are removed from a server
        !          2994:       process after changing uid and gid. (Ethan Benson) (Debian bug
        !          2995:       #132272, CVE CAN-2002-0080)
        !          2996: 
        !          2997:   BUG FIXES:
        !          2998: 
        !          2999:     * Fix zlib double-free bug.  (Owen Taylor, Mark J Cox) (CVE
        !          3000:       CAN-2002-0059)
        !          3001: 
        !          3002:     * Fixed problem that in many cases caused the error message
        !          3003:        unexpected read size of 0 in map_ptr
        !          3004:       and resulted in the wrong data being copied.
        !          3005: 
        !          3006:     * Fixed compilation errors on some systems caused by the use of
        !          3007:       "unsigned int64" in rsync.h.
        !          3008: 
        !          3009:     * Fixed problem on systems such as Sunos4 that do not support realloc
        !          3010:       on a NULL pointer; error was "out of memory in flist_expand".
        !          3011: 
        !          3012:     * Fix for rsync server processes hanging around after the client
        !          3013:       unexpectedly disconnects.  (Colin Walters) (Debian bug #128632)
        !          3014: 
        !          3015:     * Cope with BSD systems on which mkdir() will not accept a trailing
        !          3016:       slash.
        !          3017: 
        !          3018:   ENHANCEMENTS:
        !          3019: 
        !          3020:     * Merge in changes from zlib 1.1.2 to zlib 1.1.3.  (Note that
        !          3021:       rsync still uses a custom version of zlib; you can not just link
        !          3022:       against a system library.  See zlib/README.rsync)
        !          3023: 
        !          3024:     * Command to initiate connections is only shown with -vv, rather
        !          3025:       than -v as in 2.5.2.  Output from plain -v is more similar to
        !          3026:       what was historically used so as not to break scripts that try
        !          3027:       to parse the output.
        !          3028: 
        !          3029:     * Added --no-whole-file and --no-blocking-io options (Dave Dykstra)
        !          3030: 
        !          3031:     * Made the --write-batch and --read-batch options actually work
        !          3032:       and added documentation in the man page (Jos Backus)
        !          3033: 
        !          3034:     * If the daemon is unable to fork a child to accept a connection,
        !          3035:       print an error message.  (Colin Walters)
        !          3036: 
        !          3037: 
        !          3038: NEWS for rsync 2.5.2 (26 Jan 2002)
        !          3039: Protocol: 26 (changed)
        !          3040: Changes since 2.5.1:
        !          3041: 
        !          3042:   SECURITY FIXES:
        !          3043: 
        !          3044:     * Signedness security patch from Sebastian Krahmer
        !          3045:       <krahmer@suse.de> -- in some cases we were not sufficiently
        !          3046:       careful about reading integers from the network.
        !          3047: 
        !          3048:   BUG FIXES:
        !          3049: 
        !          3050:     * Fix possible string mangling in log files.
        !          3051: 
        !          3052:     * Fix for setting local address of outgoing sockets.
        !          3053: 
        !          3054:     * Better handling of hardlinks and devices on platforms with
        !          3055:       64-bit dev_t or ino_t.
        !          3056: 
        !          3057:     * Name resolution on machines supporting IPv6 is improved.
        !          3058: 
        !          3059:     * Fix for device nodes.  (dann frazier)   (Debian #129135)
        !          3060: 
        !          3061:   ENHANCEMENTS:
        !          3062: 
        !          3063:     * With -v, rsync now shows the command used to initiate an ssh/rsh
        !          3064:       connection.
        !          3065: 
        !          3066:     * --statistics now shows memory heap usage on platforms that
        !          3067:       support mallinfo().
        !          3068: 
        !          3069:     * "The Ted T'so school of program optimization": make progress
        !          3070:       visible and people will think it's faster.  (With --progress,
        !          3071:       rsync will show you how many files it has seen as it builds the
        !          3072:       file_list, giving some indication that it has not hung.)
        !          3073: 
        !          3074:     * Improvements to batch mode support.  This is still experimental
        !          3075:       but testing would be welcome.   (Jos Backus)
        !          3076: 
        !          3077:     * New --ignore-existing option, patch previously distributed with
        !          3078:       Vipul's Razor.  (Debian #124286)
        !          3079: 
        !          3080: 
        !          3081: NEWS for rsync 2.5.1 (3 Jan 2002)
        !          3082: Protocol: 25 (unchanged)
        !          3083: Changes since 2.5.0:
        !          3084: 
        !          3085:   BUG FIXES:
        !          3086: 
        !          3087:     * Fix for segfault in --daemon mode configuration parser.  (Paul
        !          3088:       Mackerras)
        !          3089: 
        !          3090:     * Correct string<->address parsing for both IPv4 and 6.
        !          3091:       (YOSHIFUJI Hideaki, SUMIKAWA Munechika and Jun-ichiro "itojun"
        !          3092:       Hagino)
        !          3093: 
        !          3094:     * Various fixes for IPv6 support.  (Dave Dykstra)
        !          3095: 
        !          3096:     * rsync.1 typo fix.  (Matt Kraai)
        !          3097: 
        !          3098:     * Test suite typo fixes.  (Tom Schmidt)
        !          3099: 
        !          3100:     * rsync.1 grammar and clarity improvements.  (Edward
        !          3101:       Welbourne)
        !          3102: 
        !          3103:     * Correction to ./configure tests for inet_ntop.  (Jeff Garzik)
        !          3104: 
        !          3105:   ENHANCEMENTS:
        !          3106: 
        !          3107:     * --progress and -P now show estimated data transfer rate (in a
        !          3108:       multiple of bytes/s) and estimated time to completion.  (Rik
        !          3109:       Faith)
        !          3110: 
        !          3111:     * --no-detach option, required to run as a W32 service and also
        !          3112:       useful when running on Unix under daemontools, AIX's SRC, or a
        !          3113:       debugger.  (Max Bowsher, Jos Backus)
        !          3114: 
        !          3115:     * Clearer error messages for some conditions.
        !          3116: 
        !          3117: 
        !          3118: NEWS for rsync 2.5.0 (30 Nov 2001)
        !          3119: Protocol: 25 (changed)
        !          3120: Changes since 2.4.6:
        !          3121: 
        !          3122:   ANNOUNCEMENTS
        !          3123: 
        !          3124:     * Martin Pool <mbp@samba.org> is now a co-maintainer.
        !          3125: 
        !          3126:   NEW FEATURES
        !          3127: 
        !          3128:     * Support for LSB-compliant packaging <http://www.linuxbase.org/>
        !          3129: 
        !          3130:     * Shell wildcards are allowed in "auth users" lines.
        !          3131: 
        !          3132:     * Merged UNC rsync+ patch to support creation of standalone patch
        !          3133:       sets.  By Bert J. Dempsey and Debra Weiss, updated by Jos
        !          3134:       Backus.  <http://www.ils.unc.edu/i2dsi/unc_rsync+.html>
        !          3135: 
        !          3136:     * IPv6 support based on a patch from KAME.net, on systems
        !          3137:       including modern versions of Linux, Solaris, and HP-UX.  Also
        !          3138:       includes IPv6 compatibility functions for old OSs by the
        !          3139:       Internet Software Consortium, Paul Vixie, the OpenSSH
        !          3140:       portability project, and OpenBSD.
        !          3141: 
        !          3142:   ENHANCEMENTS
        !          3143: 
        !          3144:     * Include/exclude cluestick: with -vv, print out whether files are
        !          3145:       included or excluded and why.
        !          3146: 
        !          3147:     * Many error messages have more friendly explanations and more
        !          3148:       details.
        !          3149: 
        !          3150:     * Manual page improvements plus scanty protocol documentation.
        !          3151: 
        !          3152:     * When running as --daemon in the background and using a "log
        !          3153:       file" rsyncd.conf directive, close the log file every time it is
        !          3154:       open when going to sleep on the socket.  This allows the log
        !          3155:       file to get cleaned out by another process.
        !          3156: 
        !          3157:     * Change to using libpopt rather than getopt for processing
        !          3158:       options. This makes the code cleaner and the behaviour more
        !          3159:       consistent across platforms.  popt is included and built if not
        !          3160:       installed on the platform.
        !          3161: 
        !          3162:     * More details in --version, including note about whether 64-bit
        !          3163:       files, symlinks and hardlinks are supported.
        !          3164: 
        !          3165:     * MD4 code may use less CPU cycles.
        !          3166: 
        !          3167:     * Use mkstemp on systems where it is secure.  If we use mktemp,
        !          3168:       explain that we do it in a secure way.
        !          3169: 
        !          3170:     * --whole-file is the default when source and target are on the
        !          3171:        local machine.
        !          3172: 
        !          3173:   BUG FIXES:
        !          3174: 
        !          3175:     * Fix for various bugs causing rsync to hang.
        !          3176: 
        !          3177:     * Attempt to fix Large File Summit support on AIX.
        !          3178: 
        !          3179:     * Attempt to fix error handling lockup bug.
        !          3180: 
        !          3181:     * Give a non-0 exit code if *any* of the files we have been asked
        !          3182:       to transfer fail to transfer.
        !          3183: 
        !          3184:     * For log messages containing ridiculously long strings that might
        !          3185:       overflow a buffer rsync no longer aborts, but rather prints an
        !          3186:       ellipsis at the end of the string.  (Patch from Ed Santiago.)
        !          3187: 
        !          3188:   PLATFORMS:
        !          3189: 
        !          3190:     * Improved support for UNICOS (tested on Cray T3E and Cray SV1)
        !          3191: 
        !          3192:     * autoconf2.52 (or later) is now required to rebuild the autoconf
        !          3193:       scripts.  It is not required to simply build rsync.
        !          3194: 
        !          3195:     * Platforms thought to work in this release:
        !          3196: 
        !          3197:                Cray SV1 UNICOS 10.0.0.8 cc
        !          3198:                Debian Linux 2.2 UltraSparc gcc
        !          3199:                Debian Linux testing/unstable ARM gcc
        !          3200:                FreeBSD 3.3-RELEASE i386 cc
        !          3201:                FreeBSD 4.1.1-RELEASE i386 cc
        !          3202:                FreeBSD 4.3-STABLE i386 cc
        !          3203:                HP PA-RISC HP-UX 10.20 gcc
        !          3204:                HP PA-RISC HP-UX 11.11 cc
        !          3205:                IRIX 6.5 MIPS cc
        !          3206:                IRIX 6.5 MIPS gcc
        !          3207:                Mac OS X PPC (--disable-ipv6) cc
        !          3208:                NetBSD 1.5 i386 gcc
        !          3209:                NetBSD Current i386 cc
        !          3210:                OpenBSD 2.5 Sparc gcc
        !          3211:                OpenBSD 2.9 i386 cc
        !          3212:                OpenBSD Current i386 cc
        !          3213:                RedHat 6.2 i386 gcc
        !          3214:                RedHat 6.2 i386 insure++
        !          3215:                RedHat 7.0 i386 gcc
        !          3216:                RedHat 7.1 i386 (Kernel 2.4.10) gcc
        !          3217:                Slackware 8.0 i686 (Kernel 2.4.10)
        !          3218:                Solaris 8 UltraSparc cc
        !          3219:                Solaris 8 UltraSparc gcc
        !          3220:                Solaris 8 i386 gcc
        !          3221:                SuSE 7.1 i386 gcc2.95.2
        !          3222:                SuSE 7.1 ppc gcc2.95.2
        !          3223:                i386-pc-sco3.2v5.0.5 cc
        !          3224:                i386-pc-sco3.2v5.0.5 gcc
        !          3225:                powerpc-ibm-aix4.3.3.0 cc
        !          3226:                i686-unknown-sysv5UnixWare7.1.0 gcc
        !          3227:                i686-unknown-sysv5UnixWare7.1.0 cc
        !          3228: 
        !          3229:   TESTING:
        !          3230: 
        !          3231:     * The existing test.sh script by Phil Hands has been merged into a
        !          3232:       test framework that works from both "make check" and the Samba
        !          3233:       build farm.
        !          3234: 
        !          3235: 
        !          3236: Partial Protocol History
        !          3237:        RELEASE DATE    VER.    DATE OF COMMIT* PROTOCOL
        !          3238:        23 Sep 2011     3.0.9                   30
        !          3239:        26 Mar 2011     3.0.8                   30
        !          3240:        31 Dec 2009     3.0.7                   30
        !          3241:        08 May 2009     3.0.6                   30
        !          3242:        28 Dec 2008     3.0.5                   30
        !          3243:        06 Sep 2008     3.0.4                   30
        !          3244:        29 Jun 2008     3.0.3                   30
        !          3245:        08 Apr 2008     3.0.2                   30
        !          3246:        03 Apr 2008     3.0.1                   30
        !          3247:        01 Mar 2008     3.0.0   11 Nov 2006     30
        !          3248:        06 Nov 2006     2.6.9                   29
        !          3249:        22 Apr 2006     2.6.8                   29
        !          3250:        11 Mar 2006     2.6.7                   29
        !          3251:        28 Jul 2005     2.6.6                   29
        !          3252:        01 Jun 2005     2.6.5                   29
        !          3253:        30 Mar 2005     2.6.4   17 Jan 2005     29
        !          3254:        30 Sep 2004     2.6.3                   28
        !          3255:        30 Apr 2004     2.6.2                   28
        !          3256:        26 Apr 2004     2.6.1   08 Jan 2004     28
        !          3257:        01 Jan 2004     2.6.0   10 Apr 2003     27 (MAX=40)
        !          3258:        04 Dec 2003     2.5.7                   26
        !          3259:        26 Jan 2003     2.5.6                   26
        !          3260:        02 Apr 2002     2.5.5                   26
        !          3261:        13 Mar 2002     2.5.4                   26
        !          3262:        11 Mar 2002     2.5.3                   26
        !          3263:        26 Jan 2002     2.5.2   11 Jan 2002     26
        !          3264:        03 Jan 2002     2.5.1                   25
        !          3265:        30 Nov 2001     2.5.0   23 Aug 2001     25
        !          3266:        06 Sep 2000     2.4.6                   24
        !          3267:        19 Aug 2000     2.4.5                   24
        !          3268:        29 Jul 2000     2.4.4                   24
        !          3269:        09 Apr 2000     2.4.3                   24
        !          3270:        30 Mar 2000     2.4.2                   24
        !          3271:        30 Jan 2000     2.4.1   29 Jan 2000     24
        !          3272:        29 Jan 2000     2.4.0   28 Jan 2000     23
        !          3273:        25 Jan 2000     2.3.3   23 Jan 2000     22
        !          3274:        08 Nov 1999     2.3.2   26 Jun 1999     21
        !          3275:        06 Apr 1999     2.3.1                   20
        !          3276:        15 Mar 1999     2.3.0   15 Mar 1999     20
        !          3277:        25 Nov 1998     2.2.1                   19
        !          3278:        03 Nov 1998     2.2.0                   19
        !          3279:        09 Sep 1998     2.1.1                   19
        !          3280:        20 Jul 1998     2.1.0                   19
        !          3281:        17 Jul 1998     2.0.19                  19
        !          3282:        18 Jun 1998     2.0.17                  19
        !          3283:        01 Jun 1998     2.0.16                  19
        !          3284:        27 May 1998     2.0.13  27 May 1998     19
        !          3285:        26 May 1998     2.0.12                  18
        !          3286:        22 May 1998     2.0.11                  18
        !          3287:        18 May 1998     2.0.9   18 May 1998     18
        !          3288:        17 May 1998     2.0.8                   17
        !          3289:        15 May 1998     2.0.1                   17
        !          3290:        14 May 1998     2.0.0                   17
        !          3291:        17 Apr 1998     1.7.4                   17
        !          3292:        13 Apr 1998     1.7.3                   17
        !          3293:        05 Apr 1998     1.7.2                   17
        !          3294:        26 Mar 1998     1.7.1                   17
        !          3295:        26 Mar 1998     1.7.0   26 Mar 1998     17 (MAX=30)
        !          3296:        13 Jan 1998     1.6.9   13 Jan 1998     15 (MAX=20)
        !          3297: 
        !          3298: * DATE OF COMMIT is the date the protocol change was committed to CVS.

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>