diff --git a/Makefile.common b/Makefile.common index 7d0a62bafd..e1a44fb81b 100644 --- a/Makefile.common +++ b/Makefile.common @@ -96,7 +96,6 @@ OBJ += frontend/frontend.o \ libretro-sdk/string/string_list.o \ file_ops.o \ libretro-sdk/file/file_path.o \ - rarch_compr_file_path.o \ hash.o \ driver.o \ settings.o \ diff --git a/file_extract.c b/file_extract.c index cc540c6b67..c35fa1e1a5 100644 --- a/file_extract.c +++ b/file_extract.c @@ -504,3 +504,74 @@ struct string_list *zlib_get_file_list(const char *path) return list; } +#ifdef HAVE_COMPRESSION +/* Generic compressed file loader. + * Extracts to buf, unless optional_filename != 0 + * Then extracts to optional_filename and leaves buf alone. + */ +long read_compressed_file(const char * path, void **buf, + const char* optional_filename) +{ + char archive_path[PATH_MAX_LENGTH], *archive_found = NULL; + + /* Safety check. + * If optional_filename and optional_filename exists, we simply return 0, + * hoping that optional_filename is the same as requested. + */ + if (optional_filename) + if(path_file_exists(optional_filename)) + return 0; + + //We split carchive path and relative path: + strlcpy(archive_path,path,sizeof(archive_path)); + archive_found = (char*)strchr(archive_path,'#'); + rarch_assert(archive_found != NULL); + + //We assure that there is something after the '#' symbol + if (strlen(archive_found) <= 1) + { + /* + * This error condition happens for example, when + * path = /path/to/file.7z, or + * path = /path/to/file.7z# + */ + RARCH_ERR("Could not extract image path and carchive path from " + "path: %s.\n", path); + return -1; + } + + //We split the string in two, by putting a \0, where the hash was: + *archive_found = '\0'; + archive_found+=1; + + + const char* file_ext = path_get_extension(archive_path); +#ifdef HAVE_7ZIP + if (strcasecmp(file_ext,"7z") == 0) + return read_7zip_file(archive_path,archive_found,buf,optional_filename); +#endif +#ifdef HAVE_ZLIB + if (strcasecmp(file_ext,"zip") == 0) + return read_zip_file(archive_path,archive_found,buf,optional_filename); +#endif + return -1; +} +#endif + +struct string_list *compressed_file_list_new(const char *path, + const char* ext) +{ +#ifdef HAVE_COMPRESSION + const char* file_ext = path_get_extension(path); +#ifdef HAVE_7ZIP + if (strcasecmp(file_ext,"7z") == 0) + return compressed_7zip_file_list_new(path,ext); +#endif +#ifdef HAVE_ZLIB + if (strcasecmp(file_ext,"zip") == 0) + return compressed_zip_file_list_new(path,ext); +#endif + +#endif + return NULL; +} diff --git a/file_extract.h b/file_extract.h index d09135cd97..e19d11dd28 100644 --- a/file_extract.h +++ b/file_extract.h @@ -21,6 +21,14 @@ #include #include +#ifdef HAVE_7ZIP +#include "decompress/7zip_support.h" +#endif + +#ifdef HAVE_ZLIB +#include "decompress/zip_support.h" +#endif + /* Returns true when parsing should continue. False to stop. */ typedef bool (*zlib_file_cb)(const char *name, const uint8_t *cdata, unsigned cmode, uint32_t csize, uint32_t size, diff --git a/griffin/griffin.c b/griffin/griffin.c index 4d1de1e2a4..c3a4baa2e3 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -549,7 +549,6 @@ FILE #include "../libretro-sdk/file/dir_list.c" #include "../libretro-sdk/string/string_list.c" #include "../file_ops.c" -#include "../rarch_compr_file_path.c" #include "../libretro-sdk/file/file_list.c" /*============================================================ diff --git a/rarch_compr_file_path.c b/rarch_compr_file_path.c deleted file mode 100644 index c7d575904b..0000000000 --- a/rarch_compr_file_path.c +++ /dev/null @@ -1,136 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2014-2015 - Timo Strunks - * Copyright (C) 2011-2015 - Daniel De Matteis - * - * RetroArch is free software: you can redistribute it and/or modify it under the terms - * of the GNU General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with RetroArch. - * If not, see . - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "rarch_compr_file_path.h" - -#ifdef __HAIKU__ -#include -#endif - -#if (defined(__CELLOS_LV2__) && !defined(__PSL1GHT__)) || defined(__QNX__) || defined(PSP) -#include /* stat() is defined here */ -#endif - -#if defined(__CELLOS_LV2__) - -#ifndef S_ISDIR -#define S_ISDIR(x) (x & 0040000) -#endif - -#endif - -#if defined(_WIN32) -#ifdef _MSC_VER -#define setmode _setmode -#endif -#ifdef _XBOX -#include -#define INVALID_FILE_ATTRIBUTES -1 -#else -#include -#include -#include -#include -#endif -#else -#include -#include -#include -#include -#endif - - -/* Generic compressed file loader. - * Extracts to buf, unless optional_filename != 0 - * Then extracts to optional_filename and leaves buf alone. - */ -#ifdef HAVE_COMPRESSION -long read_compressed_file(const char * path, void **buf, - const char* optional_filename) -{ - char archive_path[PATH_MAX_LENGTH], *archive_found = NULL; - - /* Safety check. - * If optional_filename and optional_filename exists, we simply return 0, - * hoping that optional_filename is the same as requested. - */ - if (optional_filename) - if(path_file_exists(optional_filename)) - return 0; - - //We split carchive path and relative path: - strlcpy(archive_path,path,sizeof(archive_path)); - archive_found = (char*)strchr(archive_path,'#'); - rarch_assert(archive_found != NULL); - - //We assure that there is something after the '#' symbol - if (strlen(archive_found) <= 1) - { - /* - * This error condition happens for example, when - * path = /path/to/file.7z, or - * path = /path/to/file.7z# - */ - RARCH_ERR("Could not extract image path and carchive path from " - "path: %s.\n", path); - return -1; - } - - //We split the string in two, by putting a \0, where the hash was: - *archive_found = '\0'; - archive_found+=1; - - - const char* file_ext = path_get_extension(archive_path); -#ifdef HAVE_7ZIP - if (strcasecmp(file_ext,"7z") == 0) - return read_7zip_file(archive_path,archive_found,buf,optional_filename); -#endif -#ifdef HAVE_ZLIB - if (strcasecmp(file_ext,"zip") == 0) - return read_zip_file(archive_path,archive_found,buf,optional_filename); -#endif - return -1; -} -#endif - -struct string_list *compressed_file_list_new(const char *path, - const char* ext) -{ -#ifdef HAVE_COMPRESSION - const char* file_ext = path_get_extension(path); -#ifdef HAVE_7ZIP - if (strcasecmp(file_ext,"7z") == 0) - return compressed_7zip_file_list_new(path,ext); -#endif -#ifdef HAVE_ZLIB - if (strcasecmp(file_ext,"zip") == 0) - return compressed_zip_file_list_new(path,ext); -#endif - -#endif - return NULL; -} diff --git a/rarch_compr_file_path.h b/rarch_compr_file_path.h deleted file mode 100644 index 629cfa2122..0000000000 --- a/rarch_compr_file_path.h +++ /dev/null @@ -1,27 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2014-2015 - Timo Strunks - * Copyright (C) 2011-2015 - Daniel De Matteis - * - * RetroArch is free software: you can redistribute it and/or modify it under the terms - * of the GNU General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with RetroArch. - * If not, see . - */ - -#ifndef _RARCH_COMPR_FILE_PATH_H -#define _RARCH_COMPR_FILE_PATH_H - -#ifdef HAVE_7ZIP -#include "decompress/7zip_support.h" -#endif -#ifdef HAVE_ZLIB -#include "decompress/zip_support.h" -#endif - -#endif