jpenguin icon

main.patch

jpenguin | PRO | 07/09/14 03:48:15 AM UTC | 0 ⭐ | 578 👁️ | Never ⏰ | []
Diff |

2.8 KB

|

None

|

0 👍

/

0 👎

--- /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