From a0358db323a89d976255567b909f4d18a7eb3461 Mon Sep 17 00:00:00 2001 From: Lukasz Marek Date: Fri, 4 Jul 2014 00:32:16 +0200 Subject: [PATCH] lavf/ftp: explicitly enable UTF-8 Most FTP servers enable UTF-8 by default, but it is not required by the standard. Enabling it manually makes ffmpeg implementation more consistent when server doesn't enable it by default. Signed-off-by: Lukasz Marek --- libavformat/ftp.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/libavformat/ftp.c b/libavformat/ftp.c index e99d4dd6db..bbed7eb2f5 100644 --- a/libavformat/ftp.c +++ b/libavformat/ftp.c @@ -434,6 +434,21 @@ static int ftp_restart(FTPContext *s, int64_t pos) return 0; } +static int ftp_features(FTPContext *s) +{ + static const char *feat_command = "FEAT\r\n"; + static const char *enable_utf8_command = "OPTS UTF8 ON\r\n"; + static const int feat_codes[] = {211, 500, 502, 0}; /* 500, 502 are incorrect codes */ + static const int opts_codes[] = {200, 451, 500, 502}; /* 500, 451, 502 are incorrect codes */ + char *feat; + + if (ftp_send_command(s, feat_command, feat_codes, &feat) == 211) { + if (av_stristr(feat, "UTF8")) + ftp_send_command(s, enable_utf8_command, opts_codes, NULL); + } + return 0; +} + static int ftp_connect_control_connection(URLContext *h) { char buf[CONTROL_BUFFER_SIZE], opts_format[20], *response = NULL; @@ -477,6 +492,8 @@ static int ftp_connect_control_connection(URLContext *h) av_log(h, AV_LOG_ERROR, "Set content type failed\n"); return err; } + + ftp_features(s); } return 0; } -- GitLab