[SCM] The rsync repository. - branch master updated

Rsync CVS commit messages rsync-cvs at lists.samba.org
Thu May 13 04:41:01 UTC 2021


The branch, master has been updated
       via  a6bdf313 Unset DISPLAY in environment.
       via  915685e0 Updated GLIBC check in configure.ac (#175)
       via  05540220 Fix plural of --group option.
      from  75158e10 Fix git-set-file-times's handling of staged changed files.

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


- Log -----------------------------------------------------------------
commit a6bdf313f239cabfef445bc3658b79aec8a40c37
Author: Wayne Davison <wayne at opencoder.net>
Date:   Sat May 1 09:00:03 2021 -0700

    Unset DISPLAY in environment.
    
    Without a DISPLAY var, ssh won't try to forward X11 when making an
    ssh connection.  This patch also makes use of setenv() and unsetenv()
    if they are available.

commit 915685e01b7c065a56a09cbba9516d3c96f0d744
Author: Bart S <smiba at users.noreply.github.com>
Date:   Sat May 1 17:23:25 2021 +0200

    Updated GLIBC check in configure.ac (#175)
    
    The current GLIBC check does not consider we may see glibc 3.0 in the future.

commit 05540220a92dd06b62f240f6178921dde5697dd3
Author: Wayne Davison <wayne at opencoder.net>
Date:   Sat Apr 3 21:09:14 2021 -0700

    Fix plural of --group option.

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

Summary of changes:
 clientserver.c | 46 ++++++++++++++++++++++++++++++++++++++++------
 configure.ac   |  5 +++--
 main.c         | 22 ++++++++++++++++++++--
 rsync.1.md     |  4 ++--
 4 files changed, 65 insertions(+), 12 deletions(-)


Changeset truncated at 500 lines:

diff --git a/clientserver.c b/clientserver.c
index 48c15a60..14e3c544 100644
--- a/clientserver.c
+++ b/clientserver.c
@@ -380,7 +380,7 @@ int start_inband_exchange(int f_in, int f_out, const char *user, int argc, char
 	return 0;
 }
 
-#ifdef HAVE_PUTENV
+#if defined HAVE_SETENV || defined HAVE_PUTENV
 static int read_arg_from_pipe(int fd, char *buf, int limit)
 {
 	char *bp = buf, *eob = buf + limit - 1;
@@ -405,23 +405,57 @@ static int read_arg_from_pipe(int fd, char *buf, int limit)
 
 static void set_env_str(const char *var, const char *str)
 {
+#ifdef HAVE_SETENV
+	if (setenv(var, str, 1) < 0)
+		out_of_memory("set_env_str");
+#else
 #ifdef HAVE_PUTENV
 	char *mem;
 	if (asprintf(&mem, "%s=%s", var, str) < 0)
 		out_of_memory("set_env_str");
 	putenv(mem);
+#else
+	(void)var;
+	(void)str;
+#endif
 #endif
 }
 
+#if defined HAVE_SETENV || defined HAVE_PUTENV
+
+static void set_envN_str(const char *var, int num, const char *str)
+{
+#ifdef HAVE_SETENV
+	char buf[128];
+	(void)snprintf(buf, sizeof buf, "%s%d", var, num);
+	if (setenv(buf, str, 1) < 0)
+		out_of_memory("set_env_str");
+#else
 #ifdef HAVE_PUTENV
+	char *mem;
+	if (asprintf(&mem, "%s%d=%s", var, num, str) < 0)
+		out_of_memory("set_envN_str");
+	putenv(mem);
+#endif
+#endif
+}
+
 void set_env_num(const char *var, long num)
 {
+#ifdef HAVE_SETENV
+	char val[64];
+	(void)snprintf(val, sizeof val, "%ld", num);
+	if (setenv(var, val, 1) < 0)
+		out_of_memory("set_env_str");
+#else
+#ifdef HAVE_PUTENV
 	char *mem;
 	if (asprintf(&mem, "%s=%ld", var, num) < 0)
 		out_of_memory("set_env_num");
 	putenv(mem);
-}
 #endif
+#endif
+}
 
 /* Used for "early exec", "pre-xfer exec", and the "name converter" script. */
 static pid_t start_pre_exec(const char *cmd, int *arg_fd_ptr, int *error_fd_ptr)
@@ -451,15 +485,13 @@ static pid_t start_pre_exec(const char *cmd, int *arg_fd_ptr, int *error_fd_ptr)
 		set_env_str("RSYNC_REQUEST", buf);
 
 		for (j = 0; ; j++) {
-			char *p;
 			len = read_arg_from_pipe(arg_fd, buf, BIGPATHBUFLEN);
 			if (len <= 0) {
 				if (!len)
 					break;
 				_exit(1);
 			}
-			if (asprintf(&p, "RSYNC_ARG%d=%s", j, buf) >= 0)
-				putenv(p);
+			set_envN_str("RSYNC_ARG", j, buf);
 		}
 
 		dup2(arg_fd, STDIN_FILENO);
@@ -490,6 +522,8 @@ static pid_t start_pre_exec(const char *cmd, int *arg_fd_ptr, int *error_fd_ptr)
 	return pid;
 }
 
+#endif
+
 static void write_pre_exec_args(int write_fd, char *request, char **early_argv, char **argv, int exec_type)
 {
 	int j = 0;
@@ -809,7 +843,7 @@ static int rsync_module(int f_in, int f_out, int i, const char *addr, const char
 
 	log_init(1);
 
-#ifdef HAVE_PUTENV
+#if defined HAVE_SETENV || defined HAVE_PUTENV
 	if ((*lp_early_exec(module_id) || *lp_prexfer_exec(module_id)
 	  || *lp_postxfer_exec(module_id) || *lp_name_converter(module_id))
 	 && !getenv("RSYNC_NO_XFER_EXEC")) {
diff --git a/configure.ac b/configure.ac
index f216c218..5a8d6d06 100644
--- a/configure.ac
+++ b/configure.ac
@@ -411,7 +411,7 @@ yes
 			# http://www.v6.linux.or.jp/
 			AC_EGREP_CPP(yes, [
 #include <features.h>
-#if defined(__GLIBC__) && __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
+#if defined(__GLIBC__) && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1))
 yes
 #endif],
 				[ipv6type=$i;
@@ -905,7 +905,8 @@ AC_CHECK_FUNCS(waitpid wait4 getcwd chown chmod lchmod mknod mkfifo \
     setlocale setmode open64 lseek64 mkstemp64 mtrace va_copy __va_copy \
     seteuid strerror putenv iconv_open locale_charset nl_langinfo getxattr \
     extattr_get_link sigaction sigprocmask setattrlist getgrouplist \
-    initgroups utimensat posix_fallocate attropen setvbuf nanosleep usleep)
+    initgroups utimensat posix_fallocate attropen setvbuf nanosleep usleep \
+    setenv unsetenv)
 
 dnl cygwin iconv.h defines iconv_open as libiconv_open
 if test x"$ac_cv_func_iconv_open" != x"yes"; then
diff --git a/main.c b/main.c
index 66e5f780..15303e5d 100644
--- a/main.c
+++ b/main.c
@@ -1567,6 +1567,8 @@ static int start_client(int argc, char *argv[])
 #ifdef HAVE_PUTENV
 	if (daemon_connection)
 		set_env_num("RSYNC_PORT", env_port);
+#else
+	(void)env_port;
 #endif
 
 	pid = do_cmd(shell_cmd, shell_machine, shell_user, remote_argv, remote_argc, &f_in, &f_out);
@@ -1639,7 +1641,6 @@ void remember_children(UNUSED(int val))
 #endif
 }
 
-
 /**
  * This routine catches signals and tries to send them to gdb.
  *
@@ -1663,7 +1664,6 @@ const char *get_panic_action(void)
 	return "xterm -display :0 -T Panic -n Panic -e gdb /proc/%d/exe %d";
 }
 
-
 /**
  * Handle a fatal signal by launching a debugger, controlled by $RSYNC_PANIC_ACTION.
  *
@@ -1687,6 +1687,22 @@ static void rsync_panic_handler(UNUSED(int whatsig))
 }
 #endif
 
+static void unset_env_var(const char *var)
+{
+#ifdef HAVE_UNSETENV
+	unsetenv(var);
+#else
+#ifdef HAVE_PUTENV
+	char *mem;
+	if (asprintf(&mem, "%s=", var) < 0)
+		out_of_memory("unset_env_var");
+	putenv(mem);
+#else
+	(void)var;
+#endif
+#endif
+}
+
 
 int main(int argc,char *argv[])
 {
@@ -1724,6 +1740,8 @@ int main(int argc,char *argv[])
 	our_gid = MY_GID();
 	am_root = our_uid == ROOT_UID;
 
+	unset_env_var("DISPLAY");
+
 	memset(&stats, 0, sizeof(stats));
 
 	/* Even a non-daemon runs needs the default config values to be set, e.g.
diff --git a/rsync.1.md b/rsync.1.md
index 6d79528b..fbbfad22 100644
--- a/rsync.1.md
+++ b/rsync.1.md
@@ -1416,7 +1416,7 @@ your home directory (remove the '=' for that).
     This tells the receiving side to attempt super-user activities even if the
     receiving rsync wasn't run by the super-user.  These activities include:
     preserving users via the `--owner` option, preserving all groups (not just
-    the current user's groups) via the `--groups` option, and copying devices
+    the current user's groups) via the `--group` option, and copying devices
     via the `--devices` option.  This is useful for systems that allow such
     activities without being the super-user, and also for ensuring that you
     will get errors if the receiving side isn't being run as the super-user.
@@ -2630,7 +2630,7 @@ your home directory (remove the '=' for that).
     For the `--usermap` option to have any effect, the `-o` (`--owner`) option
     must be used (or implied), and the receiver will need to be running as a
     super-user (see also the `--fake-super` option).  For the `--groupmap`
-    option to have any effect, the `-g` (`--groups`) option must be used (or
+    option to have any effect, the `-g` (`--group`) option must be used (or
     implied), and the receiver will need to have permissions to set that group.
 
     If your shell complains about the wildcards, use `--protect-args` (`-s`).


-- 
The rsync repository.



More information about the rsync-cvs mailing list