access past array bounds in layerInterp_mdisps, also make some vars const.
[blender.git] / intern / ghost / intern / GHOST_SystemPathsCocoa.mm
1 /**
2  * $Id$
3  *
4  * ***** BEGIN GPL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version. 
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19  *
20  * The Original Code is Copyright (C) 2010 Blender Foundation.
21  * All rights reserved.
22  *
23  * 
24  * Contributor(s): Damien Plisson 2010
25  *
26  * ***** END GPL LICENSE BLOCK *****
27  */
28
29 #import <Cocoa/Cocoa.h>
30
31 /*For the currently not ported to Cocoa keyboard layout functions (64bit & 10.6 compatible)*/
32 #include <Carbon/Carbon.h>
33
34 #include <sys/time.h>
35 #include <sys/types.h>
36 #include <sys/sysctl.h>
37
38 #include "GHOST_SystemPathsCocoa.h"
39
40
41 #pragma mark initialization/finalization
42
43
44 GHOST_SystemPathsCocoa::GHOST_SystemPathsCocoa()
45 {
46 }
47
48 GHOST_SystemPathsCocoa::~GHOST_SystemPathsCocoa()
49 {
50 }
51
52
53 #pragma mark Base directories retrieval
54
55 const GHOST_TUns8* GHOST_SystemPathsCocoa::getSystemDir() const
56 {
57         static GHOST_TUns8 tempPath[512] = "";
58         NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
59         NSString *basePath;
60         NSArray *paths;
61         
62         paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSLocalDomainMask, YES);
63         
64         if ([paths count] > 0)
65                 basePath = [paths objectAtIndex:0];
66         else { 
67                 [pool drain];
68                 return NULL;
69         }
70         
71         strcpy((char*)tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]);
72         
73         [pool drain];
74         return tempPath;
75 }
76
77 const GHOST_TUns8* GHOST_SystemPathsCocoa::getUserDir() const
78 {
79         static GHOST_TUns8 tempPath[512] = "";
80         NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
81         NSString *basePath;
82         NSArray *paths;
83
84         paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
85
86         if ([paths count] > 0)
87                 basePath = [paths objectAtIndex:0];
88         else { 
89                 [pool drain];
90                 return NULL;
91         }
92
93         strcpy((char*)tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]);
94         
95         [pool drain];
96         return tempPath;
97 }
98
99 const GHOST_TUns8* GHOST_SystemPathsCocoa::getBinaryDir() const
100 {
101         static GHOST_TUns8 tempPath[512] = "";
102         NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
103         NSString *basePath;
104         
105         basePath = [[NSBundle mainBundle] bundlePath];
106         
107         if (basePath == nil) {
108                 [pool drain];
109                 return NULL;
110         }
111         
112         strcpy((char*)tempPath, [basePath cStringUsingEncoding:NSASCIIStringEncoding]);
113         
114         [pool drain];
115         return tempPath;
116 }
117
118 void GHOST_SystemPathsCocoa::addToSystemRecentFiles(const char* filename) const
119 {
120         /* XXXXX TODO: Implementation for X11 if possible */
121 }