summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.cpp19
-rw-r--r--src/utils/physfstools.cpp21
-rw-r--r--src/utils/physfstools.h1
3 files changed, 24 insertions, 17 deletions
diff --git a/src/main.cpp b/src/main.cpp
index f9ee5d5d7..765d0d11c 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -304,26 +304,11 @@ int main(int argc, char *argv[])
_exit(0);
}
- // Initialize PhysicsFS
-#if defined(__native_client__)
- if (!PHYSFS_init("/fakebinary"))
-#elif defined(ANDROID)
+#ifdef ANDROID
mkdir_r(getSdStoragePath().c_str());
-
- if (!PHYSFS_init((getRealPath(".").append("/fakebinary")).c_str()))
-#else
- if (!PHYSFS_init(argv[0]))
#endif
- {
- std::cout << "Error while initializing PhysFS: "
- << PHYSFS_getLastError() << std::endl;
- return 1;
- }
-
- PhysFs::updateDirSeparator();
-
- atexit((void(*)()) PHYSFS_deinit);
+ PhysFs::init(argv[0]);
XML::initXML();
#if SDL_IMAGE_VERSION_ATLEAST(1, 2, 11)
IMG_Init(IMG_INIT_PNG);
diff --git a/src/utils/physfstools.cpp b/src/utils/physfstools.cpp
index cf87fa9ab..36131759b 100644
--- a/src/utils/physfstools.cpp
+++ b/src/utils/physfstools.cpp
@@ -20,12 +20,33 @@
#include "utils/physfstools.h"
+#include <iostream>
+#include <unistd.h>
+
#include "localconsts.h"
const char *dirSeparator = nullptr;
namespace PhysFs
{
+ void init(const char *const name)
+ {
+#if defined(__native_client__)
+ if (!PHYSFS_init("/fakebinary"))
+#elif defined(ANDROID)
+ if (!PHYSFS_init((getRealPath(".").append("/fakebinary")).c_str()))
+#else
+ if (!PHYSFS_init(name))
+#endif
+ {
+ std::cout << "Error while initializing PhysFS: "
+ << PHYSFS_getLastError() << std::endl;
+ _exit(1);
+ }
+ updateDirSeparator();
+ atexit((void(*)()) PHYSFS_deinit);
+ }
+
void updateDirSeparator()
{
dirSeparator = PHYSFS_getDirSeparator();
diff --git a/src/utils/physfstools.h b/src/utils/physfstools.h
index cb64a981b..fd760f287 100644
--- a/src/utils/physfstools.h
+++ b/src/utils/physfstools.h
@@ -25,6 +25,7 @@
namespace PhysFs
{
+ void init(const char *const name);
void updateDirSeparator();
const char *getDirSeparator();
const char *getBaseDir();