From f9f66a14b37d9aad5aa0fc0f01a61a301dc62c1c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 23 Apr 2019 22:30:38 +0200 Subject: [PATCH] Simplify retro_vfs_mkdir_impl --- libretro-common/vfs/vfs_implementation.c | 42 ++++++++++++++---------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/libretro-common/vfs/vfs_implementation.c b/libretro-common/vfs/vfs_implementation.c index 6dfb9b83b5..520a6bab5e 100644 --- a/libretro-common/vfs/vfs_implementation.c +++ b/libretro-common/vfs/vfs_implementation.c @@ -902,48 +902,56 @@ int retro_vfs_stat_impl(const char *path, int32_t *size) return RETRO_VFS_STAT_IS_VALID | (is_dir ? RETRO_VFS_STAT_IS_DIRECTORY : 0) | (is_character_special ? RETRO_VFS_STAT_IS_CHARACTER_SPECIAL : 0); } -static bool path_mkdir_error(int ret) -{ -#if defined(VITA) - return (ret == SCE_ERROR_ERRNO_EEXIST); -#elif defined(PSP) || defined(PS2) || defined(_3DS) || defined(WIIU) || defined(SWITCH) || defined(ORBIS) - return (ret == -1); -#else - return (ret < 0 && errno == EEXIST); -#endif -} - int retro_vfs_mkdir_impl(const char *dir) { #if defined(_WIN32) #ifdef LEGACY_WIN32 - int ret = _mkdir(dir); + int ret = _mkdir(dir); #else wchar_t *dirW = utf8_to_utf16_string_alloc(dir); - int ret = -1; + int ret = -1; if (dirW) { - ret = _wmkdir(dirW); + ret = _wmkdir(dirW); free(dirW); } #endif #elif defined(IOS) int ret = mkdir(dir, 0755); -#elif defined(VITA) || defined(PSP) + if (ret < 0 && errno == EEXIST) + return -2; +#elif defined(VITA) int ret = sceIoMkdir(dir, 0777); + if (ret == SCE_ERROR_ERRNO_EEXIST) + return -2; +#elif defined(PSP) + int ret = sceIoMkdir(dir, 0777); + if (ret == -1) + return -2; #elif defined(PS2) int ret = fileXioMkdir(dir, 0777); + if (ret == -1) + return -2; #elif defined(ORBIS) int ret = orbisMkdir(dir, 0755); + if (ret == -1) + return -2; #elif defined(__QNX__) int ret = mkdir(dir, 0777); + if (ret < 0 && errno == EEXIST) + return -2; #else int ret = mkdir(dir, 0750); +#if defined(_3DS) || defined(WIIU) || defined(SWITCH) + if (ret == -1) + return -2; +#else + if (ret < 0 && errno == EEXIST) + return -2; +#endif #endif - if (path_mkdir_error(ret)) - return -2; return ret < 0 ? -1 : 0; }