Wayne Davison
2002-Jan-31 06:11 UTC
configure --with-rsh=CMD and default blocking-IO support
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---
Dave Dykstra
2002-Feb-01 03:56 UTC
configure --with-rsh=CMD and default blocking-IO support
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---
>
Martin Pool
2002-Feb-06 14:33 UTC
configure --with-rsh=CMD and default blocking-IO support
On 30 Jan 2002, Wayne Davison <wayned@users.sourceforge.net> 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.OK, I agree --with-rsh should go in, but I think putting magic characters into it is needlessly confusing. I would feel much better about a separate configure option to set the default O_NONBLOCK mode. -- Martin
Reasonably Related Threads
- default --rsh
- [Bug 1924] New: unable to rsync between a PC with cygwin and a unix machine using rsh
- rsync 2.5.5, "unexpected tag failures", Solaris 2.6 vs. 2.8, "--b locking-io" workaround
- Problem with rsync on WinXP going to HP-UX or Linux
- [patch] configurable RSYNCD_CONF