1
2
3
4
5
6
7
8
9
10
|
1
2
3
4
5
6
7
8
9
10
|
-
+
|
/*
* 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.
*/
#include <windows.h>
#include <winsock.h>
|
| ︙ | | |
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
+
+
|
((*(LONGLONG*)&(ft)) / (LONGLONG) 10000000 - (LONGLONG) 11644473600))
int verbose = 0;
static int recursive = 0;
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;
static void source(char *src);
static void rsource(char *src);
static void sink(char *targ);
|
| ︙ | | |
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
-
-
+
+
+
+
+
+
+
+
|
}
exit(1);
}
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);
if (hin == INVALID_HANDLE_VALUE || hout == INVALID_HANDLE_VALUE)
bump("Cannot get standard input/output handles");
GetConsoleMode(hin, &savemode);
|
| ︙ | | |
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
+
+
+
|
if (cfg.host[0] == '\0') {
/* No settings for this host; use defaults */
strncpy(cfg.host, host, sizeof(cfg.host)-1);
cfg.host[sizeof(cfg.host)-1] = '\0';
cfg.port = 22;
}
if (portnumber)
cfg.port = portnumber;
/* Set username */
if (user != NULL && user[0] != '\0') {
strncpy(cfg.username, user, sizeof(cfg.username)-1);
cfg.username[sizeof(cfg.username)-1] = '\0';
cfg.port = 22;
} else if (cfg.username[0] == '\0') {
bump("Empty user name");
|
| ︙ | | |
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
|
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
|
-
-
-
+
+
+
+
+
+
+
+
+
|
/*
* Short description of parameters.
*/
static void usage()
{
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);
}
/*
* Main program (no, really?)
*/
int main(int argc, char *argv[])
|
| ︙ | | |
752
753
754
755
756
757
758
759
760
761
762
763
764
765
|
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
|
+
+
+
+
|
else if (strcmp(argv[i], "-p") == 0)
preserve = 1;
else if (strcmp(argv[i], "-q") == 0)
statistics = 0;
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
usage();
}
argc -= i;
argv += i;
|
| ︙ | | |