diff --git a/gfx/video_shader_parse.c b/gfx/video_shader_parse.c index aabb059e25..e7d0da70ef 100644 --- a/gfx/video_shader_parse.c +++ b/gfx/video_shader_parse.c @@ -411,7 +411,7 @@ bool video_shader_resolve_parameters(config_file_t *conf, for (i = 0; i < shader->passes; i++) { char line[4096] = {0}; - RFILE *file = filestream_open(shader->pass[i].source.path, RFILE_MODE_READ, -1); + RFILE *file = filestream_open(shader->pass[i].source.path, RFILE_MODE_READ_TEXT, -1); if (!file) continue; diff --git a/libretro-common/features/features_cpu.c b/libretro-common/features/features_cpu.c index 63baedb1d9..bedf50baf6 100644 --- a/libretro-common/features/features_cpu.c +++ b/libretro-common/features/features_cpu.c @@ -291,7 +291,7 @@ static unsigned char check_arm_cpu_feature(const char* feature) { char line[1024]; unsigned char status = 0; - RFILE *fp = filestream_open("/proc/cpuinfo", RFILE_MODE_READ, -1); + RFILE *fp = filestream_open("/proc/cpuinfo", RFILE_MODE_READ_TEXT, -1); if (!fp) return 0; diff --git a/libretro-common/include/streams/file_stream.h b/libretro-common/include/streams/file_stream.h index 58895790c7..8c1ec1db9c 100644 --- a/libretro-common/include/streams/file_stream.h +++ b/libretro-common/include/streams/file_stream.h @@ -38,6 +38,7 @@ typedef struct RFILE RFILE; enum { RFILE_MODE_READ = 0, + RFILE_MODE_READ_TEXT, RFILE_MODE_WRITE, RFILE_MODE_READ_WRITE, diff --git a/libretro-common/streams/file_stream.c b/libretro-common/streams/file_stream.c index 2b16be2078..aec36f6400 100644 --- a/libretro-common/streams/file_stream.c +++ b/libretro-common/streams/file_stream.c @@ -129,6 +129,19 @@ RFILE *filestream_open(const char *path, unsigned mode, ssize_t len) switch (mode & 0xff) { + case RFILE_MODE_READ_TEXT: +#if defined(VITA) || defined(PSP) + mode_int = 0777; + flags = PSP_O_RDONLY; +#else +#if defined(HAVE_BUFFERED_IO) + if ((stream->hints & RFILE_HINT_UNBUFFERED) == 0) + mode_str = "r"; +#endif + /* No "else" here */ + flags = O_RDONLY; +#endif + break; case RFILE_MODE_READ: #if defined(VITA) || defined(PSP) mode_int = 0777; diff --git a/playlist.c b/playlist.c index 2000aa72db..5c3ba42bad 100644 --- a/playlist.c +++ b/playlist.c @@ -379,7 +379,7 @@ static bool playlist_read_file( char buf[PLAYLIST_ENTRIES][1024] = {{0}}; playlist_entry_t *entry = NULL; char *last = NULL; - RFILE *file = filestream_open(path, RFILE_MODE_READ, -1); + RFILE *file = filestream_open(path, RFILE_MODE_READ_TEXT, -1); /* If playlist file does not exist, * create an empty playlist instead.