summaryrefslogtreecommitdiff
path: root/src/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/paths.cpp15
-rw-r--r--src/utils/physfsrwops.cpp10
-rw-r--r--src/utils/physfsrwops.h3
-rw-r--r--src/utils/physfstools.cpp99
-rw-r--r--src/utils/physfstools.h45
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