]> git.sesse.net Git - vlc/commitdiff
src: Fix for Mac OS X filesystem filename encoding
authorNaohiro KORIYAMA <nkoriyama@gmail.com>
Tue, 21 Aug 2012 02:34:07 +0000 (11:34 +0900)
committerFelix Paul Kühne <fkuehne@videolan.org>
Thu, 22 Aug 2013 10:19:04 +0000 (12:19 +0200)
Signed-off-by: Felix Paul Kühne <fkuehne@videolan.org>
src/text/url.c

index 40043baae3cb18109c83814e61b3aa5a755e52b4..c809fbec5efebe532bd7373cc4b129fc6eac4c13 100644 (file)
@@ -32,6 +32,7 @@
 
 #include <vlc_common.h>
 #include <vlc_url.h>
+#include <vlc_charset.h>
 #include <vlc_fs.h>
 #include <ctype.h>
 
@@ -170,6 +171,19 @@ char *vlc_path2uri (const char *path, const char *scheme)
     path = p;
 #endif
 
+#if defined( __APPLE__ )
+    /* Mac OS X uses Unicode for their files and folder name with HFS+:
+     * Unicode Normalization Form D (NFD) (with some modification).
+     * But simply converting to NFC causes some problem.
+     * So using UTF-8-MAC, encoding for HFS+, to convert to UTF-8.
+     *
+     * Note: UTF-8-MAC is only implemented for built-in iconv on Mac OS X.
+     */
+    char* psz_tmp_path = FromCharset("UTF-8-MAC", path, strlen(path));
+    strcpy((char *)path, psz_tmp_path);
+    free(psz_tmp_path);
+#endif
+
 #if defined( _WIN32 ) || defined( __OS2__ )
     /* Drive letter */
     if (isalpha ((unsigned char)path[0]) && (path[1] == ':'))