-misc stream hxing
[oweals/gnunet.git] / src / include / platform.h
1 /*
2      This file is part of GNUnet.
3      (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 Christian Grothoff (and other contributing authors)
4
5      GNUnet is free software; you can redistribute it and/or modify
6      it under the terms of the GNU General Public License as published
7      by the Free Software Foundation; either version 2, or (at your
8      option) any later version.
9
10      GNUnet is distributed in the hope that it will be useful, but
11      WITHOUT ANY WARRANTY; without even the implied warranty of
12      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13      General Public License for more details.
14
15      You should have received a copy of the GNU General Public License
16      along with GNUnet; see the file COPYING.  If not, write to the
17      Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18      Boston, MA 02111-1307, USA.
19 */
20
21 /**
22  * @file include/platform.h
23  * @brief plaform specifics
24  *
25  * @author Nils Durner
26  *
27  * This file should never be included by installed
28  * header files (thos starting with "gnunet_").
29  */
30
31 #ifndef PLATFORM_H
32 #define PLATFORM_H
33
34 #ifndef HAVE_USED_CONFIG_H
35 #define HAVE_USED_CONFIG_H
36 #if HAVE_CONFIG_H
37 #include "gnunet_config.h"
38 #endif
39 #endif
40
41 #ifdef WINDOWS
42 #define BREAKPOINT asm("int $3;");
43 #define GNUNET_SIGCHLD 17
44 #else
45 #define BREAKPOINT
46 #define GNUNET_SIGCHLD SIGCHLD
47 #endif
48
49 #ifdef HAVE_SYS_TYPES_H
50 #include <sys/types.h>
51 #endif
52
53 #define ALLOW_EXTRA_CHECKS GNUNET_NO
54
55 /**
56  * For strptime (glibc2 needs this).
57  */
58 #ifndef _XOPEN_SOURCE
59 #define _XOPEN_SOURCE
60 #endif
61
62 #ifndef _REENTRANT
63 #define _REENTRANT
64 #endif
65
66 /* configuration options */
67
68 #define VERBOSE_STATS 0
69
70 #ifdef CYGWIN
71 #include <sys/reent.h>
72 #endif
73
74 #ifdef _MSC_VER
75 #ifndef FD_SETSIZE
76 #define FD_SETSIZE 1024
77 #endif
78 #include <Winsock2.h>
79 #include <ws2tcpip.h>
80 #else
81 #ifndef MINGW
82 #include <netdb.h>
83 #include <sys/socket.h>
84 #include <sys/un.h>
85 #if HAVE_NETINET_IN_H
86 #include <netinet/in.h>
87 #endif
88 #if HAVE_NETINET_IN_SYSTM_H
89 #include <netinet/in_systm.h>
90 #endif
91 #include <netinet/ip.h>         /* superset of previous */
92 #include <arpa/inet.h>
93 #include <netinet/tcp.h>
94 #include <pwd.h>
95 #include <sys/ioctl.h>
96 #include <sys/wait.h>
97 #include <grp.h>
98 #else
99 #include "winproc.h"
100 #endif
101 #endif
102
103 #include <string.h>
104 #include <stdio.h>
105 #include <stdlib.h>
106 #include <stdint.h>
107 #include <stdarg.h>
108 #include <errno.h>
109 #include <signal.h>
110 #ifdef WINDOWS
111 #include <malloc.h>             /* for alloca(), on other OSes it's in stdlib.h */
112 #endif
113 #ifndef _MSC_VER
114 #include <unistd.h>             /* KLB_FIX */
115 #endif
116 #include <sys/stat.h>
117 #include <sys/types.h>
118 #ifndef _MSC_VER
119 #include <dirent.h>             /* KLB_FIX */
120 #endif
121 #include <fcntl.h>
122 #include <math.h>
123 #if HAVE_SYS_PARAM_H
124 #include <sys/param.h>
125 #endif
126 #if TIME_WITH_SYS_TIME
127 #include <sys/time.h>
128 #include <time.h>
129 #else
130 #if HAVE_SYS_TIME_H
131 #include <sys/time.h>
132 #else
133 #include <time.h>
134 #endif
135 #endif
136
137 #ifdef SOMEBSD
138 #include <net/if.h>
139 #endif
140 #ifdef GNUNET_freeBSD
141 #include <semaphore.h>
142 #endif
143 #ifdef DARWIN
144 #include <dlfcn.h>
145 #include <semaphore.h>
146 #include <net/if.h>
147 #endif
148 #ifdef LINUX
149 #include <net/if.h>
150 #endif
151 #ifdef SOLARIS
152 #include <sys/sockio.h>
153 #include <sys/filio.h>
154 #include <sys/loadavg.h>
155 #include <semaphore.h>
156 #endif
157 #if HAVE_UCRED_H
158 #include <ucred.h>
159 #endif
160 #ifdef CYGWIN
161 #include <windows.h>
162 #include <cygwin/if.h>
163 #endif
164 #if HAVE_IFADDRS_H
165 #include <ifaddrs.h>
166 #endif
167 #include <errno.h>
168 #include <limits.h>
169
170 #if HAVE_VFORK_H
171 #include <vfork.h>
172 #endif
173
174 #include <ctype.h>
175 #if HAVE_SYS_RESOURCE_H
176 #include <sys/resource.h>
177 #endif
178
179 #if HAVE_ENDIAN_H
180 #include <endian.h>
181 #endif
182 #if HAVE_SYS_ENDIAN_H
183 #include <sys/endian.h>
184 #endif
185
186 #include "plibc.h"
187
188 #include <locale.h>
189 #ifndef FRAMEWORK_BUILD
190 #include "gettext.h"
191 /**
192  * GNU gettext support macro.
193  */
194 #define _(String) dgettext("gnunet",String)
195 #define LIBEXTRACTOR_GETTEXT_DOMAIN "libextractor"
196 #else
197 #include "libintlemu.h"
198 #define _(String) dgettext("org.gnunet.gnunet",String)
199 #define LIBEXTRACTOR_GETTEXT_DOMAIN "org.gnunet.libextractor"
200 #endif
201
202 #ifdef CYGWIN
203 #define SIOCGIFCONF     _IOW('s', 100, struct ifconf)   /* get if list */
204 #define SIOCGIFFLAGS    _IOW('s', 101, struct ifreq)    /* Get if flags */
205 #define SIOCGIFADDR     _IOW('s', 102, struct ifreq)    /* Get if addr */
206 #endif
207
208 #ifndef MINGW
209 #include <sys/mman.h>
210 #endif
211
212 #ifdef FREEBSD
213 #define __BYTE_ORDER BYTE_ORDER
214 #define __BIG_ENDIAN BIG_ENDIAN
215 #endif
216
217 #ifdef DARWIN
218 #define __BYTE_ORDER BYTE_ORDER
219 #define __BIG_ENDIAN BIG_ENDIAN
220  /* not available on darwin, override configure */
221 #undef HAVE_STAT64
222 #undef HAVE_MREMAP
223 #endif
224
225
226 #if !HAVE_ATOLL
227 long long
228 atoll (const char *nptr);
229 #endif
230
231 #if ENABLE_NLS
232 #include "langinfo.h"
233 #endif
234
235 #ifndef SIZE_MAX
236 #define SIZE_MAX ((size_t)(-1))
237 #endif
238
239 #ifndef O_LARGEFILE
240 #define O_LARGEFILE 0
241 #endif
242
243 #if defined(__sparc__)
244 #define MAKE_UNALIGNED(val) ({ __typeof__((val)) __tmp; memmove(&__tmp, &(val), sizeof((val))); __tmp; })
245 #else
246 #define MAKE_UNALIGNED(val) val
247 #endif
248
249 #if WINDOWS
250 #define FDTYPE HANDLE
251 #define SOCKTYPE SOCKET
252 #else
253 #define FDTYPE int
254 #define SOCKTYPE int
255 #endif
256
257 #endif