From e9524f1b95298966b449665318d15af75f40a882 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 18 Feb 2017 02:16:40 +0100 Subject: [PATCH] Add filestream_get_ext --- libretro-common/include/streams/file_stream.h | 2 ++ libretro-common/streams/file_stream.c | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/libretro-common/include/streams/file_stream.h b/libretro-common/include/streams/file_stream.h index 4951d32a23..5e4294effa 100644 --- a/libretro-common/include/streams/file_stream.h +++ b/libretro-common/include/streams/file_stream.h @@ -47,6 +47,8 @@ enum RFILE_HINT_MMAP = 1<<9 /* requires RFILE_MODE_READ */ }; +const char *filestream_get_ext(RFILE *stream); + RFILE *filestream_open(const char *path, unsigned mode, ssize_t len); ssize_t filestream_seek(RFILE *stream, ssize_t offset, int whence); diff --git a/libretro-common/streams/file_stream.c b/libretro-common/streams/file_stream.c index dd3e7ae549..b717f04880 100644 --- a/libretro-common/streams/file_stream.c +++ b/libretro-common/streams/file_stream.c @@ -68,6 +68,7 @@ struct RFILE { unsigned hints; + char *ext; #if defined(PSP) SceUID fd; #else @@ -102,6 +103,13 @@ int filestream_get_fd(RFILE *stream) return stream->fd; } +const char *filestream_get_ext(RFILE *stream) +{ + if (!stream) + return NULL; + return stream->ext; +} + RFILE *filestream_open(const char *path, unsigned mode, ssize_t len) { int flags = 0; @@ -236,6 +244,11 @@ RFILE *filestream_open(const char *path, unsigned mode, ssize_t len) goto error; #endif + { + const char *ld = (const char*)strrchr(path, '.'); + stream->ext = strdup(ld ? ld + 1 : ""); + } + return stream; error: