1 diff --git a/src/ftpd.c b/src/ftpd.c
2 index 0d5030c..7029d72 100644
5 @@ -3565,14 +3565,16 @@ void dofeat(void)
6 # define FEAT_ESTP CRLF " ESTP"
9 - char feat[] = FEAT FEAT_DEBUG FEAT_TLS FEAT_TVFS FEAT_ESTA FEAT_PASV FEAT_ESTP;
10 +# define FEAT_UTF8 CRLF " UTF8"
12 + char feat[] = FEAT FEAT_DEBUG FEAT_TLS FEAT_UTF8 FEAT_TVFS FEAT_ESTA FEAT_PASV FEAT_ESTP;
14 if (disallow_passive != 0) {
15 - feat[sizeof FEAT FEAT_DEBUG FEAT_TLS FEAT_TVFS FEAT_ESTA] = 0;
16 + feat[sizeof FEAT FEAT_DEBUG FEAT_TLS FEAT_UTF8 FEAT_TVFS FEAT_ESTA] = 0;
19 else if (STORAGE_FAMILY(force_passive_ip) != 0) {
20 - feat[sizeof FEAT FEAT_DEBUG FEAT_TLS FEAT_TVFS FEAT_ESTA FEAT_PASV] = 0;
21 + feat[sizeof FEAT FEAT_DEBUG FEAT_TLS FEAT_UTF8 FEAT_TVFS FEAT_ESTA FEAT_PASV] = 0;
24 addreply_noformat(0, feat);
25 @@ -4639,7 +4641,20 @@ void doopts(char *args)
29 + if (strncasecmp("utf8 ", args, 5) == 0 ||
30 + strncasecmp("utf-8 ", args, 6) == 0) {
31 + if (cmdopts == NULL || *cmdopts == 0) {
32 + addreply_noformat(501, "OPTS UTF8: " MSG_MISSING_ARG);
33 + } else if (strncasecmp(cmdopts, "on", sizeof "on" - 1U) == 0) {
34 + addreply_noformat(200, "OK, UTF-8 enabled");
35 + } else if (strncasecmp(cmdopts, "off", sizeof "off" - 1U)) {
36 + addreply_noformat(200, "OK, UTF-8 disabled");
38 + addreply_noformat(502, MSG_UNKNOWN_COMMAND);
42 if (strncasecmp("mlst ", args, 5) == 0) {
43 addreply_noformat(200, " MLST OPTS "
44 "type;size;sizd;modify;UNIX.mode;UNIX.uid;"