From c4910985ed7432694c751e2a596d2a131f5be9d5 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 18 Sep 2015 05:42:54 +0200 Subject: [PATCH] (retro_file.c) Cleanup retro_fopen --- libretro-common/file/retro_file.c | 40 +++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/libretro-common/file/retro_file.c b/libretro-common/file/retro_file.c index 13c0cf5f54..eca5b20bab 100644 --- a/libretro-common/file/retro_file.c +++ b/libretro-common/file/retro_file.c @@ -66,46 +66,62 @@ int retro_get_fd(RFILE *stream) RFILE *retro_fopen(const char *path, unsigned mode, ssize_t len) { - RFILE *stream = (RFILE*)calloc(1, sizeof(*stream)); + int flags = 0; + int mode_int = 0; + const char *mode_str = NULL; + RFILE *stream = (RFILE*)calloc(1, sizeof(*stream)); if (!stream) return NULL; + (void)mode_str; + (void)mode_int; + switch (mode) { case RFILE_MODE_READ: #if defined(VITA) || defined(PSP) - stream->fd = sceIoOpen(path, O_RDONLY, 0777); + mode_int = 0777; + flags = O_RDONLY; #elif defined(HAVE_BUFFERED_IO) - stream->fd = fopen(path, "rb"); + mode_str = "rb"; #else - stream->fd = open(path, O_RDONLY); + flags = O_RDONLY; #endif break; case RFILE_MODE_WRITE: #if defined(VITA) || defined(PSP) - stream->fd = sceIoOpen(path, O_WRONLY | O_CREAT, 0777); + mode_int = 0777; + flags = O_WRONLY | O_CREAT; #elif defined(HAVE_BUFFERED_IO) - stream->fd = fopen(path, "wb"); + mode_str = "wb"; #else - stream->fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR); + flags = O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR; #endif break; case RFILE_MODE_READ_WRITE: #if defined(VITA) || defined(PSP) - stream->fd = sceIoOpen(path, O_RDWR, 0777); + mode_int = 0777; + flags = O_RDWR; #elif defined(HAVE_BUFFERED_IO) - stream->fd = fopen(path, "w+"); + mode_str = "w+"; #else + flags = O_RDWR; #ifdef _WIN32 - stream->fd = open(path, O_RDWR | O_BINARY); -#else - stream->fd = open(path, O_RDWR); + flags |= O_BINARY; #endif #endif break; } +#if defined(VITA) || defined(PSP) + stream->fd = sceIoOpen(path, flags, mode_int); +#elif defined(HAVE_BUFFERED_IO) + stream->fd = fopen(path, mode_str); +#else + stream->fd = open(path, flags); +#endif + #if defined(HAVE_BUFFERED_IO) if (!stream->fd) #else