mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-26 01:32:25 +00:00
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. [originally from svn r3754]
This commit is contained in:
parent
4dec95f80f
commit
2379e69619
25
psftp.c
25
psftp.c
@ -1014,6 +1014,8 @@ int sftp_cmd_chmod(struct sftp_command *cmd)
|
|||||||
|
|
||||||
static int sftp_cmd_open(struct sftp_command *cmd)
|
static int sftp_cmd_open(struct sftp_command *cmd)
|
||||||
{
|
{
|
||||||
|
int portnumber;
|
||||||
|
|
||||||
if (back != NULL) {
|
if (back != NULL) {
|
||||||
printf("psftp: already connected\n");
|
printf("psftp: already connected\n");
|
||||||
return 0;
|
return 0;
|
||||||
@ -1024,7 +1026,16 @@ static int sftp_cmd_open(struct sftp_command *cmd)
|
|||||||
return 0;
|
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 */
|
back = NULL; /* connection is already closed */
|
||||||
return -1; /* this is fatal */
|
return -1; /* this is fatal */
|
||||||
}
|
}
|
||||||
@ -1216,7 +1227,7 @@ static struct sftp_cmd_lookup {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"open", TRUE, "connect to a host",
|
"open", TRUE, "connect to a host",
|
||||||
" [<user>@]<hostname>\n"
|
" [<user>@]<hostname> [<port>]\n"
|
||||||
" Establishes an SFTP connection to a given host. Only usable\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"
|
" when you did not already specify a host name on the command\n"
|
||||||
" line.\n",
|
" line.\n",
|
||||||
@ -1509,10 +1520,12 @@ static int do_sftp_init(void)
|
|||||||
void do_sftp_cleanup()
|
void do_sftp_cleanup()
|
||||||
{
|
{
|
||||||
char ch;
|
char ch;
|
||||||
back->special(backhandle, TS_EOF);
|
if (back) {
|
||||||
sftp_recvdata(&ch, 1);
|
back->special(backhandle, TS_EOF);
|
||||||
back->free(backhandle);
|
sftp_recvdata(&ch, 1);
|
||||||
sftp_cleanup_request();
|
back->free(backhandle);
|
||||||
|
sftp_cleanup_request();
|
||||||
|
}
|
||||||
if (pwd) {
|
if (pwd) {
|
||||||
sfree(pwd);
|
sfree(pwd);
|
||||||
pwd = NULL;
|
pwd = NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user