annotate dwcompat.h @ 2873:0bbfb19022e7

C++: GCC prior to 4.7 does not support the override keyword. So if using earlier versions of GCC, just remove override. This allows compilation on ancient GCC and GCC based Xcode. Also remove virtual from the application, I don't think it is needed and old GCC pukes on it when it is there.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Mon, 19 Dec 2022 07:42:12 +0000
parents 22327163b35c
children f99414164f5b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1909
cb5f9aa9aebb Added detection support for Windows 10.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1864
diff changeset
1 /* $Id$ */
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2
1594
6baf177f335c Rename compat.c/h dwcompat.c/h and configure option to --with-dwcompat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1589
diff changeset
3 #ifndef _DWCOMPAT_H
6baf177f335c Rename compat.c/h dwcompat.c/h and configure option to --with-dwcompat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1589
diff changeset
4 #define _DWCOMPAT_H
174
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
5
2823
b1ff739d0dbc Make dwcompat.h allow mixing of C and C++ code. GitHub issue #3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2662
diff changeset
6 #ifdef __cplusplus
b1ff739d0dbc Make dwcompat.h allow mixing of C and C++ code. GitHub issue #3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2662
diff changeset
7 extern "C" {
b1ff739d0dbc Make dwcompat.h allow mixing of C and C++ code. GitHub issue #3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2662
diff changeset
8 #endif
b1ff739d0dbc Make dwcompat.h allow mixing of C and C++ code. GitHub issue #3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2662
diff changeset
9
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10 /* This header includes and defines everything needed for a given OS/compiler */
2549
736282fddac5 Android: Get dwcompat building on Android. Had to disable the filesystem functions for now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2385
diff changeset
11 #if defined(__UNIX__) || defined(__MAC__) || defined(__IOS__) || defined(__ANDROID__)
736282fddac5 Android: Get dwcompat building on Android. Had to disable the filesystem functions for now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2385
diff changeset
12 /* iOS and Android currently don't use autoconf */
736282fddac5 Android: Get dwcompat building on Android. Had to disable the filesystem functions for now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2385
diff changeset
13 #if !defined(__IOS__) && !defined(__ANDROID__)
2160
07f1366a724c Rename config.h(.in) to dwconfig.h and install it with dwcompat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1992
diff changeset
14 #include "dwconfig.h"
2634
4d1bcfc617b2 iOS/Android: Since these don't use autoconf, define HAVE_DIRENT_H.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2549
diff changeset
15 #else
4d1bcfc617b2 iOS/Android: Since these don't use autoconf, define HAVE_DIRENT_H.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2549
diff changeset
16 #define HAVE_DIRENT_H 1
2636
038f83009cdb iOS/Android: With no autoconf #define HAVE_PIPE, Android and iOS should have
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2634
diff changeset
17 #define HAVE_PIPE 1
2644
45a6b33a003a Linux: Isolate linux/android specific code in #ifdef __linux__
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2636
diff changeset
18 #define HAVE_VSNPRINTF 1
2385
a126b04b9996 iOS: dwcompat now builds on iOS as well... Fixes for running dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2246
diff changeset
19 #endif
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
20
1589
9a21fbd6ae50 Don't rely on configure to add the 64bit file #defines on Unix and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1587
diff changeset
21 /* Attempt to include 64 bit file functions on various unix flavors */
9a21fbd6ae50 Don't rely on configure to add the 64bit file #defines on Unix and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1587
diff changeset
22 #ifndef _FILE_OFFSET_BITS
9a21fbd6ae50 Don't rely on configure to add the 64bit file #defines on Unix and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1587
diff changeset
23 #define _FILE_OFFSET_BITS 64
9a21fbd6ae50 Don't rely on configure to add the 64bit file #defines on Unix and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1587
diff changeset
24 #endif
9a21fbd6ae50 Don't rely on configure to add the 64bit file #defines on Unix and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1587
diff changeset
25 #ifndef _LARGEFILE_SOURCE
9a21fbd6ae50 Don't rely on configure to add the 64bit file #defines on Unix and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1587
diff changeset
26 #define _LARGEFILE_SOURCE 1
9a21fbd6ae50 Don't rely on configure to add the 64bit file #defines on Unix and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1587
diff changeset
27 #endif
9a21fbd6ae50 Don't rely on configure to add the 64bit file #defines on Unix and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1587
diff changeset
28 #ifndef _LARGEFILE64_SOURCE
9a21fbd6ae50 Don't rely on configure to add the 64bit file #defines on Unix and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1587
diff changeset
29 #define _LARGEFILE64_SOURCE 1
9a21fbd6ae50 Don't rely on configure to add the 64bit file #defines on Unix and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1587
diff changeset
30 #endif
9a21fbd6ae50 Don't rely on configure to add the 64bit file #defines on Unix and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1587
diff changeset
31 #ifndef _LARGE_FILES
9a21fbd6ae50 Don't rely on configure to add the 64bit file #defines on Unix and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1587
diff changeset
32 #define _LARGE_FILES 1
9a21fbd6ae50 Don't rely on configure to add the 64bit file #defines on Unix and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1587
diff changeset
33 #endif
9a21fbd6ae50 Don't rely on configure to add the 64bit file #defines on Unix and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1587
diff changeset
34 #ifndef _DARWIN_USE_64_BIT_INODE
9a21fbd6ae50 Don't rely on configure to add the 64bit file #defines on Unix and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1587
diff changeset
35 #define _DARWIN_USE_64_BIT_INODE 1
9a21fbd6ae50 Don't rely on configure to add the 64bit file #defines on Unix and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1587
diff changeset
36 #endif
9a21fbd6ae50 Don't rely on configure to add the 64bit file #defines on Unix and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1587
diff changeset
37
41
af0a78aa0d45 More updates, and a more comprehensive unix install scheme. Use target
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 36
diff changeset
38 #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
39 #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
40 void msleep(long period);
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
41 #endif /* Unix */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
42
41
af0a78aa0d45 More updates, and a more comprehensive unix install scheme. Use target
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 36
diff changeset
43 #ifndef __TARGET__
af0a78aa0d45 More updates, and a more comprehensive unix install scheme. Use target
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 36
diff changeset
44 #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
45 #endif
af0a78aa0d45 More updates, and a more comprehensive unix install scheme. Use target
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 36
diff changeset
46
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
47 #include <sys/types.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
48 #if HAVE_DIRENT_H
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
49 #include <dirent.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
50 #define NAMLEN(dirent) strlen((dirent)->d_name)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
51 #else
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
52 #define dirent direct
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
53 #define NAMLEN(dirent) (dirent)->d_namlen
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
54 #if HAVE_SYS_NDIR_H
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
55 #include <sys/ndir.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
56 #endif /* HAVE_SYS_NDIR_H */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
57 #if HAVE_SYS_DIR_H
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
58 #include <sys/dir.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
59 #endif /* HAVE_SYS_DIR_H */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
60 #if HAVE_NDIR_H
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
61 #include <ndir.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
62 #endif /* HAVE_NDIR_H */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
63 #endif /* HAVE_DIRENT_H */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
64
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
65 #ifdef DIRSEP
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
66 #undef DIRSEP
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
67 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
68
1587
34d970f3ff23 Added 64bit stat and alloca functionality when building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1585
diff changeset
69 #ifdef __WATCOMC__
34d970f3ff23 Added 64bit stat and alloca functionality when building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1585
diff changeset
70 #include <alloca.h>
34d970f3ff23 Added 64bit stat and alloca functionality when building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1585
diff changeset
71 #include <sys/select.h>
34d970f3ff23 Added 64bit stat and alloca functionality when building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1585
diff changeset
72 #include <sys/stat.h>
34d970f3ff23 Added 64bit stat and alloca functionality when building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1585
diff changeset
73 # ifdef _stati64
34d970f3ff23 Added 64bit stat and alloca functionality when building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1585
diff changeset
74 # ifdef stat
34d970f3ff23 Added 64bit stat and alloca functionality when building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1585
diff changeset
75 # undef stat
34d970f3ff23 Added 64bit stat and alloca functionality when building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1585
diff changeset
76 # endif
34d970f3ff23 Added 64bit stat and alloca functionality when building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1585
diff changeset
77 # define stat(a, b) _stati64(a, b)
34d970f3ff23 Added 64bit stat and alloca functionality when building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1585
diff changeset
78 # define dwstat _stati64
34d970f3ff23 Added 64bit stat and alloca functionality when building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1585
diff changeset
79 # endif
34d970f3ff23 Added 64bit stat and alloca functionality when building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1585
diff changeset
80 #endif
34d970f3ff23 Added 64bit stat and alloca functionality when building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1585
diff changeset
81
172
0fc45e386376 Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 101
diff changeset
82 #if defined(__EMX__) || defined(__OS2__) || defined(__WIN32__) || defined(WINNT)
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
83 #include <io.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
84 #include <process.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
85
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
86 #define DIRSEP "\\"
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
87 #define TYPDIR "."
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
88 #else
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
89 #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
90 #define TYPDIR "/usr/local/" __TARGET__
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
91 #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
92 #define INIDIR "~/." __TARGET__
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
93
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
94 /* OS/2 */
172
0fc45e386376 Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 101
diff changeset
95 #if defined(__EMX__) || defined(__OS2__)
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
96 #define INCL_WIN
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
97 #define INCL_GPI
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
98 #define INCL_VIO
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
99 #define INCL_NLS
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
100 #define INCL_DOS
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
101 #define INCL_DEV
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
102 #define INCL_DOSERRORS
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
103
1404
56f311dc23f6 Changes to get the library building with Watcom on OS/2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1329
diff changeset
104 #ifdef __OS2__
56f311dc23f6 Changes to get the library building with Watcom on OS/2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1329
diff changeset
105 # if (defined(__IBMC__) || defined(__WATCOMC__) || defined(_System)) && !defined(API)
56f311dc23f6 Changes to get the library building with Watcom on OS/2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1329
diff changeset
106 # define API _System
56f311dc23f6 Changes to get the library building with Watcom on OS/2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1329
diff changeset
107 # endif
174
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
108 #endif
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
109
543
8217ee5c254e Get EMX compiling again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 527
diff changeset
110 #ifndef API
8217ee5c254e Get EMX compiling again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 527
diff changeset
111 #define API
8217ee5c254e Get EMX compiling again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 527
diff changeset
112 #endif
8217ee5c254e Get EMX compiling again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 527
diff changeset
113
1991
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
114 #include <stdio.h>
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
115
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
116 /* Mostly safe but slow snprintf() for compilers that don't have it...
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
117 * like VisualAge. So we can write safe code and still use VAC to test.
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
118 */
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
119 #if defined(__IBMC__) && !defined(snprintf)
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
120 #include <stdarg.h>
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
121 #include <string.h>
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
122 #include <stdlib.h>
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
123 static int _dw_snprintf(char *str, size_t size, const char *format, ...)
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
124 {
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
125 va_list args;
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
126 char *outbuf = calloc(1, size + strlen(format) + 1024);
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
127 int retval = -1;
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
128
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
129 if(outbuf)
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
130 {
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
131 va_start(args, format);
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
132 vsprintf(outbuf, format, args);
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
133 va_end(args);
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
134 retval = strlen(outbuf);
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
135 strncpy(str, outbuf, size);
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
136 free(outbuf);
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
137 }
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
138 return retval;
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
139 }
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
140 #define snprintf _dw_snprintf
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
141 #endif
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
142
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
143
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
144 #define msleep(a) DosSleep(a)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
145
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
146 #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
147 #include "platform/dirent.h"
24
d9e87e8bcf1d Updated dynamic windows to build with EMX.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 3
diff changeset
148 #include <sys/stat.h>
d9e87e8bcf1d Updated dynamic windows to build with EMX.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 3
diff changeset
149 #ifdef FD_SETSIZE
d9e87e8bcf1d Updated dynamic windows to build with EMX.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 3
diff changeset
150 #undef FD_SETSIZE
d9e87e8bcf1d Updated dynamic windows to build with EMX.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 3
diff changeset
151 #endif
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
152 #define FD_SETSIZE 1024
172
0fc45e386376 Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 101
diff changeset
153 #endif /* __EMX__ */
0fc45e386376 Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 101
diff changeset
154
0fc45e386376 Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 101
diff changeset
155 #if defined(__EMX__) || defined(__WATCOMC__)
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
156 #define strcasecmp stricmp
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
157 #define strncasecmp strnicmp
172
0fc45e386376 Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 101
diff changeset
158 #endif
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
159
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
160 #ifndef OS2
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
161 #define OS2
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
162 #endif /* OS2 */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
163
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
164 #include <os2.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
165
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
166 #ifndef BKS_TABBEDDIALOG
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
167 #define BKS_TABBEDDIALOG 0x0800
571
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
168 #endif
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
169
2244
a1ac35abd5fd Make sure domain socket paths have a trailing DIRSEP... fixes an issue on Windows 10.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2239
diff changeset
170 #define PIPEROOT "\\socket"
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
171 #endif /* __EMX__ || __IBMC__ */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
172
172
0fc45e386376 Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 101
diff changeset
173 #if defined(__OS2__) && (defined(__IBMC__) || defined(__WATCOMC__))
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
174 #define BSD_SELECT
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
175
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
176 #include <types.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
177 #include <time.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
178 #include <sys/stat.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
179 #include <sys/select.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
180 #include <sys/ioctl.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
181 #include <direct.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
182 #include <stdarg.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
183 /* 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
184 #ifndef __WATCOMC__
24
d9e87e8bcf1d Updated dynamic windows to build with EMX.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 3
diff changeset
185 #include "platform/dirent.h"
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
186 #endif
172
0fc45e386376 Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 101
diff changeset
187 #endif
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
188
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
189 /* Windows */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
190 #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
191
e0ea29c3d1eb Fixed dw_window_pointer() so it works on Windows. Tried to fix the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 525
diff changeset
192 #if defined(MSVC) && !defined(API)
1859
b02aa3947562 Missing dw_filesystem_set_column_title export from the MinGW definition
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1842
diff changeset
193 # if defined(__MINGW32__) && defined(BUILD_DLL)
b02aa3947562 Missing dw_filesystem_set_column_title export from the MinGW definition
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1842
diff changeset
194 # define API _cdecl __declspec(dllexport)
571
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
195 # else
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
196 # define API _cdecl
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
197 # 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
198 #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
199
1960
22e3e829be13 Win: Switch to using winsock 2.x, this will remove support for ancient versions of Windows like 95 and NT 3.5 and older...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1909
diff changeset
200 #include <winsock2.h>
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
201 #include <windows.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
202 #include <time.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
203 #include <process.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
204 #include <sys/stat.h>
571
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
205
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
206 #ifdef MSVC
24
d9e87e8bcf1d Updated dynamic windows to build with EMX.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 3
diff changeset
207 #include "platform/dirent.h"
1842
123d1a900f54 More MINGW cleanups... eliminate a few more warnings and disable the unused-value warning due to unfixable warnings generated by the Win32 macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1839
diff changeset
208 #undef alloca
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
209 #define alloca _alloca
1584
1fb62c442283 Added dwstat #define in compat.h which will be the 64bit stat struct if available on the given platform.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1404
diff changeset
210 #ifdef __stat64
1fb62c442283 Added dwstat #define in compat.h which will be the 64bit stat struct if available on the given platform.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1404
diff changeset
211 #undef stat
1fb62c442283 Added dwstat #define in compat.h which will be the 64bit stat struct if available on the given platform.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1404
diff changeset
212 #define stat(a, b) _stat64(a, b)
1fb62c442283 Added dwstat #define in compat.h which will be the 64bit stat struct if available on the given platform.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1404
diff changeset
213 #define dwstat __stat64
1fb62c442283 Added dwstat #define in compat.h which will be the 64bit stat struct if available on the given platform.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1404
diff changeset
214 #endif
1975
b2cb0ef3ec3d Win: Added partial or full dark mode support for containers, trees and toolbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1962
diff changeset
215 #include <direct.h>
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
216 #else
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
217 #include <dir.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
218 #include <dirent.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
219 #endif
571
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
220
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
221 #include <stdarg.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
222
1960
22e3e829be13 Win: Switch to using winsock 2.x, this will remove support for ancient versions of Windows like 95 and NT 3.5 and older...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1909
diff changeset
223 /* Cygwin and Visual Studio 15.4 (SDK 10.0.16299.15) support domain sockets */
22e3e829be13 Win: Switch to using winsock 2.x, this will remove support for ancient versions of Windows like 95 and NT 3.5 and older...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1909
diff changeset
224 #if defined(__CYGWIN32__)
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
225 #include <sys/un.h>
1960
22e3e829be13 Win: Switch to using winsock 2.x, this will remove support for ancient versions of Windows like 95 and NT 3.5 and older...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1909
diff changeset
226 #elif defined(_MSC_VER) && _MSC_VER >= 1912
22e3e829be13 Win: Switch to using winsock 2.x, this will remove support for ancient versions of Windows like 95 and NT 3.5 and older...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1909
diff changeset
227 #include <afunix.h>
2244
a1ac35abd5fd Make sure domain socket paths have a trailing DIRSEP... fixes an issue on Windows 10.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2239
diff changeset
228 #define PIPEROOT getenv("TEMP") ? getenv("TEMP") : "C:\\Windows\\Temp"
1960
22e3e829be13 Win: Switch to using winsock 2.x, this will remove support for ancient versions of Windows like 95 and NT 3.5 and older...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1909
diff changeset
229 #else
22e3e829be13 Win: Switch to using winsock 2.x, this will remove support for ancient versions of Windows like 95 and NT 3.5 and older...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1909
diff changeset
230 #define NO_DOMAIN_SOCKETS
22e3e829be13 Win: Switch to using winsock 2.x, this will remove support for ancient versions of Windows like 95 and NT 3.5 and older...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1909
diff changeset
231 #endif
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
232
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
233 #if defined(_P_NOWAIT) && !defined(P_NOWAIT)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
234 #define P_NOWAIT _P_NOWAIT
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
235 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
236
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
237 #ifdef _MSC_VER
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
238 /* Handle deprecated functions in Visual C */
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
239 # if _MSC_VER >= 1400
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
240 # define strcasecmp(a, b) _stricmp(a, b)
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
241 # define strncasecmp(a, b, c) _strnicmp(a, b, c)
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
242 # define strdup(a) _strdup(a)
1710
b217cf9161c7 Move some more platform specific code into dwcompat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1695
diff changeset
243 # define snprintf _snprintf
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
244 # define unlink(a) _unlink(a)
2170
d871f636b46e Win: Add a few more forwarders for deprecated POSIX functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2160
diff changeset
245 # define rmdir(a) _rmdir(a)
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
246 # define close(a) _close(a)
2170
d871f636b46e Win: Add a few more forwarders for deprecated POSIX functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2160
diff changeset
247 # define open(a, b) _open(a, b)
d871f636b46e Win: Add a few more forwarders for deprecated POSIX functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2160
diff changeset
248 # define read(a, b, c) _read(a, b, c)
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
249 # define fdopen(a, b) _fdopen(a, b)
2170
d871f636b46e Win: Add a few more forwarders for deprecated POSIX functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2160
diff changeset
250 # define getcwd(a, b) _getcwd(a, b)
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
251 # define chdir(a) _chdir(a)
2170
d871f636b46e Win: Add a few more forwarders for deprecated POSIX functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2160
diff changeset
252 # define getpid() _getpid()
1839
22225eb286e5 Fixes for building with MINGW64 (specifically http://tdm-gcc.tdragon.net/).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1715
diff changeset
253 #ifndef _DW_INTERNAL
22225eb286e5 Fixes for building with MINGW64 (specifically http://tdm-gcc.tdragon.net/).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1715
diff changeset
254 # define mkdir(a,b) _mkdir(a)
22225eb286e5 Fixes for building with MINGW64 (specifically http://tdm-gcc.tdragon.net/).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1715
diff changeset
255 #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
256 # else
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
257 # define strcasecmp(a, b) stricmp(a, b)
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
258 # define strncasecmp(a, b, c) strnicmp(a, b, c)
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
259 # endif
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
260 #endif
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
261 #define msleep(a) Sleep(a)
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
262
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
263 #endif /* WIN32 */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
264
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
265 /* Everything else ;) */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
266 #include <stdio.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
267 #ifdef HAVE_UNISTD_H
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
268 #include <unistd.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
269 #endif /* HAVE_UNISTD_H */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
270 #ifdef HAVE_SYS_STAT_H
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
271 #include <sys/stat.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
272 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
273 #include <stdlib.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
274 #include <stddef.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
275 #include <signal.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
276 #include <fcntl.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
277
2824
22327163b35c Win: Attempt to fix MingW64 builds, _MSC_VER seems to no longer be defined...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2823
diff changeset
278 #if !defined(_MSC_VER) && !defined(__MINGW32__)
1992
4bfcad4986ff OS/2: Fix compilation error with Watcom C on OS/2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1991
diff changeset
279 #ifndef __WATCOMC__
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
280 #include <sys/time.h>
1992
4bfcad4986ff OS/2: Fix compilation error with Watcom C on OS/2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1991
diff changeset
281 #endif
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
282 #include <sys/socket.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
283 #include <sys/un.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
284 #include <netinet/in.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
285 #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
286 #ifndef __IBMC__
1323
209d7f5137f2 Cleaned up the compatibility library header.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 908
diff changeset
287 #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
288 #endif
172
0fc45e386376 Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 101
diff changeset
289 #if defined(__OS2__) && defined(RES_DEFAULT)
0fc45e386376 Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 101
diff changeset
290 #undef RES_DEFAULT
0fc45e386376 Get Dynamic Windows building with Watcom.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 101
diff changeset
291 #endif
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
292 #include <stdarg.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
293 #include <string.h>
2226
2de088fb5dd4 Added some missing APIs from the template, and changes so it builds dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2170
diff changeset
294 #endif /* !_MSC_VER */
41
af0a78aa0d45 More updates, and a more comprehensive unix install scheme. Use target
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 36
diff changeset
295 #include <ctype.h>
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
296
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
297 #ifndef _MAX_PATH
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
298 #define _MAX_PATH 255
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
299 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
300
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
301 /* IBM C doesn't allow "t" in the mode parameter
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
302 * because it violates the ANSI standard.
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
303 */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
304 #ifdef __IBMC__
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
305 #define FOPEN_READ_TEXT "r"
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
306 #define FOPEN_WRITE_TEXT "w"
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
307 #define FOPEN_APPEND_TEXT "a"
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
308 #else
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
309 #define FOPEN_READ_TEXT "rt"
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
310 #define FOPEN_WRITE_TEXT "wt"
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
311 #define FOPEN_APPEND_TEXT "at"
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
312 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
313 #define FOPEN_READ_BINARY "rb"
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
314 #define FOPEN_WRITE_BINARY "wb"
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
315 #define FOPEN_APPEND_BINARY "ab"
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
316
174
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
317 #ifndef API
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
318 #define API
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
319 #endif
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
320
1991
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
321 #ifndef PIPEROOT
2244
a1ac35abd5fd Make sure domain socket paths have a trailing DIRSEP... fixes an issue on Windows 10.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2239
diff changeset
322 #define PIPEROOT "/tmp"
1991
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
323 #endif
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
324
2244
a1ac35abd5fd Make sure domain socket paths have a trailing DIRSEP... fixes an issue on Windows 10.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2239
diff changeset
325 #define PIPENAME "%s%s" __TARGET__ "%d-%d"
1991
d83a86f5fe7f OS/2: Move internal snprintf() into dw.h and dwcompat.h so it can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1975
diff changeset
326
580
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
327 /* 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
328 * 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
329 * compiler support.
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
330 */
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
331
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
332 #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
333 #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
334 #else
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
335 #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
336 #endif
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
337
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
338 #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
339 #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
340 #else
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
341 #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
342 #endif
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
343
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
344 #ifdef __IBMC__
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
345 #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
346 #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
347 #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
348 #else
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
349 #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
350 #endif
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
351
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
352 #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
353 #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
354 #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
355 #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
356 #else
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
357 #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
358 #endif
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
359
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
360 #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
361 #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
362 #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
363 #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
364 #else
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
365 #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
366 #endif
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
367
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
368 #ifdef __IBMC__
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
369 #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
370 #elif defined(__WIN32__) || defined(WINNT)
1960
22e3e829be13 Win: Switch to using winsock 2.x, this will remove support for ancient versions of Windows like 95 and NT 3.5 and older...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1909
diff changeset
371 #define sockinit() { static WSADATA wsa; WSAStartup(MAKEWORD (2, 0), &wsa); }
580
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
372 #else /* !WIN32 */
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
373 #define sockinit()
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
374 #endif
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
375
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
376 #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
377 #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
378 #else /* !WIN32 */
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
379 #define sockshutdown()
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
380 #endif
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
381
2239
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
382 #define oldsockpipe(pipes) { \
580
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
383 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
384 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
385 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
386 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
387 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
388 if(he) \
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
389 { \
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
390 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
391 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
392 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
393 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
394 if ((tmpsock = socket(AF_INET, SOCK_STREAM, 0)) > -1 && bind(tmpsock, (struct sockaddr *)&server_addr, sizeof(server_addr)) > -1 && listen(tmpsock, 0) > -1) \
2239
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
395 { \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
396 memset(&listen_addr, 0, sizeof(listen_addr)); \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
397 getsockname(tmpsock, (struct sockaddr *)&listen_addr, &len); \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
398 server_addr.sin_family = AF_INET; \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
399 server_addr.sin_port = listen_addr.sin_port; \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
400 server_addr.sin_addr.s_addr = *((unsigned long *)he->h_addr); \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
401 if((pipes[1] = socket(AF_INET, SOCK_STREAM, 0)) > -1 && !connect(pipes[1], (struct sockaddr *)&server_addr, sizeof(server_addr))) \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
402 pipes[0] = accept(tmpsock, 0, 0); \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
403 } \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
404 if(tmpsock > -1) \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
405 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
406 } \
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
407 }
2239
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
408
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
409 #ifdef HAVE_PIPE
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
410 #define sockpipe(pipes) { if(pipe(pipes) < 0) pipes[0] = pipes[1] = -1; }
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
411 #elif !defined(NO_DOMAIN_SOCKETS)
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
412 #define sockpipe(pipes) { \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
413 struct sockaddr_un un; \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
414 int tmpsock = socket(AF_UNIX, SOCK_STREAM, 0); \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
415 pipes[0] = pipes[1] = -1; \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
416 if(tmpsock > -1 && (pipes[1] = socket(AF_UNIX, SOCK_STREAM, 0)) > -1) \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
417 { \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
418 memset(&un, 0, sizeof(un)); \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
419 un.sun_family=AF_UNIX; \
2244
a1ac35abd5fd Make sure domain socket paths have a trailing DIRSEP... fixes an issue on Windows 10.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2239
diff changeset
420 sprintf(un.sun_path, PIPENAME, PIPEROOT, DIRSEP, (int)getpid(), pipes[1]); \
2239
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
421 unlink(un.sun_path); \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
422 bind(tmpsock, (struct sockaddr *)&un, sizeof(un)); \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
423 listen(tmpsock, 0); \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
424 connect(pipes[1], (struct sockaddr *)&un, sizeof(un)); \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
425 pipes[0] = accept(tmpsock, 0, 0); \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
426 } else \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
427 oldsockpipe(pipes); \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
428 if(tmpsock > -1) \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
429 sockclose(tmpsock); \
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
430 }
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
431 #else
95ad22a4da2d Bump version to 3.2 now that we are post 3.1 release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2226
diff changeset
432 #define sockpipe(pipes) oldsockpipe(pipes)
580
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
433 #endif
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
434
2661
2b37d9b025cf Win/OS2: Add a definition for in_addr_t as unsigned long.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2644
diff changeset
435 /* Ok Windows and OS/2 both seem to be missing these */
1329
19bfcdbab74e Hopefully the last socklen_t change... OS/2 needs it too.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1328
diff changeset
436 #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
437 typedef int socklen_t;
2662
60df58233244 OS2: EMX/GCC defines _IN_ADDR_T_DECLARED when it is defined.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2661
diff changeset
438 #ifndef _IN_ADDR_T_DECLARED
2661
2b37d9b025cf Win/OS2: Add a definition for in_addr_t as unsigned long.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2644
diff changeset
439 typedef unsigned long in_addr_t;
1326
03f0a57c9e87 Make sure socklen_t gets defined when building with Visual Studio.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1324
diff changeset
440 #endif
2662
60df58233244 OS2: EMX/GCC defines _IN_ADDR_T_DECLARED when it is defined.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2661
diff changeset
441 #endif
1326
03f0a57c9e87 Make sure socklen_t gets defined when building with Visual Studio.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1324
diff changeset
442
1585
0576c5444587 Oops fallback dwstat didn't work quite right in that last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1584
diff changeset
443 /* If dwstat didn't otherwise get defined */
0576c5444587 Oops fallback dwstat didn't work quite right in that last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1584
diff changeset
444 #ifndef dwstat
0576c5444587 Oops fallback dwstat didn't work quite right in that last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1584
diff changeset
445 #define dwstat stat
0576c5444587 Oops fallback dwstat didn't work quite right in that last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1584
diff changeset
446 #endif
0576c5444587 Oops fallback dwstat didn't work quite right in that last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1584
diff changeset
447
1715
e6b139e0b64d Define O_BINARY as 0 in dwcompat.h for platforms which don't have it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1710
diff changeset
448 /* Make sure O_BINARY is defined */
e6b139e0b64d Define O_BINARY as 0 in dwcompat.h for platforms which don't have it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1710
diff changeset
449 #ifndef O_BINARY
e6b139e0b64d Define O_BINARY as 0 in dwcompat.h for platforms which don't have it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1710
diff changeset
450 #define O_BINARY 0
e6b139e0b64d Define O_BINARY as 0 in dwcompat.h for platforms which don't have it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1710
diff changeset
451 #endif
e6b139e0b64d Define O_BINARY as 0 in dwcompat.h for platforms which don't have it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1710
diff changeset
452
1839
22225eb286e5 Fixes for building with MINGW64 (specifically http://tdm-gcc.tdragon.net/).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1715
diff changeset
453 #if defined(__IBMC__) || defined(__WATCOMC__) || (defined(_MSC_VER) && _MSC_VER < 1400) || defined(__MINGW32__) || defined(__MINGW64__)
22225eb286e5 Fixes for building with MINGW64 (specifically http://tdm-gcc.tdragon.net/).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1715
diff changeset
454 #ifndef _DW_INTERNAL
22225eb286e5 Fixes for building with MINGW64 (specifically http://tdm-gcc.tdragon.net/).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1715
diff changeset
455 # undef mkdir
22225eb286e5 Fixes for building with MINGW64 (specifically http://tdm-gcc.tdragon.net/).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1715
diff changeset
456 # define mkdir(a,b) mkdir(a)
22225eb286e5 Fixes for building with MINGW64 (specifically http://tdm-gcc.tdragon.net/).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1715
diff changeset
457 #endif
1710
b217cf9161c7 Move some more platform specific code into dwcompat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1695
diff changeset
458 #endif
b217cf9161c7 Move some more platform specific code into dwcompat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1695
diff changeset
459
580
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
460 #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
461
d7c338ac926a Sweeping changes to the compatibility module, moved all socket code out
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 571
diff changeset
462 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
463 int API makedir(char *path);
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
464 void API setfileinfo(char *filename, char *url, char *logfile);
1860
02a23143334c Apparently Visual C's "long double" type is "double" for gcc...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1859
diff changeset
465 #ifdef __MINGW32__
02a23143334c Apparently Visual C's "long double" type is "double" for gcc...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1859
diff changeset
466 double API drivesize(int drive);
02a23143334c Apparently Visual C's "long double" type is "double" for gcc...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1859
diff changeset
467 double API drivefree(int drive);
02a23143334c Apparently Visual C's "long double" type is "double" for gcc...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1859
diff changeset
468 #else
174
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
469 long double API drivesize(int drive);
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
470 long double API drivefree(int drive);
1860
02a23143334c Apparently Visual C's "long double" type is "double" for gcc...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1859
diff changeset
471 #endif
174
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
472 int API isdrive(int drive);
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
473 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
474 FILE * API fsopen(char *path, char *modes);
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
475 int API fsclose(FILE *fp);
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
476 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
477 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
478 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
479 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
480 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
481 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
482 int API setpath(char *path);
571
828e6a66c5c5 Add dw_listbox_list_append()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 557
diff changeset
483
2823
b1ff739d0dbc Make dwcompat.h allow mixing of C and C++ code. GitHub issue #3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2662
diff changeset
484 #ifdef __cplusplus
b1ff739d0dbc Make dwcompat.h allow mixing of C and C++ code. GitHub issue #3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2662
diff changeset
485 }
174
75bf3051235f Fixes so you can mix compilers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 172
diff changeset
486 #endif
2823
b1ff739d0dbc Make dwcompat.h allow mixing of C and C++ code. GitHub issue #3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2662
diff changeset
487
b1ff739d0dbc Make dwcompat.h allow mixing of C and C++ code. GitHub issue #3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2662
diff changeset
488 #endif