From e517e9b96a02601e8198700934bec3940417d3b2 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Jul 2017 09:09:19 +0200 Subject: [PATCH] Add file_stream_transforms --- Makefile.common | 1 + griffin/griffin.c | 1 + .../include/streams/file_stream_transforms.h | 52 +++----------- .../streams/file_stream_transforms.c | 71 +++++++++++++++++++ 4 files changed, 83 insertions(+), 42 deletions(-) create mode 100644 libretro-common/streams/file_stream_transforms.c diff --git a/Makefile.common b/Makefile.common index f7a5368516..bdeaf1779b 100644 --- a/Makefile.common +++ b/Makefile.common @@ -175,6 +175,7 @@ OBJ += frontend/frontend.o \ $(LIBRETRO_COMM_DIR)/file/retro_dirent.o \ $(LIBRETRO_COMM_DIR)/streams/stdin_stream.o \ $(LIBRETRO_COMM_DIR)/streams/file_stream.o \ + $(LIBRETRO_COMM_DIR)/streams/file_stream_transforms.o \ $(LIBRETRO_COMM_DIR)/streams/interface_stream.o \ $(LIBRETRO_COMM_DIR)/streams/memory_stream.o \ $(LIBRETRO_COMM_DIR)/lists/string_list.o \ diff --git a/griffin/griffin.c b/griffin/griffin.c index ab73487352..bba86c377c 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -739,6 +739,7 @@ FILE #include "../setting_list.c" #include "../libretro-common/file/retro_dirent.c" #include "../libretro-common/streams/file_stream.c" +#include "../libretro-common/streams/file_stream_transforms.c" #include "../libretro-common/streams/interface_stream.c" #include "../libretro-common/streams/memory_stream.c" #include "../list_special.c" diff --git a/libretro-common/include/streams/file_stream_transforms.h b/libretro-common/include/streams/file_stream_transforms.h index bf7b6a9874..c1b976f6d5 100644 --- a/libretro-common/include/streams/file_stream_transforms.h +++ b/libretro-common/include/streams/file_stream_transforms.h @@ -23,8 +23,7 @@ #ifndef __LIBRETRO_SDK_FILE_STREAM_TRANSFORMS_H #define __LIBRETRO_SDK_FILE_STREAM_TRANSFORMS_H -#include -#include +#include #include RETRO_BEGIN_DECLS @@ -39,52 +38,21 @@ RETRO_BEGIN_DECLS #define fgets rfgets #define fwrite rfwrite -static INLINE RFILE* rfopen(const char *path, char *mode) -{ - unsigned int retro_mode = RFILE_MODE_READ_TEXT; - if (strstr(mode, "r")) - if (strstr(mode, "b")) - retro_mode = RFILE_MODE_READ; +RFILE* rfopen(const char *path, char *mode); - if (strstr(mode, "w")) - retro_mode = RFILE_MODE_WRITE; - if (strstr(mode, "+")) - retro_mode = RFILE_MODE_READ_WRITE; +int rfclose(RFILE* stream); - return filestream_open(path, retro_mode, -1); -} +long rftell(RFILE* stream); -static INLINE int rfclose(RFILE* stream) -{ - return filestream_close(stream); -} +int rfseek(RFILE* stream, long offset, int origin); -static INLINE long rftell(RFILE* stream) -{ - return filestream_tell(stream); -} +size_t rfread(void* buffer, + size_t elementSize, size_t elementCount, RFILE* stream); -static INLINE int rfseek(RFILE* stream, long offset, int origin) -{ - return filestream_seek(stream, offset, origin); -} +char *rfgets(char *buffer, int maxCount, RFILE* stream); -static INLINE size_t rfread(void* buffer, - size_t elementSize, size_t elementCount, RFILE* stream) -{ - return filestream_read(stream, buffer, elementSize*elementCount); -} - -static INLINE char *rfgets(char *buffer, int maxCount, FILE* stream) -{ - return filestream_gets(stream, buffer, maxCount); -} - -static INLINE size_t rfwrite(void const* buffer, - size_t elementSize, size_t elementCount, RFILE* stream) -{ - return filestream_write(stream, buffer, elementSize*elementCount); -} +size_t rfwrite(void const* buffer, + size_t elementSize, size_t elementCount, RFILE* stream); RETRO_END_DECLS diff --git a/libretro-common/streams/file_stream_transforms.c b/libretro-common/streams/file_stream_transforms.c new file mode 100644 index 0000000000..f43ee7b25a --- /dev/null +++ b/libretro-common/streams/file_stream_transforms.c @@ -0,0 +1,71 @@ +/* Copyright (C) 2010-2017 The RetroArch team +* +* --------------------------------------------------------------------------------------- +* The following license statement only applies to this file (file_stream_transforms.c). +* --------------------------------------------------------------------------------------- +* +* Permission is hereby granted, free of charge, +* to any person obtaining a copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation the rights to +* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, +* and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include +#include + +RFILE* rfopen(const char *path, char *mode) +{ + unsigned int retro_mode = RFILE_MODE_READ_TEXT; + if (strstr(mode, "r")) + if (strstr(mode, "b")) + retro_mode = RFILE_MODE_READ; + + if (strstr(mode, "w")) + retro_mode = RFILE_MODE_WRITE; + if (strstr(mode, "+")) + retro_mode = RFILE_MODE_READ_WRITE; + + return filestream_open(path, retro_mode, -1); +} + +int rfclose(RFILE* stream) +{ + return filestream_close(stream); +} + +long rftell(RFILE* stream) +{ + return filestream_tell(stream); +} + +int rfseek(RFILE* stream, long offset, int origin) +{ + return filestream_seek(stream, offset, origin); +} + +size_t rfread(void* buffer, + size_t elementSize, size_t elementCount, RFILE* stream) +{ + return filestream_read(stream, buffer, elementSize*elementCount); +} + +char *rfgets(char *buffer, int maxCount, RFILE* stream) +{ + return filestream_gets(stream, buffer, maxCount); +} + +size_t rfwrite(void const* buffer, + size_t elementSize, size_t elementCount, RFILE* stream) +{ + return filestream_write(stream, buffer, elementSize*elementCount); +}