diff options
Diffstat (limited to 'src/utils')
-rw-r--r-- | src/utils/paths.cpp | 15 | ||||
-rw-r--r-- | src/utils/physfsrwops.cpp | 10 | ||||
-rw-r--r-- | src/utils/physfsrwops.h | 3 | ||||
-rw-r--r-- | src/utils/physfstools.cpp | 99 | ||||
-rw-r--r-- | src/utils/physfstools.h | 45 |
5 files changed, 157 insertions, 15 deletions
diff --git a/src/utils/paths.cpp b/src/utils/paths.cpp index 6f10262f6..271178c23 100644 --- a/src/utils/paths.cpp +++ b/src/utils/paths.cpp @@ -25,7 +25,7 @@ #endif #include "utils/paths.h" - +#include "utils/physfstools.h" #include "utils/stringutils.h" #include "resources/resourcemanager.h" @@ -33,7 +33,6 @@ #include <string.h> #include <cstdarg> #include <cstdio> -#include <physfs.h> #include <stdlib.h> #ifdef WIN32 @@ -80,7 +79,7 @@ bool checkPath(std::string path) std::string &fixDirSeparators(std::string &str) { - if (*PHYSFS_getDirSeparator() == '/') + if (*PhysFs::getDirSeparator() == '/') return str; return replaceAll(str, "/", "\\"); @@ -150,7 +149,7 @@ std::string getDesktopDir() char *xdg = getenv("XDG_CONFIG_HOME"); std::string file; if (!xdg) - file = std::string(PHYSFS_getUserDir()) + "/.config/user-dirs.dirs"; + file = std::string(PhysFs::getUserDir()) + "/.config/user-dirs.dirs"; else file = std::string(xdg) + "/user-dirs.dirs"; @@ -163,16 +162,16 @@ std::string getDesktopDir() str = str.substr(0, str.size() - 1); // use hack to replace $HOME var. // if in string other vars, fallback to default path - replaceAll(str, "$HOME/", PHYSFS_getUserDir()); + replaceAll(str, "$HOME/", PhysFs::getUserDir()); str = getRealPath(str); if (str.empty()) - str = std::string(PHYSFS_getUserDir()) + "Desktop"; + str = std::string(PhysFs::getUserDir()) + "Desktop"; return str; } } - return std::string(PHYSFS_getUserDir()) + "Desktop"; + return std::string(PhysFs::getUserDir()) + "Desktop"; #else - return std::string(PHYSFS_getUserDir()) + "Desktop"; + return std::string(PhysFs::getUserDir()) + "Desktop"; #endif } diff --git a/src/utils/physfsrwops.cpp b/src/utils/physfsrwops.cpp index ba3dc45e7..36729401a 100644 --- a/src/utils/physfsrwops.cpp +++ b/src/utils/physfsrwops.cpp @@ -26,8 +26,6 @@ #include <stdio.h> /* used for SEEK_SET, SEEK_CUR, SEEK_END ... */ -#include "localconsts.h" - #include "debug.h" static int physfsrwops_seek(SDL_RWops *rw, int offset, int whence) @@ -180,7 +178,7 @@ static bool checkFilePath(const char *fname) { if (!fname || !*fname) return false; - if (!PHYSFS_exists(fname) || PHYSFS_isDirectory(fname)) + if (!PhysFs::exists(fname) || PhysFs::isDirectory(fname)) return false; return true; } @@ -192,7 +190,7 @@ SDL_RWops *PHYSFSRWOPS_openRead(const char *fname) if (!checkFilePath(fname)) return nullptr; #endif - return create_rwops(PHYSFS_openRead(fname)); + return create_rwops(PhysFs::openRead(fname)); } /* PHYSFSRWOPS_openRead */ SDL_RWops *PHYSFSRWOPS_openWrite(const char *fname) @@ -201,7 +199,7 @@ SDL_RWops *PHYSFSRWOPS_openWrite(const char *fname) if (!checkFilePath(fname)) return nullptr; #endif - return create_rwops(PHYSFS_openWrite(fname)); + return create_rwops(PhysFs::openWrite(fname)); } /* PHYSFSRWOPS_openWrite */ SDL_RWops *PHYSFSRWOPS_openAppend(const char *fname) @@ -210,7 +208,7 @@ SDL_RWops *PHYSFSRWOPS_openAppend(const char *fname) if (!checkFilePath(fname)) return nullptr; #endif - return create_rwops(PHYSFS_openAppend(fname)); + return create_rwops(PhysFs::openAppend(fname)); } /* PHYSFSRWOPS_openAppend */ /* end of physfsrwops.c ... */ diff --git a/src/utils/physfsrwops.h b/src/utils/physfsrwops.h index fbd1020dd..6faa52a0e 100644 --- a/src/utils/physfsrwops.h +++ b/src/utils/physfsrwops.h @@ -25,9 +25,10 @@ #ifndef UTILS_PHYSFSRWOPS_H #define UTILS_PHYSFSRWOPS_H -#include <physfs.h> #include <SDL.h> +#include "utils/physfstools.h" + #include "localconsts.h" /** diff --git a/src/utils/physfstools.cpp b/src/utils/physfstools.cpp new file mode 100644 index 000000000..bf0dfead3 --- /dev/null +++ b/src/utils/physfstools.cpp @@ -0,0 +1,99 @@ +/* + * The ManaPlus Client + * Copyright (C) 2013 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program 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 Foundation; either version 2 of the License, or + * any later version. + * + * This program 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 this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "utils/physfstools.h" + +namespace PhysFs +{ + const char *getDirSeparator() + { + return PHYSFS_getDirSeparator(); + } + + const char *getBaseDir() + { + return PHYSFS_getBaseDir(); + } + + const char *getUserDir() + { + return PHYSFS_getUserDir(); + } + + bool exists(const char *fname) + { + return PHYSFS_exists(fname); + } + + char **enumerateFiles(const char *dir) + { + return PHYSFS_enumerateFiles(dir); + } + + bool isDirectory(const char *fname) + { + return PHYSFS_isDirectory(fname); + } + + void freeList(void *listVar) + { + PHYSFS_freeList(listVar); + } + + PHYSFS_File *openRead(const char *filename) + { + return PHYSFS_openRead(filename); + } + + PHYSFS_File *openWrite(const char *filename) + { + return PHYSFS_openWrite(filename); + } + + PHYSFS_File *openAppend(const char *filename) + { + return PHYSFS_openAppend(filename); + } + + bool setWriteDir(const char *newDir) + { + return PHYSFS_setWriteDir(newDir); + } + + bool addToSearchPath(const char *newDir, int appendToPath) + { + return PHYSFS_addToSearchPath(newDir, appendToPath); + } + + bool removeFromSearchPath(const char *oldDir) + { + return PHYSFS_removeFromSearchPath(oldDir); + } + + const char *getRealDir(const char *filename) + { + return PHYSFS_getRealDir(filename); + } + + bool mkdir(const char *dirname) + { + return PHYSFS_mkdir(dirname); + } +} diff --git a/src/utils/physfstools.h b/src/utils/physfstools.h new file mode 100644 index 000000000..8a6c70d25 --- /dev/null +++ b/src/utils/physfstools.h @@ -0,0 +1,45 @@ +/* + * The ManaPlus Client + * Copyright (C) 2013 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program 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 Foundation; either version 2 of the License, or + * any later version. + * + * This program 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 this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef UTILS_PHYSFS_H +#define UTILS_PHYSFS_H + +#include <physfs.h> + +namespace PhysFs +{ + const char *getDirSeparator(); + const char *getBaseDir(); + const char *getUserDir(); + bool exists(const char *fname); + char **enumerateFiles(const char *dir); + bool isDirectory(const char *fname); + void freeList(void *listVar); + PHYSFS_File *openRead(const char *filename); + PHYSFS_File *openWrite(const char *filename); + PHYSFS_File *openAppend(const char *filename); + bool setWriteDir(const char *newDir); + bool addToSearchPath(const char *newDir, int appendToPath); + bool removeFromSearchPath(const char *oldDir); + const char *getRealDir(const char *filename); + bool mkdir(const char *dirName); +} + +#endif // UTILS_PHYSFS_H |