From: Mikko Rasa Date: Wed, 12 Nov 2014 20:22:15 +0000 (+0200) Subject: Chdir into a sensible location before starting the application X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=commitdiff_plain;h=fa82e97ed56597f2d968abdf4ebf688de4f9b618 Chdir into a sensible location before starting the application System location accessors will ultimately return this directory. The default is /, which can easily cause problems. In particular, many of my applications expect to have their data in get_sys_data_dir()/"data". On Android /data exists but is not readable. --- diff --git a/source/core/android/mainthread.cpp b/source/core/android/mainthread.cpp index 7219cdf..473379b 100644 --- a/source/core/android/mainthread.cpp +++ b/source/core/android/mainthread.cpp @@ -1,5 +1,7 @@ #include +#include #include +#include #include "application.h" #include "errorlogger.h" #include "mainthread.h" @@ -49,9 +51,10 @@ void MainThread::main() { /* I have no idea how dependable this is, but it seems to be the only way to get the package name aside from making a Java call through JNI */ - char *appname = strdup(FS::Path(activity->internalDataPath)[-2].c_str()); + char *appname = strdup(int_data_path[-2].c_str()); char *argv[] = { appname, 0 }; Msp::Android::ErrorLogger err_logger; + FS::chdir(FS::dirname(int_data_path)); Msp::Application::run(1, argv, this, &app_created); free(appname); if(activity)