- strcpy(cfg.remote_cmd, "sftp");
- cfg.ssh_subsys = TRUE;
- cfg.remote_cmd_ptr2 = cmd;
- cfg.ssh_subsys2 = FALSE;
+ cfg.remote_cmd_ptr2 = NULL;
+ if (try_sftp) {
+ /* First choice is SFTP subsystem. */
+ main_cmd_is_sftp = 1;
+ strcpy(cfg.remote_cmd, "sftp");
+ cfg.ssh_subsys = TRUE;
+ if (try_scp) {
+ /* Fallback is to use the provided scp command. */
+ fallback_cmd_is_sftp = 0;
+ cfg.remote_cmd_ptr2 = cmd;
+ cfg.ssh_subsys2 = FALSE;
+ } else {
+ /* Since we're not going to try SCP, we may as well try
+ * harder to find an SFTP server, since in the current
+ * implementation we have a spare slot. */
+ fallback_cmd_is_sftp = 1;
+ /* see psftp.c for full explanation of this kludge */
+ cfg.remote_cmd_ptr2 =
+ "test -x /usr/lib/sftp-server && exec /usr/lib/sftp-server\n"
+ "test -x /usr/local/lib/sftp-server && exec /usr/local/lib/sftp-server\n"
+ "exec sftp-server";
+ cfg.ssh_subsys2 = FALSE;
+ }
+ } else {
+ /* Don't try SFTP at all; just try the scp command. */
+ main_cmd_is_sftp = 0;
+ cfg.remote_cmd_ptr = cmd;
+ cfg.ssh_subsys = FALSE;
+ }