annotate compat.h @ 1350:4333b58d879d

Upped the version number to 2.2. Added a Version file to reduce the number of places the version number needs to be changed when pushing out new releases. Updated the readme file with the information regarding the new OS/2 calendar widget.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Tue, 15 Nov 2011 13:26:15 +0000
parents 19bfcdbab74e
children 56f311dc23f6
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$ */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
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
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
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
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8 #include "config.h"
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
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
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
13 #endif /* Unix */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
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
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
19 #include <sys/types.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
20 #if HAVE_DIRENT_H
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
21 #include <dirent.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
22 #define NAMLEN(dirent) strlen((dirent)->d_name)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
23 #else
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
24 #define dirent direct
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
25 #define NAMLEN(dirent) (dirent)->d_namlen
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
26 #if HAVE_SYS_NDIR_H
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
27 #include <sys/ndir.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
28 #endif /* HAVE_SYS_NDIR_H */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
29 #if HAVE_SYS_DIR_H
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
30 #include <sys/dir.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
31 #endif /* HAVE_SYS_DIR_H */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
32 #if HAVE_NDIR_H
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
33 #include <ndir.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
34 #endif /* HAVE_NDIR_H */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
35 #endif /* HAVE_DIRENT_H */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
36
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
37 #ifdef DIRSEP
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
38 #undef DIRSEP
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
39 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
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
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
42 #include <io.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
43 #include <process.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
44
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
45 #define DIRSEP "\\"
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
46 #define TYPDIR "."
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
47 #else
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
48 #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
49 #define TYPDIR "/usr/local/" __TARGET__
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
50 #endif
908
850b2e6cfeab Have INIDIR use the home directory on all platforms now, not just Unix and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 597
diff changeset
51 #define INIDIR "~/." __TARGET__
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
52
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
53 /* OS/2 */
172
0fc45e386376 Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 101
diff changeset
54 #if defined(__EMX__) || defined(__OS2__)
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
55 #define INCL_WIN
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
56 #define INCL_GPI
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
57 #define INCL_VIO
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
58 #define INCL_NLS
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
59 #define INCL_DOS
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
60 #define INCL_DEV
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
61 #define INCL_DOSERRORS
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
62
525
2ff26b697877 Fixes for building with Innotek GCC. Will have to check for regressions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 433
diff changeset
63 #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
64 #define API _System
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
65 #endif
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
66
543
8217ee5c254e Get EMX compiling again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 527
diff changeset
67 #ifndef API
8217ee5c254e Get EMX compiling again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 527
diff changeset
68 #define API
8217ee5c254e Get EMX compiling again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 527
diff changeset
69 #endif
8217ee5c254e Get EMX compiling again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 527
diff changeset
70
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
71 #define msleep(a) DosSleep(a)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
72
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
73 #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
74 #include "platform/dirent.h"
24
d9e87e8bcf1d Updated dynamic windows to build with EMX.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 3
diff changeset
75 #include <sys/stat.h>
28
cd715f9036c0 Added HAVE_PIPE define for EMX.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 24
diff changeset
76 #define HAVE_PIPE
24
d9e87e8bcf1d Updated dynamic windows to build with EMX.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 3
diff changeset
77 #ifdef FD_SETSIZE
d9e87e8bcf1d Updated dynamic windows to build with EMX.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 3
diff changeset
78 #undef FD_SETSIZE
d9e87e8bcf1d Updated dynamic windows to build with EMX.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 3
diff changeset
79 #endif
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
80 #define FD_SETSIZE 1024
172
0fc45e386376 Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 101
diff changeset
81 #endif /* __EMX__ */
0fc45e386376 Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 101
diff changeset
82
0fc45e386376 Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 101
diff changeset
83 #if defined(__EMX__) || defined(__WATCOMC__)
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
84 #define strcasecmp stricmp
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
85 #define strncasecmp strnicmp
172
0fc45e386376 Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 101
diff changeset
86 #endif
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
87
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
88 #ifndef OS2
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
89 #define OS2
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
90 #endif /* OS2 */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
91
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
92 #include <os2.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
93
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
94 #ifndef BKS_TABBEDDIALOG
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
95 #define BKS_TABBEDDIALOG 0x0800
571
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
96 #endif
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
97
41
af0a78aa0d45 More updates, and a more comprehensive unix install scheme. Use target
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 36
diff changeset
98 #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
99 #define TPIPENAME "\\socket\\" __TARGET__ "%d"
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
100 #else
41
af0a78aa0d45 More updates, and a more comprehensive unix install scheme. Use target
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 36
diff changeset
101 #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
102 #define TPIPENAME "/tmp/" __TARGET__ "%d"
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
103 #endif /* __EMX__ || __IBMC__ */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
104
172
0fc45e386376 Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 101
diff changeset
105 #if defined(__OS2__) && (defined(__IBMC__) || defined(__WATCOMC__))
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
106 #define BSD_SELECT
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
107
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
108 #include <types.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
109 #include <time.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
110 #include <sys/stat.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
111 #include <sys/select.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
112 #include <sys/ioctl.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
113 #include <direct.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
114 #include <stdarg.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
115 /* 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
116 #ifndef __WATCOMC__
24
d9e87e8bcf1d Updated dynamic windows to build with EMX.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 3
diff changeset
117 #include "platform/dirent.h"
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
118 #endif
172
0fc45e386376 Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 101
diff changeset
119 #endif
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
120
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
121 /* Windows */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
122 #if defined(__WIN32__) || defined(WINNT)
527
e0ea29c3d1eb Fixed dw_window_pointer() so it works on Windows. Tried to fix the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 525
diff changeset
123
e0ea29c3d1eb Fixed dw_window_pointer() so it works on Windows. Tried to fix the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 525
diff changeset
124 #if defined(MSVC) && !defined(API)
571
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
125 # ifdef __MINGW32__
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
126 # ifdef BUILD_DLL
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
127 # define API APIENTRY __declspec(dllexport)
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
128 # else
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
129 # define API APIENTRY __declspec(dllimport)
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
130 # endif
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
131 # else
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
132 # define API _cdecl
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
133 # endif
527
e0ea29c3d1eb Fixed dw_window_pointer() so it works on Windows. Tried to fix the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 525
diff changeset
134 #endif
e0ea29c3d1eb Fixed dw_window_pointer() so it works on Windows. Tried to fix the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 525
diff changeset
135
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
136 #include <windows.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
137 #include <winsock.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
138 #include <time.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
139 #include <process.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
140 #include <sys/stat.h>
571
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
141
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
142 #ifdef MSVC
24
d9e87e8bcf1d Updated dynamic windows to build with EMX.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 3
diff changeset
143 #include "platform/dirent.h"
581
53639d920735 Fixes for Windows, alloca is _alloc in MSVC, added a macro in compat.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 580
diff changeset
144 #define alloca _alloca
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
145 #else
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
146 #include <dir.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
147 #include <dirent.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
148 #endif
571
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
149
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
150 #include <stdarg.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
151
571
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
152 #if defined(__CYGWIN32__) /*|| defined(__MINGW32__)*/
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
153 #include <sys/un.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
154 #endif /* __CYGWIN32__ || __MINGW32__ */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
155
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
156 #ifndef __CYGWIN32__
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
157 #define NO_DOMAIN_SOCKETS
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
158 #endif /* __CYGWIN32__ */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
159
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
160 #if defined(_P_NOWAIT) && !defined(P_NOWAIT)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
161 #define P_NOWAIT _P_NOWAIT
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
162 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
163
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
164 #define strcasecmp stricmp
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
165 #define strncasecmp strnicmp
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
166 #define msleep Sleep
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
167
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
168 #endif /* WIN32 */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
169
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
170 /* Everything else ;) */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
171 #include <stdio.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
172 #ifdef HAVE_UNISTD_H
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
173 #include <unistd.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
174 #endif /* HAVE_UNISTD_H */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
175 #ifdef HAVE_SYS_STAT_H
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
176 #include <sys/stat.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
177 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
178 #include <stdlib.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
179 #include <stddef.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
180 #include <signal.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
181 #include <fcntl.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
182
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
183 #if !defined(__WIN32__) && !defined(WINNT)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
184 #include <sys/time.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
185 #include <sys/socket.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
186 #include <sys/un.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
187 #include <netinet/in.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
188 #include <netdb.h>
1324
032037c378ef Don't include arpa/inet.h on OS/2 with VisualAge.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1323
diff changeset
189 #ifndef __IBMC__
1323
209d7f5137f2 Cleaned up the compatibility library header.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 908
diff changeset
190 #include <arpa/inet.h>
1324
032037c378ef Don't include arpa/inet.h on OS/2 with VisualAge.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1323
diff changeset
191 #endif
172
0fc45e386376 Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 101
diff changeset
192 #if defined(__OS2__) && defined(RES_DEFAULT)
0fc45e386376 Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 101
diff changeset
193 #undef RES_DEFAULT
0fc45e386376 Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 101
diff changeset
194 #endif
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
195 #include <stdarg.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
196 #include <string.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
197 #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
198 #include <ctype.h>
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
199
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
200 #ifndef _MAX_PATH
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
201 #define _MAX_PATH 255
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
202 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
203
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
204 /* IBM C doesn't allow "t" in the mode parameter
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
205 * because it violates the ANSI standard.
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
206 */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
207 #ifdef __IBMC__
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
208 #define FOPEN_READ_TEXT "r"
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
209 #define FOPEN_WRITE_TEXT "w"
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
210 #define FOPEN_APPEND_TEXT "a"
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
211 #else
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
212 #define FOPEN_READ_TEXT "rt"
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
213 #define FOPEN_WRITE_TEXT "wt"
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
214 #define FOPEN_APPEND_TEXT "at"
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
215 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
216 #define FOPEN_READ_BINARY "rb"
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
217 #define FOPEN_WRITE_BINARY "wb"
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
218 #define FOPEN_APPEND_BINARY "ab"
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
219
174
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
220 #ifndef API
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
221 #define API
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
222 #endif
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
223
580
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
224 /* Compatibility layer for IBM C/Winsock
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
225 * Now using macros so we can allow cross
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
226 * compiler support.
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
227 */
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
228
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
229 #if defined(__IBMC__) || (defined(__WIN32__) && !defined(__CYGWIN32__))
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
230 #define sockread(a, b, c, d) recv(a, b, c, d)
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
231 #else
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
232 #define sockread(a, b, c, d) read(a, b, c)
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
233 #endif
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
234
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
235 #if defined(__IBMC__) || (defined(__WIN32__) && !defined(__CYGWIN32__))
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
236 #define sockwrite(a, b, c, d) send(a, b, c, d)
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
237 #else
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
238 #define sockwrite(a, b, c, d) write(a, b, c)
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
239 #endif
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
240
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
241 #ifdef __IBMC__
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
242 #define sockclose(a) soclose(a)
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
243 #elif defined(__WIN32__) && !defined(__CYGWIN32__)
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
244 #define sockclose(a) closesocket(a)
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
245 #else
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
246 #define sockclose(a) close(a)
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
247 #endif
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
248
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
249 #if defined(__OS2__) && !defined(__EMX__)
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
250 #define nonblock(a) { int _nonblock = 1; ioctl(a, FIONBIO, (char *)&_nonblock, sizeof(_nonblock)); }
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
251 #elif defined(__WIN32__) && !defined(__CYGWIN32__)
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
252 #define nonblock(a) { int _nonblock = 1; ioctlsocket(a, FIONBIO, (unsigned long *)&_nonblock); }
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
253 #else
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
254 #define nonblock(a) fcntl(a, F_SETFL, O_NONBLOCK)
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
255 #endif
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
256
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
257 #if defined(__OS2__) && !defined(__EMX__)
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
258 #define block(a) { int _block = 0; ioctl(a, FIONBIO, (char *)&_nonblock, sizeof(_block)); }
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
259 #elif defined(__WIN32__) && !defined(__CYGWIN32__)
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
260 #define block(a) { int _block = 0; ioctlsocket(a, FIONBIO, (unsigned long *)&_block); }
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
261 #else
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
262 #define block(a) fcntl(a, F_SETFL, 0)
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
263 #endif
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
264
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
265 #ifdef __IBMC__
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
266 #define sockinit() sock_init();
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
267 #elif defined(__WIN32__) || defined(WINNT)
582
ce08e7a56724 Minor change to the Windows sockinit() macro.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 581
diff changeset
268 #define sockinit() { static WSADATA wsa; WSAStartup(MAKEWORD (1, 1), &wsa); }
580
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
269 #else /* !WIN32 */
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
270 #define sockinit()
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
271 #endif
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
272
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
273 #if defined(__WIN32__) || defined(WINNT)
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
274 #define sockshutdown() WSACleanup()
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
275 #else /* !WIN32 */
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
276 #define sockshutdown()
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
277 #endif
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
278
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
279 #ifdef HAVE_PIPE
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
280 #define sockpipe(pipes) { if(pipe(pipes) < 0) pipes[0] = pipes[1] = -1; }
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
281 #elif !defined(NO_DOMAIN_SOCKETS)
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
282 #define sockpipe(pipes) { \
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
283 struct sockaddr_un un; \
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
284 int tmpsock = socket(AF_UNIX, SOCK_STREAM, 0); \
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
285 pipes[1] = socket(AF_UNIX, SOCK_STREAM, 0); \
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
286 memset(&un, 0, sizeof(un)); \
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
287 un.sun_family=AF_UNIX; \
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
288 sprintf(un.sun_path, PIPENAME, pipes[1]); \
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
289 bind(tmpsock, (struct sockaddr *)&un, sizeof(un)); \
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
290 listen(tmpsock, 0); \
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
291 connect(pipes[1], (struct sockaddr *)&un, sizeof(un)); \
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
292 pipes[0] = accept(tmpsock, 0, 0); \
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
293 sockclose(tmpsock); \
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
294 }
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
295 #else
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
296 #define sockpipe(pipes) { \
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
297 struct sockaddr_in server_addr; \
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
298 struct sockaddr_in listen_addr = { 0 }; \
581
53639d920735 Fixes for Windows, alloca is _alloc in MSVC, added a macro in compat.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 580
diff changeset
299 int tmpsock, len = sizeof(struct sockaddr_in); \
580
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
300 struct hostent *he = gethostbyname("localhost"); \
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
301 pipes[0] = pipes[1] = -1; \
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
302 if(he) \
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
303 { \
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
304 memset(&server_addr, 0, sizeof(server_addr)); \
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
305 server_addr.sin_family = AF_INET; \
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
306 server_addr.sin_port = 0; \
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
307 server_addr.sin_addr.s_addr = INADDR_ANY; \
581
53639d920735 Fixes for Windows, alloca is _alloc in MSVC, added a macro in compat.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 580
diff changeset
308 if ((tmpsock = socket(AF_INET, SOCK_STREAM, 0)) > -1 && bind(tmpsock, (struct sockaddr *)&server_addr, sizeof(server_addr)) > -1 && listen(tmpsock, 0) > -1) \
53639d920735 Fixes for Windows, alloca is _alloc in MSVC, added a macro in compat.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 580
diff changeset
309 { \
53639d920735 Fixes for Windows, alloca is _alloc in MSVC, added a macro in compat.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 580
diff changeset
310 memset(&listen_addr, 0, sizeof(listen_addr)); \
53639d920735 Fixes for Windows, alloca is _alloc in MSVC, added a macro in compat.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 580
diff changeset
311 getsockname(tmpsock, (struct sockaddr *)&listen_addr, &len); \
53639d920735 Fixes for Windows, alloca is _alloc in MSVC, added a macro in compat.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 580
diff changeset
312 server_addr.sin_family = AF_INET; \
53639d920735 Fixes for Windows, alloca is _alloc in MSVC, added a macro in compat.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 580
diff changeset
313 server_addr.sin_port = listen_addr.sin_port; \
53639d920735 Fixes for Windows, alloca is _alloc in MSVC, added a macro in compat.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 580
diff changeset
314 server_addr.sin_addr.s_addr = *((unsigned long *)he->h_addr); \
53639d920735 Fixes for Windows, alloca is _alloc in MSVC, added a macro in compat.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 580
diff changeset
315 if((pipes[1] = socket(AF_INET, SOCK_STREAM, 0)) > -1 && !connect(pipes[1], (struct sockaddr *)&server_addr, sizeof(server_addr))) \
53639d920735 Fixes for Windows, alloca is _alloc in MSVC, added a macro in compat.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 580
diff changeset
316 pipes[0] = accept(tmpsock, 0, 0); \
53639d920735 Fixes for Windows, alloca is _alloc in MSVC, added a macro in compat.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 580
diff changeset
317 } \
580
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
318 sockclose(tmpsock); \
581
53639d920735 Fixes for Windows, alloca is _alloc in MSVC, added a macro in compat.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 580
diff changeset
319 } \
53639d920735 Fixes for Windows, alloca is _alloc in MSVC, added a macro in compat.h.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 580
diff changeset
320 }
580
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
321 #endif
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
322
1329
19bfcdbab74e Hopefully the last socklen_t change... OS/2 needs it too.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1328
diff changeset
323 /* Ok Windows and OS/2 both seem to be missing this */
19bfcdbab74e Hopefully the last socklen_t change... OS/2 needs it too.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1328
diff changeset
324 #if defined(__WIN32__) || defined(__OS2__)
1326
03f0a57c9e87 Make sure socklen_t gets defined when building with Visual Studio.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1324
diff changeset
325 typedef int socklen_t;
03f0a57c9e87 Make sure socklen_t gets defined when building with Visual Studio.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1324
diff changeset
326 #endif
03f0a57c9e87 Make sure socklen_t gets defined when building with Visual Studio.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1324
diff changeset
327
580
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
328 #define socksprint(a, b) sockwrite(a, b, strlen(b), 0)
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
329
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
330 char * API vargs(char *buf, int len, char *format, ...);
174
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
331 int API makedir(char *path);
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
332 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
333 long double API drivesize(int drive);
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
334 long double API drivefree(int drive);
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
335 int API isdrive(int drive);
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
336 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
337 FILE * API fsopen(char *path, char *modes);
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
338 int API fsclose(FILE *fp);
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
339 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
340 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
341 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
342 char * API locale_string(char *default_text, int message);
557
1a210e2f214b Added a bunch of support routines I now own due to the settlement
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 543
diff changeset
343 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: 543
diff changeset
344 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: 543
diff changeset
345 int API setpath(char *path);
571
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
346
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
347 #ifdef __MINGW32__
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
348 # undef API
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
349 # define API APIENTRY
174
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
350 #endif
571
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
351
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
352 #endif