From ca5df44edb1963d4c634390d33229ec928e284dc Mon Sep 17 00:00:00 2001 From: Pavel Puchkin Date: Tue, 10 Mar 2015 19:29:13 +0200 Subject: Standalone bundle for OSX (w/ dependencies!) --- src/porting.cpp | 37 ++++++++++++++----------------------- 1 file changed, 14 insertions(+), 23 deletions(-) (limited to 'src/porting.cpp') diff --git a/src/porting.cpp b/src/porting.cpp index 64a51c7f5..710446363 100644 --- a/src/porting.cpp +++ b/src/porting.cpp @@ -387,16 +387,16 @@ void initializePaths() */ #elif defined(__APPLE__) - //https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man3/dyld.3.html - //TODO: Test this code - char buf[BUFSIZ]; - uint32_t len = sizeof(buf); - FATAL_ERROR_IF(_NSGetExecutablePath(buf, &len) == -1, ""); - - pathRemoveFile(buf, '/'); - - path_share = std::string(buf) + "/.."; - path_user = std::string(buf) + "/.."; + CFBundleRef main_bundle = CFBundleGetMainBundle(); + CFURLRef resources_url = CFBundleCopyResourcesDirectoryURL(main_bundle); + char path[PATH_MAX]; + if (CFURLGetFileSystemRepresentation(resources_url, TRUE, (UInt8 *)path, PATH_MAX)) { + path_share = std::string(path); + path_user = std::string(path) + "/../User"; + } else { + dstream << "WARNING: Could not determine bundle resource path" << std::endl; + } + CFRelease(resources_url); /* FreeBSD @@ -523,24 +523,15 @@ void initializePaths() */ #elif defined(__APPLE__) - // Code based on - // http://stackoverflow.com/questions/516200/relative-paths-not-working-in-xcode-c CFBundleRef main_bundle = CFBundleGetMainBundle(); CFURLRef resources_url = CFBundleCopyResourcesDirectoryURL(main_bundle); char path[PATH_MAX]; - if(CFURLGetFileSystemRepresentation(resources_url, TRUE, (UInt8 *)path, PATH_MAX)) - { - dstream<<"Bundle resource path: "<