-.\" $OpenBSD: sftp.1,v 1.140 2022/03/31 17:27:27 naddy Exp $
+.\" $OpenBSD: sftp.1,v 1.141 2022/06/27 21:41:55 djm Exp $
.\"
.\" Copyright (c) 2001 Damien Miller. All rights reserved.
.\"
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd $Mdocdate: March 31 2022 $
+.Dd $Mdocdate: June 27 2022 $
.Dt SFTP 1
.Os
.Sh NAME
.Op Fl B Ar buffer_size
.Op Fl b Ar batchfile
.Op Fl c Ar cipher
-.Op Fl D Ar sftp_server_path
+.Op Fl D Ar sftp_server_command
.Op Fl F Ar ssh_config
.Op Fl i Ar identity_file
.Op Fl J Ar destination
Selects the cipher to use for encrypting the data transfers.
This option is directly passed to
.Xr ssh 1 .
-.It Fl D Ar sftp_server_path
+.It Fl D Ar sftp_server_command
Connect directly to a local sftp server
(rather than via
.Xr ssh 1 ) .
+A command and arguments may be specified, for example
+.Qq /path/sftp-server -el debug3 .
This option may be useful in debugging the client and server.
.It Fl F Ar ssh_config
Specifies an alternative
-/* $OpenBSD: sftp.c,v 1.216 2022/05/13 06:31:50 djm Exp $ */
+/* $OpenBSD: sftp.c,v 1.217 2022/06/27 21:41:55 djm Exp $ */
/*
* Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
*
int
main(int argc, char **argv)
{
- int in, out, ch, err, tmp, port = -1, noisy = 0;
- char *host = NULL, *user, *cp, *file2 = NULL;
+ int r, in, out, ch, err, tmp, port = -1, noisy = 0;
+ char *host = NULL, *user, *cp, **cpp, *file2 = NULL;
int debug_level = 0;
char *file1 = NULL, *sftp_server = NULL;
char *ssh_program = _PATH_SSH_PROGRAM, *sftp_direct = NULL;
connect_to_server(ssh_program, args.list, &in, &out);
} else {
- args.list = NULL;
- addargs(&args, "sftp-server");
-
- connect_to_server(sftp_direct, args.list, &in, &out);
+ if ((r = argv_split(sftp_direct, &tmp, &cpp, 1)) != 0)
+ fatal_r(r, "Parse -D arguments");
+ if (cpp[0] == 0)
+ fatal("No sftp server specified via -D");
+ connect_to_server(cpp[0], cpp, &in, &out);
+ argv_free(cpp, tmp);
}
freeargs(&args);