/*
* scp.c - Scp (Secure Copy) client for PuTTY.
- * Joris van Rantwijk, Aug 1999.
+ * Joris van Rantwijk, Aug 1999, Nov 1999.
*
* This is mainly based on ssh-1.2.26/scp.c by Timo Rinne & Tatu Ylonen.
* They, in turn, used stuff from BSD rcp.
static int preserve = 0;
static int targetshouldbedirectory = 0;
static int statistics = 1;
+static int portnumber = 0;
+static char *password = NULL;
static int errs = 0;
static int connection_open = 0;
void ssh_get_password(char *prompt, char *str, int maxlen)
{
HANDLE hin, hout;
- DWORD savemode;
- int i;
+ DWORD savemode, i;
+
+ if (password) {
+ strncpy(str, password, maxlen);
+ str[maxlen-1] = '\0';
+ password = NULL;
+ return;
+ }
hin = GetStdHandle(STD_INPUT_HANDLE);
hout = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleMode(hin, savemode);
- if (i > maxlen) i = maxlen-1; else i = i - 2;
+ if ((int)i > maxlen) i = maxlen-1; else i = i - 2;
str[i] = '\0';
WriteFile(hout, "\r\n", 2, &i, NULL);
cfg.port = 22;
}
+ if (portnumber)
+ cfg.port = portnumber;
+
/* Set username */
if (user != NULL && user[0] != '\0') {
strncpy(cfg.username, user, sizeof(cfg.username)-1);
{
printf("PuTTY Secure Copy client\n");
printf("%s\n", ver);
- printf("usage: scp [-p] [-q] [-r] [-v] [user@]host:source target\n");
- printf(" scp [-p] [-q] [-r] [-v] source [source..]"
- " [user@]host:target\n");
+ printf("Usage: scp [options] [user@]host:source target\n");
+ printf(" scp [options] source [source...] [user@]host:target\n");
+ printf("Options:\n");
+ printf(" -p preserve file attributes\n");
+ printf(" -q quiet, don't show statistics\n");
+ printf(" -r copy directories recursively\n");
+ printf(" -v show verbose messages\n");
+ printf(" -P port connect to specified port\n");
+ printf(" -pw passw login with specified password\n");
exit(1);
}
else if (strcmp(argv[i], "-h") == 0 ||
strcmp(argv[i], "-?") == 0)
usage();
+ else if (strcmp(argv[i], "-P") == 0 && i+1 < argc)
+ portnumber = atoi(argv[++i]);
+ else if (strcmp(argv[i], "-pw") == 0 && i+1 < argc)
+ password = argv[++i];
else if (strcmp(argv[i], "--") == 0)
{ i++; break; }
else