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;
return &p_dir->dd_dir;
}
- return readdir( p_dir->p_real_dir );
+ return _wreaddir( p_dir->p_real_dir );
}
/* Drive letters mode */
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;
}