Use remove, then rmdir in m_remove

master
Yevgen Muntyan 2006-03-16 13:31:28 -06:00
parent 68dce33316
commit e4215ac14c
1 changed files with 31 additions and 1 deletions

View File

@ -290,7 +290,37 @@ int
m_remove (const char *path) m_remove (const char *path)
{ {
#ifdef __WIN32__ #ifdef __WIN32__
CCALL_1 (remove, _wremove, path); gboolean use_wide_char_api;
gpointer converted;
int retval;
int save_errno;
converted = convert_filename (path, &use_wide_char_api);
if (!converted)
{
errno = EINVAL;
return -1;
}
if (use_wide_char_api)
retval = _wremove (converted);
else
retval = remove (converted);
if (retval && errno == ENOENT)
{
if (use_wide_char_api)
retval = _wrmdir (converted);
else
retval = rmdir (converted);
}
save_errno = errno;
g_free (converted);
errno = save_errno;
return retval;
#else #else
return remove (path); return remove (path);
#endif #endif