[SCM] The rsync repository. - branch master updated

Rsync CVS commit messages rsync-cvs at lists.samba.org
Sat Jul 25 06:35:52 UTC 2020


The branch, master has been updated
       via  a5a9f268 Tweak NEWS & src_file().
       via  0a255771 Add `--errors2stderr` & `--msgs2protocol` options.
      from  e07d79ad Handle the first run of configure; prefer gmake.

https://git.samba.org/?p=rsync.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit a5a9f268fe99316a48d5fa6fc768e89469fbe526
Author: Wayne Davison <wayne at opencoder.net>
Date:   Fri Jul 24 23:30:32 2020 -0700

    Tweak NEWS & src_file().

commit 0a255771f459893a05d6c91147ca541887c40e7d
Author: Wayne Davison <wayne at opencoder.net>
Date:   Fri Jul 24 19:17:55 2020 -0700

    Add `--errors2stderr` & `--msgs2protocol` options.

-----------------------------------------------------------------------

Summary of changes:
 NEWS.md    |  6 ++++++
 options.c  |  4 +++-
 rsync.1.md | 61 ++++++++++++++++++++++++++++++++++---------------------------
 util2.c    |  7 ++-----
 4 files changed, 45 insertions(+), 33 deletions(-)


Changeset truncated at 500 lines:

diff --git a/NEWS.md b/NEWS.md
index 08cac043..1f58f825 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -45,6 +45,10 @@
  - Added `--mkpath` option to tell rsync that it should create a non-existing
    path component of the destination arg.
 
+ - Added `--errors2stdout` (the new default) and `--msgs2protocol` (the old
+   default).  The new output idiom should help error messages get to the user
+   more quickly when doing a push (which includes local copying).
+
  - Added the ability to specify "@netgroup" names to the `hosts allow` and
    `hosts deny` daemon parameters.  This is a finalized version of the
    netgroup-auth patch from the patches repo.
@@ -66,6 +70,8 @@
 
  - Added some compatibility code for HPE NonStop platforms.
 
+ - Improved the INSTALL.md info.
+
 ### INTERNAL:
 
  - Use a simpler overflow check idiom in a few spots.
diff --git a/options.c b/options.c
index aa61d348..3e74a086 100644
--- a/options.c
+++ b/options.c
@@ -611,7 +611,7 @@ static void print_info_flags(enum logcode f)
 #ifndef CAN_HARDLINK_SPECIAL
 		"no "
 #endif
-			"hardlink-special",
+			"hardlink-specials",
 
 #ifndef SUPPORT_LINKS
 		"no "
@@ -809,7 +809,9 @@ static struct poptOption long_options[] = {
   {"no-v",             0,  POPT_ARG_VAL,    &verbose, 0, 0, 0 },
   {"info",             0,  POPT_ARG_STRING, 0, OPT_INFO, 0, 0 },
   {"debug",            0,  POPT_ARG_STRING, 0, OPT_DEBUG, 0, 0 },
+  {"errors2stderr",    0,  POPT_ARG_VAL,    &msgs2stderr, 2, 0, 0 },
   {"msgs2stderr",      0,  POPT_ARG_VAL,    &msgs2stderr, 1, 0, 0 },
+  {"msgs2protocol",    0,  POPT_ARG_VAL,    &msgs2stderr, 0, 0, 0 },
   {"no-msgs2stderr",   0,  POPT_ARG_VAL,    &msgs2stderr, 0, 0, 0 },
   {"quiet",           'q', POPT_ARG_NONE,   0, 'q', 0, 0 },
   {"motd",             0,  POPT_ARG_VAL,    &output_motd, 1, 0, 0 },
diff --git a/rsync.1.md b/rsync.1.md
index 1aa8f5c4..cb26b5af 100644
--- a/rsync.1.md
+++ b/rsync.1.md
@@ -328,13 +328,15 @@ Here is a short summary of the options available in rsync.  Please refer to the
 detailed description below for a complete description.
 
 [comment]: # (help-rsync.h)
-[comment]: # (Keep these short enough that they'll be under 80 chars when indented by 8 chars.)
+[comment]: # (Keep these short enough that they'll be under 80 chars when indented by 7 chars.)
 
 ```
 --verbose, -v            increase verbosity
 --info=FLAGS             fine-grained informational verbosity
 --debug=FLAGS            fine-grained debug verbosity
+--errors2stderr          output errors directly to stderr (the default)
 --msgs2stderr            output all messages directly to stderr
+--msgs2protocol          forward all messages via the protocol stream
 --quiet, -q              suppress non-error messages
 --no-motd                suppress daemon-mode MOTD
 --checksum, -c           skip based on checksum, not mod-time & size
@@ -594,32 +596,37 @@ your home directory (remove the '=' for that).
 
     >     rsync -aiv {-M,}--debug=del2 src/ dest/
 
-0.  `--msgs2stderr`
-
-    This option tells rsync to send all the messages directly to stderr rather
-    than to send messages to the client side via the protocol.  The protocol
-    allows rsync to output normal messages via stdout and errors via stderr,
-    but it can delay messages behind a slew of data.
-
-    This option helps to avoid putting a lot of data into the pipe if you are
-    outputting debugging information via several `-v` options or the `--debug`
-    options.
-
-    Also keep in mind that connecting to a normal (non-remote-shell) daemon
-    does not have a stderr channel to send messages back to the client side, so
-    a modern rsync only allows the option on a remote-shell-run daemon.
-
-    This option has the side-effect of making stderr output get line-buffered
-    so that the merging of the output of 3 programs happens in a more readable
-    manner.
-
-    Starting with rsync 3.2.3 rsync will send **errors** directly to stderr for
-    a non-daemon transfer, so you no longer need to specify this option just to
-    try to improve rsync's behavior when a remote receiver encounters an error.
-    You can override this new default by specifying `--no-msgs2stderr`.
-
-    Also starting with rsync 3.2.3 rsync will forward the `--msgs2stderr` or
-    `--no-msgs2stderr` option to the remote rsync.
+0.  `--errors2stderr`, `--msgs2stderr`, `--msgs2protocol`
+
+    Rsync handles messages in 3 possible ways:
+
+    - `--errors2stderr` (the default) causes all the rsync processes to send an
+      error directly to stderr, even if the process is on the remote side of
+      the transfer.  Info messages are sent to the client side via the protocol
+      stream.  If stderr is not available (i.e. when directly connecting with a
+      daemon via a socket) errors fall back to being sent via the protocol
+      stream.  This option and the default are new for version 3.2.3.
+
+    - `--msgs2stderr` causes all rsync messages (info and error) to get written
+      directly to stderr from all (possible) processes.  This causes stderr to
+      become line-buffered (instead of raw) and eliminates the ability to
+      divide up the info and error messages by file handle.  For those doing
+      debugging or using several levels of verbosity, this option can help to
+      avoid clogging up the transfer stream (which should prevent any chance of
+      a deadlock bug hanging things up).  It also enables the outputting of some
+      I/O related debug messages.
+
+    - `--msgs2protocol` causes all rsync messages to be sent to the client side
+      via the protocol stream.  One client process outputs all messages, with
+      errors on stderr and info messages on stdout.  This **was** the default
+      in older rsync versions, but can cause error delays when a lot of
+      transfer data is ahead of the messages.  If you're pushing files to an
+      older rsync, you may want to use `--msgs2stderr` since that option has
+      been around for several releases.
+
+    Starting with rsync 3.2.3, the `--msgs2stderr` and `--msgs2protocol`
+    options are forwarded to the remote rsync, though the latter is conveyed
+    using the backward-compatible `--no-msgs2stderr` option.
 
 0.  `--quiet`, `-q`
 
diff --git a/util2.c b/util2.c
index 8879c987..8b61d0b5 100644
--- a/util2.c
+++ b/util2.c
@@ -135,11 +135,8 @@ const char *src_file(const char *file)
 	static int prefix = -1;
 
 	if (prefix < 0) {
-		const char *cp;
-		for (cp = util2, prefix = 0; *cp; cp++) {
-			if (*cp == '/')
-				prefix = cp - util2 + 1;
-		}
+		const char *cp = strrchr(util2, '/');
+		prefix = cp ? cp - util2 + 1 : 0;
 	}
 
 	if (prefix && strncmp(file, util2, prefix) == 0)


-- 
The rsync repository.



More information about the rsync-cvs mailing list