]> git.sesse.net Git - vlc/blobdiff - src/extras/libc.c
Unicode support in directory access on windows. Patch by xxcv. Untested.
[vlc] / src / extras / libc.c
index d5f118862c546b2973b3afc186cfc7f731dfc649..c56ea10d0d8d78806ebfa540dc3b6a1a275f5a54 100644 (file)
@@ -416,7 +416,17 @@ void *vlc_opendir_wrapper( const char *psz_path )
         return (void *)p_dir;
     }
 
-    p_real_dir = opendir( psz_path );
+    if (GetVersion() < 0x80000000)
+    {
+        /* for Windows NT and above */
+        wchar_t wpath[MAX_PATH + 1];
+
+        if (!MultiByteToWideChar (CP_UTF8, 0, psz_path, -1, wpath, MAX_PATH))
+            return NULL;
+        wpath[MAX_PATH] = L'\0';
+        p_real_dir = _wopendir( wpath );
+    }
+
     if ( p_real_dir == NULL )
         return NULL;
 
@@ -445,7 +455,7 @@ struct dirent *vlc_readdir_wrapper( void *_p_dir )
             return &p_dir->dd_dir;
         }
 
-        return readdir( p_dir->p_real_dir );
+        return _wreaddir( p_dir->p_real_dir );
     }
 
     /* Drive letters mode */
@@ -471,7 +481,7 @@ int vlc_closedir_wrapper( void *_p_dir )
 
     if ( p_dir->p_real_dir != NULL )
     {
-        int i_ret = closedir( p_dir->p_real_dir );
+        int i_ret = _wclosedir( p_dir->p_real_dir );
         free( p_dir );
         return i_ret;
     }