From 4adfde5dd1e67775228a345cea00ea03ba6bc68f Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 19 Jan 2017 15:44:49 +0100 Subject: options: drop deprecated --sub-codepage syntax --- DOCS/interface-changes.rst | 1 + DOCS/man/options.rst | 5 ++-- misc/charset_conv.c | 75 ++++------------------------------------------ 3 files changed, 9 insertions(+), 72 deletions(-) diff --git a/DOCS/interface-changes.rst b/DOCS/interface-changes.rst index ec1bf02d9e..4e0c0d6f16 100644 --- a/DOCS/interface-changes.rst +++ b/DOCS/interface-changes.rst @@ -26,6 +26,7 @@ Interface changes now actually does not preload any interop layer, while the new default ("") uses the value of --hwdec. - drop deprecated --ad/--vd features + - drop deprecated --sub-codepage syntax --- mpv 0.23.0 --- - remove deprecated vf_vdpaurb (use "--hwdec=vdpau-copy" instead) - the following properties now have new semantics: diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst index 7e9e304be5..00c405bd5e 100644 --- a/DOCS/man/options.rst +++ b/DOCS/man/options.rst @@ -1784,8 +1784,9 @@ Subtitles subtitles are interpreted as UTF-8 with "Latin 1" as fallback for bytes which are not valid UTF-8 sequences. iconv is never involved in this mode. - This option changed in mpv 0.23.0. The old syntax is still emulated to some - degree. + This option changed in mpv 0.23.0. Support for the old syntax was fully + removed in mpv 0.24.0. + ``--sub-fix-timing``, ``--no-sub-fix-timing`` By default, subtitle timing is adjusted to remove minor gaps or overlaps diff --git a/misc/charset_conv.c b/misc/charset_conv.c index b66b73907d..c38c1fbd77 100644 --- a/misc/charset_conv.c +++ b/misc/charset_conv.c @@ -51,28 +51,6 @@ bool mp_charset_is_utf16(const char *user_cp) bstr_case_startswith(s, bstr0("utf-16")); } -// Split the string on ':' into components. -// out_arr is at least max entries long. -// Return number of out_arr entries filled. -static int split_colon(const char *user_cp, int max, bstr *out_arr) -{ - if (!user_cp || max < 1) - return 0; - - int count = 0; - while (1) { - const char *next = strchr(user_cp, ':'); - if (next && max - count > 1) { - out_arr[count++] = (bstr){(char *)user_cp, next - user_cp}; - user_cp = next + 1; - } else { - out_arr[count++] = (bstr){(char *)user_cp, strlen(user_cp)}; - break; - } - } - return count; -} - static const char *const utf_bom[3] = {"\xEF\xBB\xBF", "\xFF\xFE", "\xFE\xFF"}; static const char *const utf_enc[3] = {"utf-8", "utf-16le", "utf-16be"}; @@ -120,59 +98,16 @@ static const char *mp_uchardet(void *talloc_ctx, struct mp_log *log, bstr buf) // it's a real iconv codepage), user_cp is returned without even looking at // the buf data. // The return value may (but doesn't have to) be allocated under talloc_ctx. -static const char *mp_charset_guess_compat(void *talloc_ctx, struct mp_log *log, - bstr buf, const char *user_cp, - int flags) -{ - mp_warn(log, "This syntax for the --sub-codepage option is deprecated.\n"); - - bstr params[3] = {{0}}; - split_colon(user_cp, 3, params); - - bstr type = params[0]; - char lang[100]; - snprintf(lang, sizeof(lang), "%.*s", BSTR_P(params[1])); - const char *fallback = params[2].start; // last item, already 0-terminated - - const char *res = NULL; - -#if HAVE_UCHARDET - if (bstrcasecmp0(type, "uchardet") == 0) { - res = mp_uchardet(talloc_ctx, log, buf); - if (!res && bstr_validate_utf8(buf) >= 0) - res = "utf-8"; - } -#endif - - if (bstrcasecmp0(type, "utf8") == 0 || bstrcasecmp0(type, "utf-8") == 0) { - if (!fallback) - fallback = params[1].start; // must be already 0-terminated - int r = bstr_validate_utf8(buf); - if (r >= 0 || (r > -8 && (flags & MP_ICONV_ALLOW_CUTOFF))) - res = "utf-8"; - } - - if (res) { - mp_dbg(log, "%.*s detected charset: '%s'\n", BSTR_P(type), res); - } else { - res = fallback; - mp_dbg(log, "Detection with %.*s failed: fallback to %s\n", - BSTR_P(type), res && res[0] ? res : "broken UTF-8/Latin1"); - } - - if (!res && !(flags & MP_STRICT_UTF8)) - res = "UTF-8-BROKEN"; - - mp_verbose(log, "Using charset '%s'.\n", res); - return res; -} - const char *mp_charset_guess(void *talloc_ctx, struct mp_log *log, bstr buf, const char *user_cp, int flags) { if (strcasecmp(user_cp, "enca") == 0 || strcasecmp(user_cp, "guess") == 0 || strcasecmp(user_cp, "uchardet") == 0 || strchr(user_cp, ':')) - return mp_charset_guess_compat(talloc_ctx, log, buf, user_cp, flags); + { + mp_err(log, "This syntax for the --sub-codepage option was deprecated " + "and has been removed.\n"); + user_cp = ""; + } if (user_cp[0] == '+') { mp_verbose(log, "Forcing charset '%s'.\n", user_cp + 1); -- cgit v1.2.3