File/installation paths: osx (cocoa & carbon) update in ghost
authorDamien Plisson <damien.plisson@yahoo.fr>
Mon, 5 Jul 2010 19:59:37 +0000 (19:59 +0000)
committerDamien Plisson <damien.plisson@yahoo.fr>
Mon, 5 Jul 2010 19:59:37 +0000 (19:59 +0000)
intern/ghost/GHOST_Path-api.h
intern/ghost/intern/GHOST_SystemCarbon.cpp
intern/ghost/intern/GHOST_SystemCocoa.mm

index 2f0e55a5b69b48d280eddbfcbfdfefd9e2040dd7..c38a4e2de88cbea0b45ea178fc123d97211b6c72 100644 (file)
@@ -45,8 +45,7 @@ extern const GHOST_TUns8* GHOST_getSystemDir();
 
 /**
  * Determine the base dir in which user configuration is stored, not including versioning.
- * If needed, it will create the base directory.
- * @return Unsigned char string pointing to user dir (eg ~/.blender/).
+ * @return Unsigned char string pointing to user dir (eg ~).
  */
 extern const GHOST_TUns8* GHOST_getUserDir();
 
index 977745589ebf28d6b7e7b2feadf3a3d5566373fc..ecdc03b43479f0bb8bb9ec4e26f32d0c7e6afdd3 100644 (file)
@@ -1238,5 +1238,15 @@ const GHOST_TUns8* GHOST_SystemCarbon::getUserDir() const
 
 const GHOST_TUns8* GHOST_SystemCarbon::getBinaryDir() const
 {
-       return NULL;
+       CFURLRef bundleURL;
+       CFStringRef pathStr;
+       static char path[256];
+       CFBundleRef mainBundle = CFBundleGetMainBundle();
+       
+       bundleURL = CFBundleCopyBundleURL(mainBundle);
+       pathStr = CFURLCopyFileSystemPath(bundleURL, kCFURLPOSIXPathStyle);
+       CFStringGetCString(pathStr, path, 255, kCFStringEncodingASCII);
+       CFRelease(pathStr);
+       CFRelease(bundleURL);
+       return (GHOST_TUns8*)path;
 }
index b093510c700415ae1af765f3ab2594eaa5857ae1..f65d4e93d592835c9dd2f205390bd2a9f432f02c 100644 (file)
@@ -1783,27 +1783,20 @@ void GHOST_SystemCocoa::putClipboard(GHOST_TInt8 *buffer, bool selection) const
 
 #pragma mark Base directories retrieval
 
-// TODO: this should only return base path, remove the appending of Blender or .blender
 const GHOST_TUns8* GHOST_SystemCocoa::getSystemDir() const
 {
        static GHOST_TUns8 tempPath[512] = "";
        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-       NSFileManager *fileManager;
        NSString *basePath;
        NSArray *paths;
        
        paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSLocalDomainMask, YES);
        
        if ([paths count] > 0)
-               basePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Blender"];
-       else { //Fall back to standard unix path in case of issue
-               basePath = @"/usr/share/blender";
-       }
-       
-       /* Ensure path exists, creates it if needed */
-       fileManager = [NSFileManager defaultManager];
-       if (![fileManager fileExistsAtPath:basePath isDirectory:NULL]) {
-               [fileManager createDirectoryAtPath:basePath attributes:nil];
+               basePath = [paths objectAtIndex:0];
+       else { 
+               [pool drain];
+               return NULL;
        }
        
        strcpy((char*)tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]);
@@ -1812,56 +1805,39 @@ const GHOST_TUns8* GHOST_SystemCocoa::getSystemDir() const
        return tempPath;
 }
 
-// TODO: this should only return base path, remove the appending of Blenbder or .blender
 const GHOST_TUns8* GHOST_SystemCocoa::getUserDir() const
 {
        static GHOST_TUns8 tempPath[512] = "";
        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-       NSFileManager *fileManager;
        NSString *basePath;
        NSArray *paths;
 
        paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
 
        if ([paths count] > 0)
-               basePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Blender"];
-       else { //Fall back to HOME in case of issue
-               basePath = [NSHomeDirectory() stringByAppendingPathComponent:@".blender"];
-       }
-       
-       /* Ensure path exists, creates it if needed */
-       fileManager = [NSFileManager defaultManager];
-       if (![fileManager fileExistsAtPath:basePath isDirectory:NULL]) {
-               [fileManager createDirectoryAtPath:basePath attributes:nil];
+               basePath = [paths objectAtIndex:0];
+       else { 
+               [pool drain];
+               return NULL;
        }
-       
+
        strcpy((char*)tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]);
        
        [pool drain];
        return tempPath;
 }
 
-// TODO: this is same as getUserDir for now
 const GHOST_TUns8* GHOST_SystemCocoa::getBinaryDir() const
 {
        static GHOST_TUns8 tempPath[512] = "";
        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-       NSFileManager *fileManager;
        NSString *basePath;
-       NSArray *paths;
-
-       paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
-
-       if ([paths count] > 0)
-               basePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Blender"];
-       else { //Fall back to HOME in case of issue
-               basePath = [NSHomeDirectory() stringByAppendingPathComponent:@".blender"];
-       }
        
-       /* Ensure path exists, creates it if needed */
-       fileManager = [NSFileManager defaultManager];
-       if (![fileManager fileExistsAtPath:basePath isDirectory:NULL]) {
-               [fileManager createDirectoryAtPath:basePath attributes:nil];
+       basePath = [[NSBundle mainBundle] bundlePath];
+       
+       if (basePath == nil) {
+               [pool drain];
+               return NULL;
        }
        
        strcpy((char*)tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]);