Commit 5158c3af authored by Rémi Duraffort's avatar Rémi Duraffort

Implementation of utf8_unlink. If someone can test this function on Windows please ?

parent d70106fd
...@@ -562,6 +562,50 @@ int utf8_lstat( const char *filename, struct stat *buf) ...@@ -562,6 +562,50 @@ int utf8_lstat( const char *filename, struct stat *buf)
return utf8_statEx( filename, buf, VLC_FALSE ); return utf8_statEx( filename, buf, VLC_FALSE );
} }
/**
* utf8_unlink: Calls unlink() after conversion of file name to OS locale
*
* @param filename a UTF-8 string with the name of the file you want to delete.
* @return A 0 return value indicates success. A -1 return value indicates an
* error, and an error code is stored in errno
*/
int utf8_unlink( const char *filename )
{
#if defined (WIN32) || defined (UNDER_CE)
if( GetVersion() < 0x80000000 )
{
/* for Windows NT and above */
wchar_t wpath[MAX_PATH + 1];
if( !MultiByteToWideChar( CP_UTF8, 0, filename, -1, wpath, MAX_PATH ) )
{
errno = ENOENT;
return -1;
}
wpath[MAX_PATH] = L'\0';
/*
* unlink() cannot open files with non-“ANSI” characters on Windows.
* We use _wunlink() instead.
*/
return _wunlink( wpath );
}
#endif
const char *local_name = ToLocale( filename );
if( local_name == NULL )
{
errno = ENOENT;
return -1;
}
int ret = unlink( local_name );
LocaleFree( local_name );
return ret;
}
/** /**
* utf8_*printf: *printf with conversion from UTF-8 to local encoding * utf8_*printf: *printf with conversion from UTF-8 to local encoding
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment