configure --with-rsh=CMD and default blocking-IO support

Dave Dykstra dwd at bell-labs.com
Fri Feb 1 03:56:16 EST 2002


I see that Martin agreed to put it in:

    http://lists.samba.org/pipermail/rsync/2001-July/004554.html

but it must have dropped off his priority list.

- Dave Dykstra

On Wed, Jan 30, 2002 at 11:11:50AM -0800, Wayne Davison wrote:
> A while back I argued for adding a --with-rsh=CMD option to configure
> and got some general agreement that it would be a good thing (especially
> for systems that don't have rsh at all).  However, the changes were
> never integrated into rsync.
> 
> This patch adds the --with-rsh=CMD option to configure and modifies
> main.c to improve the blocking-IO setting code.  The old code would set
> blocking_io to '1' if the string matched either "rsh" or "remsh"
> (whichever one was configured into rsync).  The new code has a slightly
> modified version of this check (that still works even if RSYNC_RSH isn't
> defined to be "rsh"), but it also adds a way to force the blocking-IO
> setting (both at configure time and via the RSYNC_RSH environment
> variable).  The idiom I chose to use was to prefix the value with '@' to
> indicate that blocking-IO should be used, and to prefix it with "@@" to
> indicate that blocking-IO should not be used.  This allows the installer
> to specify --with-rsh=@@ssh to explicitly specify non-blocking-IO for
> ssh (for the paranoid), the user to specify RSYNC_RSH=@/local/bin/rsh to
> get blocking-IO when using a path to rsh (which the old code would force
> the user to specify the --blocking-io option), and also to be able to
> specify --with-rsh=@@rsh to get a non-blocking-IO rsh by default (which
> is impossible with the old code without specifying a path).
> 
> I've appended the patch to the end.  Don't forget to run autoconf after
> applying it.
> 
> ..wayne..
> 
> ---8<------8<------8<------8<---cut here--->8------>8------>8------>8---
> Index: rsync/config.h.in
> --- rsync/config.h.in	15 Jan 2002 09:53:29 -0000	1.68
> +++ rsync/config.h.in	30 Jan 2002 18:45:18 -0000
> @@ -303,6 +303,9 @@
>  #undef RETSIGTYPE
> 
>  /* */
> +#undef RSYNC_RSH
> +
> +/* */
>  #undef RSYNC_PATH
> 
>  /* rsync release version */
> Index: rsync/configure.in
> --- rsync/configure.in	25 Jan 2002 23:19:21 -0000	1.130
> +++ rsync/configure.in	30 Jan 2002 18:45:19 -0000
> @@ -78,6 +78,10 @@
>  AC_ARG_WITH(included-popt,
>          [  --with-included-popt    use bundled popt library, not from system])
> 
> +AC_ARG_WITH(rsh,
> +	[  --with-rsh=CMD          set rsh command to CMD (default: \"remsh\" or \"rsh\")],
> +	[ AC_DEFINE_UNQUOTED(RSYNC_RSH, "$with_rsh", [ ]) ])
> +
>  AC_ARG_WITH(rsync-path,
>  	[  --with-rsync-path=PATH  set default --rsync-path to PATH (default: \"rsync\")],
>  	[ RSYNC_PATH="$with_rsync_path" ],
> Index: rsync/main.c
> --- rsync/main.c	25 Jan 2002 10:07:41 -0000	1.138
> +++ rsync/main.c	30 Jan 2002 18:45:22 -0000
> @@ -209,8 +209,19 @@
> 
>  		server_options(args,&argc);
> 
> -
> -		if (strcmp(cmd, RSYNC_RSH) == 0) blocking_io = 1;
> +		if (*cmd == '@') {
> +			if (*++cmd == '@') {
> +				cmd++;
> +				blocking_io = 0;
> +			} else
> +				blocking_io = 1;
> +			args[0] = cmd;
> +		} else if (strcmp(cmd, "rsh") == 0
> +#if HAVE_REMSH
> +			|| strcmp(cmd, "remsh") == 0
> +#endif
> +		    )
> +			blocking_io = 1;
>  	}
> 
>  	args[argc++] = ".";
> Index: rsync/rsync.h
> --- rsync/rsync.h	25 Jan 2002 23:00:21 -0000	1.121
> +++ rsync/rsync.h	30 Jan 2002 18:45:29 -0000
> @@ -85,10 +85,12 @@
> 
>  #include "config.h"
> 
> +#ifndef RSYNC_RSH
>  #if HAVE_REMSH
>  #define RSYNC_RSH "remsh"
>  #else
>  #define RSYNC_RSH "rsh"
> +#endif
>  #endif
> 
>  #include <sys/types.h>
> ---8<------8<------8<------8<---cut here--->8------>8------>8------>8---
> 




More information about the rsync mailing list