author | Ryan C. Gordon <icculus@icculus.org> |
Wed, 21 Mar 2012 23:30:50 -0400 | |
changeset 1242 | 1e6db80d2393 |
parent 1240 | 22d4d1bd4e21 |
child 1246 | 4fa9fe3e0b52 |
permissions | -rw-r--r-- |
235 | 1 |
/* |
2 |
* BeOS platform-dependent support routines for PhysicsFS. |
|
3 |
* |
|
809
116b8fe30371
Renamed LICENSE to LICENSE.txt
Ryan C. Gordon <icculus@icculus.org>
parents:
808
diff
changeset
|
4 |
* Please see the file LICENSE.txt in the source's root directory. |
235 | 5 |
* |
6 |
* This file written by Ryan C. Gordon. |
|
7 |
*/ |
|
8 |
||
818
e36f23f49042
Now compiles everything whether we need it or not, removing whole files with
Ryan C. Gordon <icculus@icculus.org>
parents:
809
diff
changeset
|
9 |
#define __PHYSICSFS_INTERNAL__ |
e36f23f49042
Now compiles everything whether we need it or not, removing whole files with
Ryan C. Gordon <icculus@icculus.org>
parents:
809
diff
changeset
|
10 |
#include "physfs_platforms.h" |
e36f23f49042
Now compiles everything whether we need it or not, removing whole files with
Ryan C. Gordon <icculus@icculus.org>
parents:
809
diff
changeset
|
11 |
|
e36f23f49042
Now compiles everything whether we need it or not, removing whole files with
Ryan C. Gordon <icculus@icculus.org>
parents:
809
diff
changeset
|
12 |
#ifdef PHYSFS_PLATFORM_BEOS |
235 | 13 |
|
947 | 14 |
#ifdef PHYSFS_PLATFORM_HAIKU |
15 |
#include <os/kernel/OS.h> |
|
16 |
#include <os/app/Roster.h> |
|
17 |
#include <os/storage/Volume.h> |
|
18 |
#include <os/storage/VolumeRoster.h> |
|
19 |
#include <os/storage/Directory.h> |
|
20 |
#include <os/storage/Entry.h> |
|
21 |
#include <os/storage/Path.h> |
|
22 |
#include <os/kernel/fs_info.h> |
|
23 |
#include <os/device/scsi.h> |
|
24 |
#include <os/support/Locker.h> |
|
25 |
#else |
|
235 | 26 |
#include <be/kernel/OS.h> |
27 |
#include <be/app/Roster.h> |
|
28 |
#include <be/storage/Volume.h> |
|
29 |
#include <be/storage/VolumeRoster.h> |
|
30 |
#include <be/storage/Directory.h> |
|
31 |
#include <be/storage/Entry.h> |
|
32 |
#include <be/storage/Path.h> |
|
33 |
#include <be/kernel/fs_info.h> |
|
34 |
#include <be/device/scsi.h> |
|
854
6c3ebc2e627a
Replaced BeOS mutex implementation. Now all platforms have recursive mutexes.
Ryan C. Gordon <icculus@icculus.org>
parents:
847
diff
changeset
|
35 |
#include <be/support/Locker.h> |
947 | 36 |
#endif |
235 | 37 |
|
38 |
#include <errno.h> |
|
39 |
#include <unistd.h> |
|
40 |
||
41 |
#include "physfs_internal.h" |
|
42 |
||
43 |
int __PHYSFS_platformInit(void) |
|
44 |
{ |
|
1231
8206d0e4cf49
Minor code style cleanup in platform_beos.cpp ...
Ryan C. Gordon <icculus@icculus.org>
parents:
1223
diff
changeset
|
45 |
return 1; /* always succeed. */ |
235 | 46 |
} /* __PHYSFS_platformInit */ |
47 |
||
48 |
||
49 |
int __PHYSFS_platformDeinit(void) |
|
50 |
{ |
|
1231
8206d0e4cf49
Minor code style cleanup in platform_beos.cpp ...
Ryan C. Gordon <icculus@icculus.org>
parents:
1223
diff
changeset
|
51 |
return 1; /* always succeed. */ |
235 | 52 |
} /* __PHYSFS_platformDeinit */ |
53 |
||
54 |
||
1223
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
55 |
static char *getMountPoint(const char *devname, char *buf, size_t bufsize) |
235 | 56 |
{ |
57 |
BVolumeRoster mounts; |
|
58 |
BVolume vol; |
|
59 |
||
60 |
mounts.Rewind(); |
|
61 |
while (mounts.GetNextVolume(&vol) == B_NO_ERROR) |
|
62 |
{ |
|
63 |
fs_info fsinfo; |
|
64 |
fs_stat_dev(vol.Device(), &fsinfo); |
|
65 |
if (strcmp(devname, fsinfo.device_name) == 0) |
|
66 |
{ |
|
67 |
BDirectory directory; |
|
68 |
BEntry entry; |
|
69 |
BPath path; |
|
1223
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
70 |
const char *str; |
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
71 |
|
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
72 |
if ( (vol.GetRootDirectory(&directory) < B_OK) || |
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
73 |
(directory.GetEntry(&entry) < B_OK) || |
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
74 |
(entry.GetPath(&path) < B_OK) || |
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
75 |
( (str = path.Path()) == NULL) ) |
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
76 |
return NULL; |
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
77 |
|
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
78 |
strncpy(buf, str, bufsize-1); |
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
79 |
buf[bufsize-1] = '\0'; |
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
80 |
return buf; |
235 | 81 |
} /* if */ |
82 |
} /* while */ |
|
83 |
||
1223
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
84 |
return NULL; |
235 | 85 |
} /* getMountPoint */ |
86 |
||
87 |
||
88 |
/* |
|
89 |
* This function is lifted from Simple Directmedia Layer (SDL): |
|
1223
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
90 |
* http://www.libsdl.org/ ... this is zlib-licensed code, too. |
235 | 91 |
*/ |
657
dad3b5c307a9
Added callback APIs and ripped up the internals everywhere to use them.
Ryan C. Gordon <icculus@icculus.org>
parents:
504
diff
changeset
|
92 |
static void tryDir(const char *d, PHYSFS_StringCallback callback, void *data) |
235 | 93 |
{ |
94 |
BDirectory dir; |
|
657
dad3b5c307a9
Added callback APIs and ripped up the internals everywhere to use them.
Ryan C. Gordon <icculus@icculus.org>
parents:
504
diff
changeset
|
95 |
dir.SetTo(d); |
235 | 96 |
if (dir.InitCheck() != B_NO_ERROR) |
97 |
return; |
|
98 |
||
99 |
dir.Rewind(); |
|
100 |
BEntry entry; |
|
101 |
while (dir.GetNextEntry(&entry) >= 0) |
|
102 |
{ |
|
103 |
BPath path; |
|
104 |
const char *name; |
|
105 |
entry_ref e; |
|
106 |
||
107 |
if (entry.GetPath(&path) != B_NO_ERROR) |
|
108 |
continue; |
|
109 |
||
110 |
name = path.Path(); |
|
111 |
||
112 |
if (entry.GetRef(&e) != B_NO_ERROR) |
|
113 |
continue; |
|
114 |
||
115 |
if (entry.IsDirectory()) |
|
116 |
{ |
|
117 |
if (strcmp(e.name, "floppy") != 0) |
|
657
dad3b5c307a9
Added callback APIs and ripped up the internals everywhere to use them.
Ryan C. Gordon <icculus@icculus.org>
parents:
504
diff
changeset
|
118 |
tryDir(name, callback, data); |
1223
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
119 |
continue; |
235 | 120 |
} /* if */ |
121 |
||
1223
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
122 |
if (strcmp(e.name, "raw") != 0) /* ignore partitions. */ |
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
123 |
continue; |
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
124 |
|
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
125 |
const int devfd = open(name, O_RDONLY); |
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
126 |
if (devfd < 0) |
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
127 |
continue; |
235 | 128 |
|
1223
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
129 |
device_geometry g; |
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
130 |
const int rc = ioctl(devfd, B_GET_GEOMETRY, &g, sizeof (g)); |
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
131 |
close(devfd); |
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
132 |
if (rc < 0) |
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
133 |
continue; |
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
134 |
|
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
135 |
if (g.device_type != B_CD) |
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
136 |
continue; |
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
137 |
|
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
138 |
char mntpnt[B_FILE_NAME_LENGTH]; |
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
139 |
if (getMountPoint(name, mntpnt, sizeof (mntpnt))) |
0b8f11836561
Reworked BeOS CD detection code.
Ryan C. Gordon <icculus@icculus.org>
parents:
1213
diff
changeset
|
140 |
callback(data, mntpnt); |
235 | 141 |
} /* while */ |
142 |
} /* tryDir */ |
|
143 |
||
144 |
||
657
dad3b5c307a9
Added callback APIs and ripped up the internals everywhere to use them.
Ryan C. Gordon <icculus@icculus.org>
parents:
504
diff
changeset
|
145 |
void __PHYSFS_platformDetectAvailableCDs(PHYSFS_StringCallback cb, void *data) |
235 | 146 |
{ |
657
dad3b5c307a9
Added callback APIs and ripped up the internals everywhere to use them.
Ryan C. Gordon <icculus@icculus.org>
parents:
504
diff
changeset
|
147 |
tryDir("/dev/disk", cb, data); |
235 | 148 |
} /* __PHYSFS_platformDetectAvailableCDs */ |
149 |
||
150 |
||
151 |
static team_id getTeamID(void) |
|
152 |
{ |
|
153 |
thread_info info; |
|
154 |
thread_id tid = find_thread(NULL); |
|
155 |
get_thread_info(tid, &info); |
|
1231
8206d0e4cf49
Minor code style cleanup in platform_beos.cpp ...
Ryan C. Gordon <icculus@icculus.org>
parents:
1223
diff
changeset
|
156 |
return info.team; |
847
5e5e6c067413
Split out Mac OS X code from unix.c and added some Carbon-specific code...
Ryan C. Gordon <icculus@icculus.org>
parents:
845
diff
changeset
|
157 |
} /* getTeamID */ |
235 | 158 |
|
159 |
||
160 |
char *__PHYSFS_platformCalcBaseDir(const char *argv0) |
|
161 |
{ |
|
1133
958df28c5449
Haiku fixes, merged from stable-2.0 branch.
Ryan C. Gordon <icculus@icculus.org>
parents:
1131
diff
changeset
|
162 |
image_info info; |
958df28c5449
Haiku fixes, merged from stable-2.0 branch.
Ryan C. Gordon <icculus@icculus.org>
parents:
1131
diff
changeset
|
163 |
int32 cookie = 0; |
958df28c5449
Haiku fixes, merged from stable-2.0 branch.
Ryan C. Gordon <icculus@icculus.org>
parents:
1131
diff
changeset
|
164 |
|
958df28c5449
Haiku fixes, merged from stable-2.0 branch.
Ryan C. Gordon <icculus@icculus.org>
parents:
1131
diff
changeset
|
165 |
while (get_next_image_info(0, &cookie, &info) == B_OK) |
958df28c5449
Haiku fixes, merged from stable-2.0 branch.
Ryan C. Gordon <icculus@icculus.org>
parents:
1131
diff
changeset
|
166 |
{ |
958df28c5449
Haiku fixes, merged from stable-2.0 branch.
Ryan C. Gordon <icculus@icculus.org>
parents:
1131
diff
changeset
|
167 |
if (info.type == B_APP_IMAGE) |
958df28c5449
Haiku fixes, merged from stable-2.0 branch.
Ryan C. Gordon <icculus@icculus.org>
parents:
1131
diff
changeset
|
168 |
break; |
958df28c5449
Haiku fixes, merged from stable-2.0 branch.
Ryan C. Gordon <icculus@icculus.org>
parents:
1131
diff
changeset
|
169 |
} /* while */ |
958df28c5449
Haiku fixes, merged from stable-2.0 branch.
Ryan C. Gordon <icculus@icculus.org>
parents:
1131
diff
changeset
|
170 |
|
958df28c5449
Haiku fixes, merged from stable-2.0 branch.
Ryan C. Gordon <icculus@icculus.org>
parents:
1131
diff
changeset
|
171 |
BEntry entry(info.name, true); |
235 | 172 |
BPath path; |
1133
958df28c5449
Haiku fixes, merged from stable-2.0 branch.
Ryan C. Gordon <icculus@icculus.org>
parents:
1131
diff
changeset
|
173 |
status_t rc = entry.GetPath(&path); /* (path) now has binary's path. */ |
235 | 174 |
assert(rc == B_OK); |
175 |
rc = path.GetParent(&path); /* chop filename, keep directory. */ |
|
176 |
assert(rc == B_OK); |
|
177 |
const char *str = path.Path(); |
|
178 |
assert(str != NULL); |
|
745
df04959950eb
Patched to compile again on BeOS.
Ryan C. Gordon <icculus@icculus.org>
parents:
657
diff
changeset
|
179 |
char *retval = (char *) allocator.Malloc(strlen(str) + 1); |
1240
22d4d1bd4e21
Reworked the error reporting API. Now we use error codes instead of strings.
Ryan C. Gordon <icculus@icculus.org>
parents:
1231
diff
changeset
|
180 |
BAIL_IF_MACRO(!retval, PHYSFS_ERR_OUT_OF_MEMORY, NULL); |
235 | 181 |
strcpy(retval, str); |
1231
8206d0e4cf49
Minor code style cleanup in platform_beos.cpp ...
Ryan C. Gordon <icculus@icculus.org>
parents:
1223
diff
changeset
|
182 |
return retval; |
235 | 183 |
} /* __PHYSFS_platformCalcBaseDir */ |
184 |
||
185 |
||
1242
1e6db80d2393
Added PHYSFS_getPrefDir().
Ryan C. Gordon <icculus@icculus.org>
parents:
1240
diff
changeset
|
186 |
char *__PHYSFS_platformCalcPrefDir(const char *org, const char *app) |
1e6db80d2393
Added PHYSFS_getPrefDir().
Ryan C. Gordon <icculus@icculus.org>
parents:
1240
diff
changeset
|
187 |
{ |
1e6db80d2393
Added PHYSFS_getPrefDir().
Ryan C. Gordon <icculus@icculus.org>
parents:
1240
diff
changeset
|
188 |
/* !!! FIXME: there's a real API to determine this */ |
1e6db80d2393
Added PHYSFS_getPrefDir().
Ryan C. Gordon <icculus@icculus.org>
parents:
1240
diff
changeset
|
189 |
const char *userdir = __PHYSFS_getUserDir(); |
1e6db80d2393
Added PHYSFS_getPrefDir().
Ryan C. Gordon <icculus@icculus.org>
parents:
1240
diff
changeset
|
190 |
const char *append = "config/settings/"; |
1e6db80d2393
Added PHYSFS_getPrefDir().
Ryan C. Gordon <icculus@icculus.org>
parents:
1240
diff
changeset
|
191 |
const size_t len = strlen(userdir) + strlen(append) + strlen(app) + 1; |
1e6db80d2393
Added PHYSFS_getPrefDir().
Ryan C. Gordon <icculus@icculus.org>
parents:
1240
diff
changeset
|
192 |
char *retval = allocator.Malloc(len); |
1e6db80d2393
Added PHYSFS_getPrefDir().
Ryan C. Gordon <icculus@icculus.org>
parents:
1240
diff
changeset
|
193 |
BAIL_IF_MACRO(!retval, PHYSFS_ERR_OUT_OF_MEMORY, NULL); |
1e6db80d2393
Added PHYSFS_getPrefDir().
Ryan C. Gordon <icculus@icculus.org>
parents:
1240
diff
changeset
|
194 |
snprintf(retval, len, "%s%s%s", userdir, append, app); |
1e6db80d2393
Added PHYSFS_getPrefDir().
Ryan C. Gordon <icculus@icculus.org>
parents:
1240
diff
changeset
|
195 |
return retval; |
1e6db80d2393
Added PHYSFS_getPrefDir().
Ryan C. Gordon <icculus@icculus.org>
parents:
1240
diff
changeset
|
196 |
} /* __PHYSFS_platformCalcPrefDir */ |
1e6db80d2393
Added PHYSFS_getPrefDir().
Ryan C. Gordon <icculus@icculus.org>
parents:
1240
diff
changeset
|
197 |
|
1e6db80d2393
Added PHYSFS_getPrefDir().
Ryan C. Gordon <icculus@icculus.org>
parents:
1240
diff
changeset
|
198 |
|
1012
f254870dd7dd
Attempt to clean up the thread ID mess in platform_unix ...
Ryan C. Gordon <icculus@icculus.org>
parents:
972
diff
changeset
|
199 |
void *__PHYSFS_platformGetThreadID(void) |
235 | 200 |
{ |
1231
8206d0e4cf49
Minor code style cleanup in platform_beos.cpp ...
Ryan C. Gordon <icculus@icculus.org>
parents:
1223
diff
changeset
|
201 |
return (void *) find_thread(NULL); |
235 | 202 |
} /* __PHYSFS_platformGetThreadID */ |
203 |
||
204 |
||
205 |
void *__PHYSFS_platformCreateMutex(void) |
|
206 |
{ |
|
1231
8206d0e4cf49
Minor code style cleanup in platform_beos.cpp ...
Ryan C. Gordon <icculus@icculus.org>
parents:
1223
diff
changeset
|
207 |
return new BLocker("PhysicsFS lock", true); |
235 | 208 |
} /* __PHYSFS_platformCreateMutex */ |
209 |
||
210 |
||
211 |
void __PHYSFS_platformDestroyMutex(void *mutex) |
|
212 |
{ |
|
854
6c3ebc2e627a
Replaced BeOS mutex implementation. Now all platforms have recursive mutexes.
Ryan C. Gordon <icculus@icculus.org>
parents:
847
diff
changeset
|
213 |
delete ((BLocker *) mutex); |
235 | 214 |
} /* __PHYSFS_platformDestroyMutex */ |
215 |
||
216 |
||
217 |
int __PHYSFS_platformGrabMutex(void *mutex) |
|
218 |
{ |
|
854
6c3ebc2e627a
Replaced BeOS mutex implementation. Now all platforms have recursive mutexes.
Ryan C. Gordon <icculus@icculus.org>
parents:
847
diff
changeset
|
219 |
return ((BLocker *) mutex)->Lock() ? 1 : 0; |
235 | 220 |
} /* __PHYSFS_platformGrabMutex */ |
221 |
||
222 |
||
223 |
void __PHYSFS_platformReleaseMutex(void *mutex) |
|
224 |
{ |
|
854
6c3ebc2e627a
Replaced BeOS mutex implementation. Now all platforms have recursive mutexes.
Ryan C. Gordon <icculus@icculus.org>
parents:
847
diff
changeset
|
225 |
((BLocker *) mutex)->Unlock(); |
235 | 226 |
} /* __PHYSFS_platformReleaseMutex */ |
227 |
||
845
3f150ffcf50c
Since all the platform layers were using the same cut-and-paste of the
Ryan C. Gordon <icculus@icculus.org>
parents:
844
diff
changeset
|
228 |
|
3f150ffcf50c
Since all the platform layers were using the same cut-and-paste of the
Ryan C. Gordon <icculus@icculus.org>
parents:
844
diff
changeset
|
229 |
int __PHYSFS_platformSetDefaultAllocator(PHYSFS_Allocator *a) |
3f150ffcf50c
Since all the platform layers were using the same cut-and-paste of the
Ryan C. Gordon <icculus@icculus.org>
parents:
844
diff
changeset
|
230 |
{ |
1231
8206d0e4cf49
Minor code style cleanup in platform_beos.cpp ...
Ryan C. Gordon <icculus@icculus.org>
parents:
1223
diff
changeset
|
231 |
return 0; /* just use malloc() and friends. */ |
845
3f150ffcf50c
Since all the platform layers were using the same cut-and-paste of the
Ryan C. Gordon <icculus@icculus.org>
parents:
844
diff
changeset
|
232 |
} /* __PHYSFS_platformSetDefaultAllocator */ |
3f150ffcf50c
Since all the platform layers were using the same cut-and-paste of the
Ryan C. Gordon <icculus@icculus.org>
parents:
844
diff
changeset
|
233 |
|
818
e36f23f49042
Now compiles everything whether we need it or not, removing whole files with
Ryan C. Gordon <icculus@icculus.org>
parents:
809
diff
changeset
|
234 |
#endif /* PHYSFS_PLATFORM_BEOS */ |
235 | 235 |
|
236 |
/* end of beos.cpp ... */ |
|
237 |