Mercurial > dwindows
annotate compat.c @ 100:bb2b01c3122f
Switch back to long from long long on Windows.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Tue, 06 Aug 2002 05:31:04 +0000 |
parents | 02bbe1f397bb |
children | a5da1ac53b34 |
rev | line source |
---|---|
3 | 1 /* $Id$ */ |
2 | |
3 #include "compat.h" | |
4 #if defined(__OS2__) || defined(__WIN32__) | |
5 #include <share.h> | |
6 #endif | |
7 | |
36
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
8 #ifdef __UNIX__ |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
9 #ifdef __FreeBSD__ |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
10 #include <sys/param.h> |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
11 #include <sys/ucred.h> |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
12 #include <sys/mount.h> |
42
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
13 #elif defined(__sun__) |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
14 #include <sys/mnttab.h> |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
15 #include <sys/param.h> |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
16 #include <sys/mount.h> |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
17 #include <sys/statfs.h> |
36
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
18 #else |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
19 #include <mntent.h> |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
20 #include <sys/vfs.h> |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
21 #endif |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
22 #endif |
47
997e9ed670ef
Fixes for box alignment problem on OS/2, crash in dw_bitmap_new() on unix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
42
diff
changeset
|
23 #include <time.h> |
36
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
24 |
37
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
25 #ifdef __UNIX__ |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
26 void msleep(long period) |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
27 { |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
28 #ifdef __sun__ |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
29 /* usleep() isn't threadsafe on Solaris */ |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
30 struct timespec req; |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
31 |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
32 req.tv_sec = 0; |
42
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
33 req.tv_nsec = period * 10000000; |
37
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
34 |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
35 nanosleep(&req, NULL); |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
36 #else |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
37 usleep(period * 1000); |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
38 #endif |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
39 } |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
40 #endif |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
41 |
3 | 42 int sockread (int a, void *b, int c, int d) |
43 { | |
44 #if defined(__IBMC__) || (defined(__WIN32__) && !defined(__CYGWIN32__)) | |
45 return recv(a,b,c,d); | |
46 #else | |
47 return read(a,b,c); | |
48 #endif | |
49 } | |
50 | |
51 int sockwrite (int a, void *b, int c, int d) | |
52 { | |
53 #if defined(__IBMC__) || (defined(__WIN32__) && !defined(__CYGWIN32__)) | |
54 return send(a,b,c,d); | |
55 #else | |
56 return write(a,b,c); | |
57 #endif | |
58 } | |
59 | |
60 int sockclose(int a) | |
61 { | |
62 #ifdef __IBMC__ | |
63 return soclose(a); | |
64 #elif defined(__WIN32__) && !defined(__CYGWIN32__) | |
65 return closesocket(a); | |
66 #else | |
67 return close(a); | |
68 #endif | |
69 } | |
70 | |
71 int makedir(char *path) | |
72 { | |
73 #if defined(__IBMC__) || (defined(__WIN32__) && !defined(__CYGWIN32__)) | |
74 return mkdir(path); | |
75 #else | |
76 return mkdir(path,S_IRWXU); | |
77 #endif | |
78 } | |
79 | |
80 void nonblock(int fd) | |
81 { | |
82 #ifdef __IBMC__ | |
83 static int _nonblock = 1; | |
84 | |
85 ioctl(fd, FIONBIO, (char *)&_nonblock, sizeof(_nonblock)); | |
86 #elif defined(__WIN32__) && !defined(__CYGWIN32__) | |
87 static unsigned long _nonblock = 1; | |
88 | |
89 ioctlsocket(fd, FIONBIO, &_nonblock); | |
90 #else | |
91 fcntl(fd, F_SETFL, O_NONBLOCK); | |
92 #endif | |
93 } | |
94 | |
37
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
95 void block(int fd) |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
96 { |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
97 #ifdef __IBMC__ |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
98 static int _nonblock = 0; |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
99 |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
100 ioctl(fd, FIONBIO, (char *)&_nonblock, sizeof(_nonblock)); |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
101 #elif defined(__WIN32__) && !defined(__CYGWIN32__) |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
102 static unsigned long _nonblock = 0; |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
103 |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
104 ioctlsocket(fd, FIONBIO, &_nonblock); |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
105 #else |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
106 fcntl(fd, F_SETFL, 0); |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
107 #endif |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
108 } |
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
109 |
3 | 110 int socksprintf(int fd, char *format, ...) |
111 { | |
112 va_list args; | |
113 char outbuf[1024]; | |
114 int len; | |
115 | |
116 va_start(args, format); | |
117 vsprintf(outbuf, format, args); | |
118 va_end(args); | |
119 | |
120 len = strlen(outbuf); | |
121 sockwrite(fd, outbuf, len, 0); | |
122 | |
123 return len; | |
124 } | |
125 | |
126 void sockinit(void) | |
127 { | |
128 #ifdef __IBMC__ | |
129 sock_init(); | |
130 #elif defined(__WIN32__) || defined(WINNT) | |
131 WSADATA wsa; | |
132 | |
133 WSAStartup(MAKEWORD (1, 1), &wsa); | |
134 #endif /* !WIN32 */ | |
135 } | |
136 | |
137 void sockshutdown(void) | |
138 { | |
139 #if defined(__WIN32__) || defined(WINNT) | |
140 WSACleanup(); | |
141 #endif /* !WIN32 */ | |
142 } | |
143 | |
144 int sockpipe(int *pipes) | |
145 { | |
146 #ifndef NO_DOMAIN_SOCKETS | |
147 #ifndef HAVE_PIPE | |
148 struct sockaddr_un un; | |
149 #endif | |
150 #else | |
151 struct sockaddr_in server_addr; | |
152 struct sockaddr_in listen_addr = { 0 }; | |
153 int len = sizeof(struct sockaddr_in); | |
154 struct hostent *he; | |
155 #endif | |
156 #ifndef HAVE_PIPE | |
157 int tmpsock; | |
158 #endif | |
159 | |
160 #ifdef HAVE_PIPE | |
161 return pipe(pipes); | |
162 #elif !defined(NO_DOMAIN_SOCKETS) | |
163 static int instance = -1; | |
164 | |
165 instance++; | |
166 | |
167 /* Use UNIX domain sockets to pass messages */ | |
168 tmpsock = socket(AF_UNIX, SOCK_STREAM, 0); | |
169 pipes[1] = socket(AF_UNIX, SOCK_STREAM, 0); | |
170 memset(&un, 0, sizeof(un)); | |
171 un.sun_family=AF_UNIX; | |
172 sprintf(un.sun_path, PIPENAME, instance); | |
173 bind(tmpsock, (struct sockaddr *)&un, sizeof(un)); | |
174 listen(tmpsock, 0); | |
175 connect(pipes[1], (struct sockaddr *)&un, sizeof(un)); | |
176 pipes[0] = accept(tmpsock, 0, 0); | |
177 sockclose(tmpsock); | |
178 #else | |
179 /* Use localhost socket to pass messages if no domain sockets */ | |
180 he = gethostbyname("localhost"); | |
181 | |
182 if(he) | |
183 { | |
184 memset(&server_addr, 0, sizeof(server_addr)); | |
185 server_addr.sin_family = AF_INET; | |
186 server_addr.sin_port = 0; | |
187 server_addr.sin_addr.s_addr = INADDR_ANY; | |
188 if ((tmpsock = socket(AF_INET, SOCK_STREAM, 0)) < 0 || bind(tmpsock, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0 || listen(tmpsock, 0) < 0) | |
189 return -1; | |
190 | |
191 memset(&listen_addr, 0, sizeof(listen_addr)); | |
192 getsockname(tmpsock, (struct sockaddr *)&listen_addr, &len); | |
193 | |
194 server_addr.sin_family = AF_INET; | |
195 server_addr.sin_port = listen_addr.sin_port; | |
196 server_addr.sin_addr.s_addr = *((unsigned long *)he->h_addr); | |
197 if((pipes[1] = socket(AF_INET, SOCK_STREAM, 0)) < 0 || connect(pipes[1], (struct sockaddr *)&server_addr, sizeof(server_addr))) | |
198 return -1; | |
199 else | |
200 pipes[0] = accept(tmpsock, 0, 0); | |
201 sockclose(tmpsock); | |
202 } | |
203 else | |
204 return -1; | |
205 #endif | |
206 if(pipes[0] < 0 || pipes[1] < 0) | |
207 return -1; | |
208 return 0; | |
209 } | |
210 | |
211 /* Return in K to avoid big problems exceeding an | |
212 unsigned long when no 64bit integers are available */ | |
100
bb2b01c3122f
Switch back to long from long long on Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
99
diff
changeset
|
213 #if (defined(__IBMC__) && __IBMC__ < 360) || (defined(__WIN32__) && !defined(__CYGWIN32__)) |
3 | 214 unsigned long drivefree(int drive) |
215 #else | |
216 unsigned long long drivefree(int drive) | |
217 #endif | |
218 { | |
219 #if defined(__EMX__) || defined(__OS2__) | |
220 ULONG aulFSInfoBuf[40] = {0}; | |
221 APIRET rc = NO_ERROR; | |
35
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
222 ULONG kbytes; |
3 | 223 |
224 DosError(FERR_DISABLEHARDERR); | |
225 rc = DosQueryFSInfo(drive, | |
35
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
226 FSIL_ALLOC, |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
227 (PVOID)aulFSInfoBuf, |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
228 sizeof(aulFSInfoBuf)); |
3 | 229 |
230 DosError(FERR_ENABLEHARDERR); | |
231 if (rc != NO_ERROR) | |
232 return 0; | |
233 | |
35
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
234 kbytes = aulFSInfoBuf[3]/1024; |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
235 |
62
2be5174bdb5d
Sync with latest DW code. Tab and RGB fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
53
diff
changeset
|
236 return (kbytes * aulFSInfoBuf[1] * aulFSInfoBuf[4]); |
3 | 237 #elif defined(__WIN32__) || defined(WINNT) |
238 char buffer[10] = "C:\\"; | |
239 DWORD spc, bps, fc, tc; | |
36
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
240 ULONG kbytes; |
3 | 241 |
242 buffer[0] = drive + 'A' - 1; | |
243 | |
244 if(GetDiskFreeSpace(buffer, &spc, &bps, &fc, &tc) == 0) | |
245 return 0; | |
36
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
246 |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
247 kbytes = fc/1024; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
248 |
62
2be5174bdb5d
Sync with latest DW code. Tab and RGB fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
53
diff
changeset
|
249 return (spc*bps*kbytes); |
36
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
250 #elif defined(__FreeBSD__) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
251 struct statfs *fsp; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
252 int entries, index = 1; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
253 |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
254 entries = getmntinfo (&fsp, MNT_NOWAIT); |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
255 |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
256 for (; entries-- > 0; fsp++) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
257 { |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
258 if(index == drive) |
99
02bbe1f397bb
Fixed precision problems with drivesize and drivefree on FreeBSD.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
98
diff
changeset
|
259 return fsp->f_bsize * (fsp->f_bavail / 1024); |
98
c0388006bb0d
Fixes for FreeBSD.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
74
diff
changeset
|
260 index++; |
36
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
261 } |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
262 return 0; |
42
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
263 #elif defined(__sun__) |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
264 FILE *fp = fopen("/etc/mnttab", "r"); |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
265 struct mnttab mnt; |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
266 struct statfs sfs; |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
267 int index = 1; |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
268 |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
269 if(fp) |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
270 { |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
271 while((getmntent(fp, &mnt) == 0)) |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
272 { |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
273 if(index == drive) |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
274 { |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
275 long long size = 0; |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
276 |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
277 if(mnt.mnt_mountp) |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
278 { |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
279 statfs(mnt.mnt_mountp, &sfs, sizeof(struct statfs), 0); |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
280 size = sfs.f_bsize * (sfs.f_bfree / 1024); |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
281 } |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
282 fclose(fp); |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
283 return size; |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
284 } |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
285 index++; |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
286 } |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
287 fclose(fp); |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
288 } |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
289 return 0; |
3 | 290 #else |
36
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
291 FILE *fp = setmntent(MOUNTED, "r"); |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
292 struct mntent *mnt; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
293 struct statfs sfs; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
294 int index = 1; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
295 |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
296 if(fp) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
297 { |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
298 while((mnt = getmntent(fp))) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
299 { |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
300 if(index == drive) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
301 { |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
302 long long size = 0; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
303 |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
304 if(mnt->mnt_dir) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
305 { |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
306 statfs(mnt->mnt_dir, &sfs); |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
307 size = sfs.f_bsize * (sfs.f_bavail / 1024); |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
308 } |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
309 endmntent(fp); |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
310 return size; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
311 } |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
312 index++; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
313 } |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
314 endmntent(fp); |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
315 } |
3 | 316 return 0; |
317 #endif | |
318 } | |
319 | |
35
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
320 /* Return in K to avoid big problems exceeding an |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
321 unsigned long when no 64bit integers are available */ |
100
bb2b01c3122f
Switch back to long from long long on Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
99
diff
changeset
|
322 #if (defined(__IBMC__) && __IBMC__ < 360) || (defined(__WIN32__) && !defined(__CYGWIN32__)) |
35
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
323 unsigned long drivesize(int drive) |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
324 #else |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
325 unsigned long long drivesize(int drive) |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
326 #endif |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
327 { |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
328 #if defined(__EMX__) || defined(__OS2__) |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
329 ULONG aulFSInfoBuf[40] = {0}; |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
330 APIRET rc = NO_ERROR; |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
331 ULONG kbytes; |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
332 |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
333 DosError(FERR_DISABLEHARDERR); |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
334 rc = DosQueryFSInfo(drive, |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
335 FSIL_ALLOC, |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
336 (PVOID)aulFSInfoBuf, |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
337 sizeof(aulFSInfoBuf)); |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
338 |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
339 DosError(FERR_ENABLEHARDERR); |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
340 if (rc != NO_ERROR) |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
341 return 0; |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
342 |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
343 kbytes = aulFSInfoBuf[2]/1024; |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
344 |
62
2be5174bdb5d
Sync with latest DW code. Tab and RGB fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
53
diff
changeset
|
345 return (kbytes * aulFSInfoBuf[1] * aulFSInfoBuf[4]); |
35
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
346 #elif defined(__WIN32__) || defined(WINNT) |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
347 char buffer[10] = "C:\\"; |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
348 DWORD spc, bps, fc, tc; |
36
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
349 ULONG kbytes; |
35
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
350 |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
351 buffer[0] = drive + 'A' - 1; |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
352 |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
353 if(GetDiskFreeSpace(buffer, &spc, &bps, &fc, &tc) == 0) |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
354 return 0; |
36
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
355 |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
356 kbytes = tc/1024; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
357 |
62
2be5174bdb5d
Sync with latest DW code. Tab and RGB fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
53
diff
changeset
|
358 return (spc*bps*kbytes); |
36
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
359 #elif defined(__FreeBSD__) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
360 struct statfs *fsp; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
361 int entries, index = 1; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
362 |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
363 entries = getmntinfo (&fsp, MNT_NOWAIT); |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
364 |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
365 for (; entries-- > 0; fsp++) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
366 { |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
367 if(index == drive) |
99
02bbe1f397bb
Fixed precision problems with drivesize and drivefree on FreeBSD.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
98
diff
changeset
|
368 return fsp->f_bsize * (fsp->f_blocks / 1024); |
98
c0388006bb0d
Fixes for FreeBSD.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
74
diff
changeset
|
369 index++; |
36
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
370 } |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
371 return 0; |
42
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
372 #elif defined(__sun__) |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
373 FILE *fp = fopen("/etc/mnttab", "r"); |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
374 struct mnttab mnt; |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
375 struct statfs sfs; |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
376 int index = 1; |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
377 |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
378 if(fp) |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
379 { |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
380 while(getmntent(fp, &mnt) == 0) |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
381 { |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
382 if(index == drive) |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
383 { |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
384 long long size = 0; |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
385 |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
386 if(mnt.mnt_mountp) |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
387 { |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
388 statfs(mnt.mnt_mountp, &sfs, sizeof(struct statfs), 0); |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
389 size = sfs.f_bsize * (sfs.f_blocks / 1024); |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
390 } |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
391 fclose(fp); |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
392 return size; |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
393 } |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
394 index++; |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
395 } |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
396 fclose(fp); |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
397 } |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
398 return 0; |
35
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
399 #else |
36
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
400 FILE *fp = setmntent(MOUNTED, "r"); |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
401 struct mntent *mnt; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
402 struct statfs sfs; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
403 int index = 1; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
404 |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
405 if(fp) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
406 { |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
407 while((mnt = getmntent(fp))) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
408 { |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
409 if(index == drive) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
410 { |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
411 long long size = 0; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
412 |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
413 if(mnt->mnt_dir) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
414 { |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
415 statfs(mnt->mnt_dir, &sfs); |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
416 size = sfs.f_bsize * (sfs.f_blocks / 1024); |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
417 } |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
418 endmntent(fp); |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
419 return size; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
420 } |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
421 index++; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
422 } |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
423 endmntent(fp); |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
424 } |
35
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
425 return 0; |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
426 #endif |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
427 } |
432c39a4ff86
New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
22
diff
changeset
|
428 |
3 | 429 int isdrive(int drive) |
430 { | |
431 #if defined(__EMX__) || defined(__OS2__) | |
432 APIRET rc = NO_ERROR; | |
433 FSINFO volinfo; | |
434 | |
435 DosError(FERR_DISABLEHARDERR); | |
436 rc = DosQueryFSInfo(drive, | |
437 FSIL_VOLSER, | |
438 (PVOID)&volinfo, | |
439 sizeof(FSINFO)); | |
440 | |
441 DosError(FERR_ENABLEHARDERR); | |
442 if (rc == NO_ERROR) | |
443 return 1; | |
444 | |
445 #elif defined(__WIN32__) || defined(WINNT) | |
446 char buffer[10] = "C:\\", volname[100]; | |
447 DWORD spc, bps, fc; | |
448 | |
449 buffer[0] = drive + 'A' - 1; | |
450 | |
451 if(GetVolumeInformation(buffer, volname, 100, &spc, &bps, &fc, NULL, 0) != 0) | |
452 return 1; | |
36
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
453 #elif defined(__FreeBSD__) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
454 struct statfs *fsp; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
455 int entries, index = 1; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
456 |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
457 entries = getmntinfo (&fsp, MNT_NOWAIT); |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
458 |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
459 for (; entries-- > 0; fsp++) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
460 { |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
461 if(index == drive && fsp->f_blocks) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
462 return 1; |
98
c0388006bb0d
Fixes for FreeBSD.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
74
diff
changeset
|
463 index++; |
36
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
464 } |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
465 return 0; |
42
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
466 #elif defined(__sun__) |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
467 FILE *fp = fopen("/etc/mnttab", "r"); |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
468 struct mnttab mnt; |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
469 struct statfs sfs; |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
470 int index = 1; |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
471 |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
472 if(fp) |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
473 { |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
474 while(getmntent(fp, &mnt) == 0) |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
475 { |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
476 if(index == drive) |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
477 { |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
478 fclose(fp); |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
479 if(mnt.mnt_mountp) |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
480 { |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
481 statfs(mnt.mnt_mountp, &sfs, sizeof(struct statfs), 0); |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
482 if(sfs.f_blocks) |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
483 return 1; |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
484 } |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
485 return 0; |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
486 } |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
487 index++; |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
488 } |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
489 fclose(fp); |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
490 } |
36
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
491 #else |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
492 FILE *fp = setmntent(MOUNTED, "r"); |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
493 struct mntent *mnt; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
494 struct statfs sfs; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
495 int index = 1; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
496 |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
497 if(fp) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
498 { |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
499 while((mnt = getmntent(fp))) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
500 { |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
501 if(index == drive) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
502 { |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
503 endmntent(fp); |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
504 if(mnt->mnt_dir) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
505 { |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
506 statfs(mnt->mnt_dir, &sfs); |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
507 if(sfs.f_blocks) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
508 return 1; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
509 } |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
510 return 0; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
511 } |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
512 index++; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
513 } |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
514 endmntent(fp); |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
515 } |
3 | 516 #endif |
517 return 0; | |
518 } | |
519 | |
36
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
520 void getfsname(int drive, char *buf, int len) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
521 { |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
522 #ifdef __UNIX__ |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
523 #ifdef __FreeBSD__ |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
524 struct statfs *fsp; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
525 int entries, index = 1; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
526 |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
527 strncpy(buf, "Unknown", len); |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
528 |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
529 entries = getmntinfo (&fsp, MNT_NOWAIT); |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
530 |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
531 for (; entries-- > 0; fsp++) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
532 { |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
533 if(index == drive) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
534 strncpy(buf, fsp->f_mntonname, len); |
98
c0388006bb0d
Fixes for FreeBSD.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
74
diff
changeset
|
535 index++; |
36
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
536 } |
42
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
537 #elif defined(__sun__) |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
538 FILE *fp = fopen("/etc/mnttab", "r"); |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
539 struct mnttab mnt; |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
540 int index = 1; |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
541 |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
542 strncpy(buf, "Unknown", len); |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
543 |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
544 if(fp) |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
545 { |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
546 while(getmntent(fp, &mnt) == 0) |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
547 { |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
548 if(index == drive && mnt.mnt_mountp) |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
549 strncpy(buf, mnt.mnt_mountp, len); |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
550 index++; |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
551 } |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
552 fclose(fp); |
eb003f77538c
Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
37
diff
changeset
|
553 } |
36
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
554 #else |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
555 FILE *fp = setmntent(MOUNTED, "r"); |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
556 struct mntent *mnt; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
557 int index = 1; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
558 |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
559 strncpy(buf, "Unknown", len); |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
560 |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
561 if(fp) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
562 { |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
563 while((mnt = getmntent(fp))) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
564 { |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
565 if(index == drive && mnt->mnt_dir) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
566 strncpy(buf, mnt->mnt_dir, len); |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
567 index++; |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
568 } |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
569 endmntent(fp); |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
570 } |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
571 #endif |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
572 #elif defined(__OS2__) |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
573 /* No snprintf() on OS/2 ??? */ |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
574 sprintf(buf, "Drive %c", (char)drive + 'A' - 1); |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
575 #else |
37
360bc6a5f1c9
Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
576 _snprintf(buf, len, "Drive %c", (char)drive + 'A' - 1); |
36
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
577 #endif |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
578 } |
cddb02f847e1
Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
35
diff
changeset
|
579 |
53
8add9a616d0e
Added a log filename parameter to setfileinfo().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
47
diff
changeset
|
580 void setfileinfo(char *filename, char *url, char *logfile) |
3 | 581 { |
582 time_t ltime; | |
583 struct tm *tm; | |
584 char buffer[200], timebuf[200]; | |
585 #ifdef __OS2__ | |
586 const unsigned fea2listsize = 6000; | |
587 char *pData; | |
588 EAOP2 eaop2; | |
589 PFEA2 pFEA2; | |
590 #else | |
591 FILE *urlfile; | |
592 #endif | |
593 | |
594 ltime = time(NULL); | |
595 | |
596 tm = localtime(<ime); | |
597 | |
598 strftime(timebuf, 200, "%c", tm); | |
599 | |
600 sprintf(buffer, "%s %s", url, timebuf); | |
601 | |
602 #ifdef __OS2__ | |
603 eaop2.fpGEA2List = 0; | |
604 eaop2.fpFEA2List = (PFEA2LIST)malloc(fea2listsize); | |
605 pFEA2 = &eaop2.fpFEA2List->list[0]; | |
606 | |
607 pFEA2->fEA = 0; | |
608 /* .COMMENTS is 9 characters long */ | |
609 pFEA2->cbName = 9; | |
610 | |
611 /* space for the type and length field. */ | |
612 pFEA2->cbValue = strlen(buffer)+2*sizeof(USHORT); | |
613 | |
614 strcpy(pFEA2->szName, ".COMMENTS"); | |
615 pData = pFEA2->szName+pFEA2->cbName+1; | |
616 /* data begins at first byte after the name */ | |
617 | |
618 *(USHORT*)pData = EAT_ASCII; /* type */ | |
619 *((USHORT*)pData+1) = strlen(buffer); /* length */ | |
620 strcpy(pData+2*sizeof(USHORT), buffer);/* content */ | |
621 | |
622 pFEA2->oNextEntryOffset = 0; | |
623 | |
624 eaop2.fpFEA2List->cbList = ((PCHAR)pData+2*sizeof(USHORT)+ | |
625 pFEA2->cbValue)-((PCHAR)eaop2.fpFEA2List); | |
626 | |
627 DosSetPathInfo(filename, | |
628 FIL_QUERYEASIZE, | |
629 &eaop2, | |
630 sizeof(eaop2), | |
631 0); | |
632 | |
633 free((void *)eaop2.fpFEA2List); | |
634 #else | |
635 | |
53
8add9a616d0e
Added a log filename parameter to setfileinfo().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
47
diff
changeset
|
636 if((urlfile = fopen(logfile, "a"))!=NULL) |
3 | 637 { |
638 fprintf(urlfile, "%s\n", buffer); | |
639 fclose(urlfile); | |
640 } | |
641 #endif | |
642 } | |
643 | |
644 #if defined(__OS2__) || defined(__WIN32__) | |
645 typedef struct _fsinfo { | |
646 FILE *fp; | |
647 int fd; | |
648 } FSInfo; | |
649 | |
650 FSInfo *FSIRoot = NULL; | |
651 | |
652 #define FSI_MAX 100 | |
653 #endif | |
654 | |
655 /* Sharable fopen() and fclose() calls. */ | |
656 FILE *fsopen(char *path, char *modes) | |
657 { | |
658 #if defined(__OS2__) || defined(__WIN32__) | |
659 int z; | |
660 | |
661 if(!FSIRoot) | |
662 FSIRoot = calloc(sizeof(struct _fsinfo), FSI_MAX); | |
663 | |
664 for(z=0;z<FSI_MAX;z++) | |
665 { | |
666 if(FSIRoot[z].fd < 1) | |
667 { | |
668 int s, sopenmode = 0, wrmode = 0; | |
669 | |
670 /* Check the flags passed */ | |
671 for(s=0;s<3;s++) | |
672 { | |
673 if(modes[s] == 'b') | |
674 sopenmode |= O_BINARY; | |
675 if(modes[s] == 'r') | |
676 wrmode |= O_RDONLY; | |
677 if(modes[s] == 'w') | |
678 wrmode |= O_WRONLY; | |
679 if(modes[s] == 'a') | |
680 sopenmode |= O_APPEND; | |
681 if(modes[s] == 't') | |
682 sopenmode |= O_TEXT; | |
683 } | |
684 | |
685 /* Check the read/write request */ | |
686 if((wrmode & O_RDONLY) && (wrmode & O_WRONLY)) | |
687 sopenmode |= O_RDWR; | |
688 else | |
689 sopenmode |= wrmode; | |
690 FSIRoot[z].fd = _sopen(path, sopenmode, SH_DENYNO, S_IREAD|S_IWRITE); | |
691 if(FSIRoot[z].fd > 0) | |
692 { | |
693 FSIRoot[z].fp = fdopen(FSIRoot[z].fd, modes); | |
694 | |
695 return FSIRoot[z].fp; | |
696 } | |
697 } | |
698 } | |
699 return NULL; | |
700 #else | |
701 return fopen(path, modes); | |
702 #endif | |
703 } | |
704 | |
705 int fsclose(FILE *fp) | |
706 { | |
707 #if defined(__OS2__) || defined(__WIN32__) | |
708 if(FSIRoot) | |
709 { | |
710 | |
711 int z; | |
712 for(z=0;z<FSI_MAX;z++) | |
713 { | |
714 if(fp == FSIRoot[z].fp) | |
715 { | |
716 int ret = fclose(fp); | |
717 close(FSIRoot[z].fd); | |
718 FSIRoot[z].fd = 0; | |
719 FSIRoot[z].fp = NULL; | |
720 return ret; | |
721 } | |
722 } | |
723 } | |
724 #endif | |
725 return fclose(fp); | |
726 } | |
727 | |
728 char *fsgets(char *str, int size, FILE *stream) | |
729 { | |
730 return fgets(str, size, stream); | |
731 } | |
732 | |
22
6a246b3bb14f
Added tree widgets, fixed some delete event processing, fixed a layout bug
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
3
diff
changeset
|
733 int fsseek(FILE *stream, long offset, int whence) |
6a246b3bb14f
Added tree widgets, fixed some delete event processing, fixed a layout bug
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
3
diff
changeset
|
734 { |
6a246b3bb14f
Added tree widgets, fixed some delete event processing, fixed a layout bug
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
3
diff
changeset
|
735 return fseek(stream, offset, whence); |
6a246b3bb14f
Added tree widgets, fixed some delete event processing, fixed a layout bug
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
3
diff
changeset
|
736 } |
72
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
737 |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
738 static int locale_number = -1, locale_count = 0; |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
739 static char **locale_text = NULL; |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
740 |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
741 void _free_locale(void) |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
742 { |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
743 if(locale_text) |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
744 { |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
745 int z; |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
746 |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
747 for(z=0;z<locale_count;z++) |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
748 { |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
749 if(locale_text[z]) |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
750 free(locale_text[z]); |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
751 } |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
752 free(locale_text); |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
753 locale_text = NULL; |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
754 } |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
755 } |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
756 |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
757 void _stripcrlf(char *buf) |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
758 { |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
759 int z, len = strlen(buf); |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
760 |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
761 for(z=0;z<len;z++) |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
762 { |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
763 if(buf[z] == '\r' || buf[z] == '\n') |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
764 { |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
765 buf[z] = 0; |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
766 return; |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
767 } |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
768 } |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
769 } |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
770 |
74
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
771 #ifdef __WIN32__ |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
772 #define LOCALE_CHARACTERS 62 |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
773 static char locale_table[LOCALE_CHARACTERS * 2] = { |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
774 0xc0, 0xb7, 0xc1, 0xb5, 0xc2, 0xb6, 0xc3, 0xc7, 0xc4, 0x8e, 0xc5, 0x8f, |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
775 0xc6, 0x92, 0xc7, 0x80, 0xc8, 0xd4, 0xc9, 0x90, 0xcb, 0xd3, 0xcc, 0xde, |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
776 0xcd, 0xd6, 0xce, 0xd7, 0xcf, 0xd8, 0xd0, 0xd1, 0xd1, 0xa5, 0xd2, 0xe3, |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
777 0xd3, 0xe0, 0xd4, 0xe2, 0xd5, 0xe5, 0xd6, 0x99, 0xd8, 0x9d, 0xd9, 0xeb, |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
778 0xda, 0xe9, 0xdb, 0xea, 0xdc, 0x9a, 0xde, 0xed, 0xde, 0xe8, 0xdf, 0xe1, |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
779 0xe0, 0x85, 0xe1, 0xa0, 0xe2, 0x83, 0xe3, 0xc6, 0xe4, 0x84, 0xe5, 0x86, |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
780 0xe6, 0x91, 0xe7, 0x87, 0xe8, 0x8a, 0xe9, 0x82, 0xea, 0x88, 0xeb, 0x89, |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
781 0xec, 0x8d, 0xed, 0xa1, 0xee, 0x8c, 0xef, 0x8b, 0xf0, 0xd0, 0xf1, 0xa4, |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
782 0xf2, 0x95, 0xf3, 0xa3, 0xf4, 0x93, 0xf5, 0xe4, 0xf6, 0x94, 0xf7, 0xf6, |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
783 0xf8, 0x9b, 0xf9, 0x97, 0xfa, 0xa3, 0xfb, 0x96, 0xfc, 0x81, 0xfd, 0xec, |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
784 0xfe, 0xe7, 0xff, 0x9e |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
785 |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
786 }; |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
787 |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
788 char locale_convert(int codepage, char c) |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
789 { |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
790 int z; |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
791 |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
792 for(z=0;z<LOCALE_CHARACTERS;z++) |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
793 { |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
794 if(locale_table[(z*2)+1] == c) |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
795 return locale_table[z*2]; |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
796 } |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
797 return c; |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
798 } |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
799 #endif |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
800 |
72
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
801 /* Initialize the locale engine |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
802 * Returns: TRUE on success, FALSE on failure. |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
803 */ |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
804 int locale_init(char *filename, int my_locale) |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
805 { |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
806 FILE *fp = fopen(filename, FOPEN_READ_TEXT); |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
807 static char text[1025]; |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
808 int count = 0; |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
809 |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
810 _free_locale(); |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
811 |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
812 if(fp) |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
813 { |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
814 |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
815 fgets(text, 1024, fp); |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
816 if(strncasecmp(text, "MESSAGES=", 9) == 0 && (count = atoi(&text[9])) > 0) |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
817 { |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
818 int current = -1; |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
819 |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
820 locale_text = calloc(count, sizeof(char *)); |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
821 |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
822 while(!feof(fp)) |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
823 { |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
824 fgets(text, 1024, fp); |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
825 _stripcrlf(text); |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
826 |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
827 if(strncasecmp(text, "LOCALE=", 7) == 0) |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
828 { |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
829 if(current > -1) |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
830 { |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
831 fclose(fp); |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
832 locale_count = count; |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
833 locale_number = my_locale; |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
834 return 1; |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
835 } |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
836 if(atoi(&text[7]) == my_locale) |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
837 current = 0; |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
838 } |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
839 else if(current > -1 && current < count) |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
840 { |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
841 /* Use defaults on blank lines */ |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
842 if(text[0]) |
73
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
843 { |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
844 int x = 0, z, len = strlen(text); |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
845 |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
846 locale_text[current] = calloc(1, len + 1); |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
847 |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
848 for(z=0;z<len;z++) |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
849 { |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
850 if(text[z] == '\\' && (text[z+1] == 'r' || text[z+1] == 'n' |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
851 || text[z+1] == '\"' || text[z+1] == '\'')) |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
852 { |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
853 switch(text[z+1]) |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
854 { |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
855 case 'r': |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
856 locale_text[current][x] = '\r'; |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
857 break; |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
858 case 'n': |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
859 locale_text[current][x] = '\n'; |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
860 break; |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
861 case '\"': |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
862 locale_text[current][x] = '\"'; |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
863 break; |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
864 case '\'': |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
865 locale_text[current][x] = '\''; |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
866 break; |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
867 } |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
868 x++; |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
869 z++; |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
870 } |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
871 else |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
872 { |
74
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
873 #ifdef __WIN32__ |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
874 locale_text[current][x] = locale_convert(1252, text[z]); |
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
875 #else |
73
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
876 locale_text[current][x] = text[z]; |
74
f794f2baabf2
Added codepage translation for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
73
diff
changeset
|
877 #endif |
73
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
878 x++; |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
879 } |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
880 } |
2f339dd13496
Added C/C++ style escape sequence processing. And fixed a couple OS/2 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
72
diff
changeset
|
881 } |
72
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
882 current++; |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
883 } |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
884 } |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
885 } |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
886 fclose(fp); |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
887 } |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
888 if(locale_text && count) |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
889 { |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
890 locale_count = count; |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
891 locale_number = my_locale; |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
892 return 1; |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
893 } |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
894 return 0; |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
895 } |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
896 |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
897 /* Retrieve a localized string if available */ |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
898 char *locale_string(char *default_text, int message) |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
899 { |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
900 if(locale_number > -1 && message < locale_count && message > -1 && locale_text[message]) |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
901 return locale_text[message]; |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
902 return default_text; |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
903 } |
ab77a22a2a36
Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
62
diff
changeset
|
904 |