projects
/
u
/
mdw
/
putty
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Make mkfiles.pl less tied to PuTTY in particular, by inventing new
[u/mdw/putty]
/
psftp.c
diff --git
a/psftp.c
b/psftp.c
index
8bbf5d6
..
20d3ab5
100644
(file)
--- 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)
{
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.
*/
@@
-1997,6
+2017,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) {