annotate dwcompat.c @ 1834:ca6ef85fffc5

Update dw_window_set_bitmap() to use pixbufs on GTK 2.x instead of pixmap/bitmap pairs for better appearance using images with alpha channels.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Thu, 01 Nov 2012 13:51:35 +0000
parents b217cf9161c7
children 22225eb286e5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1 /* $Id$ */
1617
f8d1da63fb77 Add code to allow building DW.DLL as Unicode on Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1609
diff changeset
2 #undef UNICODE
f8d1da63fb77 Add code to allow building DW.DLL as Unicode on Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1609
diff changeset
3 #undef _UNICODE
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4
1601
71e0a3ad07f7 Enable level 3 warnings in DEBUG mode with Visual C to show deprecation warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1594
diff changeset
5 #ifdef __WIN32__
71e0a3ad07f7 Enable level 3 warnings in DEBUG mode with Visual C to show deprecation warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1594
diff changeset
6 #include <direct.h>
71e0a3ad07f7 Enable level 3 warnings in DEBUG mode with Visual C to show deprecation warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1594
diff changeset
7 #endif
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8 #if defined(__OS2__) || defined(__WIN32__)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9 #include <share.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10 #endif
1601
71e0a3ad07f7 Enable level 3 warnings in DEBUG mode with Visual C to show deprecation warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1594
diff changeset
11 #include "dwcompat.h"
71e0a3ad07f7 Enable level 3 warnings in DEBUG mode with Visual C to show deprecation warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1594
diff changeset
12 #include "dw.h"
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
13
433
f225f16bebbd Compile fixes for MacOS X.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 176
diff changeset
14 #if defined(__UNIX__) || defined(__MAC__)
f225f16bebbd Compile fixes for MacOS X.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 176
diff changeset
15 #if defined(__FreeBSD__) || defined(__MAC__)
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
16 #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
17 #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
18 #include <sys/mount.h>
42
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
19 #elif defined(__sun__)
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
20 #include <sys/mnttab.h>
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
21 #include <sys/param.h>
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
22 #include <sys/mount.h>
871
b15ad609365e Solaris recommends using statvfs() instead of statfs()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 870
diff changeset
23 #include <sys/statvfs.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 #else
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
25 #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
26 #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
27 #endif
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
28 #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
29 #include <time.h>
870
59c4fac42fb5 Need to use tv_sec if tv_nsec exceeds one second on Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 697
diff changeset
30 #include <errno.h>
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
31
441
b559c06a76c2 Implemented more functionality on MacOS and include the platform define
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 433
diff changeset
32 #if defined(__UNIX__) || defined(__MAC__)
37
360bc6a5f1c9 Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 36
diff changeset
33 void msleep(long period)
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 #ifdef __sun__
360bc6a5f1c9 Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 36
diff changeset
36 /* usleep() isn't threadsafe on Solaris */
360bc6a5f1c9 Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 36
diff changeset
37 struct timespec req;
360bc6a5f1c9 Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 36
diff changeset
38
360bc6a5f1c9 Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 36
diff changeset
39 req.tv_sec = 0;
870
59c4fac42fb5 Need to use tv_sec if tv_nsec exceeds one second on Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 697
diff changeset
40 if(period >= 1000)
59c4fac42fb5 Need to use tv_sec if tv_nsec exceeds one second on Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 697
diff changeset
41 {
59c4fac42fb5 Need to use tv_sec if tv_nsec exceeds one second on Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 697
diff changeset
42 req.tv_sec = (int)(period / 1000);
59c4fac42fb5 Need to use tv_sec if tv_nsec exceeds one second on Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 697
diff changeset
43 period -= (req.tv_sec * 1000);
59c4fac42fb5 Need to use tv_sec if tv_nsec exceeds one second on Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 697
diff changeset
44 }
42
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
45 req.tv_nsec = period * 10000000;
870
59c4fac42fb5 Need to use tv_sec if tv_nsec exceeds one second on Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 697
diff changeset
46
37
360bc6a5f1c9 Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 36
diff changeset
47 nanosleep(&req, NULL);
360bc6a5f1c9 Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 36
diff changeset
48 #else
1110
404b639f096b Minor typecast fixes for warnings reported by clang on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1109
diff changeset
49 usleep((int)(period * 1000));
37
360bc6a5f1c9 Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 36
diff changeset
50 #endif
360bc6a5f1c9 Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 36
diff changeset
51 }
360bc6a5f1c9 Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 36
diff changeset
52 #endif
360bc6a5f1c9 Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 36
diff changeset
53
176
4e3407df0e38 Specify calling convention for compat functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
54 int API makedir(char *path)
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
55 {
172
0fc45e386376 Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 101
diff changeset
56 #if defined(__IBMC__) || defined(__WATCOMC__) || (defined(__WIN32__) && !defined(__CYGWIN32__))
1710
b217cf9161c7 Move some more platform specific code into dwcompat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1640
diff changeset
57 return mkdir(path, 0);
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
58 #else
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
59 return mkdir(path,S_IRWXU);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
60 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
61 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
62
580
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
63 char * API vargs(char *buf, int len, char *format, ...)
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
64 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
65 va_list args;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
66
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
67 va_start(args, format);
580
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
68 #ifdef HAVE_VSNPRINTF
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
69 vsnprintf(buf, len, format, args);
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
70 #else
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
71 len = len;
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
72 vsprintf(buf, format, args);
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
73 #endif
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
74 va_end(args);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
75
580
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
76 return buf;
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
77 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
78
1609
e4a641036581 Last commit didn't help, seems getmntinfo() isn't thread safe on Mac or FreeBSD...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1608
diff changeset
79 /* Get around getmntinfo() not being thread safe */
e4a641036581 Last commit didn't help, seems getmntinfo() isn't thread safe on Mac or FreeBSD...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1608
diff changeset
80 #if defined(__FreeBSD__) || defined(__MAC__)
e4a641036581 Last commit didn't help, seems getmntinfo() isn't thread safe on Mac or FreeBSD...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1608
diff changeset
81 int _getmntinfo_r(struct statfs **mntbufp, int flags)
e4a641036581 Last commit didn't help, seems getmntinfo() isn't thread safe on Mac or FreeBSD...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1608
diff changeset
82 {
e4a641036581 Last commit didn't help, seems getmntinfo() isn't thread safe on Mac or FreeBSD...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1608
diff changeset
83 static HMTX mutex = 0;
e4a641036581 Last commit didn't help, seems getmntinfo() isn't thread safe on Mac or FreeBSD...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1608
diff changeset
84 int result;
e4a641036581 Last commit didn't help, seems getmntinfo() isn't thread safe on Mac or FreeBSD...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1608
diff changeset
85
e4a641036581 Last commit didn't help, seems getmntinfo() isn't thread safe on Mac or FreeBSD...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1608
diff changeset
86 if(!mutex)
e4a641036581 Last commit didn't help, seems getmntinfo() isn't thread safe on Mac or FreeBSD...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1608
diff changeset
87 mutex = dw_mutex_new();
e4a641036581 Last commit didn't help, seems getmntinfo() isn't thread safe on Mac or FreeBSD...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1608
diff changeset
88
e4a641036581 Last commit didn't help, seems getmntinfo() isn't thread safe on Mac or FreeBSD...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1608
diff changeset
89 dw_mutex_lock(mutex);
e4a641036581 Last commit didn't help, seems getmntinfo() isn't thread safe on Mac or FreeBSD...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1608
diff changeset
90 result = getmntinfo(mntbufp, flags);
e4a641036581 Last commit didn't help, seems getmntinfo() isn't thread safe on Mac or FreeBSD...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1608
diff changeset
91 dw_mutex_unlock(mutex);
e4a641036581 Last commit didn't help, seems getmntinfo() isn't thread safe on Mac or FreeBSD...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1608
diff changeset
92 return result;
e4a641036581 Last commit didn't help, seems getmntinfo() isn't thread safe on Mac or FreeBSD...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1608
diff changeset
93 }
e4a641036581 Last commit didn't help, seems getmntinfo() isn't thread safe on Mac or FreeBSD...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1608
diff changeset
94 #endif
e4a641036581 Last commit didn't help, seems getmntinfo() isn't thread safe on Mac or FreeBSD...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1608
diff changeset
95
176
4e3407df0e38 Specify calling convention for compat functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
96 long double API drivefree(int drive)
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
97 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
98 #if defined(__EMX__) || defined(__OS2__)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
99 ULONG aulFSInfoBuf[40] = {0};
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
100 APIRET rc = NO_ERROR;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
101
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
102 DosError(FERR_DISABLEHARDERR);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
103 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
104 FSIL_ALLOC,
432c39a4ff86 New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 22
diff changeset
105 (PVOID)aulFSInfoBuf,
432c39a4ff86 New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 22
diff changeset
106 sizeof(aulFSInfoBuf));
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
107
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
108 DosError(FERR_ENABLEHARDERR);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
109 if (rc != NO_ERROR)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
110 return 0;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
111
101
a5da1ac53b34 Use long double instead of long long for drivesize and drivefree.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 100
diff changeset
112 return (long double)((double)aulFSInfoBuf[3] * (double)aulFSInfoBuf[1] * (double)aulFSInfoBuf[4]);
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
113 #elif defined(__WIN32__) || defined(WINNT)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
114 char buffer[10] = "C:\\";
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
115 DWORD spc, bps, fc, tc;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
116
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
117 buffer[0] = drive + 'A' - 1;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
118
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
119 if(GetDiskFreeSpace(buffer, &spc, &bps, &fc, &tc) == 0)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
120 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
121
101
a5da1ac53b34 Use long double instead of long long for drivesize and drivefree.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 100
diff changeset
122 return (long double)((double)spc*(double)bps*(double)fc);
433
f225f16bebbd Compile fixes for MacOS X.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 176
diff changeset
123 #elif defined(__FreeBSD__) || defined(__MAC__)
1608
ff844a41193b Not setting the structure to NULL seems to cause crashes on Mac when mounting/unmounting.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1601
diff changeset
124 struct statfs *fsp = NULL;
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
125 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
126
1609
e4a641036581 Last commit didn't help, seems getmntinfo() isn't thread safe on Mac or FreeBSD...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1608
diff changeset
127 entries = _getmntinfo_r(&fsp, MNT_NOWAIT);
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
128
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
129 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
130 {
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
131 if(index == drive)
101
a5da1ac53b34 Use long double instead of long long for drivesize and drivefree.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 100
diff changeset
132 return (long double)((double)fsp->f_bsize * (double)fsp->f_bavail);
98
c0388006bb0d Fixes for FreeBSD.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 74
diff changeset
133 index++;
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
134 }
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
135 return 0;
42
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
136 #elif defined(__sun__)
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
137 FILE *fp = fopen("/etc/mnttab", "r");
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
138 struct mnttab mnt;
871
b15ad609365e Solaris recommends using statvfs() instead of statfs()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 870
diff changeset
139 struct statvfs sfs;
42
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
140 int index = 1;
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
141
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
142 if(fp)
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
143 {
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
144 while((getmntent(fp, &mnt) == 0))
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
145 {
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
146 if(index == drive)
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
147 {
101
a5da1ac53b34 Use long double instead of long long for drivesize and drivefree.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 100
diff changeset
148 long double size = 0;
42
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
149
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
150 if(mnt.mnt_mountp)
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
151 {
871
b15ad609365e Solaris recommends using statvfs() instead of statfs()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 870
diff changeset
152 if(!statvfs(mnt.mnt_mountp, &sfs))
649
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
153 {
871
b15ad609365e Solaris recommends using statvfs() instead of statfs()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 870
diff changeset
154 size = (long double)((double)sfs.f_bsize * (double)sfs.f_bavail);
649
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
155 }
42
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
156 }
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
157 fclose(fp);
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
158 return size;
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
159 }
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
160 index++;
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
161 }
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
162 fclose(fp);
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
163 }
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
164 return 0;
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
165 #else
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
166 FILE *fp = setmntent(MOUNTED, "r");
649
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
167 struct mntent mnt;
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
168 struct statfs sfs;
649
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
169 char buffer[1024];
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
170 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
171
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
172 if(fp)
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
173 {
649
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
174 while(getmntent_r(fp, &mnt, buffer, sizeof(buffer)))
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
175 {
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
176 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
177 {
101
a5da1ac53b34 Use long double instead of long long for drivesize and drivefree.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 100
diff changeset
178 long double size = 0;
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
179
649
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
180 if(mnt.mnt_dir)
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
181 {
649
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
182 if(!statfs(mnt.mnt_dir, &sfs))
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
183 {
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
184 size = (long double)((double)sfs.f_bsize * (double)sfs.f_bavail);
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
185 }
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
186 }
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
187 endmntent(fp);
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
188 return size;
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
189 }
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
190 index++;
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
191 }
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
192 endmntent(fp);
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
193 }
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
194 return 0;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
195 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
196 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
197
176
4e3407df0e38 Specify calling convention for compat functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
198 long double API drivesize(int drive)
35
432c39a4ff86 New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 22
diff changeset
199 {
432c39a4ff86 New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 22
diff changeset
200 #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
201 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
202 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
203
432c39a4ff86 New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 22
diff changeset
204 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
205 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
206 FSIL_ALLOC,
432c39a4ff86 New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 22
diff changeset
207 (PVOID)aulFSInfoBuf,
432c39a4ff86 New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 22
diff changeset
208 sizeof(aulFSInfoBuf));
432c39a4ff86 New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 22
diff changeset
209
432c39a4ff86 New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 22
diff changeset
210 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
211 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
212 return 0;
432c39a4ff86 New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 22
diff changeset
213
101
a5da1ac53b34 Use long double instead of long long for drivesize and drivefree.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 100
diff changeset
214 return (long double)((double)aulFSInfoBuf[2] * (double)aulFSInfoBuf[1] * (double)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
215 #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
216 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
217 DWORD spc, bps, fc, tc;
432c39a4ff86 New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 22
diff changeset
218
432c39a4ff86 New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 22
diff changeset
219 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
220
432c39a4ff86 New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 22
diff changeset
221 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
222 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
223
101
a5da1ac53b34 Use long double instead of long long for drivesize and drivefree.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 100
diff changeset
224 return (long double)((double)spc*(double)bps*(double)tc);
433
f225f16bebbd Compile fixes for MacOS X.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 176
diff changeset
225 #elif defined(__FreeBSD__) || defined(__MAC__)
1608
ff844a41193b Not setting the structure to NULL seems to cause crashes on Mac when mounting/unmounting.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1601
diff changeset
226 struct statfs *fsp = NULL;
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
227 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
228
1609
e4a641036581 Last commit didn't help, seems getmntinfo() isn't thread safe on Mac or FreeBSD...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1608
diff changeset
229 entries = _getmntinfo_r(&fsp, MNT_NOWAIT);
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
230
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
231 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
232 {
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
233 if(index == drive)
101
a5da1ac53b34 Use long double instead of long long for drivesize and drivefree.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 100
diff changeset
234 return (long double)((double)fsp->f_bsize * (double)fsp->f_blocks);
98
c0388006bb0d Fixes for FreeBSD.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 74
diff changeset
235 index++;
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
236 }
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
237 return 0;
42
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
238 #elif defined(__sun__)
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
239 FILE *fp = fopen("/etc/mnttab", "r");
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
240 struct mnttab mnt;
871
b15ad609365e Solaris recommends using statvfs() instead of statfs()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 870
diff changeset
241 struct statvfs sfs;
42
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
242 int index = 1;
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
243
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
244 if(fp)
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
245 {
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
246 while(getmntent(fp, &mnt) == 0)
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
247 {
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
248 if(index == drive)
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
249 {
101
a5da1ac53b34 Use long double instead of long long for drivesize and drivefree.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 100
diff changeset
250 long double size = 0;
42
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
251
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
252 if(mnt.mnt_mountp)
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
253 {
871
b15ad609365e Solaris recommends using statvfs() instead of statfs()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 870
diff changeset
254 if(!statvfs(mnt.mnt_mountp, &sfs))
649
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
255 {
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
256 size = (long double)((double)sfs.f_bsize * (double)sfs.f_blocks);
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
257 }
42
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
258 }
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
259 fclose(fp);
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
260 return size;
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
261 }
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
262 index++;
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
263 }
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
264 fclose(fp);
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
265 }
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
266 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
267 #else
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
268 FILE *fp = setmntent(MOUNTED, "r");
649
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
269 struct mntent mnt;
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
270 char buffer[1024];
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
271 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
272 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
273
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
274 if(fp)
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
275 {
649
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
276 while(getmntent_r(fp, &mnt, buffer, sizeof(buffer)))
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
277 {
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
278 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
279 {
101
a5da1ac53b34 Use long double instead of long long for drivesize and drivefree.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 100
diff changeset
280 long double size = 0;
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
281
649
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
282 if(mnt.mnt_dir)
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
283 {
649
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
284 if(!statfs(mnt.mnt_dir, &sfs))
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
285 {
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
286 size = (long double)((double)sfs.f_bsize * (double)sfs.f_blocks);
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
287 }
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
288 }
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
289 endmntent(fp);
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
290 return size;
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
291 }
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
292 index++;
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
293 }
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
294 endmntent(fp);
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
295 }
35
432c39a4ff86 New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 22
diff changeset
296 return 0;
432c39a4ff86 New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 22
diff changeset
297 #endif
432c39a4ff86 New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 22
diff changeset
298 }
432c39a4ff86 New code for checking drive size on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 22
diff changeset
299
176
4e3407df0e38 Specify calling convention for compat functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
300 int API isdrive(int drive)
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
301 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
302 #if defined(__EMX__) || defined(__OS2__)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
303 APIRET rc = NO_ERROR;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
304 FSINFO volinfo;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
305
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
306 DosError(FERR_DISABLEHARDERR);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
307 rc = DosQueryFSInfo(drive,
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
308 FSIL_VOLSER,
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
309 (PVOID)&volinfo,
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
310 sizeof(FSINFO));
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
311
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
312 DosError(FERR_ENABLEHARDERR);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
313 if (rc == NO_ERROR)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
314 return 1;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
315
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
316 #elif defined(__WIN32__) || defined(WINNT)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
317 char buffer[10] = "C:\\", volname[100];
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
318 DWORD spc, bps, fc;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
319
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
320 buffer[0] = drive + 'A' - 1;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
321
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
322 if(GetVolumeInformation(buffer, volname, 100, &spc, &bps, &fc, NULL, 0) != 0)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
323 return 1;
433
f225f16bebbd Compile fixes for MacOS X.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 176
diff changeset
324 #elif defined(__FreeBSD__) || defined(__MAC__)
1608
ff844a41193b Not setting the structure to NULL seems to cause crashes on Mac when mounting/unmounting.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1601
diff changeset
325 struct statfs *fsp = NULL;
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
326 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
327
1609
e4a641036581 Last commit didn't help, seems getmntinfo() isn't thread safe on Mac or FreeBSD...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1608
diff changeset
328 entries = _getmntinfo_r(&fsp, MNT_NOWAIT);
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
329
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
330 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
331 {
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
332 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
333 return 1;
98
c0388006bb0d Fixes for FreeBSD.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 74
diff changeset
334 index++;
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
335 }
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
336 return 0;
42
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
337 #elif defined(__sun__)
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
338 FILE *fp = fopen("/etc/mnttab", "r");
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
339 struct mnttab mnt;
871
b15ad609365e Solaris recommends using statvfs() instead of statfs()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 870
diff changeset
340 struct statvfs sfs;
42
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
341 int index = 1;
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
342
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
343 if(fp)
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
344 {
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
345 while(getmntent(fp, &mnt) == 0)
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
346 {
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
347 if(index == drive)
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
348 {
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
349 fclose(fp);
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
350 if(mnt.mnt_mountp)
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
351 {
871
b15ad609365e Solaris recommends using statvfs() instead of statfs()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 870
diff changeset
352 if(!statvfs(mnt.mnt_mountp, &sfs) && sfs.f_blocks)
42
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
353 return 1;
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
354 }
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
355 return 0;
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
356 }
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
357 index++;
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
358 }
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
359 fclose(fp);
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
360 }
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
361 #else
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
362 FILE *fp = setmntent(MOUNTED, "r");
649
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
363 struct mntent mnt;
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
364 char buffer[1024];
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
365 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
366 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
367
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
368 if(fp)
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
369 {
649
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
370 while(getmntent_r(fp, &mnt, buffer, sizeof(buffer)))
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
371 {
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
372 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
373 {
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
374 endmntent(fp);
649
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
375 if(mnt.mnt_dir)
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
376 {
649
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
377 if(!statfs(mnt.mnt_dir, &sfs) && sfs.f_blocks)
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
378 {
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
379 return 1;
649
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
380 }
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
381 }
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
382 return 0;
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
383 }
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
384 index++;
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
385 }
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
386 endmntent(fp);
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
387 }
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
388 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
389 return 0;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
390 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
391
176
4e3407df0e38 Specify calling convention for compat functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
392 void API getfsname(int drive, char *buf, int len)
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
393 {
433
f225f16bebbd Compile fixes for MacOS X.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 176
diff changeset
394 #if defined(__UNIX__) || defined(__MAC__)
f225f16bebbd Compile fixes for MacOS X.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 176
diff changeset
395 #if defined(__FreeBSD__) || defined(__MAC__)
1608
ff844a41193b Not setting the structure to NULL seems to cause crashes on Mac when mounting/unmounting.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1601
diff changeset
396 struct statfs *fsp = NULL;
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
397 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
398
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
399 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
400
1609
e4a641036581 Last commit didn't help, seems getmntinfo() isn't thread safe on Mac or FreeBSD...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1608
diff changeset
401 entries = _getmntinfo_r(&fsp, MNT_NOWAIT);
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
402
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
403 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
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(index == drive)
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
406 strncpy(buf, fsp->f_mntonname, len);
98
c0388006bb0d Fixes for FreeBSD.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 74
diff changeset
407 index++;
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
408 }
42
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
409 #elif defined(__sun__)
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
410 FILE *fp = fopen("/etc/mnttab", "r");
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
411 struct mnttab mnt;
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
412 int index = 1;
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
413
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
414 strncpy(buf, "Unknown", len);
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
415
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
416 if(fp)
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
417 {
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
418 while(getmntent(fp, &mnt) == 0)
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
419 {
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
420 if(index == drive && mnt.mnt_mountp)
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
421 strncpy(buf, mnt.mnt_mountp, len);
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
422 index++;
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
423 }
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
424 fclose(fp);
eb003f77538c Added the filesystem functions for Solaris.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 37
diff changeset
425 }
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
426 #else
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
427 FILE *fp = setmntent(MOUNTED, "r");
649
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
428 struct mntent mnt;
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
429 char buffer[1024];
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
430 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
431
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
432 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
433
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
434 if(fp)
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
435 {
649
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
436 while(getmntent_r(fp, &mnt, buffer, sizeof(buffer)))
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
437 {
649
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
438 if(index == drive && mnt.mnt_dir)
3e2ada9ee0ac Switched to using reentrant version of getmntent on Linux.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 647
diff changeset
439 strncpy(buf, mnt.mnt_dir, len);
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
440 index++;
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
441 }
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
442 endmntent(fp);
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
443 }
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
444 #endif
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
445 #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
446 /* No snprintf() on OS/2 ??? */
485
469ff8133ed3 Simplified the folder browser on OS/2, following some Unix changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 441
diff changeset
447 len = len;
36
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
448 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
449 #else
37
360bc6a5f1c9 Sync with latest Dynamic Windows code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 36
diff changeset
450 _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
451 #endif
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
452 }
cddb02f847e1 Added unix versions of functions in compat, and added getfsname, plus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 35
diff changeset
453
176
4e3407df0e38 Specify calling convention for compat functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
454 void API setfileinfo(char *filename, char *url, char *logfile)
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
455 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
456 time_t ltime;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
457 struct tm *tm;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
458 char buffer[200], timebuf[200];
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
459 #ifdef __OS2__
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
460 const unsigned fea2listsize = 6000;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
461 char *pData;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
462 EAOP2 eaop2;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
463 PFEA2 pFEA2;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
464 #else
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
465 FILE *urlfile;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
466 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
467
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
468 ltime = time(NULL);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
469
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
470 tm = localtime(&ltime);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
471
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
472 strftime(timebuf, 200, "%c", tm);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
473
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
474 sprintf(buffer, "%s %s", url, timebuf);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
475
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
476 #ifdef __OS2__
485
469ff8133ed3 Simplified the folder browser on OS/2, following some Unix changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 441
diff changeset
477 logfile = logfile;
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
478 eaop2.fpGEA2List = 0;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
479 eaop2.fpFEA2List = (PFEA2LIST)malloc(fea2listsize);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
480 pFEA2 = &eaop2.fpFEA2List->list[0];
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
481
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
482 pFEA2->fEA = 0;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
483 /* .COMMENTS is 9 characters long */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
484 pFEA2->cbName = 9;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
485
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
486 /* space for the type and length field. */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
487 pFEA2->cbValue = strlen(buffer)+2*sizeof(USHORT);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
488
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
489 strcpy(pFEA2->szName, ".COMMENTS");
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
490 pData = pFEA2->szName+pFEA2->cbName+1;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
491 /* data begins at first byte after the name */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
492
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
493 *(USHORT*)pData = EAT_ASCII; /* type */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
494 *((USHORT*)pData+1) = strlen(buffer); /* length */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
495 strcpy(pData+2*sizeof(USHORT), buffer);/* content */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
496
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
497 pFEA2->oNextEntryOffset = 0;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
498
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
499 eaop2.fpFEA2List->cbList = ((PCHAR)pData+2*sizeof(USHORT)+
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
500 pFEA2->cbValue)-((PCHAR)eaop2.fpFEA2List);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
501
1341
184b3aedc2ff Added PMPrintf support to dw_debug() on OS/2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1110
diff changeset
502 DosSetPathInfo((PSZ)filename,
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
503 FIL_QUERYEASIZE,
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
504 &eaop2,
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
505 sizeof(eaop2),
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
506 0);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
507
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
508 free((void *)eaop2.fpFEA2List);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
509 #else
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
510
53
8add9a616d0e Added a log filename parameter to setfileinfo().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 47
diff changeset
511 if((urlfile = fopen(logfile, "a"))!=NULL)
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
512 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
513 fprintf(urlfile, "%s\n", buffer);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
514 fclose(urlfile);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
515 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
516 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
517 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
518
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
519 #if defined(__OS2__) || defined(__WIN32__)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
520 typedef struct _fsinfo {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
521 FILE *fp;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
522 int fd;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
523 } FSInfo;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
524
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
525 FSInfo *FSIRoot = NULL;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
526
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
527 #define FSI_MAX 100
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
528 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
529
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
530 /* Sharable fopen() and fclose() calls. */
176
4e3407df0e38 Specify calling convention for compat functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
531 FILE * API fsopen(char *path, char *modes)
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
532 {
172
0fc45e386376 Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 101
diff changeset
533 #if (defined(__OS2__) && !defined(__WATCOMC__)) || defined(__WIN32__)
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
534 int z;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
535
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
536 if(!FSIRoot)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
537 FSIRoot = calloc(sizeof(struct _fsinfo), FSI_MAX);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
538
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
539 for(z=0;z<FSI_MAX;z++)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
540 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
541 if(FSIRoot[z].fd < 1)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
542 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
543 int s, sopenmode = 0, wrmode = 0;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
544
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
545 /* Check the flags passed */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
546 for(s=0;s<3;s++)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
547 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
548 if(modes[s] == 'b')
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
549 sopenmode |= O_BINARY;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
550 if(modes[s] == 'r')
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
551 wrmode |= O_RDONLY;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
552 if(modes[s] == 'w')
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
553 wrmode |= O_WRONLY;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
554 if(modes[s] == 'a')
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
555 sopenmode |= O_APPEND;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
556 if(modes[s] == 't')
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
557 sopenmode |= O_TEXT;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
558 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
559
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
560 /* Check the read/write request */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
561 if((wrmode & O_RDONLY) && (wrmode & O_WRONLY))
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
562 sopenmode |= O_RDWR;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
563 else
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
564 sopenmode |= wrmode;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
565 FSIRoot[z].fd = _sopen(path, sopenmode, SH_DENYNO, S_IREAD|S_IWRITE);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
566 if(FSIRoot[z].fd > 0)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
567 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
568 FSIRoot[z].fp = fdopen(FSIRoot[z].fd, modes);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
569
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
570 return FSIRoot[z].fp;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
571 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
572 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
573 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
574 return NULL;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
575 #else
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
576 return fopen(path, modes);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
577 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
578 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
579
176
4e3407df0e38 Specify calling convention for compat functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
580 int API fsclose(FILE *fp)
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
581 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
582 #if defined(__OS2__) || defined(__WIN32__)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
583 if(FSIRoot)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
584 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
585
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
586 int z;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
587 for(z=0;z<FSI_MAX;z++)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
588 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
589 if(fp == FSIRoot[z].fp)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
590 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
591 int ret = fclose(fp);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
592 close(FSIRoot[z].fd);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
593 FSIRoot[z].fd = 0;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
594 FSIRoot[z].fp = NULL;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
595 return ret;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
596 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
597 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
598 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
599 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
600 return fclose(fp);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
601 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
602
176
4e3407df0e38 Specify calling convention for compat functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
603 char * API fsgets(char *str, int size, FILE *stream)
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
604 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
605 return fgets(str, size, stream);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
606 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
607
176
4e3407df0e38 Specify calling convention for compat functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
608 int API fsseek(FILE *stream, long offset, int whence)
22
6a246b3bb14f Added tree widgets, fixed some delete event processing, fixed a layout bug
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 3
diff changeset
609 {
6a246b3bb14f Added tree widgets, fixed some delete event processing, fixed a layout bug
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 3
diff changeset
610 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
611 }
72
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
612
557
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
613 void API nice_strformat(char *dest, long double val, int dec)
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
614 {
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
615 char formatbuf[10];
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
616 char format = 0;
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
617 double printval;
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
618
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
619 /* 1024 ^ 3 = Gigabytes */
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
620 if(val >= 1073741824L)
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
621 {
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
622 printval = val/(1073741824L);
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
623 format = 'G';
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
624 }
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
625 /* 1024 ^ 2 = Megabytes */
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
626 else if(val >= 1048576)
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
627 {
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
628 printval = val/(1048576);
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
629 format = 'M';
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
630 }
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
631 /* 1024 = Kilobytes */
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
632 else if(val > 1024)
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
633 {
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
634 printval = val/1024;
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
635 format = 'K';
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
636 }
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
637 else
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
638 printval = val;
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
639
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
640 /* Generate the format string */
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
641 sprintf(formatbuf, "%%.%df%c", dec, format);
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
642 /* Create the pretty value */
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
643 sprintf(dest, formatbuf, printval);
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
644 }
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
645
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
646 /* Update the current working directory based on the
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
647 * path of the executable being executed.
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
648 */
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
649 void API initdir(int argc, char *argv[])
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
650 {
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
651 if(argc > 0)
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
652 {
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
653 char *tmpdir = strdup(argv[0]);
1110
404b639f096b Minor typecast fixes for warnings reported by clang on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1109
diff changeset
654 int z, len = (int)strlen(argv[0]);
557
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
655
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
656 for(z=len;z > -1;z--)
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
657 {
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
658 if(tmpdir[z] == '/')
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
659 {
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
660 tmpdir[z+1] = 0;
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
661 setpath(tmpdir);
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
662 free(tmpdir);
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
663 return;
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
664 }
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
665 }
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
666 free(tmpdir);
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
667 }
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
668 }
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
669
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
670 /*
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
671 * Sets the current directory (and drive) information.
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
672 * Parameters:
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
673 * path: A buffer containing the new path.
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
674 * Returns:
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
675 * -1 on error.
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
676 */
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
677 int API setpath(char *path)
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
678 {
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
679 #if defined(__OS2__) || defined(__WIN32__)
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
680 if(strlen(path) > 2)
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
681 {
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
682 if(path[1] == ':')
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
683 {
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
684 char drive = toupper(path[0]);
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
685 _chdrive((drive - 'A')+1);
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
686 }
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
687 }
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
688 #endif
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
689 return chdir(path);
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
690 }
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 485
diff changeset
691
72
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
692 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
693 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
694
647
f09977bc9b5c Fixed building with Visual Studio 2008.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 580
diff changeset
695 void _compat_free_locale(void)
72
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
696 {
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
697 if(locale_text)
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
698 {
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
699 int z;
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
700
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
701 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
702 {
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
703 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
704 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
705 }
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
706 free(locale_text);
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
707 locale_text = NULL;
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
708 }
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
709 }
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
710
1109
1c24949cf853 Fixed a configure warning about datarootdir. (Just ignoring it for now)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 872
diff changeset
711 int _stripcrlf(char *buf)
72
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
712 {
1110
404b639f096b Minor typecast fixes for warnings reported by clang on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1109
diff changeset
713 int z, len = (int)strlen(buf);
72
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
714
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
715 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
716 {
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
717 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
718 {
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
719 buf[z] = 0;
1109
1c24949cf853 Fixed a configure warning about datarootdir. (Just ignoring it for now)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 872
diff changeset
720 return 1;
72
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
721 }
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
722 }
1109
1c24949cf853 Fixed a configure warning about datarootdir. (Just ignoring it for now)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 872
diff changeset
723 return 1;
72
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
724 }
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
725
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
726 /* 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
727 * 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
728 */
176
4e3407df0e38 Specify calling convention for compat functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
729 int API locale_init(char *filename, int my_locale)
72
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
730 {
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
731 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
732 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
733 int count = 0;
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
734
647
f09977bc9b5c Fixed building with Visual Studio 2008.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 580
diff changeset
735 _compat_free_locale();
72
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
736
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
737 if(fp)
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
738 {
1109
1c24949cf853 Fixed a configure warning about datarootdir. (Just ignoring it for now)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 872
diff changeset
739 if(fgets(text, 1024, fp) && strncasecmp(text, "MESSAGES=", 9) == 0 && (count = atoi(&text[9])) > 0)
72
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 int current = -1;
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 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
744
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
745 while(!feof(fp))
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
746 {
1109
1c24949cf853 Fixed a configure warning about datarootdir. (Just ignoring it for now)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 872
diff changeset
747 if(fgets(text, 1024, fp) && _stripcrlf(text) &&
1c24949cf853 Fixed a configure warning about datarootdir. (Just ignoring it for now)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 872
diff changeset
748 strncasecmp(text, "LOCALE=", 7) == 0)
72
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
749 {
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
750 if(current > -1)
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 fclose(fp);
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
753 locale_count = count;
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
754 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
755 return 1;
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 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
758 current = 0;
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
759 }
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
760 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
761 {
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
762 /* 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
763 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
764 {
1110
404b639f096b Minor typecast fixes for warnings reported by clang on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1109
diff changeset
765 int x = 0, z, len = (int)strlen(text);
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
766
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
767 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
768
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
769 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
770 {
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
771 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
772 || 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
773 {
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
774 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
775 {
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
776 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
777 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
778 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
779 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
780 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
781 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
782 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
783 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
784 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
785 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
786 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
787 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
788 }
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
789 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
790 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
791 }
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
792 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
793 {
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
794 locale_text[current][x] = text[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
795 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
796 }
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
797 }
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
798 }
72
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
799 current++;
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
800 }
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
801 }
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
802 }
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
803 fclose(fp);
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
804 }
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
805 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
806 {
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
807 locale_count = count;
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
808 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
809 return 1;
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
810 }
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
811 return 0;
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
812 }
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 /* Retrieve a localized string if available */
176
4e3407df0e38 Specify calling convention for compat functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
815 char * API locale_string(char *default_text, int message)
72
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
816 {
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
817 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
818 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
819 return default_text;
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
820 }
ab77a22a2a36 Added localization APIs as well as some miscellaneous bug fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 62
diff changeset
821