From 6b03c1adf6b681dd3d258232f8ff087e00ebd29b Mon Sep 17 00:00:00 2001 From: Francisco Javier Trujillo Mata Date: Mon, 13 Jun 2022 20:59:18 +0200 Subject: [PATCH] Add filesystem driver --- CMakeLists.txt | 6 ++ include/SDL_config.h.cmake | 1 + include/SDL_config.h.in | 1 + src/filesystem/ps2/SDL_sysfilesystem.c | 81 ++++++++++++++++++++++++++ 4 files changed, 89 insertions(+) create mode 100644 src/filesystem/ps2/SDL_sysfilesystem.c diff --git a/CMakeLists.txt b/CMakeLists.txt index e1e1dfc76..62a7c1746 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2524,6 +2524,12 @@ elseif(PSP) elseif(PS2) list(APPEND EXTRA_CFLAGS "-DPS2") + if(SDL_FILESYSTEM) + set(SDL_FILESYSTEM_PS2 1) + file(GLOB PS2_FILESYSTEM_SOURCES ${SDL2_SOURCE_DIR}/src/filesystem/ps2/*.c) + set(SOURCE_FILES ${SOURCE_FILES} ${PS2_FILESYSTEM_SOURCES}) + set(HAVE_SDL_FILESYSTEM TRUE) + endif() if(SDL_THREADS) set(SDL_THREAD_PS2 1) file(GLOB PS2_THREAD_SOURCES ${SDL2_SOURCE_DIR}/src/thread/generic/SDL_systls.c ${SDL2_SOURCE_DIR}/src/thread/generic/SDL_sysmutex.c ${SDL2_SOURCE_DIR}/src/thread/ps2/*.c) diff --git a/include/SDL_config.h.cmake b/include/SDL_config.h.cmake index 7048dcdd3..6f448c068 100644 --- a/include/SDL_config.h.cmake +++ b/include/SDL_config.h.cmake @@ -496,6 +496,7 @@ #cmakedefine SDL_FILESYSTEM_OS2 @SDL_FILESYSTEM_OS2@ #cmakedefine SDL_FILESYSTEM_VITA @SDL_FILESYSTEM_VITA@ #cmakedefine SDL_FILESYSTEM_PSP @SDL_FILESYSTEM_PSP@ +#cmakedefine SDL_FILESYSTEM_PS2 @SDL_FILESYSTEM_PS2@ /* Enable misc subsystem */ #cmakedefine SDL_MISC_DUMMY @SDL_MISC_DUMMY@ diff --git a/include/SDL_config.h.in b/include/SDL_config.h.in index c18077fea..c758b4528 100644 --- a/include/SDL_config.h.in +++ b/include/SDL_config.h.in @@ -460,6 +460,7 @@ #undef SDL_FILESYSTEM_OS2 #undef SDL_FILESYSTEM_VITA #undef SDL_FILESYSTEM_PSP +#undef SDL_FILESYSTEM_PS2 /* Enable misc subsystem */ #undef SDL_MISC_DUMMY diff --git a/src/filesystem/ps2/SDL_sysfilesystem.c b/src/filesystem/ps2/SDL_sysfilesystem.c new file mode 100644 index 000000000..191c96237 --- /dev/null +++ b/src/filesystem/ps2/SDL_sysfilesystem.c @@ -0,0 +1,81 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ +#include "../../SDL_internal.h" + +#include +#include + +#if defined(SDL_FILESYSTEM_PS2) + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/* System dependent filesystem routines */ + +#include "SDL_error.h" +#include "SDL_filesystem.h" + +char * +SDL_GetBasePath(void) +{ + char *retval; + size_t len; + char cwd[FILENAME_MAX]; + + getcwd(cwd, sizeof(cwd)); + len = SDL_strlen(cwd) + 1; + retval = (char *) SDL_malloc(len); + if (retval) + SDL_memcpy(retval, cwd, len); + + return retval; +} + +char * +SDL_GetPrefPath(const char *org, const char *app) +{ + char *retval = NULL; + size_t len; + char *base = SDL_GetBasePath(); + if (!app) { + SDL_InvalidParamError("app"); + return NULL; + } + if(!org) { + org = ""; + } + + len = SDL_strlen(base) + SDL_strlen(org) + SDL_strlen(app) + 4; + retval = (char *) SDL_malloc(len); + + if (*org) { + SDL_snprintf(retval, len, "%s%s/%s/", base, org, app); + } else { + SDL_snprintf(retval, len, "%s%s/", base, app); + } + free(base); + + mkdir(retval, 0x0755); + + return retval; +} + +#endif /* SDL_FILESYSTEM_PS2 */ + +/* vi: set ts=4 sw=4 expandtab: */