Mercurial > dwindows
annotate compat.h @ 525:2ff26b697877
Fixes for building with Innotek GCC. Will have to check for regressions
with VAC and EMX.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Sat, 20 Mar 2004 01:21:13 +0000 |
parents | f225f16bebbd |
children | e0ea29c3d1eb |
rev | line source |
---|---|
3 | 1 /* $Id$ */ |
2 | |
174
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
3 #ifndef _COMPAT_H |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
4 #define _COMPAT_H |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
5 |
3 | 6 /* This header includes and defines everything needed for a given OS/compiler */ |
433
f225f16bebbd
Compile fixes for MacOS X.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
234
diff
changeset
|
7 #if defined(__UNIX__) || defined(__MAC__) |
3 | 8 #include "config.h" |
9 | |
41
af0a78aa0d45
More updates, and a more comprehensive unix install scheme. Use target
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
10 #include <sys/stat.h> |
af0a78aa0d45
More updates, and a more comprehensive unix install scheme. Use target
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
11 #include <unistd.h> |
af0a78aa0d45
More updates, and a more comprehensive unix install scheme. Use target
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
12 void msleep(long period); |
3 | 13 #endif /* Unix */ |
14 | |
41
af0a78aa0d45
More updates, and a more comprehensive unix install scheme. Use target
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
15 #ifndef __TARGET__ |
af0a78aa0d45
More updates, and a more comprehensive unix install scheme. Use target
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
16 #define __TARGET__ "dw" |
af0a78aa0d45
More updates, and a more comprehensive unix install scheme. Use target
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
17 #endif |
af0a78aa0d45
More updates, and a more comprehensive unix install scheme. Use target
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
18 |
3 | 19 #include <sys/types.h> |
20 #if HAVE_DIRENT_H | |
21 #include <dirent.h> | |
22 #define NAMLEN(dirent) strlen((dirent)->d_name) | |
23 #else | |
24 #define dirent direct | |
25 #define NAMLEN(dirent) (dirent)->d_namlen | |
26 #if HAVE_SYS_NDIR_H | |
27 #include <sys/ndir.h> | |
28 #endif /* HAVE_SYS_NDIR_H */ | |
29 #if HAVE_SYS_DIR_H | |
30 #include <sys/dir.h> | |
31 #endif /* HAVE_SYS_DIR_H */ | |
32 #if HAVE_NDIR_H | |
33 #include <ndir.h> | |
34 #endif /* HAVE_NDIR_H */ | |
35 #endif /* HAVE_DIRENT_H */ | |
36 | |
37 #ifdef DIRSEP | |
38 #undef DIRSEP | |
39 #endif | |
40 | |
172
0fc45e386376
Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
101
diff
changeset
|
41 #if defined(__EMX__) || defined(__OS2__) || defined(__WIN32__) || defined(WINNT) |
3 | 42 #include <io.h> |
43 #include <process.h> | |
44 | |
45 #define DIRSEP "\\" | |
46 #define INIDIR "." | |
47 #define TYPDIR "." | |
48 #else | |
49 #define DIRSEP "/" | |
41
af0a78aa0d45
More updates, and a more comprehensive unix install scheme. Use target
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
50 #define INIDIR "~/." __TARGET__ |
af0a78aa0d45
More updates, and a more comprehensive unix install scheme. Use target
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
51 #define TYPDIR "/usr/local/" __TARGET__ |
3 | 52 #endif |
53 | |
54 /* OS/2 */ | |
172
0fc45e386376
Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
101
diff
changeset
|
55 #if defined(__EMX__) || defined(__OS2__) |
3 | 56 #define INCL_WIN |
57 #define INCL_GPI | |
58 #define INCL_VIO | |
59 #define INCL_NLS | |
60 #define INCL_DOS | |
61 #define INCL_DEV | |
62 #define INCL_DOSERRORS | |
63 | |
525
2ff26b697877
Fixes for building with Innotek GCC. Will have to check for regressions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
433
diff
changeset
|
64 #if (defined(__IBMC__) || defined(_System)) && !defined(API) |
174
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
65 #define API _System |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
66 #endif |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
67 |
3 | 68 #define msleep(a) DosSleep(a) |
69 | |
70 #ifdef __EMX__ | |
525
2ff26b697877
Fixes for building with Innotek GCC. Will have to check for regressions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
433
diff
changeset
|
71 #ifdef _System |
2ff26b697877
Fixes for building with Innotek GCC. Will have to check for regressions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
433
diff
changeset
|
72 #include "platform/dirent.h" |
2ff26b697877
Fixes for building with Innotek GCC. Will have to check for regressions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
433
diff
changeset
|
73 #else |
24
d9e87e8bcf1d
Updated dynamic windows to build with EMX.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
3
diff
changeset
|
74 #include <dirent.h> |
525
2ff26b697877
Fixes for building with Innotek GCC. Will have to check for regressions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
433
diff
changeset
|
75 #endif |
24
d9e87e8bcf1d
Updated dynamic windows to build with EMX.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
3
diff
changeset
|
76 #include <sys/stat.h> |
28
cd715f9036c0
Added HAVE_PIPE define for EMX.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
24
diff
changeset
|
77 #define HAVE_PIPE |
24
d9e87e8bcf1d
Updated dynamic windows to build with EMX.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
3
diff
changeset
|
78 #ifdef FD_SETSIZE |
d9e87e8bcf1d
Updated dynamic windows to build with EMX.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
3
diff
changeset
|
79 #undef FD_SETSIZE |
d9e87e8bcf1d
Updated dynamic windows to build with EMX.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
3
diff
changeset
|
80 #endif |
3 | 81 #define FD_SETSIZE 1024 |
172
0fc45e386376
Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
101
diff
changeset
|
82 #endif /* __EMX__ */ |
0fc45e386376
Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
101
diff
changeset
|
83 |
0fc45e386376
Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
101
diff
changeset
|
84 #if defined(__EMX__) || defined(__WATCOMC__) |
3 | 85 #define strcasecmp stricmp |
86 #define strncasecmp strnicmp | |
172
0fc45e386376
Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
101
diff
changeset
|
87 #endif |
3 | 88 |
89 #ifndef OS2 | |
90 #define OS2 | |
91 #endif /* OS2 */ | |
92 | |
93 #include <os2.h> | |
94 | |
95 #ifndef BKS_TABBEDDIALOG | |
96 #define BKS_TABBEDDIALOG 0x0800 | |
97 #endif | |
98 | |
41
af0a78aa0d45
More updates, and a more comprehensive unix install scheme. Use target
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
99 #define PIPENAME "\\socket\\" __TARGET__ "%d" |
af0a78aa0d45
More updates, and a more comprehensive unix install scheme. Use target
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
100 #define TPIPENAME "\\socket\\" __TARGET__ "%d" |
3 | 101 #else |
41
af0a78aa0d45
More updates, and a more comprehensive unix install scheme. Use target
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
102 #define PIPENAME "/tmp/" __TARGET__ "%d" |
af0a78aa0d45
More updates, and a more comprehensive unix install scheme. Use target
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
103 #define TPIPENAME "/tmp/" __TARGET__ "%d" |
3 | 104 #endif /* __EMX__ || __IBMC__ */ |
105 | |
172
0fc45e386376
Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
101
diff
changeset
|
106 #if defined(__OS2__) && (defined(__IBMC__) || defined(__WATCOMC__)) |
3 | 107 #define BSD_SELECT |
108 | |
109 #include <types.h> | |
110 #include <time.h> | |
111 #include <sys/stat.h> | |
112 #include <sys/select.h> | |
113 #include <sys/ioctl.h> | |
114 #include <direct.h> | |
115 #include <stdarg.h> | |
116 /* For VAC we are using the Mozilla dirent.c */ | |
172
0fc45e386376
Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
101
diff
changeset
|
117 #ifndef __WATCOMC__ |
24
d9e87e8bcf1d
Updated dynamic windows to build with EMX.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
3
diff
changeset
|
118 #include "platform/dirent.h" |
3 | 119 #endif |
172
0fc45e386376
Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
101
diff
changeset
|
120 #endif |
3 | 121 |
122 /* Windows */ | |
123 #if defined(__WIN32__) || defined(WINNT) | |
124 #include <windows.h> | |
125 #include <winsock.h> | |
126 #include <time.h> | |
127 #include <process.h> | |
128 #include <sys/stat.h> | |
129 #ifdef MSVC | |
24
d9e87e8bcf1d
Updated dynamic windows to build with EMX.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
3
diff
changeset
|
130 #include "platform/dirent.h" |
3 | 131 #else |
132 #include <dir.h> | |
133 #include <dirent.h> | |
134 #endif | |
135 #include <stdarg.h> | |
136 | |
174
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
137 #if defined(MSVC) && !defined(API) |
177
e3dd5c765775
Fixes for Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
174
diff
changeset
|
138 #define API _cdecl |
174
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
139 #endif |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
140 |
3 | 141 #if defined(__CYGWIN32__) || defined(__MINGW32__) |
142 #include <sys/un.h> | |
143 #endif /* __CYGWIN32__ || __MINGW32__ */ | |
144 | |
145 #ifndef __CYGWIN32__ | |
146 #define NO_DOMAIN_SOCKETS | |
147 #endif /* __CYGWIN32__ */ | |
148 | |
149 #if defined(_P_NOWAIT) && !defined(P_NOWAIT) | |
150 #define P_NOWAIT _P_NOWAIT | |
151 #endif | |
152 | |
153 #define strcasecmp stricmp | |
154 #define strncasecmp strnicmp | |
155 #define msleep Sleep | |
156 | |
157 #endif /* WIN32 */ | |
158 | |
159 /* Everything else ;) */ | |
160 #include <stdio.h> | |
161 #ifdef HAVE_UNISTD_H | |
162 #include <unistd.h> | |
163 #endif /* HAVE_UNISTD_H */ | |
164 #ifdef HAVE_SYS_STAT_H | |
165 #include <sys/stat.h> | |
166 #endif | |
167 #include <stdlib.h> | |
168 #include <stddef.h> | |
169 #include <signal.h> | |
170 #include <fcntl.h> | |
171 | |
172 #if !defined(__WIN32__) && !defined(WINNT) | |
173 #include <sys/time.h> | |
174 #include <sys/socket.h> | |
175 #include <sys/un.h> | |
176 #include <netinet/in.h> | |
177 #include <netdb.h> | |
178 #include <arpa/nameser.h> | |
172
0fc45e386376
Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
101
diff
changeset
|
179 #if defined(__OS2__) && defined(RES_DEFAULT) |
0fc45e386376
Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
101
diff
changeset
|
180 #undef RES_DEFAULT |
0fc45e386376
Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
101
diff
changeset
|
181 #endif |
3 | 182 #include <resolv.h> |
183 #include <stdarg.h> | |
184 #include <string.h> | |
185 #endif /* !WIN32 */ | |
41
af0a78aa0d45
More updates, and a more comprehensive unix install scheme. Use target
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
36
diff
changeset
|
186 #include <ctype.h> |
3 | 187 |
188 #ifndef _MAX_PATH | |
189 #define _MAX_PATH 255 | |
190 #endif | |
191 | |
192 /* IBM C doesn't allow "t" in the mode parameter | |
193 * because it violates the ANSI standard. | |
194 */ | |
195 #ifdef __IBMC__ | |
196 #define FOPEN_READ_TEXT "r" | |
197 #define FOPEN_WRITE_TEXT "w" | |
198 #define FOPEN_APPEND_TEXT "a" | |
199 #else | |
200 #define FOPEN_READ_TEXT "rt" | |
201 #define FOPEN_WRITE_TEXT "wt" | |
202 #define FOPEN_APPEND_TEXT "at" | |
203 #endif | |
204 #define FOPEN_READ_BINARY "rb" | |
205 #define FOPEN_WRITE_BINARY "wb" | |
206 #define FOPEN_APPEND_BINARY "ab" | |
207 | |
174
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
208 #ifndef API |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
209 #define API |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
210 #endif |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
211 |
3 | 212 /* Compatibility layer for IBM C/Winsock */ |
174
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
213 int API sockread (int a, void *b, int c, int d); |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
214 int API sockwrite (int a, void *b, int c, int d); |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
215 int API sockclose(int a); |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
216 int API socksprintf(int fd, char *format, ...); |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
217 int API sockpipe(int *pipes); |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
218 void API sockinit(void); |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
219 void API sockshutdown(void); |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
220 int API makedir(char *path); |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
221 void API nonblock(int fd); |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
222 void API block(int fd); |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
223 void API setfileinfo(char *filename, char *url, char *logfile); |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
224 long double API drivesize(int drive); |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
225 long double API drivefree(int drive); |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
226 int API isdrive(int drive); |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
227 void API getfsname(int drive, char *buf, int len); |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
228 FILE * API fsopen(char *path, char *modes); |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
229 int API fsclose(FILE *fp); |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
230 char * API fsgets(char *str, int size, FILE *stream); |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
231 int API fsseek(FILE *stream, long offset, int whence); |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
232 int API locale_init(char *filename, int my_locale); |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
233 char * API locale_string(char *default_text, int message); |
75bf3051235f
Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
172
diff
changeset
|
234 #endif |