2008-01-25 Bruno Haible * src/client.c (start_rsh_server): Add a 'force_use_ssh' argument. (start_server): Pass force_use_ssh as 1 when the method is extssh. Index: src/client.c =================================================================== RCS file: /sources/cvs/ccvs/src/client.c,v retrieving revision 1.318.4.47 diff -c -3 -r1.318.4.47 client.c *** src/client.c 25 Jan 2008 00:11:28 -0000 1.318.4.47 --- src/client.c 25 Jan 2008 14:22:57 -0000 *************** *** 3555,3561 **** } #ifndef NO_EXT_METHOD ! static void start_rsh_server PROTO((cvsroot_t *, struct buffer **, struct buffer **)); #endif int --- 3555,3561 ---- } #ifndef NO_EXT_METHOD ! static void start_rsh_server PROTO((cvsroot_t *, struct buffer **, struct buffer **, int)); #endif int *************** *** 4349,4360 **** #endif /* HAVE_GSSAPI */ case ext_method: - case extssh_method: #ifdef NO_EXT_METHOD error (0, 0, ":ext: method not supported by this port of CVS"); error (1, 0, "try :server: instead"); #else /* ! NO_EXT_METHOD */ ! start_rsh_server (current_parsed_root, &to_server, &from_server); #endif /* NO_EXT_METHOD */ break; --- 4349,4370 ---- #endif /* HAVE_GSSAPI */ case ext_method: #ifdef NO_EXT_METHOD error (0, 0, ":ext: method not supported by this port of CVS"); error (1, 0, "try :server: instead"); #else /* ! NO_EXT_METHOD */ ! start_rsh_server (current_parsed_root, &to_server, &from_server, ! 0); ! #endif /* NO_EXT_METHOD */ ! break; ! ! case extssh_method: ! #ifdef NO_EXT_METHOD ! error (0, 0, ":extssh: method not supported by this port of CVS"); ! error (1, 0, "try :server: instead"); ! #else /* ! NO_EXT_METHOD */ ! start_rsh_server (current_parsed_root, &to_server, &from_server, ! 1); #endif /* NO_EXT_METHOD */ break; *************** *** 4715,4724 **** up and running, and that's most important. */ static void ! start_rsh_server (root, to_server, from_server) cvsroot_t *root; struct buffer **to_server; struct buffer **from_server; { int pipes[2]; int child_pid; --- 4725,4735 ---- up and running, and that's most important. */ static void ! start_rsh_server (root, to_server, from_server, force_use_ssh) cvsroot_t *root; struct buffer **to_server; struct buffer **from_server; + int force_use_ssh; { int pipes[2]; int child_pid; *************** *** 4726,4740 **** /* If you're working through firewalls, you can set the CVS_RSH environment variable to a script which uses rsh to invoke another rsh on a proxy machine. */ ! char *cvs_rsh = getenv ("CVS_RSH"); char *cvs_server = getenv ("CVS_SERVER"); int i = 0; /* This needs to fit "rsh", "-b", "-l", "USER", "host", "cmd (w/ args)", and NULL. We leave some room to grow. */ char *rsh_argv[10]; ! if (!cvs_rsh) ! cvs_rsh = RSH_DFLT; if (!cvs_server) cvs_server = "cvs"; --- 4737,4757 ---- /* If you're working through firewalls, you can set the CVS_RSH environment variable to a script which uses rsh to invoke another rsh on a proxy machine. */ ! char *cvs_rsh; char *cvs_server = getenv ("CVS_SERVER"); int i = 0; /* This needs to fit "rsh", "-b", "-l", "USER", "host", "cmd (w/ args)", and NULL. We leave some room to grow. */ char *rsh_argv[10]; ! if (force_use_ssh) ! cvs_rsh = "ssh"; ! else ! { ! cvs_rsh = getenv ("CVS_RSH"); ! if (!cvs_rsh) ! cvs_rsh = RSH_DFLT; ! } if (!cvs_server) cvs_server = "cvs"; *************** *** 4780,4801 **** # else /* ! START_RSH_WITH_POPEN_RW */ static void ! start_rsh_server (root, to_server, from_server) cvsroot_t *root; struct buffer **to_server; struct buffer **from_server; { /* If you're working through firewalls, you can set the CVS_RSH environment variable to a script which uses rsh to invoke another rsh on a proxy machine. */ ! char *cvs_rsh = getenv ("CVS_RSH"); char *cvs_server = getenv ("CVS_SERVER"); char *command; int tofd, fromfd; int child_pid; ! if (!cvs_rsh) ! cvs_rsh = RSH_DFLT; if (!cvs_server) cvs_server = "cvs"; --- 4797,4825 ---- # else /* ! START_RSH_WITH_POPEN_RW */ static void ! start_rsh_server (root, to_server, from_server, force_use_ssh) cvsroot_t *root; struct buffer **to_server; struct buffer **from_server; + int force_use_ssh; { /* If you're working through firewalls, you can set the CVS_RSH environment variable to a script which uses rsh to invoke another rsh on a proxy machine. */ ! char *cvs_rsh; char *cvs_server = getenv ("CVS_SERVER"); char *command; int tofd, fromfd; int child_pid; ! if (force_use_ssh) ! cvs_rsh = "ssh"; ! else ! { ! cvs_rsh = getenv ("CVS_RSH"); ! if (!cvs_rsh) ! cvs_rsh = RSH_DFLT; ! } if (!cvs_server) cvs_server = "cvs";