mirror of
https://github.com/libretro/RetroArch
synced 2025-03-28 08:37:41 +00:00
Sync libretro-common
This commit is contained in:
parent
cf8e7cd362
commit
751c0fe58c
@ -32,21 +32,31 @@ RFILE* rfopen(const char *path, const char *mode)
|
|||||||
unsigned int retro_mode = RETRO_VFS_FILE_ACCESS_READ;
|
unsigned int retro_mode = RETRO_VFS_FILE_ACCESS_READ;
|
||||||
bool position_to_end = false;
|
bool position_to_end = false;
|
||||||
|
|
||||||
if (strstr(mode, "w"))
|
if (strstr(mode, "r"))
|
||||||
retro_mode = RETRO_VFS_FILE_ACCESS_WRITE;
|
|
||||||
|
|
||||||
if (strstr(mode, "a"))
|
|
||||||
{
|
{
|
||||||
retro_mode = RETRO_VFS_FILE_ACCESS_READ_WRITE |
|
retro_mode = RETRO_VFS_FILE_ACCESS_READ;
|
||||||
|
if (strstr(mode, "+"))
|
||||||
|
{
|
||||||
|
retro_mode = RETRO_VFS_FILE_ACCESS_READ_WRITE |
|
||||||
|
RETRO_VFS_FILE_ACCESS_UPDATE_EXISTING;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (strstr(mode, "w"))
|
||||||
|
{
|
||||||
|
retro_mode = RETRO_VFS_FILE_ACCESS_WRITE;
|
||||||
|
if (strstr(mode, "+"))
|
||||||
|
retro_mode = RETRO_VFS_FILE_ACCESS_READ_WRITE;
|
||||||
|
}
|
||||||
|
else if (strstr(mode, "a"))
|
||||||
|
{
|
||||||
|
retro_mode = RETRO_VFS_FILE_ACCESS_WRITE |
|
||||||
RETRO_VFS_FILE_ACCESS_UPDATE_EXISTING;
|
RETRO_VFS_FILE_ACCESS_UPDATE_EXISTING;
|
||||||
position_to_end = true;
|
position_to_end = true;
|
||||||
}
|
if (strstr(mode, "+"))
|
||||||
|
{
|
||||||
if (strstr(mode, "+"))
|
retro_mode = RETRO_VFS_FILE_ACCESS_READ_WRITE |
|
||||||
{
|
RETRO_VFS_FILE_ACCESS_UPDATE_EXISTING;
|
||||||
retro_mode = RETRO_VFS_FILE_ACCESS_READ_WRITE;
|
}
|
||||||
if (strstr(mode, "r"))
|
|
||||||
retro_mode = retro_mode & RETRO_VFS_FILE_ACCESS_UPDATE_EXISTING;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
output = filestream_open(path, retro_mode,
|
output = filestream_open(path, retro_mode,
|
||||||
|
@ -75,11 +75,6 @@
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define MODE_STR_READ "r"
|
|
||||||
#define MODE_STR_READ_UNBUF "rb"
|
|
||||||
#define MODE_STR_WRITE_UNBUF "wb"
|
|
||||||
#define MODE_STR_WRITE_PLUS "w+"
|
|
||||||
|
|
||||||
#ifdef RARCH_INTERNAL
|
#ifdef RARCH_INTERNAL
|
||||||
#ifndef VFS_FRONTEND
|
#ifndef VFS_FRONTEND
|
||||||
#define VFS_FRONTEND
|
#define VFS_FRONTEND
|
||||||
@ -208,36 +203,48 @@ libretro_vfs_implementation_file *retro_vfs_file_open_impl(const char *path, uns
|
|||||||
switch (mode)
|
switch (mode)
|
||||||
{
|
{
|
||||||
case RETRO_VFS_FILE_ACCESS_READ:
|
case RETRO_VFS_FILE_ACCESS_READ:
|
||||||
if ((stream->hints & RFILE_HINT_UNBUFFERED) == 0)
|
mode_str = "rb";
|
||||||
mode_str = MODE_STR_READ_UNBUF;
|
|
||||||
/* No "else" here */
|
|
||||||
flags = O_RDONLY;
|
flags = O_RDONLY;
|
||||||
break;
|
|
||||||
case RETRO_VFS_FILE_ACCESS_WRITE:
|
|
||||||
if ((stream->hints & RFILE_HINT_UNBUFFERED) == 0)
|
|
||||||
mode_str = MODE_STR_WRITE_UNBUF;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
flags = O_WRONLY | O_CREAT | O_TRUNC;
|
|
||||||
#ifndef _WIN32
|
|
||||||
flags |= S_IRUSR | S_IWUSR;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case RETRO_VFS_FILE_ACCESS_READ_WRITE:
|
|
||||||
if ((stream->hints & RFILE_HINT_UNBUFFERED) == 0)
|
|
||||||
mode_str = MODE_STR_WRITE_PLUS;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
flags = O_RDWR;
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
flags |= O_BINARY;
|
flags |= O_BINARY;
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case RETRO_VFS_FILE_ACCESS_UPDATE_EXISTING:
|
|
||||||
/* TODO/FIXME - implement */
|
case RETRO_VFS_FILE_ACCESS_WRITE:
|
||||||
goto error;
|
mode_str = "wb";
|
||||||
|
|
||||||
|
flags = O_WRONLY | O_CREAT | O_TRUNC;
|
||||||
|
#ifndef _WIN32
|
||||||
|
flags |= S_IRUSR | S_IWUSR;
|
||||||
|
#else
|
||||||
|
flags |= O_BINARY;
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RETRO_VFS_FILE_ACCESS_READ_WRITE:
|
||||||
|
mode_str = "w+b";
|
||||||
|
|
||||||
|
flags = O_RDWR | O_CREAT | O_TRUNC;
|
||||||
|
#ifndef _WIN32
|
||||||
|
flags |= S_IRUSR | S_IWUSR;
|
||||||
|
#else
|
||||||
|
flags |= O_BINARY;
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RETRO_VFS_FILE_ACCESS_WRITE | RETRO_VFS_FILE_ACCESS_UPDATE_EXISTING:
|
||||||
|
case RETRO_VFS_FILE_ACCESS_READ_WRITE | RETRO_VFS_FILE_ACCESS_UPDATE_EXISTING:
|
||||||
|
mode_str = "r+b";
|
||||||
|
|
||||||
|
flags = O_RDWR;
|
||||||
|
#ifndef _WIN32
|
||||||
|
flags |= S_IRUSR | S_IWUSR;
|
||||||
|
#else
|
||||||
|
flags |= O_BINARY;
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user