~mdw
/
sgt
/
putty
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Text around -load option "(although Plink still requires an explicitly
[sgt/putty]
/
psftp.c
diff --git
a/psftp.c
b/psftp.c
index
8bbf5d6
..
10056bd
100644
(file)
--- a/
psftp.c
+++ b/
psftp.c
@@
-1,5
+1,5
@@
/*
/*
- * psftp.c: front end for PSFTP.
+ * psftp.c:
(platform-independent)
front end for PSFTP.
*/
#include <stdio.h>
*/
#include <stdio.h>
@@
-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) {
printf("psftp: already connected\n");
return 0;
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;
}
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 */
}
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",
},
{
"open", TRUE, "connect to a host",
- " [<user>@]<hostname>\n"
+ " [<user>@]<hostname>
[<port>]
\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",
" 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;
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;
if (pwd) {
sfree(pwd);
pwd = NULL;
@@
-1752,7
+1765,7
@@
static void usage(void)
{
printf("PuTTY Secure File Transfer (SFTP) client\n");
printf("%s\n", ver);
{
printf("PuTTY Secure File Transfer (SFTP) client\n");
printf("%s\n", ver);
- printf("Usage: psftp [options]
user@
host\n");
+ printf("Usage: psftp [options]
[user@]
host\n");
printf("Options:\n");
printf(" -b file use specified batchfile\n");
printf(" -bc output batchfile commands\n");
printf("Options:\n");
printf(" -b file use specified batchfile\n");
printf(" -bc output batchfile commands\n");
@@
-1766,9
+1779,16
@@
static void usage(void)
printf(" -C enable compression\n");
printf(" -i key private key file for authentication\n");
printf(" -batch disable all interactive prompts\n");
printf(" -C enable compression\n");
printf(" -i key private key file for authentication\n");
printf(" -batch disable all interactive prompts\n");
+ printf(" -V print version information\n");
cleanup_exit(1);
}
cleanup_exit(1);
}
+static void version(void)
+{
+ printf("psftp: %s\n", ver);
+ cleanup_exit(1);
+}
+
/*
* Connect to a host.
*/
/*
* Connect to a host.
*/
@@
-1919,7
+1939,8
@@
static int psftp_connect(char *userhost, char *user, int portnumber)
back = &ssh_backend;
back = &ssh_backend;
- err = back->init(NULL, &backhandle, &cfg, cfg.host, cfg.port, &realhost,0);
+ err = back->init(NULL, &backhandle, &cfg, cfg.host, cfg.port, &realhost,
+ 0, cfg.tcp_keepalives);
if (err != NULL) {
fprintf(stderr, "ssh_init: %s\n", err);
return 1;
if (err != NULL) {
fprintf(stderr, "ssh_init: %s\n", err);
return 1;
@@
-1997,6
+2018,8
@@
int psftp_main(int argc, char *argv[])
} else if (strcmp(argv[i], "-h") == 0 ||
strcmp(argv[i], "-?") == 0) {
usage();
} else if (strcmp(argv[i], "-h") == 0 ||
strcmp(argv[i], "-?") == 0) {
usage();
+ } else if (strcmp(argv[i], "-V") == 0) {
+ version();
} else if (strcmp(argv[i], "-batch") == 0) {
console_batch_mode = 1;
} else if (strcmp(argv[i], "-b") == 0 && i + 1 < argc) {
} else if (strcmp(argv[i], "-batch") == 0) {
console_batch_mode = 1;
} else if (strcmp(argv[i], "-b") == 0 && i + 1 < argc) {