View | Details | Raw Unified | Return to bug 1632 | Differences between
and this patch

Collapse All | Expand All

(-)a/sftp-server.c (-3 / +25 lines)
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();

Return to bug 1632