From c25958fb76ed05536202293f20768bc0b64fac1b Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Tue, 16 Dec 2008 19:58:10 +0200 Subject: [PATCH] FromLatin1: converts from ISO-8859-1 to UTF-8 --- include/vlc_charset.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/include/vlc_charset.h b/include/vlc_charset.h index 6e5c4d7b32..d181d15006 100644 --- a/include/vlc_charset.h +++ b/include/vlc_charset.h @@ -81,6 +81,33 @@ static inline char *FromWide (const wchar_t *wide) } #endif +/** + * Converts a nul-terminated string from ISO-8859-1 to UTF-8. + */ +static inline char *FromLatin1 (const char *latin) +{ + char *str = malloc (2 * strlen (latin) + 1), *utf8 = str; + unsigned char c; + + if (str == NULL) + return NULL; + + while ((c = *(latin++)) != '\0') + { + if (c >= 0x80) + { + *(utf8++) = 0xC0 | (c >> 6); + *(utf8++) = 0x80 | (c & 0x3F); + } + else + *(utf8++) = c; + } + *(utf8++) = '\0'; + + utf8 = realloc (str, utf8 - str); + return utf8 ? utf8 : str; +} + VLC_EXPORT( const char *, GetFallbackEncoding, ( void ) LIBVLC_USED ); VLC_EXPORT( double, us_strtod, ( const char *, char ** ) LIBVLC_USED ); -- 2.39.5