--- /src/lincity-ng/main.cpp 2013-12-22 12:57:28.000000000 -0800
+++ /src/lincity-ng/main.cpp 2014-04-30 11:59:44.000000000 -0700
@@ -58,6 +58,10 @@
tinygettext::DictionaryManager* dictionaryManager = 0;
bool restart = false;
+#ifdef __APPLE__
+ extern char *getBundleSharePath(char *packageName);
+#endif
+
void initPhysfs(const char* argv0)
{
if(!PHYSFS_init(argv0)) {
@@ -146,28 +150,54 @@
}
}
-#if defined(APPDATADIR) || defined(ENABLE_BINRELOC)
- std::string datadir;
-#ifdef ENABLE_BINRELOC
- BrInitError error;
- if (br_init (&error) == 0 && error != BR_INIT_ERROR_DISABLED) {
- printf ("Warning: BinReloc failed to initialize (error code %d)\n",
- error);
- printf ("Will fallback to hardcoded default path.\n");
- }
-
- char* brdatadir = br_find_data_dir("/usr/local/share");
- datadir = brdatadir;
- datadir += "/" PACKAGE_NAME;
- free(brdatadir);
+#ifndef __APPLE__
+ #if defined(APPDATADIR) || defined(ENABLE_BINRELOC)
+ std::string datadir;
+ #ifdef ENABLE_BINRELOC
+ BrInitError error;
+ if (br_init (&error) == 0 && error != BR_INIT_ERROR_DISABLED) {
+ printf ("Warning: BinReloc failed to initialize (error code %d)\n",
+ error);
+ printf ("Will fallback to hardcoded default path.\n");
+ }
+
+ char* brdatadir = br_find_data_dir("/usr/local/share");
+ datadir = brdatadir;
+ datadir += "/" PACKAGE_NAME;
+ free(brdatadir);
+ #else
+ datadir = APPDATADIR;
+ #endif
+
+ if(!PHYSFS_addToSearchPath(datadir.c_str(), 1)) {
+ std::cout << "Couldn't add '" << datadir
+ << "' to physfs searchpath: " << PHYSFS_getLastError() << "\n";
+ }
+ #endif
#else
- datadir = APPDATADIR;
-#endif
-
- if(!PHYSFS_addToSearchPath(datadir.c_str(), 1)) {
- std::cout << "Couldn't add '" << datadir
- << "' to physfs searchpath: " << PHYSFS_getLastError() << "\n";
- }
+ #if defined(APPDATADIR) || defined(ENABLE_BINRELOC) && __APPLE__
+ std::string datadir;
+ #ifdef ENABLE_BINRELOC
+ BrInitError error;
+ if (br_init (&error) == 0 && error != BR_INIT_ERROR_DISABLED) {
+ printf ("Warning: BinReloc failed to initialize (error code %d)\n",
+ error);
+ printf ("Will fallback to hardcoded default path.\n");
+ }
+
+ char* brdatadir = br_find_data_dir("/usr/local/share");
+ datadir = brdatadir;
+ datadir += "/" PACKAGE_NAME;
+ free(brdatadir);
+ #else
+ datadir = APPDATADIR;
+ #endif
+ datadir = getBundleSharePath(PACKAGE_NAME);
+ if(!PHYSFS_addToSearchPath(datadir.c_str(), 1)) {
+ std::cout << "Couldn't add '" << datadir
+ << "' to physfs searchpath: " << PHYSFS_getLastError() << "\n";
+ }
+ #endif
#endif
// allow symbolic links
Comments