|
Lines 32-38
Link Here
|
| 32 |
#include <time.h> |
32 |
#include <time.h> |
| 33 |
#include <unistd.h> |
33 |
#include <unistd.h> |
| 34 |
#include <stdarg.h> |
34 |
#include <stdarg.h> |
| 35 |
|
35 |
#include <locale.h> |
|
|
36 |
#include <nl_types.h> |
| 37 |
#include <langinfo.h> |
| 36 |
#include "xmalloc.h" |
38 |
#include "xmalloc.h" |
| 37 |
#include "buffer.h" |
39 |
#include "buffer.h" |
| 38 |
#include "log.h" |
40 |
#include "log.h" |
|
Lines 61-66
Buffer oqueue;
Link Here
|
| 61 |
/* Version of client */ |
63 |
/* Version of client */ |
| 62 |
int version; |
64 |
int version; |
| 63 |
|
65 |
|
|
|
66 |
/* Charset used to encode names on the file system */ |
| 67 |
char *filename_charset = NULL; |
| 68 |
|
| 64 |
/* portable attributes, etc. */ |
69 |
/* portable attributes, etc. */ |
| 65 |
|
70 |
|
| 66 |
typedef struct Stat Stat; |
71 |
typedef struct Stat Stat; |
|
Lines 523-528
process_init(void)
Link Here
|
| 523 |
/* fstatvfs extension */ |
528 |
/* fstatvfs extension */ |
| 524 |
buffer_put_cstring(&msg, "fstatvfs@openssh.com"); |
529 |
buffer_put_cstring(&msg, "fstatvfs@openssh.com"); |
| 525 |
buffer_put_cstring(&msg, "2"); /* version */ |
530 |
buffer_put_cstring(&msg, "2"); /* version */ |
|
|
531 |
/* filename charset extension */ |
| 532 |
if (filename_charset) { |
| 533 |
buffer_put_cstring(&msg, "filename-charset@openssh.com"); |
| 534 |
buffer_put_cstring(&msg, filename_charset); |
| 535 |
} |
| 526 |
send_msg(&msg); |
536 |
send_msg(&msg); |
| 527 |
buffer_free(&msg); |
537 |
buffer_free(&msg); |
| 528 |
} |
538 |
} |
|
Lines 1314-1321
sftp_server_main(int argc, char **argv, struct passwd *user_pw)
Link Here
|
| 1314 |
extern char *__progname; |
1324 |
extern char *__progname; |
| 1315 |
|
1325 |
|
| 1316 |
log_init(__progname, log_level, log_facility, log_stderr); |
1326 |
log_init(__progname, log_level, log_facility, log_stderr); |
| 1317 |
|
1327 |
|
| 1318 |
while (!skipargs && (ch = getopt(argc, argv, "f:l:u:che")) != -1) { |
1328 |
while (!skipargs && (ch = getopt(argc, argv, "f:l:u:ches:S")) != -1) { |
| 1319 |
switch (ch) { |
1329 |
switch (ch) { |
| 1320 |
case 'c': |
1330 |
case 'c': |
| 1321 |
/* |
1331 |
/* |
|
Lines 1344-1349
sftp_server_main(int argc, char **argv, struct passwd *user_pw)
Link Here
|
| 1344 |
optarg, errmsg); |
1354 |
optarg, errmsg); |
| 1345 |
(void)umask(mask); |
1355 |
(void)umask(mask); |
| 1346 |
break; |
1356 |
break; |
|
|
1357 |
case 's': |
| 1358 |
filename_charset = xstrdup(optarg); |
| 1359 |
break; |
| 1360 |
case 'S': |
| 1361 |
setlocale(LC_CTYPE, ""); |
| 1362 |
filename_charset = nl_langinfo(CODESET); |
| 1363 |
setlocale(LC_CTYPE, "C"); |
| 1364 |
if ((strcmp(filename_charset, "646") == 0) || |
| 1365 |
(strcmp(filename_charset, "ANSI_X3.4-1968") == 0)) |
| 1366 |
filename_charset = "ISO-8859-1"; |
| 1367 |
filename_charset = xstrdup(filename_charset); |
| 1368 |
break; |
| 1347 |
case 'h': |
1369 |
case 'h': |
| 1348 |
default: |
1370 |
default: |
| 1349 |
sftp_server_usage(); |
1371 |
sftp_server_usage(); |