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
Possibly Parallel 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