From f11233cb78347e3e7ad9c4834f75a4f6923100a9 Mon Sep 17 00:00:00 2001 From: simon Date: Wed, 21 Jan 2004 19:56:08 +0000 Subject: [PATCH] Darryl L. Miles's patch to support an optional port number argument on the PSFTP `open' command; it was arguably a bug that this command couldn't do such an obvious thing that could be done from the main command line. Also had to fix a NULL-dereference in do_sftp_cleanup in the process. git-svn-id: svn://svn.tartarus.org/sgt/putty@3754 cda61777-01e9-0310-a592-d414129be87e --- psftp.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/psftp.c b/psftp.c index 8bbf5d69..6812574d 100644 --- a/psftp.c +++ b/psftp.c @@ -1014,6 +1014,8 @@ int sftp_cmd_chmod(struct sftp_command *cmd) static int sftp_cmd_open(struct sftp_command *cmd) { + int portnumber; + if (back != NULL) { printf("psftp: already connected\n"); return 0; @@ -1024,7 +1026,16 @@ static int sftp_cmd_open(struct sftp_command *cmd) return 0; } - if (psftp_connect(cmd->words[1], NULL, 0)) { + if (cmd->nwords > 2) { + portnumber = atoi(cmd->words[2]); + if (portnumber == 0) { + printf("open: invalid port number\n"); + return 0; + } + } else + portnumber = 0; + + if (psftp_connect(cmd->words[1], NULL, portnumber)) { back = NULL; /* connection is already closed */ return -1; /* this is fatal */ } @@ -1216,7 +1227,7 @@ static struct sftp_cmd_lookup { }, { "open", TRUE, "connect to a host", - " [@]\n" + " [@] []\n" " Establishes an SFTP connection to a given host. Only usable\n" " when you did not already specify a host name on the command\n" " line.\n", @@ -1509,10 +1520,12 @@ static int do_sftp_init(void) void do_sftp_cleanup() { char ch; - back->special(backhandle, TS_EOF); - sftp_recvdata(&ch, 1); - back->free(backhandle); - sftp_cleanup_request(); + if (back) { + back->special(backhandle, TS_EOF); + sftp_recvdata(&ch, 1); + back->free(backhandle); + sftp_cleanup_request(); + } if (pwd) { sfree(pwd); pwd = NULL; -- 2.11.0