Merge pull request #2494 from nealef/master
[mono.git] / support / map.c
1 /*
2  * This file was automatically generated by create-native-map from ../mcs/class/lib/net_4_x/Mono.Posix.dll.
3  *
4  * DO NOT MODIFY.
5  */
6 #ifdef HAVE_CONFIG_H
7 #include <config.h>
8 #endif /* ndef HAVE_CONFIG_H */
9
10 #include <stdlib.h>
11 #include <string.h>
12
13 /*
14  * Implementation Macros
15  */
16 #ifndef _GNU_SOURCE
17 #define _GNU_SOURCE
18 #endif /* ndef _GNU_SOURCE */
19
20 #ifndef _XOPEN_SOURCE
21 #define _XOPEN_SOURCE
22 #endif /* ndef _XOPEN_SOURCE */
23
24
25 /*
26  * Implementation Includes
27  */
28 #include <sys/types.h>
29 #include <sys/stat.h>
30 #ifdef HAVE_NETINET_IN_H
31 #include <netinet/in.h>
32 #endif /* ndef HAVE_NETINET_IN_H */
33 #ifdef HAVE_SYS_TIME_H
34 #include <sys/time.h>
35 #endif /* ndef HAVE_SYS_TIME_H */
36 #ifdef HAVE_SYS_POLL_H
37 #include <sys/poll.h>
38 #endif /* ndef HAVE_SYS_POLL_H */
39 #ifdef HAVE_SYS_WAIT_H
40 #include <sys/wait.h>
41 #endif /* ndef HAVE_SYS_WAIT_H */
42 #ifdef HAVE_SYS_STATVFS_H
43 #include <sys/statvfs.h>
44 #endif /* ndef HAVE_SYS_STATVFS_H */
45 #ifdef HAVE_SYS_XATTR_H
46 #include <sys/xattr.h>
47 #endif /* ndef HAVE_SYS_XATTR_H */
48 #ifdef HAVE_SYS_MMAN_H
49 #include <sys/mman.h>
50 #endif /* ndef HAVE_SYS_MMAN_H */
51 #ifdef HAVE_SYS_SOCKET_H
52 #include <sys/socket.h>
53 #endif /* ndef HAVE_SYS_SOCKET_H */
54 #ifdef HAVE_SYS_UIO_H
55 #include <sys/uio.h>
56 #endif /* ndef HAVE_SYS_UIO_H */
57 #ifdef HAVE_UNISTD_H
58 #include <unistd.h>
59 #endif /* ndef HAVE_UNISTD_H */
60 #include <fcntl.h>
61 #include <signal.h>
62 #ifdef HAVE_POLL_H
63 #include <poll.h>
64 #endif /* ndef HAVE_POLL_H */
65 #ifdef HAVE_GRP_H
66 #include <grp.h>
67 #endif /* ndef HAVE_GRP_H */
68 #include <errno.h>
69 #ifdef HAVE_SYSLOG_H
70 #include <syslog.h>
71 #endif /* ndef HAVE_SYSLOG_H */
72 #ifdef HAVE_DIRENT_H
73 #include <dirent.h>
74 #endif /* ndef HAVE_DIRENT_H */
75 #ifdef HAVE_UTIME_H
76 #include <utime.h>
77 #endif /* ndef HAVE_UTIME_H */
78 #include <time.h>
79 #include "mph.h"
80
81 #include "map.h"
82
83 #include <errno.h>    /* errno, EOVERFLOW */
84 #include <glib.h>     /* g* types, g_assert_not_reached() */
85
86 #if defined (G_MININT8)
87 #define CNM_MININT8 G_MININT8
88 #else
89 #define CNM_MININT8 (-128)
90 #endif
91
92 #if defined (G_MAXINT8)
93 #define CNM_MAXINT8 G_MAXINT8
94 #else
95 #define CNM_MAXINT8 (127)
96 #endif
97
98 #if defined (G_MAXUINT8)
99 #define CNM_MAXUINT8 G_MAXUINT8
100 #else
101 #define CNM_MAXUINT8 (255)
102 #endif
103
104 #if defined (G_MININT16)
105 #define CNM_MININT16 G_MININT16
106 #else
107 #define CNM_MININT16 (-32768)
108 #endif
109
110 #if defined (G_MAXINT16)
111 #define CNM_MAXINT16 G_MAXINT16
112 #else
113 #define CNM_MAXINT16 (32767)
114 #endif
115
116 #if defined (G_MAXUINT16)
117 #define CNM_MAXUINT16 G_MAXUINT16
118 #else
119 #define CNM_MAXUINT16 (65535)
120 #endif
121
122 #if defined (G_MININT32)
123 #define CNM_MININT32 G_MININT32
124 #else
125 #define CNM_MININT32 (-2147483648)
126 #endif
127
128 #if defined (G_MAXINT32)
129 #define CNM_MAXINT32 G_MAXINT32
130 #else
131 #define CNM_MAXINT32 (2147483647)
132 #endif
133
134 #if defined (G_MAXUINT32)
135 #define CNM_MAXUINT32 G_MAXUINT32
136 #else
137 #define CNM_MAXUINT32 (4294967295U)
138 #endif
139
140 #if defined (G_MININT64)
141 #define CNM_MININT64 G_MININT64
142 #else
143 #define CNM_MININT64 (-9223372036854775808LL)
144 #endif
145
146 #if defined (G_MAXINT64)
147 #define CNM_MAXINT64 G_MAXINT64
148 #else
149 #define CNM_MAXINT64 (9223372036854775807LL)
150 #endif
151
152 #if defined (G_MAXUINT64)
153 #define CNM_MAXUINT64 G_MAXUINT64
154 #else
155 #define CNM_MAXUINT64 (18446744073709551615ULL)
156 #endif
157
158
159 /* returns TRUE if @type is an unsigned type */
160 #define _cnm_integral_type_is_unsigned(type) \
161     (sizeof(type) == sizeof(gint8)           \
162       ? (((type)-1) > CNM_MAXINT8)             \
163       : sizeof(type) == sizeof(gint16)       \
164         ? (((type)-1) > CNM_MAXINT16)          \
165         : sizeof(type) == sizeof(gint32)     \
166           ? (((type)-1) > CNM_MAXINT32)        \
167           : sizeof(type) == sizeof(gint64)   \
168             ? (((type)-1) > CNM_MAXINT64)      \
169             : (g_assert_not_reached (), 0))
170
171 /* returns the minimum value of @type as a gint64 */
172 #define _cnm_integral_type_min(type)          \
173     (_cnm_integral_type_is_unsigned (type)    \
174       ? 0                                     \
175       : sizeof(type) == sizeof(gint8)         \
176         ? CNM_MININT8                           \
177         : sizeof(type) == sizeof(gint16)      \
178           ? CNM_MININT16                        \
179           : sizeof(type) == sizeof(gint32)    \
180             ? CNM_MININT32                      \
181             : sizeof(type) == sizeof(gint64)  \
182               ? CNM_MININT64                    \
183               : (g_assert_not_reached (), 0))
184
185 /* returns the maximum value of @type as a guint64 */
186 #define _cnm_integral_type_max(type)            \
187     (_cnm_integral_type_is_unsigned (type)      \
188       ? sizeof(type) == sizeof(gint8)           \
189         ? CNM_MAXUINT8                            \
190         : sizeof(type) == sizeof(gint16)        \
191           ? CNM_MAXUINT16                         \
192           : sizeof(type) == sizeof(gint32)      \
193             ? CNM_MAXUINT32                       \
194             : sizeof(type) == sizeof(gint64)    \
195               ? CNM_MAXUINT64                     \
196               : (g_assert_not_reached (), 0)    \
197       : sizeof(type) == sizeof(gint8)           \
198           ? CNM_MAXINT8                           \
199           : sizeof(type) == sizeof(gint16)      \
200             ? CNM_MAXINT16                        \
201             : sizeof(type) == sizeof(gint32)    \
202               ? CNM_MAXINT32                      \
203               : sizeof(type) == sizeof(gint64)  \
204                 ? CNM_MAXINT64                    \
205                 : (g_assert_not_reached (), 0))
206
207 #ifdef _CNM_DUMP
208 #define _cnm_dump(to_t,from)                                             \
209   printf ("# %s -> %s: uns=%i; min=%llx; max=%llx; value=%llx; lt=%i; l0=%i; gt=%i; e=%i\n", \
210     #from, #to_t,                                                        \
211     (int) _cnm_integral_type_is_unsigned (to_t),                         \
212     (gint64) (_cnm_integral_type_min (to_t)),                            \
213     (gint64) (_cnm_integral_type_max (to_t)),                            \
214     (gint64) (from),                                                     \
215     (((gint64) _cnm_integral_type_min (to_t)) <= (gint64) from),         \
216     (from < 0),                                                          \
217     (((guint64) from) <= (guint64) _cnm_integral_type_max (to_t)),       \
218     !((int) _cnm_integral_type_is_unsigned (to_t)                        \
219       ? ((0 <= from) &&                                                  \
220          ((guint64) from <= (guint64) _cnm_integral_type_max (to_t)))    \
221       : ((gint64) _cnm_integral_type_min(to_t) <= (gint64) from &&       \
222          (guint64) from <= (guint64) _cnm_integral_type_max (to_t)))     \
223   )
224 #else /* ndef _CNM_DUMP */
225 #define _cnm_dump(to_t, from) do {} while (0)
226 #endif /* def _CNM_DUMP */
227
228 #ifdef DEBUG
229 #define _cnm_return_val_if_overflow(to_t,from,val)  G_STMT_START {   \
230     int     uns = _cnm_integral_type_is_unsigned (to_t);             \
231     gint64  min = (gint64)  _cnm_integral_type_min (to_t);           \
232     guint64 max = (guint64) _cnm_integral_type_max (to_t);           \
233     gint64  sf  = (gint64)  from;                                    \
234     guint64 uf  = (guint64) from;                                    \
235     if (!(uns ? ((0 <= from) && (uf <= max))                         \
236               : (min <= sf && (from < 0 || uf <= max)))) {           \
237       _cnm_dump(to_t, from);                                         \
238       errno = EOVERFLOW;                                             \
239       return (val);                                                  \
240     }                                                                \
241   } G_STMT_END
242 #else /* !def DEBUG */
243 /* don't do any overflow checking */
244 #define _cnm_return_val_if_overflow(to_t,from,val)  G_STMT_START {   \
245   } G_STMT_END
246 #endif /* def DEBUG */
247
248 int Mono_Posix_FromAccessModes (int x, int *r)
249 {
250         *r = 0;
251         if ((x & Mono_Posix_AccessModes_F_OK) == Mono_Posix_AccessModes_F_OK)
252 #ifdef F_OK
253                 *r |= F_OK;
254 #else /* def F_OK */
255                 {errno = EINVAL; return -1;}
256 #endif /* ndef F_OK */
257         if ((x & Mono_Posix_AccessModes_R_OK) == Mono_Posix_AccessModes_R_OK)
258 #ifdef R_OK
259                 *r |= R_OK;
260 #else /* def R_OK */
261                 {errno = EINVAL; return -1;}
262 #endif /* ndef R_OK */
263         if ((x & Mono_Posix_AccessModes_W_OK) == Mono_Posix_AccessModes_W_OK)
264 #ifdef W_OK
265                 *r |= W_OK;
266 #else /* def W_OK */
267                 {errno = EINVAL; return -1;}
268 #endif /* ndef W_OK */
269         if ((x & Mono_Posix_AccessModes_X_OK) == Mono_Posix_AccessModes_X_OK)
270 #ifdef X_OK
271                 *r |= X_OK;
272 #else /* def X_OK */
273                 {errno = EINVAL; return -1;}
274 #endif /* ndef X_OK */
275         if (x == 0)
276                 return 0;
277         return 0;
278 }
279
280 int Mono_Posix_ToAccessModes (int x, int *r)
281 {
282         *r = 0;
283         if (x == 0)
284                 return 0;
285 #ifdef F_OK
286         if ((x & F_OK) == F_OK)
287                 *r |= Mono_Posix_AccessModes_F_OK;
288 #endif /* ndef F_OK */
289 #ifdef R_OK
290         if ((x & R_OK) == R_OK)
291                 *r |= Mono_Posix_AccessModes_R_OK;
292 #endif /* ndef R_OK */
293 #ifdef W_OK
294         if ((x & W_OK) == W_OK)
295                 *r |= Mono_Posix_AccessModes_W_OK;
296 #endif /* ndef W_OK */
297 #ifdef X_OK
298         if ((x & X_OK) == X_OK)
299                 *r |= Mono_Posix_AccessModes_X_OK;
300 #endif /* ndef X_OK */
301         return 0;
302 }
303
304 int Mono_Posix_FromAtFlags (int x, int *r)
305 {
306         *r = 0;
307         if ((x & Mono_Posix_AtFlags_AT_EMPTY_PATH) == Mono_Posix_AtFlags_AT_EMPTY_PATH)
308 #ifdef AT_EMPTY_PATH
309                 *r |= AT_EMPTY_PATH;
310 #else /* def AT_EMPTY_PATH */
311                 {errno = EINVAL; return -1;}
312 #endif /* ndef AT_EMPTY_PATH */
313         if ((x & Mono_Posix_AtFlags_AT_NO_AUTOMOUNT) == Mono_Posix_AtFlags_AT_NO_AUTOMOUNT)
314 #ifdef AT_NO_AUTOMOUNT
315                 *r |= AT_NO_AUTOMOUNT;
316 #else /* def AT_NO_AUTOMOUNT */
317                 {errno = EINVAL; return -1;}
318 #endif /* ndef AT_NO_AUTOMOUNT */
319         if ((x & Mono_Posix_AtFlags_AT_REMOVEDIR) == Mono_Posix_AtFlags_AT_REMOVEDIR)
320 #ifdef AT_REMOVEDIR
321                 *r |= AT_REMOVEDIR;
322 #else /* def AT_REMOVEDIR */
323                 {errno = EINVAL; return -1;}
324 #endif /* ndef AT_REMOVEDIR */
325         if ((x & Mono_Posix_AtFlags_AT_SYMLINK_FOLLOW) == Mono_Posix_AtFlags_AT_SYMLINK_FOLLOW)
326 #ifdef AT_SYMLINK_FOLLOW
327                 *r |= AT_SYMLINK_FOLLOW;
328 #else /* def AT_SYMLINK_FOLLOW */
329                 {errno = EINVAL; return -1;}
330 #endif /* ndef AT_SYMLINK_FOLLOW */
331         if ((x & Mono_Posix_AtFlags_AT_SYMLINK_NOFOLLOW) == Mono_Posix_AtFlags_AT_SYMLINK_NOFOLLOW)
332 #ifdef AT_SYMLINK_NOFOLLOW
333                 *r |= AT_SYMLINK_NOFOLLOW;
334 #else /* def AT_SYMLINK_NOFOLLOW */
335                 {errno = EINVAL; return -1;}
336 #endif /* ndef AT_SYMLINK_NOFOLLOW */
337         if (x == 0)
338                 return 0;
339         return 0;
340 }
341
342 int Mono_Posix_ToAtFlags (int x, int *r)
343 {
344         *r = 0;
345         if (x == 0)
346                 return 0;
347 #ifdef AT_EMPTY_PATH
348         if ((x & AT_EMPTY_PATH) == AT_EMPTY_PATH)
349                 *r |= Mono_Posix_AtFlags_AT_EMPTY_PATH;
350 #endif /* ndef AT_EMPTY_PATH */
351 #ifdef AT_NO_AUTOMOUNT
352         if ((x & AT_NO_AUTOMOUNT) == AT_NO_AUTOMOUNT)
353                 *r |= Mono_Posix_AtFlags_AT_NO_AUTOMOUNT;
354 #endif /* ndef AT_NO_AUTOMOUNT */
355 #ifdef AT_REMOVEDIR
356         if ((x & AT_REMOVEDIR) == AT_REMOVEDIR)
357                 *r |= Mono_Posix_AtFlags_AT_REMOVEDIR;
358 #endif /* ndef AT_REMOVEDIR */
359 #ifdef AT_SYMLINK_FOLLOW
360         if ((x & AT_SYMLINK_FOLLOW) == AT_SYMLINK_FOLLOW)
361                 *r |= Mono_Posix_AtFlags_AT_SYMLINK_FOLLOW;
362 #endif /* ndef AT_SYMLINK_FOLLOW */
363 #ifdef AT_SYMLINK_NOFOLLOW
364         if ((x & AT_SYMLINK_NOFOLLOW) == AT_SYMLINK_NOFOLLOW)
365                 *r |= Mono_Posix_AtFlags_AT_SYMLINK_NOFOLLOW;
366 #endif /* ndef AT_SYMLINK_NOFOLLOW */
367         return 0;
368 }
369
370 int Mono_Posix_FromConfstrName (int x, int *r)
371 {
372         *r = 0;
373         if (x == Mono_Posix_ConfstrName__CS_GNU_LIBC_VERSION)
374 #ifdef _CS_GNU_LIBC_VERSION
375                 {*r = _CS_GNU_LIBC_VERSION; return 0;}
376 #else /* def _CS_GNU_LIBC_VERSION */
377                 {errno = EINVAL; return -1;}
378 #endif /* ndef _CS_GNU_LIBC_VERSION */
379         if (x == Mono_Posix_ConfstrName__CS_GNU_LIBPTHREAD_VERSION)
380 #ifdef _CS_GNU_LIBPTHREAD_VERSION
381                 {*r = _CS_GNU_LIBPTHREAD_VERSION; return 0;}
382 #else /* def _CS_GNU_LIBPTHREAD_VERSION */
383                 {errno = EINVAL; return -1;}
384 #endif /* ndef _CS_GNU_LIBPTHREAD_VERSION */
385         if (x == Mono_Posix_ConfstrName__CS_LFS64_CFLAGS)
386 #ifdef _CS_LFS64_CFLAGS
387                 {*r = _CS_LFS64_CFLAGS; return 0;}
388 #else /* def _CS_LFS64_CFLAGS */
389                 {errno = EINVAL; return -1;}
390 #endif /* ndef _CS_LFS64_CFLAGS */
391         if (x == Mono_Posix_ConfstrName__CS_LFS64_LDFLAGS)
392 #ifdef _CS_LFS64_LDFLAGS
393                 {*r = _CS_LFS64_LDFLAGS; return 0;}
394 #else /* def _CS_LFS64_LDFLAGS */
395                 {errno = EINVAL; return -1;}
396 #endif /* ndef _CS_LFS64_LDFLAGS */
397         if (x == Mono_Posix_ConfstrName__CS_LFS64_LIBS)
398 #ifdef _CS_LFS64_LIBS
399                 {*r = _CS_LFS64_LIBS; return 0;}
400 #else /* def _CS_LFS64_LIBS */
401                 {errno = EINVAL; return -1;}
402 #endif /* ndef _CS_LFS64_LIBS */
403         if (x == Mono_Posix_ConfstrName__CS_LFS64_LINTFLAGS)
404 #ifdef _CS_LFS64_LINTFLAGS
405                 {*r = _CS_LFS64_LINTFLAGS; return 0;}
406 #else /* def _CS_LFS64_LINTFLAGS */
407                 {errno = EINVAL; return -1;}
408 #endif /* ndef _CS_LFS64_LINTFLAGS */
409         if (x == Mono_Posix_ConfstrName__CS_LFS_CFLAGS)
410 #ifdef _CS_LFS_CFLAGS
411                 {*r = _CS_LFS_CFLAGS; return 0;}
412 #else /* def _CS_LFS_CFLAGS */
413                 {errno = EINVAL; return -1;}
414 #endif /* ndef _CS_LFS_CFLAGS */
415         if (x == Mono_Posix_ConfstrName__CS_LFS_LDFLAGS)
416 #ifdef _CS_LFS_LDFLAGS
417                 {*r = _CS_LFS_LDFLAGS; return 0;}
418 #else /* def _CS_LFS_LDFLAGS */
419                 {errno = EINVAL; return -1;}
420 #endif /* ndef _CS_LFS_LDFLAGS */
421         if (x == Mono_Posix_ConfstrName__CS_LFS_LIBS)
422 #ifdef _CS_LFS_LIBS
423                 {*r = _CS_LFS_LIBS; return 0;}
424 #else /* def _CS_LFS_LIBS */
425                 {errno = EINVAL; return -1;}
426 #endif /* ndef _CS_LFS_LIBS */
427         if (x == Mono_Posix_ConfstrName__CS_LFS_LINTFLAGS)
428 #ifdef _CS_LFS_LINTFLAGS
429                 {*r = _CS_LFS_LINTFLAGS; return 0;}
430 #else /* def _CS_LFS_LINTFLAGS */
431                 {errno = EINVAL; return -1;}
432 #endif /* ndef _CS_LFS_LINTFLAGS */
433         if (x == Mono_Posix_ConfstrName__CS_PATH)
434 #ifdef _CS_PATH
435                 {*r = _CS_PATH; return 0;}
436 #else /* def _CS_PATH */
437                 {errno = EINVAL; return -1;}
438 #endif /* ndef _CS_PATH */
439         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFF32_CFLAGS)
440 #ifdef _CS_POSIX_V6_ILP32_OFF32_CFLAGS
441                 {*r = _CS_POSIX_V6_ILP32_OFF32_CFLAGS; return 0;}
442 #else /* def _CS_POSIX_V6_ILP32_OFF32_CFLAGS */
443                 {errno = EINVAL; return -1;}
444 #endif /* ndef _CS_POSIX_V6_ILP32_OFF32_CFLAGS */
445         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFF32_LDFLAGS)
446 #ifdef _CS_POSIX_V6_ILP32_OFF32_LDFLAGS
447                 {*r = _CS_POSIX_V6_ILP32_OFF32_LDFLAGS; return 0;}
448 #else /* def _CS_POSIX_V6_ILP32_OFF32_LDFLAGS */
449                 {errno = EINVAL; return -1;}
450 #endif /* ndef _CS_POSIX_V6_ILP32_OFF32_LDFLAGS */
451         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFF32_LIBS)
452 #ifdef _CS_POSIX_V6_ILP32_OFF32_LIBS
453                 {*r = _CS_POSIX_V6_ILP32_OFF32_LIBS; return 0;}
454 #else /* def _CS_POSIX_V6_ILP32_OFF32_LIBS */
455                 {errno = EINVAL; return -1;}
456 #endif /* ndef _CS_POSIX_V6_ILP32_OFF32_LIBS */
457         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFF32_LINTFLAGS)
458 #ifdef _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS
459                 {*r = _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS; return 0;}
460 #else /* def _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS */
461                 {errno = EINVAL; return -1;}
462 #endif /* ndef _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS */
463         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFFBIG_CFLAGS)
464 #ifdef _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
465                 {*r = _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS; return 0;}
466 #else /* def _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS */
467                 {errno = EINVAL; return -1;}
468 #endif /* ndef _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS */
469         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS)
470 #ifdef _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
471                 {*r = _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS; return 0;}
472 #else /* def _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS */
473                 {errno = EINVAL; return -1;}
474 #endif /* ndef _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS */
475         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFFBIG_LIBS)
476 #ifdef _CS_POSIX_V6_ILP32_OFFBIG_LIBS
477                 {*r = _CS_POSIX_V6_ILP32_OFFBIG_LIBS; return 0;}
478 #else /* def _CS_POSIX_V6_ILP32_OFFBIG_LIBS */
479                 {errno = EINVAL; return -1;}
480 #endif /* ndef _CS_POSIX_V6_ILP32_OFFBIG_LIBS */
481         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS)
482 #ifdef _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS
483                 {*r = _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS; return 0;}
484 #else /* def _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS */
485                 {errno = EINVAL; return -1;}
486 #endif /* ndef _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS */
487         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_LP64_OFF64_CFLAGS)
488 #ifdef _CS_POSIX_V6_LP64_OFF64_CFLAGS
489                 {*r = _CS_POSIX_V6_LP64_OFF64_CFLAGS; return 0;}
490 #else /* def _CS_POSIX_V6_LP64_OFF64_CFLAGS */
491                 {errno = EINVAL; return -1;}
492 #endif /* ndef _CS_POSIX_V6_LP64_OFF64_CFLAGS */
493         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_LP64_OFF64_LDFLAGS)
494 #ifdef _CS_POSIX_V6_LP64_OFF64_LDFLAGS
495                 {*r = _CS_POSIX_V6_LP64_OFF64_LDFLAGS; return 0;}
496 #else /* def _CS_POSIX_V6_LP64_OFF64_LDFLAGS */
497                 {errno = EINVAL; return -1;}
498 #endif /* ndef _CS_POSIX_V6_LP64_OFF64_LDFLAGS */
499         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_LP64_OFF64_LIBS)
500 #ifdef _CS_POSIX_V6_LP64_OFF64_LIBS
501                 {*r = _CS_POSIX_V6_LP64_OFF64_LIBS; return 0;}
502 #else /* def _CS_POSIX_V6_LP64_OFF64_LIBS */
503                 {errno = EINVAL; return -1;}
504 #endif /* ndef _CS_POSIX_V6_LP64_OFF64_LIBS */
505         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_LP64_OFF64_LINTFLAGS)
506 #ifdef _CS_POSIX_V6_LP64_OFF64_LINTFLAGS
507                 {*r = _CS_POSIX_V6_LP64_OFF64_LINTFLAGS; return 0;}
508 #else /* def _CS_POSIX_V6_LP64_OFF64_LINTFLAGS */
509                 {errno = EINVAL; return -1;}
510 #endif /* ndef _CS_POSIX_V6_LP64_OFF64_LINTFLAGS */
511         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS)
512 #ifdef _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
513                 {*r = _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS; return 0;}
514 #else /* def _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS */
515                 {errno = EINVAL; return -1;}
516 #endif /* ndef _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS */
517         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS)
518 #ifdef _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
519                 {*r = _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS; return 0;}
520 #else /* def _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS */
521                 {errno = EINVAL; return -1;}
522 #endif /* ndef _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS */
523         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_LPBIG_OFFBIG_LIBS)
524 #ifdef _CS_POSIX_V6_LPBIG_OFFBIG_LIBS
525                 {*r = _CS_POSIX_V6_LPBIG_OFFBIG_LIBS; return 0;}
526 #else /* def _CS_POSIX_V6_LPBIG_OFFBIG_LIBS */
527                 {errno = EINVAL; return -1;}
528 #endif /* ndef _CS_POSIX_V6_LPBIG_OFFBIG_LIBS */
529         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS)
530 #ifdef _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
531                 {*r = _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS; return 0;}
532 #else /* def _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS */
533                 {errno = EINVAL; return -1;}
534 #endif /* ndef _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS */
535         if (x == Mono_Posix_ConfstrName__CS_V6_WIDTH_RESTRICTED_ENVS)
536 #ifdef _CS_V6_WIDTH_RESTRICTED_ENVS
537                 {*r = _CS_V6_WIDTH_RESTRICTED_ENVS; return 0;}
538 #else /* def _CS_V6_WIDTH_RESTRICTED_ENVS */
539                 {errno = EINVAL; return -1;}
540 #endif /* ndef _CS_V6_WIDTH_RESTRICTED_ENVS */
541         if (x == Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFF32_CFLAGS)
542 #ifdef _CS_XBS5_ILP32_OFF32_CFLAGS
543                 {*r = _CS_XBS5_ILP32_OFF32_CFLAGS; return 0;}
544 #else /* def _CS_XBS5_ILP32_OFF32_CFLAGS */
545                 {errno = EINVAL; return -1;}
546 #endif /* ndef _CS_XBS5_ILP32_OFF32_CFLAGS */
547         if (x == Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFF32_LDFLAGS)
548 #ifdef _CS_XBS5_ILP32_OFF32_LDFLAGS
549                 {*r = _CS_XBS5_ILP32_OFF32_LDFLAGS; return 0;}
550 #else /* def _CS_XBS5_ILP32_OFF32_LDFLAGS */
551                 {errno = EINVAL; return -1;}
552 #endif /* ndef _CS_XBS5_ILP32_OFF32_LDFLAGS */
553         if (x == Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFF32_LIBS)
554 #ifdef _CS_XBS5_ILP32_OFF32_LIBS
555                 {*r = _CS_XBS5_ILP32_OFF32_LIBS; return 0;}
556 #else /* def _CS_XBS5_ILP32_OFF32_LIBS */
557                 {errno = EINVAL; return -1;}
558 #endif /* ndef _CS_XBS5_ILP32_OFF32_LIBS */
559         if (x == Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFF32_LINTFLAGS)
560 #ifdef _CS_XBS5_ILP32_OFF32_LINTFLAGS
561                 {*r = _CS_XBS5_ILP32_OFF32_LINTFLAGS; return 0;}
562 #else /* def _CS_XBS5_ILP32_OFF32_LINTFLAGS */
563                 {errno = EINVAL; return -1;}
564 #endif /* ndef _CS_XBS5_ILP32_OFF32_LINTFLAGS */
565         if (x == Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFFBIG_CFLAGS)
566 #ifdef _CS_XBS5_ILP32_OFFBIG_CFLAGS
567                 {*r = _CS_XBS5_ILP32_OFFBIG_CFLAGS; return 0;}
568 #else /* def _CS_XBS5_ILP32_OFFBIG_CFLAGS */
569                 {errno = EINVAL; return -1;}
570 #endif /* ndef _CS_XBS5_ILP32_OFFBIG_CFLAGS */
571         if (x == Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFFBIG_LDFLAGS)
572 #ifdef _CS_XBS5_ILP32_OFFBIG_LDFLAGS
573                 {*r = _CS_XBS5_ILP32_OFFBIG_LDFLAGS; return 0;}
574 #else /* def _CS_XBS5_ILP32_OFFBIG_LDFLAGS */
575                 {errno = EINVAL; return -1;}
576 #endif /* ndef _CS_XBS5_ILP32_OFFBIG_LDFLAGS */
577         if (x == Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFFBIG_LIBS)
578 #ifdef _CS_XBS5_ILP32_OFFBIG_LIBS
579                 {*r = _CS_XBS5_ILP32_OFFBIG_LIBS; return 0;}
580 #else /* def _CS_XBS5_ILP32_OFFBIG_LIBS */
581                 {errno = EINVAL; return -1;}
582 #endif /* ndef _CS_XBS5_ILP32_OFFBIG_LIBS */
583         if (x == Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFFBIG_LINTFLAGS)
584 #ifdef _CS_XBS5_ILP32_OFFBIG_LINTFLAGS
585                 {*r = _CS_XBS5_ILP32_OFFBIG_LINTFLAGS; return 0;}
586 #else /* def _CS_XBS5_ILP32_OFFBIG_LINTFLAGS */
587                 {errno = EINVAL; return -1;}
588 #endif /* ndef _CS_XBS5_ILP32_OFFBIG_LINTFLAGS */
589         if (x == Mono_Posix_ConfstrName__CS_XBS5_LP64_OFF64_CFLAGS)
590 #ifdef _CS_XBS5_LP64_OFF64_CFLAGS
591                 {*r = _CS_XBS5_LP64_OFF64_CFLAGS; return 0;}
592 #else /* def _CS_XBS5_LP64_OFF64_CFLAGS */
593                 {errno = EINVAL; return -1;}
594 #endif /* ndef _CS_XBS5_LP64_OFF64_CFLAGS */
595         if (x == Mono_Posix_ConfstrName__CS_XBS5_LP64_OFF64_LDFLAGS)
596 #ifdef _CS_XBS5_LP64_OFF64_LDFLAGS
597                 {*r = _CS_XBS5_LP64_OFF64_LDFLAGS; return 0;}
598 #else /* def _CS_XBS5_LP64_OFF64_LDFLAGS */
599                 {errno = EINVAL; return -1;}
600 #endif /* ndef _CS_XBS5_LP64_OFF64_LDFLAGS */
601         if (x == Mono_Posix_ConfstrName__CS_XBS5_LP64_OFF64_LIBS)
602 #ifdef _CS_XBS5_LP64_OFF64_LIBS
603                 {*r = _CS_XBS5_LP64_OFF64_LIBS; return 0;}
604 #else /* def _CS_XBS5_LP64_OFF64_LIBS */
605                 {errno = EINVAL; return -1;}
606 #endif /* ndef _CS_XBS5_LP64_OFF64_LIBS */
607         if (x == Mono_Posix_ConfstrName__CS_XBS5_LP64_OFF64_LINTFLAGS)
608 #ifdef _CS_XBS5_LP64_OFF64_LINTFLAGS
609                 {*r = _CS_XBS5_LP64_OFF64_LINTFLAGS; return 0;}
610 #else /* def _CS_XBS5_LP64_OFF64_LINTFLAGS */
611                 {errno = EINVAL; return -1;}
612 #endif /* ndef _CS_XBS5_LP64_OFF64_LINTFLAGS */
613         if (x == Mono_Posix_ConfstrName__CS_XBS5_LPBIG_OFFBIG_CFLAGS)
614 #ifdef _CS_XBS5_LPBIG_OFFBIG_CFLAGS
615                 {*r = _CS_XBS5_LPBIG_OFFBIG_CFLAGS; return 0;}
616 #else /* def _CS_XBS5_LPBIG_OFFBIG_CFLAGS */
617                 {errno = EINVAL; return -1;}
618 #endif /* ndef _CS_XBS5_LPBIG_OFFBIG_CFLAGS */
619         if (x == Mono_Posix_ConfstrName__CS_XBS5_LPBIG_OFFBIG_LDFLAGS)
620 #ifdef _CS_XBS5_LPBIG_OFFBIG_LDFLAGS
621                 {*r = _CS_XBS5_LPBIG_OFFBIG_LDFLAGS; return 0;}
622 #else /* def _CS_XBS5_LPBIG_OFFBIG_LDFLAGS */
623                 {errno = EINVAL; return -1;}
624 #endif /* ndef _CS_XBS5_LPBIG_OFFBIG_LDFLAGS */
625         if (x == Mono_Posix_ConfstrName__CS_XBS5_LPBIG_OFFBIG_LIBS)
626 #ifdef _CS_XBS5_LPBIG_OFFBIG_LIBS
627                 {*r = _CS_XBS5_LPBIG_OFFBIG_LIBS; return 0;}
628 #else /* def _CS_XBS5_LPBIG_OFFBIG_LIBS */
629                 {errno = EINVAL; return -1;}
630 #endif /* ndef _CS_XBS5_LPBIG_OFFBIG_LIBS */
631         if (x == Mono_Posix_ConfstrName__CS_XBS5_LPBIG_OFFBIG_LINTFLAGS)
632 #ifdef _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS
633                 {*r = _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS; return 0;}
634 #else /* def _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS */
635                 {errno = EINVAL; return -1;}
636 #endif /* ndef _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS */
637         if (x == 0)
638                 return 0;
639         errno = EINVAL; return -1;
640 }
641
642 int Mono_Posix_ToConfstrName (int x, int *r)
643 {
644         *r = 0;
645         if (x == 0)
646                 return 0;
647 #ifdef _CS_GNU_LIBC_VERSION
648         if (x == _CS_GNU_LIBC_VERSION)
649                 {*r = Mono_Posix_ConfstrName__CS_GNU_LIBC_VERSION; return 0;}
650 #endif /* ndef _CS_GNU_LIBC_VERSION */
651 #ifdef _CS_GNU_LIBPTHREAD_VERSION
652         if (x == _CS_GNU_LIBPTHREAD_VERSION)
653                 {*r = Mono_Posix_ConfstrName__CS_GNU_LIBPTHREAD_VERSION; return 0;}
654 #endif /* ndef _CS_GNU_LIBPTHREAD_VERSION */
655 #ifdef _CS_LFS64_CFLAGS
656         if (x == _CS_LFS64_CFLAGS)
657                 {*r = Mono_Posix_ConfstrName__CS_LFS64_CFLAGS; return 0;}
658 #endif /* ndef _CS_LFS64_CFLAGS */
659 #ifdef _CS_LFS64_LDFLAGS
660         if (x == _CS_LFS64_LDFLAGS)
661                 {*r = Mono_Posix_ConfstrName__CS_LFS64_LDFLAGS; return 0;}
662 #endif /* ndef _CS_LFS64_LDFLAGS */
663 #ifdef _CS_LFS64_LIBS
664         if (x == _CS_LFS64_LIBS)
665                 {*r = Mono_Posix_ConfstrName__CS_LFS64_LIBS; return 0;}
666 #endif /* ndef _CS_LFS64_LIBS */
667 #ifdef _CS_LFS64_LINTFLAGS
668         if (x == _CS_LFS64_LINTFLAGS)
669                 {*r = Mono_Posix_ConfstrName__CS_LFS64_LINTFLAGS; return 0;}
670 #endif /* ndef _CS_LFS64_LINTFLAGS */
671 #ifdef _CS_LFS_CFLAGS
672         if (x == _CS_LFS_CFLAGS)
673                 {*r = Mono_Posix_ConfstrName__CS_LFS_CFLAGS; return 0;}
674 #endif /* ndef _CS_LFS_CFLAGS */
675 #ifdef _CS_LFS_LDFLAGS
676         if (x == _CS_LFS_LDFLAGS)
677                 {*r = Mono_Posix_ConfstrName__CS_LFS_LDFLAGS; return 0;}
678 #endif /* ndef _CS_LFS_LDFLAGS */
679 #ifdef _CS_LFS_LIBS
680         if (x == _CS_LFS_LIBS)
681                 {*r = Mono_Posix_ConfstrName__CS_LFS_LIBS; return 0;}
682 #endif /* ndef _CS_LFS_LIBS */
683 #ifdef _CS_LFS_LINTFLAGS
684         if (x == _CS_LFS_LINTFLAGS)
685                 {*r = Mono_Posix_ConfstrName__CS_LFS_LINTFLAGS; return 0;}
686 #endif /* ndef _CS_LFS_LINTFLAGS */
687 #ifdef _CS_PATH
688         if (x == _CS_PATH)
689                 {*r = Mono_Posix_ConfstrName__CS_PATH; return 0;}
690 #endif /* ndef _CS_PATH */
691 #ifdef _CS_POSIX_V6_ILP32_OFF32_CFLAGS
692         if (x == _CS_POSIX_V6_ILP32_OFF32_CFLAGS)
693                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFF32_CFLAGS; return 0;}
694 #endif /* ndef _CS_POSIX_V6_ILP32_OFF32_CFLAGS */
695 #ifdef _CS_POSIX_V6_ILP32_OFF32_LDFLAGS
696         if (x == _CS_POSIX_V6_ILP32_OFF32_LDFLAGS)
697                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFF32_LDFLAGS; return 0;}
698 #endif /* ndef _CS_POSIX_V6_ILP32_OFF32_LDFLAGS */
699 #ifdef _CS_POSIX_V6_ILP32_OFF32_LIBS
700         if (x == _CS_POSIX_V6_ILP32_OFF32_LIBS)
701                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFF32_LIBS; return 0;}
702 #endif /* ndef _CS_POSIX_V6_ILP32_OFF32_LIBS */
703 #ifdef _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS
704         if (x == _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS)
705                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFF32_LINTFLAGS; return 0;}
706 #endif /* ndef _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS */
707 #ifdef _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
708         if (x == _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS)
709                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFFBIG_CFLAGS; return 0;}
710 #endif /* ndef _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS */
711 #ifdef _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
712         if (x == _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS)
713                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS; return 0;}
714 #endif /* ndef _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS */
715 #ifdef _CS_POSIX_V6_ILP32_OFFBIG_LIBS
716         if (x == _CS_POSIX_V6_ILP32_OFFBIG_LIBS)
717                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFFBIG_LIBS; return 0;}
718 #endif /* ndef _CS_POSIX_V6_ILP32_OFFBIG_LIBS */
719 #ifdef _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS
720         if (x == _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS)
721                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS; return 0;}
722 #endif /* ndef _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS */
723 #ifdef _CS_POSIX_V6_LP64_OFF64_CFLAGS
724         if (x == _CS_POSIX_V6_LP64_OFF64_CFLAGS)
725                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_LP64_OFF64_CFLAGS; return 0;}
726 #endif /* ndef _CS_POSIX_V6_LP64_OFF64_CFLAGS */
727 #ifdef _CS_POSIX_V6_LP64_OFF64_LDFLAGS
728         if (x == _CS_POSIX_V6_LP64_OFF64_LDFLAGS)
729                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_LP64_OFF64_LDFLAGS; return 0;}
730 #endif /* ndef _CS_POSIX_V6_LP64_OFF64_LDFLAGS */
731 #ifdef _CS_POSIX_V6_LP64_OFF64_LIBS
732         if (x == _CS_POSIX_V6_LP64_OFF64_LIBS)
733                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_LP64_OFF64_LIBS; return 0;}
734 #endif /* ndef _CS_POSIX_V6_LP64_OFF64_LIBS */
735 #ifdef _CS_POSIX_V6_LP64_OFF64_LINTFLAGS
736         if (x == _CS_POSIX_V6_LP64_OFF64_LINTFLAGS)
737                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_LP64_OFF64_LINTFLAGS; return 0;}
738 #endif /* ndef _CS_POSIX_V6_LP64_OFF64_LINTFLAGS */
739 #ifdef _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
740         if (x == _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS)
741                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS; return 0;}
742 #endif /* ndef _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS */
743 #ifdef _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
744         if (x == _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS)
745                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS; return 0;}
746 #endif /* ndef _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS */
747 #ifdef _CS_POSIX_V6_LPBIG_OFFBIG_LIBS
748         if (x == _CS_POSIX_V6_LPBIG_OFFBIG_LIBS)
749                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_LPBIG_OFFBIG_LIBS; return 0;}
750 #endif /* ndef _CS_POSIX_V6_LPBIG_OFFBIG_LIBS */
751 #ifdef _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
752         if (x == _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS)
753                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS; return 0;}
754 #endif /* ndef _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS */
755 #ifdef _CS_V6_WIDTH_RESTRICTED_ENVS
756         if (x == _CS_V6_WIDTH_RESTRICTED_ENVS)
757                 {*r = Mono_Posix_ConfstrName__CS_V6_WIDTH_RESTRICTED_ENVS; return 0;}
758 #endif /* ndef _CS_V6_WIDTH_RESTRICTED_ENVS */
759 #ifdef _CS_XBS5_ILP32_OFF32_CFLAGS
760         if (x == _CS_XBS5_ILP32_OFF32_CFLAGS)
761                 {*r = Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFF32_CFLAGS; return 0;}
762 #endif /* ndef _CS_XBS5_ILP32_OFF32_CFLAGS */
763 #ifdef _CS_XBS5_ILP32_OFF32_LDFLAGS
764         if (x == _CS_XBS5_ILP32_OFF32_LDFLAGS)
765                 {*r = Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFF32_LDFLAGS; return 0;}
766 #endif /* ndef _CS_XBS5_ILP32_OFF32_LDFLAGS */
767 #ifdef _CS_XBS5_ILP32_OFF32_LIBS
768         if (x == _CS_XBS5_ILP32_OFF32_LIBS)
769                 {*r = Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFF32_LIBS; return 0;}
770 #endif /* ndef _CS_XBS5_ILP32_OFF32_LIBS */
771 #ifdef _CS_XBS5_ILP32_OFF32_LINTFLAGS
772         if (x == _CS_XBS5_ILP32_OFF32_LINTFLAGS)
773                 {*r = Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFF32_LINTFLAGS; return 0;}
774 #endif /* ndef _CS_XBS5_ILP32_OFF32_LINTFLAGS */
775 #ifdef _CS_XBS5_ILP32_OFFBIG_CFLAGS
776         if (x == _CS_XBS5_ILP32_OFFBIG_CFLAGS)
777                 {*r = Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFFBIG_CFLAGS; return 0;}
778 #endif /* ndef _CS_XBS5_ILP32_OFFBIG_CFLAGS */
779 #ifdef _CS_XBS5_ILP32_OFFBIG_LDFLAGS
780         if (x == _CS_XBS5_ILP32_OFFBIG_LDFLAGS)
781                 {*r = Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFFBIG_LDFLAGS; return 0;}
782 #endif /* ndef _CS_XBS5_ILP32_OFFBIG_LDFLAGS */
783 #ifdef _CS_XBS5_ILP32_OFFBIG_LIBS
784         if (x == _CS_XBS5_ILP32_OFFBIG_LIBS)
785                 {*r = Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFFBIG_LIBS; return 0;}
786 #endif /* ndef _CS_XBS5_ILP32_OFFBIG_LIBS */
787 #ifdef _CS_XBS5_ILP32_OFFBIG_LINTFLAGS
788         if (x == _CS_XBS5_ILP32_OFFBIG_LINTFLAGS)
789                 {*r = Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFFBIG_LINTFLAGS; return 0;}
790 #endif /* ndef _CS_XBS5_ILP32_OFFBIG_LINTFLAGS */
791 #ifdef _CS_XBS5_LP64_OFF64_CFLAGS
792         if (x == _CS_XBS5_LP64_OFF64_CFLAGS)
793                 {*r = Mono_Posix_ConfstrName__CS_XBS5_LP64_OFF64_CFLAGS; return 0;}
794 #endif /* ndef _CS_XBS5_LP64_OFF64_CFLAGS */
795 #ifdef _CS_XBS5_LP64_OFF64_LDFLAGS
796         if (x == _CS_XBS5_LP64_OFF64_LDFLAGS)
797                 {*r = Mono_Posix_ConfstrName__CS_XBS5_LP64_OFF64_LDFLAGS; return 0;}
798 #endif /* ndef _CS_XBS5_LP64_OFF64_LDFLAGS */
799 #ifdef _CS_XBS5_LP64_OFF64_LIBS
800         if (x == _CS_XBS5_LP64_OFF64_LIBS)
801                 {*r = Mono_Posix_ConfstrName__CS_XBS5_LP64_OFF64_LIBS; return 0;}
802 #endif /* ndef _CS_XBS5_LP64_OFF64_LIBS */
803 #ifdef _CS_XBS5_LP64_OFF64_LINTFLAGS
804         if (x == _CS_XBS5_LP64_OFF64_LINTFLAGS)
805                 {*r = Mono_Posix_ConfstrName__CS_XBS5_LP64_OFF64_LINTFLAGS; return 0;}
806 #endif /* ndef _CS_XBS5_LP64_OFF64_LINTFLAGS */
807 #ifdef _CS_XBS5_LPBIG_OFFBIG_CFLAGS
808         if (x == _CS_XBS5_LPBIG_OFFBIG_CFLAGS)
809                 {*r = Mono_Posix_ConfstrName__CS_XBS5_LPBIG_OFFBIG_CFLAGS; return 0;}
810 #endif /* ndef _CS_XBS5_LPBIG_OFFBIG_CFLAGS */
811 #ifdef _CS_XBS5_LPBIG_OFFBIG_LDFLAGS
812         if (x == _CS_XBS5_LPBIG_OFFBIG_LDFLAGS)
813                 {*r = Mono_Posix_ConfstrName__CS_XBS5_LPBIG_OFFBIG_LDFLAGS; return 0;}
814 #endif /* ndef _CS_XBS5_LPBIG_OFFBIG_LDFLAGS */
815 #ifdef _CS_XBS5_LPBIG_OFFBIG_LIBS
816         if (x == _CS_XBS5_LPBIG_OFFBIG_LIBS)
817                 {*r = Mono_Posix_ConfstrName__CS_XBS5_LPBIG_OFFBIG_LIBS; return 0;}
818 #endif /* ndef _CS_XBS5_LPBIG_OFFBIG_LIBS */
819 #ifdef _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS
820         if (x == _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS)
821                 {*r = Mono_Posix_ConfstrName__CS_XBS5_LPBIG_OFFBIG_LINTFLAGS; return 0;}
822 #endif /* ndef _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS */
823         errno = EINVAL; return -1;
824 }
825
826 int Mono_Posix_FromDirectoryNotifyFlags (int x, int *r)
827 {
828         *r = 0;
829         if ((x & Mono_Posix_DirectoryNotifyFlags_DN_ACCESS) == Mono_Posix_DirectoryNotifyFlags_DN_ACCESS)
830 #ifdef DN_ACCESS
831                 *r |= DN_ACCESS;
832 #else /* def DN_ACCESS */
833                 {errno = EINVAL; return -1;}
834 #endif /* ndef DN_ACCESS */
835         if ((x & Mono_Posix_DirectoryNotifyFlags_DN_ATTRIB) == Mono_Posix_DirectoryNotifyFlags_DN_ATTRIB)
836 #ifdef DN_ATTRIB
837                 *r |= DN_ATTRIB;
838 #else /* def DN_ATTRIB */
839                 {errno = EINVAL; return -1;}
840 #endif /* ndef DN_ATTRIB */
841         if ((x & Mono_Posix_DirectoryNotifyFlags_DN_CREATE) == Mono_Posix_DirectoryNotifyFlags_DN_CREATE)
842 #ifdef DN_CREATE
843                 *r |= DN_CREATE;
844 #else /* def DN_CREATE */
845                 {errno = EINVAL; return -1;}
846 #endif /* ndef DN_CREATE */
847         if ((x & Mono_Posix_DirectoryNotifyFlags_DN_DELETE) == Mono_Posix_DirectoryNotifyFlags_DN_DELETE)
848 #ifdef DN_DELETE
849                 *r |= DN_DELETE;
850 #else /* def DN_DELETE */
851                 {errno = EINVAL; return -1;}
852 #endif /* ndef DN_DELETE */
853         if ((x & Mono_Posix_DirectoryNotifyFlags_DN_MODIFY) == Mono_Posix_DirectoryNotifyFlags_DN_MODIFY)
854 #ifdef DN_MODIFY
855                 *r |= DN_MODIFY;
856 #else /* def DN_MODIFY */
857                 {errno = EINVAL; return -1;}
858 #endif /* ndef DN_MODIFY */
859         if ((x & Mono_Posix_DirectoryNotifyFlags_DN_MULTISHOT) == Mono_Posix_DirectoryNotifyFlags_DN_MULTISHOT)
860 #ifdef DN_MULTISHOT
861                 *r |= DN_MULTISHOT;
862 #else /* def DN_MULTISHOT */
863                 {errno = EINVAL; return -1;}
864 #endif /* ndef DN_MULTISHOT */
865         if ((x & Mono_Posix_DirectoryNotifyFlags_DN_RENAME) == Mono_Posix_DirectoryNotifyFlags_DN_RENAME)
866 #ifdef DN_RENAME
867                 *r |= DN_RENAME;
868 #else /* def DN_RENAME */
869                 {errno = EINVAL; return -1;}
870 #endif /* ndef DN_RENAME */
871         if (x == 0)
872                 return 0;
873         return 0;
874 }
875
876 int Mono_Posix_ToDirectoryNotifyFlags (int x, int *r)
877 {
878         *r = 0;
879         if (x == 0)
880                 return 0;
881 #ifdef DN_ACCESS
882         if ((x & DN_ACCESS) == DN_ACCESS)
883                 *r |= Mono_Posix_DirectoryNotifyFlags_DN_ACCESS;
884 #endif /* ndef DN_ACCESS */
885 #ifdef DN_ATTRIB
886         if ((x & DN_ATTRIB) == DN_ATTRIB)
887                 *r |= Mono_Posix_DirectoryNotifyFlags_DN_ATTRIB;
888 #endif /* ndef DN_ATTRIB */
889 #ifdef DN_CREATE
890         if ((x & DN_CREATE) == DN_CREATE)
891                 *r |= Mono_Posix_DirectoryNotifyFlags_DN_CREATE;
892 #endif /* ndef DN_CREATE */
893 #ifdef DN_DELETE
894         if ((x & DN_DELETE) == DN_DELETE)
895                 *r |= Mono_Posix_DirectoryNotifyFlags_DN_DELETE;
896 #endif /* ndef DN_DELETE */
897 #ifdef DN_MODIFY
898         if ((x & DN_MODIFY) == DN_MODIFY)
899                 *r |= Mono_Posix_DirectoryNotifyFlags_DN_MODIFY;
900 #endif /* ndef DN_MODIFY */
901 #ifdef DN_MULTISHOT
902         if ((x & DN_MULTISHOT) == DN_MULTISHOT)
903                 *r |= Mono_Posix_DirectoryNotifyFlags_DN_MULTISHOT;
904 #endif /* ndef DN_MULTISHOT */
905 #ifdef DN_RENAME
906         if ((x & DN_RENAME) == DN_RENAME)
907                 *r |= Mono_Posix_DirectoryNotifyFlags_DN_RENAME;
908 #endif /* ndef DN_RENAME */
909         return 0;
910 }
911
912 int Mono_Posix_FromEpollEvents (unsigned int x, unsigned int *r)
913 {
914         *r = 0;
915         if ((x & Mono_Posix_EpollEvents_EPOLLERR) == Mono_Posix_EpollEvents_EPOLLERR)
916 #ifdef EPOLLERR
917                 *r |= EPOLLERR;
918 #else /* def EPOLLERR */
919                 {errno = EINVAL; return -1;}
920 #endif /* ndef EPOLLERR */
921         if ((x & Mono_Posix_EpollEvents_EPOLLET) == Mono_Posix_EpollEvents_EPOLLET)
922 #ifdef EPOLLET
923                 *r |= EPOLLET;
924 #else /* def EPOLLET */
925                 {errno = EINVAL; return -1;}
926 #endif /* ndef EPOLLET */
927         if ((x & Mono_Posix_EpollEvents_EPOLLHUP) == Mono_Posix_EpollEvents_EPOLLHUP)
928 #ifdef EPOLLHUP
929                 *r |= EPOLLHUP;
930 #else /* def EPOLLHUP */
931                 {errno = EINVAL; return -1;}
932 #endif /* ndef EPOLLHUP */
933         if ((x & Mono_Posix_EpollEvents_EPOLLIN) == Mono_Posix_EpollEvents_EPOLLIN)
934 #ifdef EPOLLIN
935                 *r |= EPOLLIN;
936 #else /* def EPOLLIN */
937                 {errno = EINVAL; return -1;}
938 #endif /* ndef EPOLLIN */
939         if ((x & Mono_Posix_EpollEvents_EPOLLMSG) == Mono_Posix_EpollEvents_EPOLLMSG)
940 #ifdef EPOLLMSG
941                 *r |= EPOLLMSG;
942 #else /* def EPOLLMSG */
943                 {errno = EINVAL; return -1;}
944 #endif /* ndef EPOLLMSG */
945         if ((x & Mono_Posix_EpollEvents_EPOLLONESHOT) == Mono_Posix_EpollEvents_EPOLLONESHOT)
946 #ifdef EPOLLONESHOT
947                 *r |= EPOLLONESHOT;
948 #else /* def EPOLLONESHOT */
949                 {errno = EINVAL; return -1;}
950 #endif /* ndef EPOLLONESHOT */
951         if ((x & Mono_Posix_EpollEvents_EPOLLOUT) == Mono_Posix_EpollEvents_EPOLLOUT)
952 #ifdef EPOLLOUT
953                 *r |= EPOLLOUT;
954 #else /* def EPOLLOUT */
955                 {errno = EINVAL; return -1;}
956 #endif /* ndef EPOLLOUT */
957         if ((x & Mono_Posix_EpollEvents_EPOLLPRI) == Mono_Posix_EpollEvents_EPOLLPRI)
958 #ifdef EPOLLPRI
959                 *r |= EPOLLPRI;
960 #else /* def EPOLLPRI */
961                 {errno = EINVAL; return -1;}
962 #endif /* ndef EPOLLPRI */
963         if ((x & Mono_Posix_EpollEvents_EPOLLRDBAND) == Mono_Posix_EpollEvents_EPOLLRDBAND)
964 #ifdef EPOLLRDBAND
965                 *r |= EPOLLRDBAND;
966 #else /* def EPOLLRDBAND */
967                 {errno = EINVAL; return -1;}
968 #endif /* ndef EPOLLRDBAND */
969         if ((x & Mono_Posix_EpollEvents_EPOLLRDHUP) == Mono_Posix_EpollEvents_EPOLLRDHUP)
970 #ifdef EPOLLRDHUP
971                 *r |= EPOLLRDHUP;
972 #else /* def EPOLLRDHUP */
973                 {errno = EINVAL; return -1;}
974 #endif /* ndef EPOLLRDHUP */
975         if ((x & Mono_Posix_EpollEvents_EPOLLRDNORM) == Mono_Posix_EpollEvents_EPOLLRDNORM)
976 #ifdef EPOLLRDNORM
977                 *r |= EPOLLRDNORM;
978 #else /* def EPOLLRDNORM */
979                 {errno = EINVAL; return -1;}
980 #endif /* ndef EPOLLRDNORM */
981         if ((x & Mono_Posix_EpollEvents_EPOLLWRBAND) == Mono_Posix_EpollEvents_EPOLLWRBAND)
982 #ifdef EPOLLWRBAND
983                 *r |= EPOLLWRBAND;
984 #else /* def EPOLLWRBAND */
985                 {errno = EINVAL; return -1;}
986 #endif /* ndef EPOLLWRBAND */
987         if ((x & Mono_Posix_EpollEvents_EPOLLWRNORM) == Mono_Posix_EpollEvents_EPOLLWRNORM)
988 #ifdef EPOLLWRNORM
989                 *r |= EPOLLWRNORM;
990 #else /* def EPOLLWRNORM */
991                 {errno = EINVAL; return -1;}
992 #endif /* ndef EPOLLWRNORM */
993         if (x == 0)
994                 return 0;
995         return 0;
996 }
997
998 int Mono_Posix_ToEpollEvents (unsigned int x, unsigned int *r)
999 {
1000         *r = 0;
1001         if (x == 0)
1002                 return 0;
1003 #ifdef EPOLLERR
1004         if ((x & EPOLLERR) == EPOLLERR)
1005                 *r |= Mono_Posix_EpollEvents_EPOLLERR;
1006 #endif /* ndef EPOLLERR */
1007 #ifdef EPOLLET
1008         if ((x & EPOLLET) == EPOLLET)
1009                 *r |= Mono_Posix_EpollEvents_EPOLLET;
1010 #endif /* ndef EPOLLET */
1011 #ifdef EPOLLHUP
1012         if ((x & EPOLLHUP) == EPOLLHUP)
1013                 *r |= Mono_Posix_EpollEvents_EPOLLHUP;
1014 #endif /* ndef EPOLLHUP */
1015 #ifdef EPOLLIN
1016         if ((x & EPOLLIN) == EPOLLIN)
1017                 *r |= Mono_Posix_EpollEvents_EPOLLIN;
1018 #endif /* ndef EPOLLIN */
1019 #ifdef EPOLLMSG
1020         if ((x & EPOLLMSG) == EPOLLMSG)
1021                 *r |= Mono_Posix_EpollEvents_EPOLLMSG;
1022 #endif /* ndef EPOLLMSG */
1023 #ifdef EPOLLONESHOT
1024         if ((x & EPOLLONESHOT) == EPOLLONESHOT)
1025                 *r |= Mono_Posix_EpollEvents_EPOLLONESHOT;
1026 #endif /* ndef EPOLLONESHOT */
1027 #ifdef EPOLLOUT
1028         if ((x & EPOLLOUT) == EPOLLOUT)
1029                 *r |= Mono_Posix_EpollEvents_EPOLLOUT;
1030 #endif /* ndef EPOLLOUT */
1031 #ifdef EPOLLPRI
1032         if ((x & EPOLLPRI) == EPOLLPRI)
1033                 *r |= Mono_Posix_EpollEvents_EPOLLPRI;
1034 #endif /* ndef EPOLLPRI */
1035 #ifdef EPOLLRDBAND
1036         if ((x & EPOLLRDBAND) == EPOLLRDBAND)
1037                 *r |= Mono_Posix_EpollEvents_EPOLLRDBAND;
1038 #endif /* ndef EPOLLRDBAND */
1039 #ifdef EPOLLRDHUP
1040         if ((x & EPOLLRDHUP) == EPOLLRDHUP)
1041                 *r |= Mono_Posix_EpollEvents_EPOLLRDHUP;
1042 #endif /* ndef EPOLLRDHUP */
1043 #ifdef EPOLLRDNORM
1044         if ((x & EPOLLRDNORM) == EPOLLRDNORM)
1045                 *r |= Mono_Posix_EpollEvents_EPOLLRDNORM;
1046 #endif /* ndef EPOLLRDNORM */
1047 #ifdef EPOLLWRBAND
1048         if ((x & EPOLLWRBAND) == EPOLLWRBAND)
1049                 *r |= Mono_Posix_EpollEvents_EPOLLWRBAND;
1050 #endif /* ndef EPOLLWRBAND */
1051 #ifdef EPOLLWRNORM
1052         if ((x & EPOLLWRNORM) == EPOLLWRNORM)
1053                 *r |= Mono_Posix_EpollEvents_EPOLLWRNORM;
1054 #endif /* ndef EPOLLWRNORM */
1055         return 0;
1056 }
1057
1058 int Mono_Posix_FromEpollFlags (int x, int *r)
1059 {
1060         *r = 0;
1061         if ((x & Mono_Posix_EpollFlags_EPOLL_CLOEXEC) == Mono_Posix_EpollFlags_EPOLL_CLOEXEC)
1062 #ifdef EPOLL_CLOEXEC
1063                 *r |= EPOLL_CLOEXEC;
1064 #else /* def EPOLL_CLOEXEC */
1065                 {errno = EINVAL; return -1;}
1066 #endif /* ndef EPOLL_CLOEXEC */
1067         if ((x & Mono_Posix_EpollFlags_EPOLL_NONBLOCK) == Mono_Posix_EpollFlags_EPOLL_NONBLOCK)
1068 #ifdef EPOLL_NONBLOCK
1069                 *r |= EPOLL_NONBLOCK;
1070 #else /* def EPOLL_NONBLOCK */
1071                 {errno = EINVAL; return -1;}
1072 #endif /* ndef EPOLL_NONBLOCK */
1073         if (x == 0)
1074                 return 0;
1075         return 0;
1076 }
1077
1078 int Mono_Posix_ToEpollFlags (int x, int *r)
1079 {
1080         *r = 0;
1081         if (x == 0)
1082                 return 0;
1083 #ifdef EPOLL_CLOEXEC
1084         if ((x & EPOLL_CLOEXEC) == EPOLL_CLOEXEC)
1085                 *r |= Mono_Posix_EpollFlags_EPOLL_CLOEXEC;
1086 #endif /* ndef EPOLL_CLOEXEC */
1087 #ifdef EPOLL_NONBLOCK
1088         if ((x & EPOLL_NONBLOCK) == EPOLL_NONBLOCK)
1089                 *r |= Mono_Posix_EpollFlags_EPOLL_NONBLOCK;
1090 #endif /* ndef EPOLL_NONBLOCK */
1091         return 0;
1092 }
1093
1094 int Mono_Posix_FromErrno (int x, int *r)
1095 {
1096         *r = 0;
1097         if (x == Mono_Posix_Errno_E2BIG)
1098 #ifdef E2BIG
1099                 {*r = E2BIG; return 0;}
1100 #else /* def E2BIG */
1101                 {errno = EINVAL; return -1;}
1102 #endif /* ndef E2BIG */
1103         if (x == Mono_Posix_Errno_EACCES)
1104 #ifdef EACCES
1105                 {*r = EACCES; return 0;}
1106 #else /* def EACCES */
1107                 {errno = EINVAL; return -1;}
1108 #endif /* ndef EACCES */
1109         if (x == Mono_Posix_Errno_EADDRINUSE)
1110 #ifdef EADDRINUSE
1111                 {*r = EADDRINUSE; return 0;}
1112 #else /* def EADDRINUSE */
1113                 {errno = EINVAL; return -1;}
1114 #endif /* ndef EADDRINUSE */
1115         if (x == Mono_Posix_Errno_EADDRNOTAVAIL)
1116 #ifdef EADDRNOTAVAIL
1117                 {*r = EADDRNOTAVAIL; return 0;}
1118 #else /* def EADDRNOTAVAIL */
1119                 {errno = EINVAL; return -1;}
1120 #endif /* ndef EADDRNOTAVAIL */
1121         if (x == Mono_Posix_Errno_EADV)
1122 #ifdef EADV
1123                 {*r = EADV; return 0;}
1124 #else /* def EADV */
1125                 {errno = EINVAL; return -1;}
1126 #endif /* ndef EADV */
1127         if (x == Mono_Posix_Errno_EAFNOSUPPORT)
1128 #ifdef EAFNOSUPPORT
1129                 {*r = EAFNOSUPPORT; return 0;}
1130 #else /* def EAFNOSUPPORT */
1131                 {errno = EINVAL; return -1;}
1132 #endif /* ndef EAFNOSUPPORT */
1133         if (x == Mono_Posix_Errno_EAGAIN)
1134 #ifdef EAGAIN
1135                 {*r = EAGAIN; return 0;}
1136 #else /* def EAGAIN */
1137                 {errno = EINVAL; return -1;}
1138 #endif /* ndef EAGAIN */
1139         if (x == Mono_Posix_Errno_EALREADY)
1140 #ifdef EALREADY
1141                 {*r = EALREADY; return 0;}
1142 #else /* def EALREADY */
1143                 {errno = EINVAL; return -1;}
1144 #endif /* ndef EALREADY */
1145         if (x == Mono_Posix_Errno_EAUTH)
1146 #ifdef EAUTH
1147                 {*r = EAUTH; return 0;}
1148 #else /* def EAUTH */
1149                 {errno = EINVAL; return -1;}
1150 #endif /* ndef EAUTH */
1151         if (x == Mono_Posix_Errno_EBADARCH)
1152 #ifdef EBADARCH
1153                 {*r = EBADARCH; return 0;}
1154 #else /* def EBADARCH */
1155                 {errno = EINVAL; return -1;}
1156 #endif /* ndef EBADARCH */
1157         if (x == Mono_Posix_Errno_EBADE)
1158 #ifdef EBADE
1159                 {*r = EBADE; return 0;}
1160 #else /* def EBADE */
1161                 {errno = EINVAL; return -1;}
1162 #endif /* ndef EBADE */
1163         if (x == Mono_Posix_Errno_EBADEXEC)
1164 #ifdef EBADEXEC
1165                 {*r = EBADEXEC; return 0;}
1166 #else /* def EBADEXEC */
1167                 {errno = EINVAL; return -1;}
1168 #endif /* ndef EBADEXEC */
1169         if (x == Mono_Posix_Errno_EBADF)
1170 #ifdef EBADF
1171                 {*r = EBADF; return 0;}
1172 #else /* def EBADF */
1173                 {errno = EINVAL; return -1;}
1174 #endif /* ndef EBADF */
1175         if (x == Mono_Posix_Errno_EBADFD)
1176 #ifdef EBADFD
1177                 {*r = EBADFD; return 0;}
1178 #else /* def EBADFD */
1179                 {errno = EINVAL; return -1;}
1180 #endif /* ndef EBADFD */
1181         if (x == Mono_Posix_Errno_EBADMACHO)
1182 #ifdef EBADMACHO
1183                 {*r = EBADMACHO; return 0;}
1184 #else /* def EBADMACHO */
1185                 {errno = EINVAL; return -1;}
1186 #endif /* ndef EBADMACHO */
1187         if (x == Mono_Posix_Errno_EBADMSG)
1188 #ifdef EBADMSG
1189                 {*r = EBADMSG; return 0;}
1190 #else /* def EBADMSG */
1191                 {errno = EINVAL; return -1;}
1192 #endif /* ndef EBADMSG */
1193         if (x == Mono_Posix_Errno_EBADR)
1194 #ifdef EBADR
1195                 {*r = EBADR; return 0;}
1196 #else /* def EBADR */
1197                 {errno = EINVAL; return -1;}
1198 #endif /* ndef EBADR */
1199         if (x == Mono_Posix_Errno_EBADRPC)
1200 #ifdef EBADRPC
1201                 {*r = EBADRPC; return 0;}
1202 #else /* def EBADRPC */
1203                 {errno = EINVAL; return -1;}
1204 #endif /* ndef EBADRPC */
1205         if (x == Mono_Posix_Errno_EBADRQC)
1206 #ifdef EBADRQC
1207                 {*r = EBADRQC; return 0;}
1208 #else /* def EBADRQC */
1209                 {errno = EINVAL; return -1;}
1210 #endif /* ndef EBADRQC */
1211         if (x == Mono_Posix_Errno_EBADSLT)
1212 #ifdef EBADSLT
1213                 {*r = EBADSLT; return 0;}
1214 #else /* def EBADSLT */
1215                 {errno = EINVAL; return -1;}
1216 #endif /* ndef EBADSLT */
1217         if (x == Mono_Posix_Errno_EBFONT)
1218 #ifdef EBFONT
1219                 {*r = EBFONT; return 0;}
1220 #else /* def EBFONT */
1221                 {errno = EINVAL; return -1;}
1222 #endif /* ndef EBFONT */
1223         if (x == Mono_Posix_Errno_EBUSY)
1224 #ifdef EBUSY
1225                 {*r = EBUSY; return 0;}
1226 #else /* def EBUSY */
1227                 {errno = EINVAL; return -1;}
1228 #endif /* ndef EBUSY */
1229         if (x == Mono_Posix_Errno_ECANCELED)
1230 #ifdef ECANCELED
1231                 {*r = ECANCELED; return 0;}
1232 #else /* def ECANCELED */
1233                 {errno = EINVAL; return -1;}
1234 #endif /* ndef ECANCELED */
1235         if (x == Mono_Posix_Errno_ECHILD)
1236 #ifdef ECHILD
1237                 {*r = ECHILD; return 0;}
1238 #else /* def ECHILD */
1239                 {errno = EINVAL; return -1;}
1240 #endif /* ndef ECHILD */
1241         if (x == Mono_Posix_Errno_ECHRNG)
1242 #ifdef ECHRNG
1243                 {*r = ECHRNG; return 0;}
1244 #else /* def ECHRNG */
1245                 {errno = EINVAL; return -1;}
1246 #endif /* ndef ECHRNG */
1247         if (x == Mono_Posix_Errno_ECOMM)
1248 #ifdef ECOMM
1249                 {*r = ECOMM; return 0;}
1250 #else /* def ECOMM */
1251                 {errno = EINVAL; return -1;}
1252 #endif /* ndef ECOMM */
1253         if (x == Mono_Posix_Errno_ECONNABORTED)
1254 #ifdef ECONNABORTED
1255                 {*r = ECONNABORTED; return 0;}
1256 #else /* def ECONNABORTED */
1257                 {errno = EINVAL; return -1;}
1258 #endif /* ndef ECONNABORTED */
1259         if (x == Mono_Posix_Errno_ECONNREFUSED)
1260 #ifdef ECONNREFUSED
1261                 {*r = ECONNREFUSED; return 0;}
1262 #else /* def ECONNREFUSED */
1263                 {errno = EINVAL; return -1;}
1264 #endif /* ndef ECONNREFUSED */
1265         if (x == Mono_Posix_Errno_ECONNRESET)
1266 #ifdef ECONNRESET
1267                 {*r = ECONNRESET; return 0;}
1268 #else /* def ECONNRESET */
1269                 {errno = EINVAL; return -1;}
1270 #endif /* ndef ECONNRESET */
1271         if (x == Mono_Posix_Errno_EDEADLK)
1272 #ifdef EDEADLK
1273                 {*r = EDEADLK; return 0;}
1274 #else /* def EDEADLK */
1275                 {errno = EINVAL; return -1;}
1276 #endif /* ndef EDEADLK */
1277         if (x == Mono_Posix_Errno_EDEADLOCK)
1278 #ifdef EDEADLOCK
1279                 {*r = EDEADLOCK; return 0;}
1280 #else /* def EDEADLOCK */
1281                 {errno = EINVAL; return -1;}
1282 #endif /* ndef EDEADLOCK */
1283         if (x == Mono_Posix_Errno_EDESTADDRREQ)
1284 #ifdef EDESTADDRREQ
1285                 {*r = EDESTADDRREQ; return 0;}
1286 #else /* def EDESTADDRREQ */
1287                 {errno = EINVAL; return -1;}
1288 #endif /* ndef EDESTADDRREQ */
1289         if (x == Mono_Posix_Errno_EDEVERR)
1290 #ifdef EDEVERR
1291                 {*r = EDEVERR; return 0;}
1292 #else /* def EDEVERR */
1293                 {errno = EINVAL; return -1;}
1294 #endif /* ndef EDEVERR */
1295         if (x == Mono_Posix_Errno_EDOM)
1296 #ifdef EDOM
1297                 {*r = EDOM; return 0;}
1298 #else /* def EDOM */
1299                 {errno = EINVAL; return -1;}
1300 #endif /* ndef EDOM */
1301         if (x == Mono_Posix_Errno_EDOTDOT)
1302 #ifdef EDOTDOT
1303                 {*r = EDOTDOT; return 0;}
1304 #else /* def EDOTDOT */
1305                 {errno = EINVAL; return -1;}
1306 #endif /* ndef EDOTDOT */
1307         if (x == Mono_Posix_Errno_EDQUOT)
1308 #ifdef EDQUOT
1309                 {*r = EDQUOT; return 0;}
1310 #else /* def EDQUOT */
1311                 {errno = EINVAL; return -1;}
1312 #endif /* ndef EDQUOT */
1313         if (x == Mono_Posix_Errno_EEXIST)
1314 #ifdef EEXIST
1315                 {*r = EEXIST; return 0;}
1316 #else /* def EEXIST */
1317                 {errno = EINVAL; return -1;}
1318 #endif /* ndef EEXIST */
1319         if (x == Mono_Posix_Errno_EFAULT)
1320 #ifdef EFAULT
1321                 {*r = EFAULT; return 0;}
1322 #else /* def EFAULT */
1323                 {errno = EINVAL; return -1;}
1324 #endif /* ndef EFAULT */
1325         if (x == Mono_Posix_Errno_EFBIG)
1326 #ifdef EFBIG
1327                 {*r = EFBIG; return 0;}
1328 #else /* def EFBIG */
1329                 {errno = EINVAL; return -1;}
1330 #endif /* ndef EFBIG */
1331         if (x == Mono_Posix_Errno_EFTYPE)
1332 #ifdef EFTYPE
1333                 {*r = EFTYPE; return 0;}
1334 #else /* def EFTYPE */
1335                 {errno = EINVAL; return -1;}
1336 #endif /* ndef EFTYPE */
1337         if (x == Mono_Posix_Errno_EHOSTDOWN)
1338 #ifdef EHOSTDOWN
1339                 {*r = EHOSTDOWN; return 0;}
1340 #else /* def EHOSTDOWN */
1341                 {errno = EINVAL; return -1;}
1342 #endif /* ndef EHOSTDOWN */
1343         if (x == Mono_Posix_Errno_EHOSTUNREACH)
1344 #ifdef EHOSTUNREACH
1345                 {*r = EHOSTUNREACH; return 0;}
1346 #else /* def EHOSTUNREACH */
1347                 {errno = EINVAL; return -1;}
1348 #endif /* ndef EHOSTUNREACH */
1349         if (x == Mono_Posix_Errno_EIDRM)
1350 #ifdef EIDRM
1351                 {*r = EIDRM; return 0;}
1352 #else /* def EIDRM */
1353                 {errno = EINVAL; return -1;}
1354 #endif /* ndef EIDRM */
1355         if (x == Mono_Posix_Errno_EILSEQ)
1356 #ifdef EILSEQ
1357                 {*r = EILSEQ; return 0;}
1358 #else /* def EILSEQ */
1359                 {errno = EINVAL; return -1;}
1360 #endif /* ndef EILSEQ */
1361         if (x == Mono_Posix_Errno_EINPROGRESS)
1362 #ifdef EINPROGRESS
1363                 {*r = EINPROGRESS; return 0;}
1364 #else /* def EINPROGRESS */
1365                 {errno = EINVAL; return -1;}
1366 #endif /* ndef EINPROGRESS */
1367         if (x == Mono_Posix_Errno_EINTR)
1368 #ifdef EINTR
1369                 {*r = EINTR; return 0;}
1370 #else /* def EINTR */
1371                 {errno = EINVAL; return -1;}
1372 #endif /* ndef EINTR */
1373         if (x == Mono_Posix_Errno_EINVAL)
1374 #ifdef EINVAL
1375                 {*r = EINVAL; return 0;}
1376 #else /* def EINVAL */
1377                 {errno = EINVAL; return -1;}
1378 #endif /* ndef EINVAL */
1379         if (x == Mono_Posix_Errno_EIO)
1380 #ifdef EIO
1381                 {*r = EIO; return 0;}
1382 #else /* def EIO */
1383                 {errno = EINVAL; return -1;}
1384 #endif /* ndef EIO */
1385         if (x == Mono_Posix_Errno_EISCONN)
1386 #ifdef EISCONN
1387                 {*r = EISCONN; return 0;}
1388 #else /* def EISCONN */
1389                 {errno = EINVAL; return -1;}
1390 #endif /* ndef EISCONN */
1391         if (x == Mono_Posix_Errno_EISDIR)
1392 #ifdef EISDIR
1393                 {*r = EISDIR; return 0;}
1394 #else /* def EISDIR */
1395                 {errno = EINVAL; return -1;}
1396 #endif /* ndef EISDIR */
1397         if (x == Mono_Posix_Errno_EISNAM)
1398 #ifdef EISNAM
1399                 {*r = EISNAM; return 0;}
1400 #else /* def EISNAM */
1401                 {errno = EINVAL; return -1;}
1402 #endif /* ndef EISNAM */
1403         if (x == Mono_Posix_Errno_EKEYEXPIRED)
1404 #ifdef EKEYEXPIRED
1405                 {*r = EKEYEXPIRED; return 0;}
1406 #else /* def EKEYEXPIRED */
1407                 {errno = EINVAL; return -1;}
1408 #endif /* ndef EKEYEXPIRED */
1409         if (x == Mono_Posix_Errno_EKEYREJECTED)
1410 #ifdef EKEYREJECTED
1411                 {*r = EKEYREJECTED; return 0;}
1412 #else /* def EKEYREJECTED */
1413                 {errno = EINVAL; return -1;}
1414 #endif /* ndef EKEYREJECTED */
1415         if (x == Mono_Posix_Errno_EKEYREVOKED)
1416 #ifdef EKEYREVOKED
1417                 {*r = EKEYREVOKED; return 0;}
1418 #else /* def EKEYREVOKED */
1419                 {errno = EINVAL; return -1;}
1420 #endif /* ndef EKEYREVOKED */
1421         if (x == Mono_Posix_Errno_EL2HLT)
1422 #ifdef EL2HLT
1423                 {*r = EL2HLT; return 0;}
1424 #else /* def EL2HLT */
1425                 {errno = EINVAL; return -1;}
1426 #endif /* ndef EL2HLT */
1427         if (x == Mono_Posix_Errno_EL2NSYNC)
1428 #ifdef EL2NSYNC
1429                 {*r = EL2NSYNC; return 0;}
1430 #else /* def EL2NSYNC */
1431                 {errno = EINVAL; return -1;}
1432 #endif /* ndef EL2NSYNC */
1433         if (x == Mono_Posix_Errno_EL3HLT)
1434 #ifdef EL3HLT
1435                 {*r = EL3HLT; return 0;}
1436 #else /* def EL3HLT */
1437                 {errno = EINVAL; return -1;}
1438 #endif /* ndef EL3HLT */
1439         if (x == Mono_Posix_Errno_EL3RST)
1440 #ifdef EL3RST
1441                 {*r = EL3RST; return 0;}
1442 #else /* def EL3RST */
1443                 {errno = EINVAL; return -1;}
1444 #endif /* ndef EL3RST */
1445         if (x == Mono_Posix_Errno_ELIBACC)
1446 #ifdef ELIBACC
1447                 {*r = ELIBACC; return 0;}
1448 #else /* def ELIBACC */
1449                 {errno = EINVAL; return -1;}
1450 #endif /* ndef ELIBACC */
1451         if (x == Mono_Posix_Errno_ELIBBAD)
1452 #ifdef ELIBBAD
1453                 {*r = ELIBBAD; return 0;}
1454 #else /* def ELIBBAD */
1455                 {errno = EINVAL; return -1;}
1456 #endif /* ndef ELIBBAD */
1457         if (x == Mono_Posix_Errno_ELIBEXEC)
1458 #ifdef ELIBEXEC
1459                 {*r = ELIBEXEC; return 0;}
1460 #else /* def ELIBEXEC */
1461                 {errno = EINVAL; return -1;}
1462 #endif /* ndef ELIBEXEC */
1463         if (x == Mono_Posix_Errno_ELIBMAX)
1464 #ifdef ELIBMAX
1465                 {*r = ELIBMAX; return 0;}
1466 #else /* def ELIBMAX */
1467                 {errno = EINVAL; return -1;}
1468 #endif /* ndef ELIBMAX */
1469         if (x == Mono_Posix_Errno_ELIBSCN)
1470 #ifdef ELIBSCN
1471                 {*r = ELIBSCN; return 0;}
1472 #else /* def ELIBSCN */
1473                 {errno = EINVAL; return -1;}
1474 #endif /* ndef ELIBSCN */
1475         if (x == Mono_Posix_Errno_ELNRNG)
1476 #ifdef ELNRNG
1477                 {*r = ELNRNG; return 0;}
1478 #else /* def ELNRNG */
1479                 {errno = EINVAL; return -1;}
1480 #endif /* ndef ELNRNG */
1481         if (x == Mono_Posix_Errno_ELOOP)
1482 #ifdef ELOOP
1483                 {*r = ELOOP; return 0;}
1484 #else /* def ELOOP */
1485                 {errno = EINVAL; return -1;}
1486 #endif /* ndef ELOOP */
1487         if (x == Mono_Posix_Errno_EMEDIUMTYPE)
1488 #ifdef EMEDIUMTYPE
1489                 {*r = EMEDIUMTYPE; return 0;}
1490 #else /* def EMEDIUMTYPE */
1491                 {errno = EINVAL; return -1;}
1492 #endif /* ndef EMEDIUMTYPE */
1493         if (x == Mono_Posix_Errno_EMFILE)
1494 #ifdef EMFILE
1495                 {*r = EMFILE; return 0;}
1496 #else /* def EMFILE */
1497                 {errno = EINVAL; return -1;}
1498 #endif /* ndef EMFILE */
1499         if (x == Mono_Posix_Errno_EMLINK)
1500 #ifdef EMLINK
1501                 {*r = EMLINK; return 0;}
1502 #else /* def EMLINK */
1503                 {errno = EINVAL; return -1;}
1504 #endif /* ndef EMLINK */
1505         if (x == Mono_Posix_Errno_EMSGSIZE)
1506 #ifdef EMSGSIZE
1507                 {*r = EMSGSIZE; return 0;}
1508 #else /* def EMSGSIZE */
1509                 {errno = EINVAL; return -1;}
1510 #endif /* ndef EMSGSIZE */
1511         if (x == Mono_Posix_Errno_EMULTIHOP)
1512 #ifdef EMULTIHOP
1513                 {*r = EMULTIHOP; return 0;}
1514 #else /* def EMULTIHOP */
1515                 {errno = EINVAL; return -1;}
1516 #endif /* ndef EMULTIHOP */
1517         if (x == Mono_Posix_Errno_ENAMETOOLONG)
1518 #ifdef ENAMETOOLONG
1519                 {*r = ENAMETOOLONG; return 0;}
1520 #else /* def ENAMETOOLONG */
1521                 {errno = EINVAL; return -1;}
1522 #endif /* ndef ENAMETOOLONG */
1523         if (x == Mono_Posix_Errno_ENAVAIL)
1524 #ifdef ENAVAIL
1525                 {*r = ENAVAIL; return 0;}
1526 #else /* def ENAVAIL */
1527                 {errno = EINVAL; return -1;}
1528 #endif /* ndef ENAVAIL */
1529         if (x == Mono_Posix_Errno_ENEEDAUTH)
1530 #ifdef ENEEDAUTH
1531                 {*r = ENEEDAUTH; return 0;}
1532 #else /* def ENEEDAUTH */
1533                 {errno = EINVAL; return -1;}
1534 #endif /* ndef ENEEDAUTH */
1535         if (x == Mono_Posix_Errno_ENETDOWN)
1536 #ifdef ENETDOWN
1537                 {*r = ENETDOWN; return 0;}
1538 #else /* def ENETDOWN */
1539                 {errno = EINVAL; return -1;}
1540 #endif /* ndef ENETDOWN */
1541         if (x == Mono_Posix_Errno_ENETRESET)
1542 #ifdef ENETRESET
1543                 {*r = ENETRESET; return 0;}
1544 #else /* def ENETRESET */
1545                 {errno = EINVAL; return -1;}
1546 #endif /* ndef ENETRESET */
1547         if (x == Mono_Posix_Errno_ENETUNREACH)
1548 #ifdef ENETUNREACH
1549                 {*r = ENETUNREACH; return 0;}
1550 #else /* def ENETUNREACH */
1551                 {errno = EINVAL; return -1;}
1552 #endif /* ndef ENETUNREACH */
1553         if (x == Mono_Posix_Errno_ENFILE)
1554 #ifdef ENFILE
1555                 {*r = ENFILE; return 0;}
1556 #else /* def ENFILE */
1557                 {errno = EINVAL; return -1;}
1558 #endif /* ndef ENFILE */
1559         if (x == Mono_Posix_Errno_ENOANO)
1560 #ifdef ENOANO
1561                 {*r = ENOANO; return 0;}
1562 #else /* def ENOANO */
1563                 {errno = EINVAL; return -1;}
1564 #endif /* ndef ENOANO */
1565         if (x == Mono_Posix_Errno_ENOATTR)
1566 #ifdef ENOATTR
1567                 {*r = ENOATTR; return 0;}
1568 #else /* def ENOATTR */
1569                 {errno = EINVAL; return -1;}
1570 #endif /* ndef ENOATTR */
1571         if (x == Mono_Posix_Errno_ENOBUFS)
1572 #ifdef ENOBUFS
1573                 {*r = ENOBUFS; return 0;}
1574 #else /* def ENOBUFS */
1575                 {errno = EINVAL; return -1;}
1576 #endif /* ndef ENOBUFS */
1577         if (x == Mono_Posix_Errno_ENOCSI)
1578 #ifdef ENOCSI
1579                 {*r = ENOCSI; return 0;}
1580 #else /* def ENOCSI */
1581                 {errno = EINVAL; return -1;}
1582 #endif /* ndef ENOCSI */
1583         if (x == Mono_Posix_Errno_ENODATA)
1584 #ifdef ENODATA
1585                 {*r = ENODATA; return 0;}
1586 #else /* def ENODATA */
1587                 {errno = EINVAL; return -1;}
1588 #endif /* ndef ENODATA */
1589         if (x == Mono_Posix_Errno_ENODEV)
1590 #ifdef ENODEV
1591                 {*r = ENODEV; return 0;}
1592 #else /* def ENODEV */
1593                 {errno = EINVAL; return -1;}
1594 #endif /* ndef ENODEV */
1595         if (x == Mono_Posix_Errno_ENOENT)
1596 #ifdef ENOENT
1597                 {*r = ENOENT; return 0;}
1598 #else /* def ENOENT */
1599                 {errno = EINVAL; return -1;}
1600 #endif /* ndef ENOENT */
1601         if (x == Mono_Posix_Errno_ENOEXEC)
1602 #ifdef ENOEXEC
1603                 {*r = ENOEXEC; return 0;}
1604 #else /* def ENOEXEC */
1605                 {errno = EINVAL; return -1;}
1606 #endif /* ndef ENOEXEC */
1607         if (x == Mono_Posix_Errno_ENOKEY)
1608 #ifdef ENOKEY
1609                 {*r = ENOKEY; return 0;}
1610 #else /* def ENOKEY */
1611                 {errno = EINVAL; return -1;}
1612 #endif /* ndef ENOKEY */
1613         if (x == Mono_Posix_Errno_ENOLCK)
1614 #ifdef ENOLCK
1615                 {*r = ENOLCK; return 0;}
1616 #else /* def ENOLCK */
1617                 {errno = EINVAL; return -1;}
1618 #endif /* ndef ENOLCK */
1619         if (x == Mono_Posix_Errno_ENOLINK)
1620 #ifdef ENOLINK
1621                 {*r = ENOLINK; return 0;}
1622 #else /* def ENOLINK */
1623                 {errno = EINVAL; return -1;}
1624 #endif /* ndef ENOLINK */
1625         if (x == Mono_Posix_Errno_ENOMEDIUM)
1626 #ifdef ENOMEDIUM
1627                 {*r = ENOMEDIUM; return 0;}
1628 #else /* def ENOMEDIUM */
1629                 {errno = EINVAL; return -1;}
1630 #endif /* ndef ENOMEDIUM */
1631         if (x == Mono_Posix_Errno_ENOMEM)
1632 #ifdef ENOMEM
1633                 {*r = ENOMEM; return 0;}
1634 #else /* def ENOMEM */
1635                 {errno = EINVAL; return -1;}
1636 #endif /* ndef ENOMEM */
1637         if (x == Mono_Posix_Errno_ENOMSG)
1638 #ifdef ENOMSG
1639                 {*r = ENOMSG; return 0;}
1640 #else /* def ENOMSG */
1641                 {errno = EINVAL; return -1;}
1642 #endif /* ndef ENOMSG */
1643         if (x == Mono_Posix_Errno_ENONET)
1644 #ifdef ENONET
1645                 {*r = ENONET; return 0;}
1646 #else /* def ENONET */
1647                 {errno = EINVAL; return -1;}
1648 #endif /* ndef ENONET */
1649         if (x == Mono_Posix_Errno_ENOPKG)
1650 #ifdef ENOPKG
1651                 {*r = ENOPKG; return 0;}
1652 #else /* def ENOPKG */
1653                 {errno = EINVAL; return -1;}
1654 #endif /* ndef ENOPKG */
1655         if (x == Mono_Posix_Errno_ENOPOLICY)
1656 #ifdef ENOPOLICY
1657                 {*r = ENOPOLICY; return 0;}
1658 #else /* def ENOPOLICY */
1659                 {errno = EINVAL; return -1;}
1660 #endif /* ndef ENOPOLICY */
1661         if (x == Mono_Posix_Errno_ENOPROTOOPT)
1662 #ifdef ENOPROTOOPT
1663                 {*r = ENOPROTOOPT; return 0;}
1664 #else /* def ENOPROTOOPT */
1665                 {errno = EINVAL; return -1;}
1666 #endif /* ndef ENOPROTOOPT */
1667         if (x == Mono_Posix_Errno_ENOSPC)
1668 #ifdef ENOSPC
1669                 {*r = ENOSPC; return 0;}
1670 #else /* def ENOSPC */
1671                 {errno = EINVAL; return -1;}
1672 #endif /* ndef ENOSPC */
1673         if (x == Mono_Posix_Errno_ENOSR)
1674 #ifdef ENOSR
1675                 {*r = ENOSR; return 0;}
1676 #else /* def ENOSR */
1677                 {errno = EINVAL; return -1;}
1678 #endif /* ndef ENOSR */
1679         if (x == Mono_Posix_Errno_ENOSTR)
1680 #ifdef ENOSTR
1681                 {*r = ENOSTR; return 0;}
1682 #else /* def ENOSTR */
1683                 {errno = EINVAL; return -1;}
1684 #endif /* ndef ENOSTR */
1685         if (x == Mono_Posix_Errno_ENOSYS)
1686 #ifdef ENOSYS
1687                 {*r = ENOSYS; return 0;}
1688 #else /* def ENOSYS */
1689                 {errno = EINVAL; return -1;}
1690 #endif /* ndef ENOSYS */
1691         if (x == Mono_Posix_Errno_ENOTBLK)
1692 #ifdef ENOTBLK
1693                 {*r = ENOTBLK; return 0;}
1694 #else /* def ENOTBLK */
1695                 {errno = EINVAL; return -1;}
1696 #endif /* ndef ENOTBLK */
1697         if (x == Mono_Posix_Errno_ENOTCONN)
1698 #ifdef ENOTCONN
1699                 {*r = ENOTCONN; return 0;}
1700 #else /* def ENOTCONN */
1701                 {errno = EINVAL; return -1;}
1702 #endif /* ndef ENOTCONN */
1703         if (x == Mono_Posix_Errno_ENOTDIR)
1704 #ifdef ENOTDIR
1705                 {*r = ENOTDIR; return 0;}
1706 #else /* def ENOTDIR */
1707                 {errno = EINVAL; return -1;}
1708 #endif /* ndef ENOTDIR */
1709         if (x == Mono_Posix_Errno_ENOTEMPTY)
1710 #ifdef ENOTEMPTY
1711                 {*r = ENOTEMPTY; return 0;}
1712 #else /* def ENOTEMPTY */
1713                 {errno = EINVAL; return -1;}
1714 #endif /* ndef ENOTEMPTY */
1715         if (x == Mono_Posix_Errno_ENOTNAM)
1716 #ifdef ENOTNAM
1717                 {*r = ENOTNAM; return 0;}
1718 #else /* def ENOTNAM */
1719                 {errno = EINVAL; return -1;}
1720 #endif /* ndef ENOTNAM */
1721         if (x == Mono_Posix_Errno_ENOTRECOVERABLE)
1722 #ifdef ENOTRECOVERABLE
1723                 {*r = ENOTRECOVERABLE; return 0;}
1724 #else /* def ENOTRECOVERABLE */
1725                 {errno = EINVAL; return -1;}
1726 #endif /* ndef ENOTRECOVERABLE */
1727         if (x == Mono_Posix_Errno_ENOTSOCK)
1728 #ifdef ENOTSOCK
1729                 {*r = ENOTSOCK; return 0;}
1730 #else /* def ENOTSOCK */
1731                 {errno = EINVAL; return -1;}
1732 #endif /* ndef ENOTSOCK */
1733         if (x == Mono_Posix_Errno_ENOTTY)
1734 #ifdef ENOTTY
1735                 {*r = ENOTTY; return 0;}
1736 #else /* def ENOTTY */
1737                 {errno = EINVAL; return -1;}
1738 #endif /* ndef ENOTTY */
1739         if (x == Mono_Posix_Errno_ENOTUNIQ)
1740 #ifdef ENOTUNIQ
1741                 {*r = ENOTUNIQ; return 0;}
1742 #else /* def ENOTUNIQ */
1743                 {errno = EINVAL; return -1;}
1744 #endif /* ndef ENOTUNIQ */
1745         if (x == Mono_Posix_Errno_ENXIO)
1746 #ifdef ENXIO
1747                 {*r = ENXIO; return 0;}
1748 #else /* def ENXIO */
1749                 {errno = EINVAL; return -1;}
1750 #endif /* ndef ENXIO */
1751         if (x == Mono_Posix_Errno_EOPNOTSUPP)
1752 #ifdef EOPNOTSUPP
1753                 {*r = EOPNOTSUPP; return 0;}
1754 #else /* def EOPNOTSUPP */
1755                 {errno = EINVAL; return -1;}
1756 #endif /* ndef EOPNOTSUPP */
1757         if (x == Mono_Posix_Errno_EOVERFLOW)
1758 #ifdef EOVERFLOW
1759                 {*r = EOVERFLOW; return 0;}
1760 #else /* def EOVERFLOW */
1761                 {errno = EINVAL; return -1;}
1762 #endif /* ndef EOVERFLOW */
1763         if (x == Mono_Posix_Errno_EOWNERDEAD)
1764 #ifdef EOWNERDEAD
1765                 {*r = EOWNERDEAD; return 0;}
1766 #else /* def EOWNERDEAD */
1767                 {errno = EINVAL; return -1;}
1768 #endif /* ndef EOWNERDEAD */
1769         if (x == Mono_Posix_Errno_EPERM)
1770 #ifdef EPERM
1771                 {*r = EPERM; return 0;}
1772 #else /* def EPERM */
1773                 {errno = EINVAL; return -1;}
1774 #endif /* ndef EPERM */
1775         if (x == Mono_Posix_Errno_EPFNOSUPPORT)
1776 #ifdef EPFNOSUPPORT
1777                 {*r = EPFNOSUPPORT; return 0;}
1778 #else /* def EPFNOSUPPORT */
1779                 {errno = EINVAL; return -1;}
1780 #endif /* ndef EPFNOSUPPORT */
1781         if (x == Mono_Posix_Errno_EPIPE)
1782 #ifdef EPIPE
1783                 {*r = EPIPE; return 0;}
1784 #else /* def EPIPE */
1785                 {errno = EINVAL; return -1;}
1786 #endif /* ndef EPIPE */
1787         if (x == Mono_Posix_Errno_EPROCLIM)
1788 #ifdef EPROCLIM
1789                 {*r = EPROCLIM; return 0;}
1790 #else /* def EPROCLIM */
1791                 {errno = EINVAL; return -1;}
1792 #endif /* ndef EPROCLIM */
1793         if (x == Mono_Posix_Errno_EPROCUNAVAIL)
1794 #ifdef EPROCUNAVAIL
1795                 {*r = EPROCUNAVAIL; return 0;}
1796 #else /* def EPROCUNAVAIL */
1797                 {errno = EINVAL; return -1;}
1798 #endif /* ndef EPROCUNAVAIL */
1799         if (x == Mono_Posix_Errno_EPROGMISMATCH)
1800 #ifdef EPROGMISMATCH
1801                 {*r = EPROGMISMATCH; return 0;}
1802 #else /* def EPROGMISMATCH */
1803                 {errno = EINVAL; return -1;}
1804 #endif /* ndef EPROGMISMATCH */
1805         if (x == Mono_Posix_Errno_EPROGUNAVAIL)
1806 #ifdef EPROGUNAVAIL
1807                 {*r = EPROGUNAVAIL; return 0;}
1808 #else /* def EPROGUNAVAIL */
1809                 {errno = EINVAL; return -1;}
1810 #endif /* ndef EPROGUNAVAIL */
1811         if (x == Mono_Posix_Errno_EPROTO)
1812 #ifdef EPROTO
1813                 {*r = EPROTO; return 0;}
1814 #else /* def EPROTO */
1815                 {errno = EINVAL; return -1;}
1816 #endif /* ndef EPROTO */
1817         if (x == Mono_Posix_Errno_EPROTONOSUPPORT)
1818 #ifdef EPROTONOSUPPORT
1819                 {*r = EPROTONOSUPPORT; return 0;}
1820 #else /* def EPROTONOSUPPORT */
1821                 {errno = EINVAL; return -1;}
1822 #endif /* ndef EPROTONOSUPPORT */
1823         if (x == Mono_Posix_Errno_EPROTOTYPE)
1824 #ifdef EPROTOTYPE
1825                 {*r = EPROTOTYPE; return 0;}
1826 #else /* def EPROTOTYPE */
1827                 {errno = EINVAL; return -1;}
1828 #endif /* ndef EPROTOTYPE */
1829         if (x == Mono_Posix_Errno_EPWROFF)
1830 #ifdef EPWROFF
1831                 {*r = EPWROFF; return 0;}
1832 #else /* def EPWROFF */
1833                 {errno = EINVAL; return -1;}
1834 #endif /* ndef EPWROFF */
1835         if (x == Mono_Posix_Errno_ERANGE)
1836 #ifdef ERANGE
1837                 {*r = ERANGE; return 0;}
1838 #else /* def ERANGE */
1839                 {errno = EINVAL; return -1;}
1840 #endif /* ndef ERANGE */
1841         if (x == Mono_Posix_Errno_EREMCHG)
1842 #ifdef EREMCHG
1843                 {*r = EREMCHG; return 0;}
1844 #else /* def EREMCHG */
1845                 {errno = EINVAL; return -1;}
1846 #endif /* ndef EREMCHG */
1847         if (x == Mono_Posix_Errno_EREMOTE)
1848 #ifdef EREMOTE
1849                 {*r = EREMOTE; return 0;}
1850 #else /* def EREMOTE */
1851                 {errno = EINVAL; return -1;}
1852 #endif /* ndef EREMOTE */
1853         if (x == Mono_Posix_Errno_EREMOTEIO)
1854 #ifdef EREMOTEIO
1855                 {*r = EREMOTEIO; return 0;}
1856 #else /* def EREMOTEIO */
1857                 {errno = EINVAL; return -1;}
1858 #endif /* ndef EREMOTEIO */
1859         if (x == Mono_Posix_Errno_ERESTART)
1860 #ifdef ERESTART
1861                 {*r = ERESTART; return 0;}
1862 #else /* def ERESTART */
1863                 {errno = EINVAL; return -1;}
1864 #endif /* ndef ERESTART */
1865         if (x == Mono_Posix_Errno_EROFS)
1866 #ifdef EROFS
1867                 {*r = EROFS; return 0;}
1868 #else /* def EROFS */
1869                 {errno = EINVAL; return -1;}
1870 #endif /* ndef EROFS */
1871         if (x == Mono_Posix_Errno_ERPCMISMATCH)
1872 #ifdef ERPCMISMATCH
1873                 {*r = ERPCMISMATCH; return 0;}
1874 #else /* def ERPCMISMATCH */
1875                 {errno = EINVAL; return -1;}
1876 #endif /* ndef ERPCMISMATCH */
1877         if (x == Mono_Posix_Errno_ESHLIBVERS)
1878 #ifdef ESHLIBVERS
1879                 {*r = ESHLIBVERS; return 0;}
1880 #else /* def ESHLIBVERS */
1881                 {errno = EINVAL; return -1;}
1882 #endif /* ndef ESHLIBVERS */
1883         if (x == Mono_Posix_Errno_ESHUTDOWN)
1884 #ifdef ESHUTDOWN
1885                 {*r = ESHUTDOWN; return 0;}
1886 #else /* def ESHUTDOWN */
1887                 {errno = EINVAL; return -1;}
1888 #endif /* ndef ESHUTDOWN */
1889         if (x == Mono_Posix_Errno_ESOCKTNOSUPPORT)
1890 #ifdef ESOCKTNOSUPPORT
1891                 {*r = ESOCKTNOSUPPORT; return 0;}
1892 #else /* def ESOCKTNOSUPPORT */
1893                 {errno = EINVAL; return -1;}
1894 #endif /* ndef ESOCKTNOSUPPORT */
1895         if (x == Mono_Posix_Errno_ESPIPE)
1896 #ifdef ESPIPE
1897                 {*r = ESPIPE; return 0;}
1898 #else /* def ESPIPE */
1899                 {errno = EINVAL; return -1;}
1900 #endif /* ndef ESPIPE */
1901         if (x == Mono_Posix_Errno_ESRCH)
1902 #ifdef ESRCH
1903                 {*r = ESRCH; return 0;}
1904 #else /* def ESRCH */
1905                 {errno = EINVAL; return -1;}
1906 #endif /* ndef ESRCH */
1907         if (x == Mono_Posix_Errno_ESRMNT)
1908 #ifdef ESRMNT
1909                 {*r = ESRMNT; return 0;}
1910 #else /* def ESRMNT */
1911                 {errno = EINVAL; return -1;}
1912 #endif /* ndef ESRMNT */
1913         if (x == Mono_Posix_Errno_ESTALE)
1914 #ifdef ESTALE
1915                 {*r = ESTALE; return 0;}
1916 #else /* def ESTALE */
1917                 {errno = EINVAL; return -1;}
1918 #endif /* ndef ESTALE */
1919         if (x == Mono_Posix_Errno_ESTRPIPE)
1920 #ifdef ESTRPIPE
1921                 {*r = ESTRPIPE; return 0;}
1922 #else /* def ESTRPIPE */
1923                 {errno = EINVAL; return -1;}
1924 #endif /* ndef ESTRPIPE */
1925         if (x == Mono_Posix_Errno_ETIME)
1926 #ifdef ETIME
1927                 {*r = ETIME; return 0;}
1928 #else /* def ETIME */
1929                 {errno = EINVAL; return -1;}
1930 #endif /* ndef ETIME */
1931         if (x == Mono_Posix_Errno_ETIMEDOUT)
1932 #ifdef ETIMEDOUT
1933                 {*r = ETIMEDOUT; return 0;}
1934 #else /* def ETIMEDOUT */
1935                 {errno = EINVAL; return -1;}
1936 #endif /* ndef ETIMEDOUT */
1937         if (x == Mono_Posix_Errno_ETOOMANYREFS)
1938 #ifdef ETOOMANYREFS
1939                 {*r = ETOOMANYREFS; return 0;}
1940 #else /* def ETOOMANYREFS */
1941                 {errno = EINVAL; return -1;}
1942 #endif /* ndef ETOOMANYREFS */
1943         if (x == Mono_Posix_Errno_ETXTBSY)
1944 #ifdef ETXTBSY
1945                 {*r = ETXTBSY; return 0;}
1946 #else /* def ETXTBSY */
1947                 {errno = EINVAL; return -1;}
1948 #endif /* ndef ETXTBSY */
1949         if (x == Mono_Posix_Errno_EUCLEAN)
1950 #ifdef EUCLEAN
1951                 {*r = EUCLEAN; return 0;}
1952 #else /* def EUCLEAN */
1953                 {errno = EINVAL; return -1;}
1954 #endif /* ndef EUCLEAN */
1955         if (x == Mono_Posix_Errno_EUNATCH)
1956 #ifdef EUNATCH
1957                 {*r = EUNATCH; return 0;}
1958 #else /* def EUNATCH */
1959                 {errno = EINVAL; return -1;}
1960 #endif /* ndef EUNATCH */
1961         if (x == Mono_Posix_Errno_EUSERS)
1962 #ifdef EUSERS
1963                 {*r = EUSERS; return 0;}
1964 #else /* def EUSERS */
1965                 {errno = EINVAL; return -1;}
1966 #endif /* ndef EUSERS */
1967         if (x == Mono_Posix_Errno_EWOULDBLOCK)
1968 #ifdef EWOULDBLOCK
1969                 {*r = EWOULDBLOCK; return 0;}
1970 #else /* def EWOULDBLOCK */
1971                 {errno = EINVAL; return -1;}
1972 #endif /* ndef EWOULDBLOCK */
1973         if (x == Mono_Posix_Errno_EXDEV)
1974 #ifdef EXDEV
1975                 {*r = EXDEV; return 0;}
1976 #else /* def EXDEV */
1977                 {errno = EINVAL; return -1;}
1978 #endif /* ndef EXDEV */
1979         if (x == Mono_Posix_Errno_EXFULL)
1980 #ifdef EXFULL
1981                 {*r = EXFULL; return 0;}
1982 #else /* def EXFULL */
1983                 {errno = EINVAL; return -1;}
1984 #endif /* ndef EXFULL */
1985         if (x == 0)
1986                 return 0;
1987         errno = EINVAL; return -1;
1988 }
1989
1990 int Mono_Posix_ToErrno (int x, int *r)
1991 {
1992         *r = 0;
1993         if (x == 0)
1994                 return 0;
1995 #ifdef E2BIG
1996         if (x == E2BIG)
1997                 {*r = Mono_Posix_Errno_E2BIG; return 0;}
1998 #endif /* ndef E2BIG */
1999 #ifdef EACCES
2000         if (x == EACCES)
2001                 {*r = Mono_Posix_Errno_EACCES; return 0;}
2002 #endif /* ndef EACCES */
2003 #ifdef EADDRINUSE
2004         if (x == EADDRINUSE)
2005                 {*r = Mono_Posix_Errno_EADDRINUSE; return 0;}
2006 #endif /* ndef EADDRINUSE */
2007 #ifdef EADDRNOTAVAIL
2008         if (x == EADDRNOTAVAIL)
2009                 {*r = Mono_Posix_Errno_EADDRNOTAVAIL; return 0;}
2010 #endif /* ndef EADDRNOTAVAIL */
2011 #ifdef EADV
2012         if (x == EADV)
2013                 {*r = Mono_Posix_Errno_EADV; return 0;}
2014 #endif /* ndef EADV */
2015 #ifdef EAFNOSUPPORT
2016         if (x == EAFNOSUPPORT)
2017                 {*r = Mono_Posix_Errno_EAFNOSUPPORT; return 0;}
2018 #endif /* ndef EAFNOSUPPORT */
2019 #ifdef EAGAIN
2020         if (x == EAGAIN)
2021                 {*r = Mono_Posix_Errno_EAGAIN; return 0;}
2022 #endif /* ndef EAGAIN */
2023 #ifdef EALREADY
2024         if (x == EALREADY)
2025                 {*r = Mono_Posix_Errno_EALREADY; return 0;}
2026 #endif /* ndef EALREADY */
2027 #ifdef EAUTH
2028         if (x == EAUTH)
2029                 {*r = Mono_Posix_Errno_EAUTH; return 0;}
2030 #endif /* ndef EAUTH */
2031 #ifdef EBADARCH
2032         if (x == EBADARCH)
2033                 {*r = Mono_Posix_Errno_EBADARCH; return 0;}
2034 #endif /* ndef EBADARCH */
2035 #ifdef EBADE
2036         if (x == EBADE)
2037                 {*r = Mono_Posix_Errno_EBADE; return 0;}
2038 #endif /* ndef EBADE */
2039 #ifdef EBADEXEC
2040         if (x == EBADEXEC)
2041                 {*r = Mono_Posix_Errno_EBADEXEC; return 0;}
2042 #endif /* ndef EBADEXEC */
2043 #ifdef EBADF
2044         if (x == EBADF)
2045                 {*r = Mono_Posix_Errno_EBADF; return 0;}
2046 #endif /* ndef EBADF */
2047 #ifdef EBADFD
2048         if (x == EBADFD)
2049                 {*r = Mono_Posix_Errno_EBADFD; return 0;}
2050 #endif /* ndef EBADFD */
2051 #ifdef EBADMACHO
2052         if (x == EBADMACHO)
2053                 {*r = Mono_Posix_Errno_EBADMACHO; return 0;}
2054 #endif /* ndef EBADMACHO */
2055 #ifdef EBADMSG
2056         if (x == EBADMSG)
2057                 {*r = Mono_Posix_Errno_EBADMSG; return 0;}
2058 #endif /* ndef EBADMSG */
2059 #ifdef EBADR
2060         if (x == EBADR)
2061                 {*r = Mono_Posix_Errno_EBADR; return 0;}
2062 #endif /* ndef EBADR */
2063 #ifdef EBADRPC
2064         if (x == EBADRPC)
2065                 {*r = Mono_Posix_Errno_EBADRPC; return 0;}
2066 #endif /* ndef EBADRPC */
2067 #ifdef EBADRQC
2068         if (x == EBADRQC)
2069                 {*r = Mono_Posix_Errno_EBADRQC; return 0;}
2070 #endif /* ndef EBADRQC */
2071 #ifdef EBADSLT
2072         if (x == EBADSLT)
2073                 {*r = Mono_Posix_Errno_EBADSLT; return 0;}
2074 #endif /* ndef EBADSLT */
2075 #ifdef EBFONT
2076         if (x == EBFONT)
2077                 {*r = Mono_Posix_Errno_EBFONT; return 0;}
2078 #endif /* ndef EBFONT */
2079 #ifdef EBUSY
2080         if (x == EBUSY)
2081                 {*r = Mono_Posix_Errno_EBUSY; return 0;}
2082 #endif /* ndef EBUSY */
2083 #ifdef ECANCELED
2084         if (x == ECANCELED)
2085                 {*r = Mono_Posix_Errno_ECANCELED; return 0;}
2086 #endif /* ndef ECANCELED */
2087 #ifdef ECHILD
2088         if (x == ECHILD)
2089                 {*r = Mono_Posix_Errno_ECHILD; return 0;}
2090 #endif /* ndef ECHILD */
2091 #ifdef ECHRNG
2092         if (x == ECHRNG)
2093                 {*r = Mono_Posix_Errno_ECHRNG; return 0;}
2094 #endif /* ndef ECHRNG */
2095 #ifdef ECOMM
2096         if (x == ECOMM)
2097                 {*r = Mono_Posix_Errno_ECOMM; return 0;}
2098 #endif /* ndef ECOMM */
2099 #ifdef ECONNABORTED
2100         if (x == ECONNABORTED)
2101                 {*r = Mono_Posix_Errno_ECONNABORTED; return 0;}
2102 #endif /* ndef ECONNABORTED */
2103 #ifdef ECONNREFUSED
2104         if (x == ECONNREFUSED)
2105                 {*r = Mono_Posix_Errno_ECONNREFUSED; return 0;}
2106 #endif /* ndef ECONNREFUSED */
2107 #ifdef ECONNRESET
2108         if (x == ECONNRESET)
2109                 {*r = Mono_Posix_Errno_ECONNRESET; return 0;}
2110 #endif /* ndef ECONNRESET */
2111 #ifdef EDEADLK
2112         if (x == EDEADLK)
2113                 {*r = Mono_Posix_Errno_EDEADLK; return 0;}
2114 #endif /* ndef EDEADLK */
2115 #ifdef EDEADLOCK
2116         if (x == EDEADLOCK)
2117                 {*r = Mono_Posix_Errno_EDEADLOCK; return 0;}
2118 #endif /* ndef EDEADLOCK */
2119 #ifdef EDESTADDRREQ
2120         if (x == EDESTADDRREQ)
2121                 {*r = Mono_Posix_Errno_EDESTADDRREQ; return 0;}
2122 #endif /* ndef EDESTADDRREQ */
2123 #ifdef EDEVERR
2124         if (x == EDEVERR)
2125                 {*r = Mono_Posix_Errno_EDEVERR; return 0;}
2126 #endif /* ndef EDEVERR */
2127 #ifdef EDOM
2128         if (x == EDOM)
2129                 {*r = Mono_Posix_Errno_EDOM; return 0;}
2130 #endif /* ndef EDOM */
2131 #ifdef EDOTDOT
2132         if (x == EDOTDOT)
2133                 {*r = Mono_Posix_Errno_EDOTDOT; return 0;}
2134 #endif /* ndef EDOTDOT */
2135 #ifdef EDQUOT
2136         if (x == EDQUOT)
2137                 {*r = Mono_Posix_Errno_EDQUOT; return 0;}
2138 #endif /* ndef EDQUOT */
2139 #ifdef EEXIST
2140         if (x == EEXIST)
2141                 {*r = Mono_Posix_Errno_EEXIST; return 0;}
2142 #endif /* ndef EEXIST */
2143 #ifdef EFAULT
2144         if (x == EFAULT)
2145                 {*r = Mono_Posix_Errno_EFAULT; return 0;}
2146 #endif /* ndef EFAULT */
2147 #ifdef EFBIG
2148         if (x == EFBIG)
2149                 {*r = Mono_Posix_Errno_EFBIG; return 0;}
2150 #endif /* ndef EFBIG */
2151 #ifdef EFTYPE
2152         if (x == EFTYPE)
2153                 {*r = Mono_Posix_Errno_EFTYPE; return 0;}
2154 #endif /* ndef EFTYPE */
2155 #ifdef EHOSTDOWN
2156         if (x == EHOSTDOWN)
2157                 {*r = Mono_Posix_Errno_EHOSTDOWN; return 0;}
2158 #endif /* ndef EHOSTDOWN */
2159 #ifdef EHOSTUNREACH
2160         if (x == EHOSTUNREACH)
2161                 {*r = Mono_Posix_Errno_EHOSTUNREACH; return 0;}
2162 #endif /* ndef EHOSTUNREACH */
2163 #ifdef EIDRM
2164         if (x == EIDRM)
2165                 {*r = Mono_Posix_Errno_EIDRM; return 0;}
2166 #endif /* ndef EIDRM */
2167 #ifdef EILSEQ
2168         if (x == EILSEQ)
2169                 {*r = Mono_Posix_Errno_EILSEQ; return 0;}
2170 #endif /* ndef EILSEQ */
2171 #ifdef EINPROGRESS
2172         if (x == EINPROGRESS)
2173                 {*r = Mono_Posix_Errno_EINPROGRESS; return 0;}
2174 #endif /* ndef EINPROGRESS */
2175 #ifdef EINTR
2176         if (x == EINTR)
2177                 {*r = Mono_Posix_Errno_EINTR; return 0;}
2178 #endif /* ndef EINTR */
2179 #ifdef EINVAL
2180         if (x == EINVAL)
2181                 {*r = Mono_Posix_Errno_EINVAL; return 0;}
2182 #endif /* ndef EINVAL */
2183 #ifdef EIO
2184         if (x == EIO)
2185                 {*r = Mono_Posix_Errno_EIO; return 0;}
2186 #endif /* ndef EIO */
2187 #ifdef EISCONN
2188         if (x == EISCONN)
2189                 {*r = Mono_Posix_Errno_EISCONN; return 0;}
2190 #endif /* ndef EISCONN */
2191 #ifdef EISDIR
2192         if (x == EISDIR)
2193                 {*r = Mono_Posix_Errno_EISDIR; return 0;}
2194 #endif /* ndef EISDIR */
2195 #ifdef EISNAM
2196         if (x == EISNAM)
2197                 {*r = Mono_Posix_Errno_EISNAM; return 0;}
2198 #endif /* ndef EISNAM */
2199 #ifdef EKEYEXPIRED
2200         if (x == EKEYEXPIRED)
2201                 {*r = Mono_Posix_Errno_EKEYEXPIRED; return 0;}
2202 #endif /* ndef EKEYEXPIRED */
2203 #ifdef EKEYREJECTED
2204         if (x == EKEYREJECTED)
2205                 {*r = Mono_Posix_Errno_EKEYREJECTED; return 0;}
2206 #endif /* ndef EKEYREJECTED */
2207 #ifdef EKEYREVOKED
2208         if (x == EKEYREVOKED)
2209                 {*r = Mono_Posix_Errno_EKEYREVOKED; return 0;}
2210 #endif /* ndef EKEYREVOKED */
2211 #ifdef EL2HLT
2212         if (x == EL2HLT)
2213                 {*r = Mono_Posix_Errno_EL2HLT; return 0;}
2214 #endif /* ndef EL2HLT */
2215 #ifdef EL2NSYNC
2216         if (x == EL2NSYNC)
2217                 {*r = Mono_Posix_Errno_EL2NSYNC; return 0;}
2218 #endif /* ndef EL2NSYNC */
2219 #ifdef EL3HLT
2220         if (x == EL3HLT)
2221                 {*r = Mono_Posix_Errno_EL3HLT; return 0;}
2222 #endif /* ndef EL3HLT */
2223 #ifdef EL3RST
2224         if (x == EL3RST)
2225                 {*r = Mono_Posix_Errno_EL3RST; return 0;}
2226 #endif /* ndef EL3RST */
2227 #ifdef ELIBACC
2228         if (x == ELIBACC)
2229                 {*r = Mono_Posix_Errno_ELIBACC; return 0;}
2230 #endif /* ndef ELIBACC */
2231 #ifdef ELIBBAD
2232         if (x == ELIBBAD)
2233                 {*r = Mono_Posix_Errno_ELIBBAD; return 0;}
2234 #endif /* ndef ELIBBAD */
2235 #ifdef ELIBEXEC
2236         if (x == ELIBEXEC)
2237                 {*r = Mono_Posix_Errno_ELIBEXEC; return 0;}
2238 #endif /* ndef ELIBEXEC */
2239 #ifdef ELIBMAX
2240         if (x == ELIBMAX)
2241                 {*r = Mono_Posix_Errno_ELIBMAX; return 0;}
2242 #endif /* ndef ELIBMAX */
2243 #ifdef ELIBSCN
2244         if (x == ELIBSCN)
2245                 {*r = Mono_Posix_Errno_ELIBSCN; return 0;}
2246 #endif /* ndef ELIBSCN */
2247 #ifdef ELNRNG
2248         if (x == ELNRNG)
2249                 {*r = Mono_Posix_Errno_ELNRNG; return 0;}
2250 #endif /* ndef ELNRNG */
2251 #ifdef ELOOP
2252         if (x == ELOOP)
2253                 {*r = Mono_Posix_Errno_ELOOP; return 0;}
2254 #endif /* ndef ELOOP */
2255 #ifdef EMEDIUMTYPE
2256         if (x == EMEDIUMTYPE)
2257                 {*r = Mono_Posix_Errno_EMEDIUMTYPE; return 0;}
2258 #endif /* ndef EMEDIUMTYPE */
2259 #ifdef EMFILE
2260         if (x == EMFILE)
2261                 {*r = Mono_Posix_Errno_EMFILE; return 0;}
2262 #endif /* ndef EMFILE */
2263 #ifdef EMLINK
2264         if (x == EMLINK)
2265                 {*r = Mono_Posix_Errno_EMLINK; return 0;}
2266 #endif /* ndef EMLINK */
2267 #ifdef EMSGSIZE
2268         if (x == EMSGSIZE)
2269                 {*r = Mono_Posix_Errno_EMSGSIZE; return 0;}
2270 #endif /* ndef EMSGSIZE */
2271 #ifdef EMULTIHOP
2272         if (x == EMULTIHOP)
2273                 {*r = Mono_Posix_Errno_EMULTIHOP; return 0;}
2274 #endif /* ndef EMULTIHOP */
2275 #ifdef ENAMETOOLONG
2276         if (x == ENAMETOOLONG)
2277                 {*r = Mono_Posix_Errno_ENAMETOOLONG; return 0;}
2278 #endif /* ndef ENAMETOOLONG */
2279 #ifdef ENAVAIL
2280         if (x == ENAVAIL)
2281                 {*r = Mono_Posix_Errno_ENAVAIL; return 0;}
2282 #endif /* ndef ENAVAIL */
2283 #ifdef ENEEDAUTH
2284         if (x == ENEEDAUTH)
2285                 {*r = Mono_Posix_Errno_ENEEDAUTH; return 0;}
2286 #endif /* ndef ENEEDAUTH */
2287 #ifdef ENETDOWN
2288         if (x == ENETDOWN)
2289                 {*r = Mono_Posix_Errno_ENETDOWN; return 0;}
2290 #endif /* ndef ENETDOWN */
2291 #ifdef ENETRESET
2292         if (x == ENETRESET)
2293                 {*r = Mono_Posix_Errno_ENETRESET; return 0;}
2294 #endif /* ndef ENETRESET */
2295 #ifdef ENETUNREACH
2296         if (x == ENETUNREACH)
2297                 {*r = Mono_Posix_Errno_ENETUNREACH; return 0;}
2298 #endif /* ndef ENETUNREACH */
2299 #ifdef ENFILE
2300         if (x == ENFILE)
2301                 {*r = Mono_Posix_Errno_ENFILE; return 0;}
2302 #endif /* ndef ENFILE */
2303 #ifdef ENOANO
2304         if (x == ENOANO)
2305                 {*r = Mono_Posix_Errno_ENOANO; return 0;}
2306 #endif /* ndef ENOANO */
2307 #ifdef ENOATTR
2308         if (x == ENOATTR)
2309                 {*r = Mono_Posix_Errno_ENOATTR; return 0;}
2310 #endif /* ndef ENOATTR */
2311 #ifdef ENOBUFS
2312         if (x == ENOBUFS)
2313                 {*r = Mono_Posix_Errno_ENOBUFS; return 0;}
2314 #endif /* ndef ENOBUFS */
2315 #ifdef ENOCSI
2316         if (x == ENOCSI)
2317                 {*r = Mono_Posix_Errno_ENOCSI; return 0;}
2318 #endif /* ndef ENOCSI */
2319 #ifdef ENODATA
2320         if (x == ENODATA)
2321                 {*r = Mono_Posix_Errno_ENODATA; return 0;}
2322 #endif /* ndef ENODATA */
2323 #ifdef ENODEV
2324         if (x == ENODEV)
2325                 {*r = Mono_Posix_Errno_ENODEV; return 0;}
2326 #endif /* ndef ENODEV */
2327 #ifdef ENOENT
2328         if (x == ENOENT)
2329                 {*r = Mono_Posix_Errno_ENOENT; return 0;}
2330 #endif /* ndef ENOENT */
2331 #ifdef ENOEXEC
2332         if (x == ENOEXEC)
2333                 {*r = Mono_Posix_Errno_ENOEXEC; return 0;}
2334 #endif /* ndef ENOEXEC */
2335 #ifdef ENOKEY
2336         if (x == ENOKEY)
2337                 {*r = Mono_Posix_Errno_ENOKEY; return 0;}
2338 #endif /* ndef ENOKEY */
2339 #ifdef ENOLCK
2340         if (x == ENOLCK)
2341                 {*r = Mono_Posix_Errno_ENOLCK; return 0;}
2342 #endif /* ndef ENOLCK */
2343 #ifdef ENOLINK
2344         if (x == ENOLINK)
2345                 {*r = Mono_Posix_Errno_ENOLINK; return 0;}
2346 #endif /* ndef ENOLINK */
2347 #ifdef ENOMEDIUM
2348         if (x == ENOMEDIUM)
2349                 {*r = Mono_Posix_Errno_ENOMEDIUM; return 0;}
2350 #endif /* ndef ENOMEDIUM */
2351 #ifdef ENOMEM
2352         if (x == ENOMEM)
2353                 {*r = Mono_Posix_Errno_ENOMEM; return 0;}
2354 #endif /* ndef ENOMEM */
2355 #ifdef ENOMSG
2356         if (x == ENOMSG)
2357                 {*r = Mono_Posix_Errno_ENOMSG; return 0;}
2358 #endif /* ndef ENOMSG */
2359 #ifdef ENONET
2360         if (x == ENONET)
2361                 {*r = Mono_Posix_Errno_ENONET; return 0;}
2362 #endif /* ndef ENONET */
2363 #ifdef ENOPKG
2364         if (x == ENOPKG)
2365                 {*r = Mono_Posix_Errno_ENOPKG; return 0;}
2366 #endif /* ndef ENOPKG */
2367 #ifdef ENOPOLICY
2368         if (x == ENOPOLICY)
2369                 {*r = Mono_Posix_Errno_ENOPOLICY; return 0;}
2370 #endif /* ndef ENOPOLICY */
2371 #ifdef ENOPROTOOPT
2372         if (x == ENOPROTOOPT)
2373                 {*r = Mono_Posix_Errno_ENOPROTOOPT; return 0;}
2374 #endif /* ndef ENOPROTOOPT */
2375 #ifdef ENOSPC
2376         if (x == ENOSPC)
2377                 {*r = Mono_Posix_Errno_ENOSPC; return 0;}
2378 #endif /* ndef ENOSPC */
2379 #ifdef ENOSR
2380         if (x == ENOSR)
2381                 {*r = Mono_Posix_Errno_ENOSR; return 0;}
2382 #endif /* ndef ENOSR */
2383 #ifdef ENOSTR
2384         if (x == ENOSTR)
2385                 {*r = Mono_Posix_Errno_ENOSTR; return 0;}
2386 #endif /* ndef ENOSTR */
2387 #ifdef ENOSYS
2388         if (x == ENOSYS)
2389                 {*r = Mono_Posix_Errno_ENOSYS; return 0;}
2390 #endif /* ndef ENOSYS */
2391 #ifdef ENOTBLK
2392         if (x == ENOTBLK)
2393                 {*r = Mono_Posix_Errno_ENOTBLK; return 0;}
2394 #endif /* ndef ENOTBLK */
2395 #ifdef ENOTCONN
2396         if (x == ENOTCONN)
2397                 {*r = Mono_Posix_Errno_ENOTCONN; return 0;}
2398 #endif /* ndef ENOTCONN */
2399 #ifdef ENOTDIR
2400         if (x == ENOTDIR)
2401                 {*r = Mono_Posix_Errno_ENOTDIR; return 0;}
2402 #endif /* ndef ENOTDIR */
2403 #ifdef ENOTEMPTY
2404         if (x == ENOTEMPTY)
2405                 {*r = Mono_Posix_Errno_ENOTEMPTY; return 0;}
2406 #endif /* ndef ENOTEMPTY */
2407 #ifdef ENOTNAM
2408         if (x == ENOTNAM)
2409                 {*r = Mono_Posix_Errno_ENOTNAM; return 0;}
2410 #endif /* ndef ENOTNAM */
2411 #ifdef ENOTRECOVERABLE
2412         if (x == ENOTRECOVERABLE)
2413                 {*r = Mono_Posix_Errno_ENOTRECOVERABLE; return 0;}
2414 #endif /* ndef ENOTRECOVERABLE */
2415 #ifdef ENOTSOCK
2416         if (x == ENOTSOCK)
2417                 {*r = Mono_Posix_Errno_ENOTSOCK; return 0;}
2418 #endif /* ndef ENOTSOCK */
2419 #ifdef ENOTTY
2420         if (x == ENOTTY)
2421                 {*r = Mono_Posix_Errno_ENOTTY; return 0;}
2422 #endif /* ndef ENOTTY */
2423 #ifdef ENOTUNIQ
2424         if (x == ENOTUNIQ)
2425                 {*r = Mono_Posix_Errno_ENOTUNIQ; return 0;}
2426 #endif /* ndef ENOTUNIQ */
2427 #ifdef ENXIO
2428         if (x == ENXIO)
2429                 {*r = Mono_Posix_Errno_ENXIO; return 0;}
2430 #endif /* ndef ENXIO */
2431 #ifdef EOPNOTSUPP
2432         if (x == EOPNOTSUPP)
2433                 {*r = Mono_Posix_Errno_EOPNOTSUPP; return 0;}
2434 #endif /* ndef EOPNOTSUPP */
2435 #ifdef EOVERFLOW
2436         if (x == EOVERFLOW)
2437                 {*r = Mono_Posix_Errno_EOVERFLOW; return 0;}
2438 #endif /* ndef EOVERFLOW */
2439 #ifdef EOWNERDEAD
2440         if (x == EOWNERDEAD)
2441                 {*r = Mono_Posix_Errno_EOWNERDEAD; return 0;}
2442 #endif /* ndef EOWNERDEAD */
2443 #ifdef EPERM
2444         if (x == EPERM)
2445                 {*r = Mono_Posix_Errno_EPERM; return 0;}
2446 #endif /* ndef EPERM */
2447 #ifdef EPFNOSUPPORT
2448         if (x == EPFNOSUPPORT)
2449                 {*r = Mono_Posix_Errno_EPFNOSUPPORT; return 0;}
2450 #endif /* ndef EPFNOSUPPORT */
2451 #ifdef EPIPE
2452         if (x == EPIPE)
2453                 {*r = Mono_Posix_Errno_EPIPE; return 0;}
2454 #endif /* ndef EPIPE */
2455 #ifdef EPROCLIM
2456         if (x == EPROCLIM)
2457                 {*r = Mono_Posix_Errno_EPROCLIM; return 0;}
2458 #endif /* ndef EPROCLIM */
2459 #ifdef EPROCUNAVAIL
2460         if (x == EPROCUNAVAIL)
2461                 {*r = Mono_Posix_Errno_EPROCUNAVAIL; return 0;}
2462 #endif /* ndef EPROCUNAVAIL */
2463 #ifdef EPROGMISMATCH
2464         if (x == EPROGMISMATCH)
2465                 {*r = Mono_Posix_Errno_EPROGMISMATCH; return 0;}
2466 #endif /* ndef EPROGMISMATCH */
2467 #ifdef EPROGUNAVAIL
2468         if (x == EPROGUNAVAIL)
2469                 {*r = Mono_Posix_Errno_EPROGUNAVAIL; return 0;}
2470 #endif /* ndef EPROGUNAVAIL */
2471 #ifdef EPROTO
2472         if (x == EPROTO)
2473                 {*r = Mono_Posix_Errno_EPROTO; return 0;}
2474 #endif /* ndef EPROTO */
2475 #ifdef EPROTONOSUPPORT
2476         if (x == EPROTONOSUPPORT)
2477                 {*r = Mono_Posix_Errno_EPROTONOSUPPORT; return 0;}
2478 #endif /* ndef EPROTONOSUPPORT */
2479 #ifdef EPROTOTYPE
2480         if (x == EPROTOTYPE)
2481                 {*r = Mono_Posix_Errno_EPROTOTYPE; return 0;}
2482 #endif /* ndef EPROTOTYPE */
2483 #ifdef EPWROFF
2484         if (x == EPWROFF)
2485                 {*r = Mono_Posix_Errno_EPWROFF; return 0;}
2486 #endif /* ndef EPWROFF */
2487 #ifdef ERANGE
2488         if (x == ERANGE)
2489                 {*r = Mono_Posix_Errno_ERANGE; return 0;}
2490 #endif /* ndef ERANGE */
2491 #ifdef EREMCHG
2492         if (x == EREMCHG)
2493                 {*r = Mono_Posix_Errno_EREMCHG; return 0;}
2494 #endif /* ndef EREMCHG */
2495 #ifdef EREMOTE
2496         if (x == EREMOTE)
2497                 {*r = Mono_Posix_Errno_EREMOTE; return 0;}
2498 #endif /* ndef EREMOTE */
2499 #ifdef EREMOTEIO
2500         if (x == EREMOTEIO)
2501                 {*r = Mono_Posix_Errno_EREMOTEIO; return 0;}
2502 #endif /* ndef EREMOTEIO */
2503 #ifdef ERESTART
2504         if (x == ERESTART)
2505                 {*r = Mono_Posix_Errno_ERESTART; return 0;}
2506 #endif /* ndef ERESTART */
2507 #ifdef EROFS
2508         if (x == EROFS)
2509                 {*r = Mono_Posix_Errno_EROFS; return 0;}
2510 #endif /* ndef EROFS */
2511 #ifdef ERPCMISMATCH
2512         if (x == ERPCMISMATCH)
2513                 {*r = Mono_Posix_Errno_ERPCMISMATCH; return 0;}
2514 #endif /* ndef ERPCMISMATCH */
2515 #ifdef ESHLIBVERS
2516         if (x == ESHLIBVERS)
2517                 {*r = Mono_Posix_Errno_ESHLIBVERS; return 0;}
2518 #endif /* ndef ESHLIBVERS */
2519 #ifdef ESHUTDOWN
2520         if (x == ESHUTDOWN)
2521                 {*r = Mono_Posix_Errno_ESHUTDOWN; return 0;}
2522 #endif /* ndef ESHUTDOWN */
2523 #ifdef ESOCKTNOSUPPORT
2524         if (x == ESOCKTNOSUPPORT)
2525                 {*r = Mono_Posix_Errno_ESOCKTNOSUPPORT; return 0;}
2526 #endif /* ndef ESOCKTNOSUPPORT */
2527 #ifdef ESPIPE
2528         if (x == ESPIPE)
2529                 {*r = Mono_Posix_Errno_ESPIPE; return 0;}
2530 #endif /* ndef ESPIPE */
2531 #ifdef ESRCH
2532         if (x == ESRCH)
2533                 {*r = Mono_Posix_Errno_ESRCH; return 0;}
2534 #endif /* ndef ESRCH */
2535 #ifdef ESRMNT
2536         if (x == ESRMNT)
2537                 {*r = Mono_Posix_Errno_ESRMNT; return 0;}
2538 #endif /* ndef ESRMNT */
2539 #ifdef ESTALE
2540         if (x == ESTALE)
2541                 {*r = Mono_Posix_Errno_ESTALE; return 0;}
2542 #endif /* ndef ESTALE */
2543 #ifdef ESTRPIPE
2544         if (x == ESTRPIPE)
2545                 {*r = Mono_Posix_Errno_ESTRPIPE; return 0;}
2546 #endif /* ndef ESTRPIPE */
2547 #ifdef ETIME
2548         if (x == ETIME)
2549                 {*r = Mono_Posix_Errno_ETIME; return 0;}
2550 #endif /* ndef ETIME */
2551 #ifdef ETIMEDOUT
2552         if (x == ETIMEDOUT)
2553                 {*r = Mono_Posix_Errno_ETIMEDOUT; return 0;}
2554 #endif /* ndef ETIMEDOUT */
2555 #ifdef ETOOMANYREFS
2556         if (x == ETOOMANYREFS)
2557                 {*r = Mono_Posix_Errno_ETOOMANYREFS; return 0;}
2558 #endif /* ndef ETOOMANYREFS */
2559 #ifdef ETXTBSY
2560         if (x == ETXTBSY)
2561                 {*r = Mono_Posix_Errno_ETXTBSY; return 0;}
2562 #endif /* ndef ETXTBSY */
2563 #ifdef EUCLEAN
2564         if (x == EUCLEAN)
2565                 {*r = Mono_Posix_Errno_EUCLEAN; return 0;}
2566 #endif /* ndef EUCLEAN */
2567 #ifdef EUNATCH
2568         if (x == EUNATCH)
2569                 {*r = Mono_Posix_Errno_EUNATCH; return 0;}
2570 #endif /* ndef EUNATCH */
2571 #ifdef EUSERS
2572         if (x == EUSERS)
2573                 {*r = Mono_Posix_Errno_EUSERS; return 0;}
2574 #endif /* ndef EUSERS */
2575 #ifdef EWOULDBLOCK
2576         if (x == EWOULDBLOCK)
2577                 {*r = Mono_Posix_Errno_EWOULDBLOCK; return 0;}
2578 #endif /* ndef EWOULDBLOCK */
2579 #ifdef EXDEV
2580         if (x == EXDEV)
2581                 {*r = Mono_Posix_Errno_EXDEV; return 0;}
2582 #endif /* ndef EXDEV */
2583 #ifdef EXFULL
2584         if (x == EXFULL)
2585                 {*r = Mono_Posix_Errno_EXFULL; return 0;}
2586 #endif /* ndef EXFULL */
2587         errno = EINVAL; return -1;
2588 }
2589
2590 int Mono_Posix_FromFcntlCommand (int x, int *r)
2591 {
2592         *r = 0;
2593         if (x == Mono_Posix_FcntlCommand_F_DUPFD)
2594 #ifdef F_DUPFD
2595                 {*r = F_DUPFD; return 0;}
2596 #else /* def F_DUPFD */
2597                 {errno = EINVAL; return -1;}
2598 #endif /* ndef F_DUPFD */
2599         if (x == Mono_Posix_FcntlCommand_F_GETFD)
2600 #ifdef F_GETFD
2601                 {*r = F_GETFD; return 0;}
2602 #else /* def F_GETFD */
2603                 {errno = EINVAL; return -1;}
2604 #endif /* ndef F_GETFD */
2605         if (x == Mono_Posix_FcntlCommand_F_GETFL)
2606 #ifdef F_GETFL
2607                 {*r = F_GETFL; return 0;}
2608 #else /* def F_GETFL */
2609                 {errno = EINVAL; return -1;}
2610 #endif /* ndef F_GETFL */
2611         if (x == Mono_Posix_FcntlCommand_F_GETLEASE)
2612 #ifdef F_GETLEASE
2613                 {*r = F_GETLEASE; return 0;}
2614 #else /* def F_GETLEASE */
2615                 {errno = EINVAL; return -1;}
2616 #endif /* ndef F_GETLEASE */
2617         if (x == Mono_Posix_FcntlCommand_F_GETLK)
2618 #ifdef F_GETLK
2619                 {*r = F_GETLK; return 0;}
2620 #else /* def F_GETLK */
2621                 {errno = EINVAL; return -1;}
2622 #endif /* ndef F_GETLK */
2623         if (x == Mono_Posix_FcntlCommand_F_GETOWN)
2624 #ifdef F_GETOWN
2625                 {*r = F_GETOWN; return 0;}
2626 #else /* def F_GETOWN */
2627                 {errno = EINVAL; return -1;}
2628 #endif /* ndef F_GETOWN */
2629         if (x == Mono_Posix_FcntlCommand_F_GETSIG)
2630 #ifdef F_GETSIG
2631                 {*r = F_GETSIG; return 0;}
2632 #else /* def F_GETSIG */
2633                 {errno = EINVAL; return -1;}
2634 #endif /* ndef F_GETSIG */
2635         if (x == Mono_Posix_FcntlCommand_F_NOCACHE)
2636 #ifdef F_NOCACHE
2637                 {*r = F_NOCACHE; return 0;}
2638 #else /* def F_NOCACHE */
2639                 {errno = EINVAL; return -1;}
2640 #endif /* ndef F_NOCACHE */
2641         if (x == Mono_Posix_FcntlCommand_F_NOTIFY)
2642 #ifdef F_NOTIFY
2643                 {*r = F_NOTIFY; return 0;}
2644 #else /* def F_NOTIFY */
2645                 {errno = EINVAL; return -1;}
2646 #endif /* ndef F_NOTIFY */
2647         if (x == Mono_Posix_FcntlCommand_F_SETFD)
2648 #ifdef F_SETFD
2649                 {*r = F_SETFD; return 0;}
2650 #else /* def F_SETFD */
2651                 {errno = EINVAL; return -1;}
2652 #endif /* ndef F_SETFD */
2653         if (x == Mono_Posix_FcntlCommand_F_SETFL)
2654 #ifdef F_SETFL
2655                 {*r = F_SETFL; return 0;}
2656 #else /* def F_SETFL */
2657                 {errno = EINVAL; return -1;}
2658 #endif /* ndef F_SETFL */
2659         if (x == Mono_Posix_FcntlCommand_F_SETLEASE)
2660 #ifdef F_SETLEASE
2661                 {*r = F_SETLEASE; return 0;}
2662 #else /* def F_SETLEASE */
2663                 {errno = EINVAL; return -1;}
2664 #endif /* ndef F_SETLEASE */
2665         if (x == Mono_Posix_FcntlCommand_F_SETLK)
2666 #ifdef F_SETLK
2667                 {*r = F_SETLK; return 0;}
2668 #else /* def F_SETLK */
2669                 {errno = EINVAL; return -1;}
2670 #endif /* ndef F_SETLK */
2671         if (x == Mono_Posix_FcntlCommand_F_SETLKW)
2672 #ifdef F_SETLKW
2673                 {*r = F_SETLKW; return 0;}
2674 #else /* def F_SETLKW */
2675                 {errno = EINVAL; return -1;}
2676 #endif /* ndef F_SETLKW */
2677         if (x == Mono_Posix_FcntlCommand_F_SETOWN)
2678 #ifdef F_SETOWN
2679                 {*r = F_SETOWN; return 0;}
2680 #else /* def F_SETOWN */
2681                 {errno = EINVAL; return -1;}
2682 #endif /* ndef F_SETOWN */
2683         if (x == Mono_Posix_FcntlCommand_F_SETSIG)
2684 #ifdef F_SETSIG
2685                 {*r = F_SETSIG; return 0;}
2686 #else /* def F_SETSIG */
2687                 {errno = EINVAL; return -1;}
2688 #endif /* ndef F_SETSIG */
2689         if (x == 0)
2690                 return 0;
2691         errno = EINVAL; return -1;
2692 }
2693
2694 int Mono_Posix_ToFcntlCommand (int x, int *r)
2695 {
2696         *r = 0;
2697         if (x == 0)
2698                 return 0;
2699 #ifdef F_DUPFD
2700         if (x == F_DUPFD)
2701                 {*r = Mono_Posix_FcntlCommand_F_DUPFD; return 0;}
2702 #endif /* ndef F_DUPFD */
2703 #ifdef F_GETFD
2704         if (x == F_GETFD)
2705                 {*r = Mono_Posix_FcntlCommand_F_GETFD; return 0;}
2706 #endif /* ndef F_GETFD */
2707 #ifdef F_GETFL
2708         if (x == F_GETFL)
2709                 {*r = Mono_Posix_FcntlCommand_F_GETFL; return 0;}
2710 #endif /* ndef F_GETFL */
2711 #ifdef F_GETLEASE
2712         if (x == F_GETLEASE)
2713                 {*r = Mono_Posix_FcntlCommand_F_GETLEASE; return 0;}
2714 #endif /* ndef F_GETLEASE */
2715 #ifdef F_GETLK
2716         if (x == F_GETLK)
2717                 {*r = Mono_Posix_FcntlCommand_F_GETLK; return 0;}
2718 #endif /* ndef F_GETLK */
2719 #ifdef F_GETOWN
2720         if (x == F_GETOWN)
2721                 {*r = Mono_Posix_FcntlCommand_F_GETOWN; return 0;}
2722 #endif /* ndef F_GETOWN */
2723 #ifdef F_GETSIG
2724         if (x == F_GETSIG)
2725                 {*r = Mono_Posix_FcntlCommand_F_GETSIG; return 0;}
2726 #endif /* ndef F_GETSIG */
2727 #ifdef F_NOCACHE
2728         if (x == F_NOCACHE)
2729                 {*r = Mono_Posix_FcntlCommand_F_NOCACHE; return 0;}
2730 #endif /* ndef F_NOCACHE */
2731 #ifdef F_NOTIFY
2732         if (x == F_NOTIFY)
2733                 {*r = Mono_Posix_FcntlCommand_F_NOTIFY; return 0;}
2734 #endif /* ndef F_NOTIFY */
2735 #ifdef F_SETFD
2736         if (x == F_SETFD)
2737                 {*r = Mono_Posix_FcntlCommand_F_SETFD; return 0;}
2738 #endif /* ndef F_SETFD */
2739 #ifdef F_SETFL
2740         if (x == F_SETFL)
2741                 {*r = Mono_Posix_FcntlCommand_F_SETFL; return 0;}
2742 #endif /* ndef F_SETFL */
2743 #ifdef F_SETLEASE
2744         if (x == F_SETLEASE)
2745                 {*r = Mono_Posix_FcntlCommand_F_SETLEASE; return 0;}
2746 #endif /* ndef F_SETLEASE */
2747 #ifdef F_SETLK
2748         if (x == F_SETLK)
2749                 {*r = Mono_Posix_FcntlCommand_F_SETLK; return 0;}
2750 #endif /* ndef F_SETLK */
2751 #ifdef F_SETLKW
2752         if (x == F_SETLKW)
2753                 {*r = Mono_Posix_FcntlCommand_F_SETLKW; return 0;}
2754 #endif /* ndef F_SETLKW */
2755 #ifdef F_SETOWN
2756         if (x == F_SETOWN)
2757                 {*r = Mono_Posix_FcntlCommand_F_SETOWN; return 0;}
2758 #endif /* ndef F_SETOWN */
2759 #ifdef F_SETSIG
2760         if (x == F_SETSIG)
2761                 {*r = Mono_Posix_FcntlCommand_F_SETSIG; return 0;}
2762 #endif /* ndef F_SETSIG */
2763         errno = EINVAL; return -1;
2764 }
2765
2766 int Mono_Posix_FromFilePermissions (unsigned int x, unsigned int *r)
2767 {
2768         *r = 0;
2769         if ((x & Mono_Posix_FilePermissions_ACCESSPERMS) == Mono_Posix_FilePermissions_ACCESSPERMS)
2770 #ifdef ACCESSPERMS
2771                 *r |= ACCESSPERMS;
2772 #else /* def ACCESSPERMS */
2773                 {/* Ignoring Mono_Posix_FilePermissions_ACCESSPERMS, as it is constructed from other values */}
2774 #endif /* ndef ACCESSPERMS */
2775         if ((x & Mono_Posix_FilePermissions_ALLPERMS) == Mono_Posix_FilePermissions_ALLPERMS)
2776 #ifdef ALLPERMS
2777                 *r |= ALLPERMS;
2778 #else /* def ALLPERMS */
2779                 {/* Ignoring Mono_Posix_FilePermissions_ALLPERMS, as it is constructed from other values */}
2780 #endif /* ndef ALLPERMS */
2781         if ((x & Mono_Posix_FilePermissions_DEFFILEMODE) == Mono_Posix_FilePermissions_DEFFILEMODE)
2782 #ifdef DEFFILEMODE
2783                 *r |= DEFFILEMODE;
2784 #else /* def DEFFILEMODE */
2785                 {/* Ignoring Mono_Posix_FilePermissions_DEFFILEMODE, as it is constructed from other values */}
2786 #endif /* ndef DEFFILEMODE */
2787         if ((x & Mono_Posix_FilePermissions_S_IFMT) == Mono_Posix_FilePermissions_S_IFBLK)
2788 #ifdef S_IFBLK
2789                 *r |= S_IFBLK;
2790 #else /* def S_IFBLK */
2791                 {errno = EINVAL; return -1;}
2792 #endif /* ndef S_IFBLK */
2793         if ((x & Mono_Posix_FilePermissions_S_IFMT) == Mono_Posix_FilePermissions_S_IFCHR)
2794 #ifdef S_IFCHR
2795                 *r |= S_IFCHR;
2796 #else /* def S_IFCHR */
2797                 {errno = EINVAL; return -1;}
2798 #endif /* ndef S_IFCHR */
2799         if ((x & Mono_Posix_FilePermissions_S_IFMT) == Mono_Posix_FilePermissions_S_IFDIR)
2800 #ifdef S_IFDIR
2801                 *r |= S_IFDIR;
2802 #else /* def S_IFDIR */
2803                 {errno = EINVAL; return -1;}
2804 #endif /* ndef S_IFDIR */
2805         if ((x & Mono_Posix_FilePermissions_S_IFMT) == Mono_Posix_FilePermissions_S_IFIFO)
2806 #ifdef S_IFIFO
2807                 *r |= S_IFIFO;
2808 #else /* def S_IFIFO */
2809                 {errno = EINVAL; return -1;}
2810 #endif /* ndef S_IFIFO */
2811         if ((x & Mono_Posix_FilePermissions_S_IFMT) == Mono_Posix_FilePermissions_S_IFLNK)
2812 #ifdef S_IFLNK
2813                 *r |= S_IFLNK;
2814 #else /* def S_IFLNK */
2815                 {errno = EINVAL; return -1;}
2816 #endif /* ndef S_IFLNK */
2817         if ((x & Mono_Posix_FilePermissions_S_IFMT) == Mono_Posix_FilePermissions_S_IFMT)
2818 #ifdef S_IFMT
2819                 *r |= S_IFMT;
2820 #else /* def S_IFMT */
2821                 {/* Ignoring Mono_Posix_FilePermissions_S_IFMT, as it is constructed from other values */}
2822 #endif /* ndef S_IFMT */
2823         if ((x & Mono_Posix_FilePermissions_S_IFMT) == Mono_Posix_FilePermissions_S_IFREG)
2824 #ifdef S_IFREG
2825                 *r |= S_IFREG;
2826 #else /* def S_IFREG */
2827                 {errno = EINVAL; return -1;}
2828 #endif /* ndef S_IFREG */
2829         if ((x & Mono_Posix_FilePermissions_S_IFMT) == Mono_Posix_FilePermissions_S_IFSOCK)
2830 #ifdef S_IFSOCK
2831                 *r |= S_IFSOCK;
2832 #else /* def S_IFSOCK */
2833                 {errno = EINVAL; return -1;}
2834 #endif /* ndef S_IFSOCK */
2835         if ((x & Mono_Posix_FilePermissions_S_IRGRP) == Mono_Posix_FilePermissions_S_IRGRP)
2836 #ifdef S_IRGRP
2837                 *r |= S_IRGRP;
2838 #else /* def S_IRGRP */
2839                 {errno = EINVAL; return -1;}
2840 #endif /* ndef S_IRGRP */
2841         if ((x & Mono_Posix_FilePermissions_S_IROTH) == Mono_Posix_FilePermissions_S_IROTH)
2842 #ifdef S_IROTH
2843                 *r |= S_IROTH;
2844 #else /* def S_IROTH */
2845                 {errno = EINVAL; return -1;}
2846 #endif /* ndef S_IROTH */
2847         if ((x & Mono_Posix_FilePermissions_S_IRUSR) == Mono_Posix_FilePermissions_S_IRUSR)
2848 #ifdef S_IRUSR
2849                 *r |= S_IRUSR;
2850 #else /* def S_IRUSR */
2851                 {errno = EINVAL; return -1;}
2852 #endif /* ndef S_IRUSR */
2853         if ((x & Mono_Posix_FilePermissions_S_IRWXG) == Mono_Posix_FilePermissions_S_IRWXG)
2854 #ifdef S_IRWXG
2855                 *r |= S_IRWXG;
2856 #else /* def S_IRWXG */
2857                 {/* Ignoring Mono_Posix_FilePermissions_S_IRWXG, as it is constructed from other values */}
2858 #endif /* ndef S_IRWXG */
2859         if ((x & Mono_Posix_FilePermissions_S_IRWXO) == Mono_Posix_FilePermissions_S_IRWXO)
2860 #ifdef S_IRWXO
2861                 *r |= S_IRWXO;
2862 #else /* def S_IRWXO */
2863                 {/* Ignoring Mono_Posix_FilePermissions_S_IRWXO, as it is constructed from other values */}
2864 #endif /* ndef S_IRWXO */
2865         if ((x & Mono_Posix_FilePermissions_S_IRWXU) == Mono_Posix_FilePermissions_S_IRWXU)
2866 #ifdef S_IRWXU
2867                 *r |= S_IRWXU;
2868 #else /* def S_IRWXU */
2869                 {/* Ignoring Mono_Posix_FilePermissions_S_IRWXU, as it is constructed from other values */}
2870 #endif /* ndef S_IRWXU */
2871         if ((x & Mono_Posix_FilePermissions_S_ISGID) == Mono_Posix_FilePermissions_S_ISGID)
2872 #ifdef S_ISGID
2873                 *r |= S_ISGID;
2874 #else /* def S_ISGID */
2875                 {errno = EINVAL; return -1;}
2876 #endif /* ndef S_ISGID */
2877         if ((x & Mono_Posix_FilePermissions_S_ISUID) == Mono_Posix_FilePermissions_S_ISUID)
2878 #ifdef S_ISUID
2879                 *r |= S_ISUID;
2880 #else /* def S_ISUID */
2881                 {errno = EINVAL; return -1;}
2882 #endif /* ndef S_ISUID */
2883         if ((x & Mono_Posix_FilePermissions_S_ISVTX) == Mono_Posix_FilePermissions_S_ISVTX)
2884 #ifdef S_ISVTX
2885                 *r |= S_ISVTX;
2886 #else /* def S_ISVTX */
2887                 {errno = EINVAL; return -1;}
2888 #endif /* ndef S_ISVTX */
2889         if ((x & Mono_Posix_FilePermissions_S_IWGRP) == Mono_Posix_FilePermissions_S_IWGRP)
2890 #ifdef S_IWGRP
2891                 *r |= S_IWGRP;
2892 #else /* def S_IWGRP */
2893                 {errno = EINVAL; return -1;}
2894 #endif /* ndef S_IWGRP */
2895         if ((x & Mono_Posix_FilePermissions_S_IWOTH) == Mono_Posix_FilePermissions_S_IWOTH)
2896 #ifdef S_IWOTH
2897                 *r |= S_IWOTH;
2898 #else /* def S_IWOTH */
2899                 {errno = EINVAL; return -1;}
2900 #endif /* ndef S_IWOTH */
2901         if ((x & Mono_Posix_FilePermissions_S_IWUSR) == Mono_Posix_FilePermissions_S_IWUSR)
2902 #ifdef S_IWUSR
2903                 *r |= S_IWUSR;
2904 #else /* def S_IWUSR */
2905                 {errno = EINVAL; return -1;}
2906 #endif /* ndef S_IWUSR */
2907         if ((x & Mono_Posix_FilePermissions_S_IXGRP) == Mono_Posix_FilePermissions_S_IXGRP)
2908 #ifdef S_IXGRP
2909                 *r |= S_IXGRP;
2910 #else /* def S_IXGRP */
2911                 {errno = EINVAL; return -1;}
2912 #endif /* ndef S_IXGRP */
2913         if ((x & Mono_Posix_FilePermissions_S_IXOTH) == Mono_Posix_FilePermissions_S_IXOTH)
2914 #ifdef S_IXOTH
2915                 *r |= S_IXOTH;
2916 #else /* def S_IXOTH */
2917                 {errno = EINVAL; return -1;}
2918 #endif /* ndef S_IXOTH */
2919         if ((x & Mono_Posix_FilePermissions_S_IXUSR) == Mono_Posix_FilePermissions_S_IXUSR)
2920 #ifdef S_IXUSR
2921                 *r |= S_IXUSR;
2922 #else /* def S_IXUSR */
2923                 {errno = EINVAL; return -1;}
2924 #endif /* ndef S_IXUSR */
2925         if (x == 0)
2926                 return 0;
2927         return 0;
2928 }
2929
2930 int Mono_Posix_ToFilePermissions (unsigned int x, unsigned int *r)
2931 {
2932         *r = 0;
2933         if (x == 0)
2934                 return 0;
2935 #ifdef ACCESSPERMS
2936         if ((x & ACCESSPERMS) == ACCESSPERMS)
2937                 *r |= Mono_Posix_FilePermissions_ACCESSPERMS;
2938 #endif /* ndef ACCESSPERMS */
2939 #ifdef ALLPERMS
2940         if ((x & ALLPERMS) == ALLPERMS)
2941                 *r |= Mono_Posix_FilePermissions_ALLPERMS;
2942 #endif /* ndef ALLPERMS */
2943 #ifdef DEFFILEMODE
2944         if ((x & DEFFILEMODE) == DEFFILEMODE)
2945                 *r |= Mono_Posix_FilePermissions_DEFFILEMODE;
2946 #endif /* ndef DEFFILEMODE */
2947 #ifdef S_IFBLK
2948         if ((x & S_IFMT) == S_IFBLK)
2949                 *r |= Mono_Posix_FilePermissions_S_IFBLK;
2950 #endif /* ndef S_IFBLK */
2951 #ifdef S_IFCHR
2952         if ((x & S_IFMT) == S_IFCHR)
2953                 *r |= Mono_Posix_FilePermissions_S_IFCHR;
2954 #endif /* ndef S_IFCHR */
2955 #ifdef S_IFDIR
2956         if ((x & S_IFMT) == S_IFDIR)
2957                 *r |= Mono_Posix_FilePermissions_S_IFDIR;
2958 #endif /* ndef S_IFDIR */
2959 #ifdef S_IFIFO
2960         if ((x & S_IFMT) == S_IFIFO)
2961                 *r |= Mono_Posix_FilePermissions_S_IFIFO;
2962 #endif /* ndef S_IFIFO */
2963 #ifdef S_IFLNK
2964         if ((x & S_IFMT) == S_IFLNK)
2965                 *r |= Mono_Posix_FilePermissions_S_IFLNK;
2966 #endif /* ndef S_IFLNK */
2967 #ifdef S_IFMT
2968         if ((x & S_IFMT) == S_IFMT)
2969                 *r |= Mono_Posix_FilePermissions_S_IFMT;
2970 #endif /* ndef S_IFMT */
2971 #ifdef S_IFREG
2972         if ((x & S_IFMT) == S_IFREG)
2973                 *r |= Mono_Posix_FilePermissions_S_IFREG;
2974 #endif /* ndef S_IFREG */
2975 #ifdef S_IFSOCK
2976         if ((x & S_IFMT) == S_IFSOCK)
2977                 *r |= Mono_Posix_FilePermissions_S_IFSOCK;
2978 #endif /* ndef S_IFSOCK */
2979 #ifdef S_IRGRP
2980         if ((x & S_IRGRP) == S_IRGRP)
2981                 *r |= Mono_Posix_FilePermissions_S_IRGRP;
2982 #endif /* ndef S_IRGRP */
2983 #ifdef S_IROTH
2984         if ((x & S_IROTH) == S_IROTH)
2985                 *r |= Mono_Posix_FilePermissions_S_IROTH;
2986 #endif /* ndef S_IROTH */
2987 #ifdef S_IRUSR
2988         if ((x & S_IRUSR) == S_IRUSR)
2989                 *r |= Mono_Posix_FilePermissions_S_IRUSR;
2990 #endif /* ndef S_IRUSR */
2991 #ifdef S_IRWXG
2992         if ((x & S_IRWXG) == S_IRWXG)
2993                 *r |= Mono_Posix_FilePermissions_S_IRWXG;
2994 #endif /* ndef S_IRWXG */
2995 #ifdef S_IRWXO
2996         if ((x & S_IRWXO) == S_IRWXO)
2997                 *r |= Mono_Posix_FilePermissions_S_IRWXO;
2998 #endif /* ndef S_IRWXO */
2999 #ifdef S_IRWXU
3000         if ((x & S_IRWXU) == S_IRWXU)
3001                 *r |= Mono_Posix_FilePermissions_S_IRWXU;
3002 #endif /* ndef S_IRWXU */
3003 #ifdef S_ISGID
3004         if ((x & S_ISGID) == S_ISGID)
3005                 *r |= Mono_Posix_FilePermissions_S_ISGID;
3006 #endif /* ndef S_ISGID */
3007 #ifdef S_ISUID
3008         if ((x & S_ISUID) == S_ISUID)
3009                 *r |= Mono_Posix_FilePermissions_S_ISUID;
3010 #endif /* ndef S_ISUID */
3011 #ifdef S_ISVTX
3012         if ((x & S_ISVTX) == S_ISVTX)
3013                 *r |= Mono_Posix_FilePermissions_S_ISVTX;
3014 #endif /* ndef S_ISVTX */
3015 #ifdef S_IWGRP
3016         if ((x & S_IWGRP) == S_IWGRP)
3017                 *r |= Mono_Posix_FilePermissions_S_IWGRP;
3018 #endif /* ndef S_IWGRP */
3019 #ifdef S_IWOTH
3020         if ((x & S_IWOTH) == S_IWOTH)
3021                 *r |= Mono_Posix_FilePermissions_S_IWOTH;
3022 #endif /* ndef S_IWOTH */
3023 #ifdef S_IWUSR
3024         if ((x & S_IWUSR) == S_IWUSR)
3025                 *r |= Mono_Posix_FilePermissions_S_IWUSR;
3026 #endif /* ndef S_IWUSR */
3027 #ifdef S_IXGRP
3028         if ((x & S_IXGRP) == S_IXGRP)
3029                 *r |= Mono_Posix_FilePermissions_S_IXGRP;
3030 #endif /* ndef S_IXGRP */
3031 #ifdef S_IXOTH
3032         if ((x & S_IXOTH) == S_IXOTH)
3033                 *r |= Mono_Posix_FilePermissions_S_IXOTH;
3034 #endif /* ndef S_IXOTH */
3035 #ifdef S_IXUSR
3036         if ((x & S_IXUSR) == S_IXUSR)
3037                 *r |= Mono_Posix_FilePermissions_S_IXUSR;
3038 #endif /* ndef S_IXUSR */
3039         return 0;
3040 }
3041
3042 #ifdef HAVE_STRUCT_FLOCK
3043 int
3044 Mono_Posix_FromFlock (struct Mono_Posix_Flock *from, struct flock *to)
3045 {
3046         _cnm_return_val_if_overflow (off_t, from->l_start, -1);
3047         _cnm_return_val_if_overflow (off_t, from->l_len, -1);
3048         _cnm_return_val_if_overflow (pid_t, from->l_pid, -1);
3049
3050         memset (to, 0, sizeof(*to));
3051
3052         if (Mono_Posix_FromLockType (from->l_type, &to->l_type) != 0) {
3053                 return -1;
3054         }
3055         if (Mono_Posix_FromSeekFlags (from->l_whence, &to->l_whence) != 0) {
3056                 return -1;
3057         }
3058         to->l_start  = from->l_start;
3059         to->l_len    = from->l_len;
3060         to->l_pid    = from->l_pid;
3061
3062         return 0;
3063 }
3064 #endif /* ndef HAVE_STRUCT_FLOCK */
3065
3066
3067 #ifdef HAVE_STRUCT_FLOCK
3068 int
3069 Mono_Posix_ToFlock (struct flock *from, struct Mono_Posix_Flock *to)
3070 {
3071         _cnm_return_val_if_overflow (gint64, from->l_start, -1);
3072         _cnm_return_val_if_overflow (gint64, from->l_len, -1);
3073         _cnm_return_val_if_overflow (int, from->l_pid, -1);
3074
3075         memset (to, 0, sizeof(*to));
3076
3077         if (Mono_Posix_ToLockType (from->l_type, &to->l_type) != 0) {
3078                 return -1;
3079         }
3080         if (Mono_Posix_ToSeekFlags (from->l_whence, &to->l_whence) != 0) {
3081                 return -1;
3082         }
3083         to->l_start  = from->l_start;
3084         to->l_len    = from->l_len;
3085         to->l_pid    = from->l_pid;
3086
3087         return 0;
3088 }
3089 #endif /* ndef HAVE_STRUCT_FLOCK */
3090
3091
3092 #ifdef HAVE_STRUCT_IOVEC
3093 int
3094 Mono_Posix_FromIovec (struct Mono_Posix_Iovec *from, struct iovec *to)
3095 {
3096         _cnm_return_val_if_overflow (guint64, from->iov_len, -1);
3097
3098         memset (to, 0, sizeof(*to));
3099
3100         to->iov_base = from->iov_base;
3101         to->iov_len  = from->iov_len;
3102
3103         return 0;
3104 }
3105 #endif /* ndef HAVE_STRUCT_IOVEC */
3106
3107
3108 #ifdef HAVE_STRUCT_IOVEC
3109 int
3110 Mono_Posix_ToIovec (struct iovec *from, struct Mono_Posix_Iovec *to)
3111 {
3112         _cnm_return_val_if_overflow (guint64, from->iov_len, -1);
3113
3114         memset (to, 0, sizeof(*to));
3115
3116         to->iov_base = from->iov_base;
3117         to->iov_len  = from->iov_len;
3118
3119         return 0;
3120 }
3121 #endif /* ndef HAVE_STRUCT_IOVEC */
3122
3123
3124 #ifdef HAVE_STRUCT_LINGER
3125 int
3126 Mono_Posix_FromLinger (struct Mono_Posix_Linger *from, struct linger *to)
3127 {
3128         _cnm_return_val_if_overflow (int, from->l_onoff, -1);
3129         _cnm_return_val_if_overflow (int, from->l_linger, -1);
3130
3131         memset (to, 0, sizeof(*to));
3132
3133         to->l_onoff  = from->l_onoff;
3134         to->l_linger = from->l_linger;
3135
3136         return 0;
3137 }
3138 #endif /* ndef HAVE_STRUCT_LINGER */
3139
3140
3141 #ifdef HAVE_STRUCT_LINGER
3142 int
3143 Mono_Posix_ToLinger (struct linger *from, struct Mono_Posix_Linger *to)
3144 {
3145         _cnm_return_val_if_overflow (int, from->l_onoff, -1);
3146         _cnm_return_val_if_overflow (int, from->l_linger, -1);
3147
3148         memset (to, 0, sizeof(*to));
3149
3150         to->l_onoff  = from->l_onoff;
3151         to->l_linger = from->l_linger;
3152
3153         return 0;
3154 }
3155 #endif /* ndef HAVE_STRUCT_LINGER */
3156
3157
3158 int Mono_Posix_FromLockType (short x, short *r)
3159 {
3160         *r = 0;
3161         if (x == Mono_Posix_LockType_F_RDLCK)
3162 #ifdef F_RDLCK
3163                 {*r = F_RDLCK; return 0;}
3164 #else /* def F_RDLCK */
3165                 {errno = EINVAL; return -1;}
3166 #endif /* ndef F_RDLCK */
3167         if (x == Mono_Posix_LockType_F_UNLCK)
3168 #ifdef F_UNLCK
3169                 {*r = F_UNLCK; return 0;}
3170 #else /* def F_UNLCK */
3171                 {errno = EINVAL; return -1;}
3172 #endif /* ndef F_UNLCK */
3173         if (x == Mono_Posix_LockType_F_WRLCK)
3174 #ifdef F_WRLCK
3175                 {*r = F_WRLCK; return 0;}
3176 #else /* def F_WRLCK */
3177                 {errno = EINVAL; return -1;}
3178 #endif /* ndef F_WRLCK */
3179         if (x == 0)
3180                 return 0;
3181         errno = EINVAL; return -1;
3182 }
3183
3184 int Mono_Posix_ToLockType (short x, short *r)
3185 {
3186         *r = 0;
3187         if (x == 0)
3188                 return 0;
3189 #ifdef F_RDLCK
3190         if (x == F_RDLCK)
3191                 {*r = Mono_Posix_LockType_F_RDLCK; return 0;}
3192 #endif /* ndef F_RDLCK */
3193 #ifdef F_UNLCK
3194         if (x == F_UNLCK)
3195                 {*r = Mono_Posix_LockType_F_UNLCK; return 0;}
3196 #endif /* ndef F_UNLCK */
3197 #ifdef F_WRLCK
3198         if (x == F_WRLCK)
3199                 {*r = Mono_Posix_LockType_F_WRLCK; return 0;}
3200 #endif /* ndef F_WRLCK */
3201         errno = EINVAL; return -1;
3202 }
3203
3204 int Mono_Posix_FromLockfCommand (int x, int *r)
3205 {
3206         *r = 0;
3207         if (x == Mono_Posix_LockfCommand_F_LOCK)
3208 #ifdef F_LOCK
3209                 {*r = F_LOCK; return 0;}
3210 #else /* def F_LOCK */
3211                 {errno = EINVAL; return -1;}
3212 #endif /* ndef F_LOCK */
3213         if (x == Mono_Posix_LockfCommand_F_TEST)
3214 #ifdef F_TEST
3215                 {*r = F_TEST; return 0;}
3216 #else /* def F_TEST */
3217                 {errno = EINVAL; return -1;}
3218 #endif /* ndef F_TEST */
3219         if (x == Mono_Posix_LockfCommand_F_TLOCK)
3220 #ifdef F_TLOCK
3221                 {*r = F_TLOCK; return 0;}
3222 #else /* def F_TLOCK */
3223                 {errno = EINVAL; return -1;}
3224 #endif /* ndef F_TLOCK */
3225         if (x == Mono_Posix_LockfCommand_F_ULOCK)
3226 #ifdef F_ULOCK
3227                 {*r = F_ULOCK; return 0;}
3228 #else /* def F_ULOCK */
3229                 {errno = EINVAL; return -1;}
3230 #endif /* ndef F_ULOCK */
3231         if (x == 0)
3232                 return 0;
3233         errno = EINVAL; return -1;
3234 }
3235
3236 int Mono_Posix_ToLockfCommand (int x, int *r)
3237 {
3238         *r = 0;
3239         if (x == 0)
3240                 return 0;
3241 #ifdef F_LOCK
3242         if (x == F_LOCK)
3243                 {*r = Mono_Posix_LockfCommand_F_LOCK; return 0;}
3244 #endif /* ndef F_LOCK */
3245 #ifdef F_TEST
3246         if (x == F_TEST)
3247                 {*r = Mono_Posix_LockfCommand_F_TEST; return 0;}
3248 #endif /* ndef F_TEST */
3249 #ifdef F_TLOCK
3250         if (x == F_TLOCK)
3251                 {*r = Mono_Posix_LockfCommand_F_TLOCK; return 0;}
3252 #endif /* ndef F_TLOCK */
3253 #ifdef F_ULOCK
3254         if (x == F_ULOCK)
3255                 {*r = Mono_Posix_LockfCommand_F_ULOCK; return 0;}
3256 #endif /* ndef F_ULOCK */
3257         errno = EINVAL; return -1;
3258 }
3259
3260 int Mono_Posix_FromMessageFlags (int x, int *r)
3261 {
3262         *r = 0;
3263         if ((x & Mono_Posix_MessageFlags_MSG_CMSG_CLOEXEC) == Mono_Posix_MessageFlags_MSG_CMSG_CLOEXEC)
3264 #ifdef MSG_CMSG_CLOEXEC
3265                 *r |= MSG_CMSG_CLOEXEC;
3266 #else /* def MSG_CMSG_CLOEXEC */
3267                 {errno = EINVAL; return -1;}
3268 #endif /* ndef MSG_CMSG_CLOEXEC */
3269         if ((x & Mono_Posix_MessageFlags_MSG_CONFIRM) == Mono_Posix_MessageFlags_MSG_CONFIRM)
3270 #ifdef MSG_CONFIRM
3271                 *r |= MSG_CONFIRM;
3272 #else /* def MSG_CONFIRM */
3273                 {errno = EINVAL; return -1;}
3274 #endif /* ndef MSG_CONFIRM */
3275         if ((x & Mono_Posix_MessageFlags_MSG_CTRUNC) == Mono_Posix_MessageFlags_MSG_CTRUNC)
3276 #ifdef MSG_CTRUNC
3277                 *r |= MSG_CTRUNC;
3278 #else /* def MSG_CTRUNC */
3279                 {errno = EINVAL; return -1;}
3280 #endif /* ndef MSG_CTRUNC */
3281         if ((x & Mono_Posix_MessageFlags_MSG_DONTROUTE) == Mono_Posix_MessageFlags_MSG_DONTROUTE)
3282 #ifdef MSG_DONTROUTE
3283                 *r |= MSG_DONTROUTE;
3284 #else /* def MSG_DONTROUTE */
3285                 {errno = EINVAL; return -1;}
3286 #endif /* ndef MSG_DONTROUTE */
3287         if ((x & Mono_Posix_MessageFlags_MSG_DONTWAIT) == Mono_Posix_MessageFlags_MSG_DONTWAIT)
3288 #ifdef MSG_DONTWAIT
3289                 *r |= MSG_DONTWAIT;
3290 #else /* def MSG_DONTWAIT */
3291                 {errno = EINVAL; return -1;}
3292 #endif /* ndef MSG_DONTWAIT */
3293         if ((x & Mono_Posix_MessageFlags_MSG_EOR) == Mono_Posix_MessageFlags_MSG_EOR)
3294 #ifdef MSG_EOR
3295                 *r |= MSG_EOR;
3296 #else /* def MSG_EOR */
3297                 {errno = EINVAL; return -1;}
3298 #endif /* ndef MSG_EOR */
3299         if ((x & Mono_Posix_MessageFlags_MSG_ERRQUEUE) == Mono_Posix_MessageFlags_MSG_ERRQUEUE)
3300 #ifdef MSG_ERRQUEUE
3301                 *r |= MSG_ERRQUEUE;
3302 #else /* def MSG_ERRQUEUE */
3303                 {errno = EINVAL; return -1;}
3304 #endif /* ndef MSG_ERRQUEUE */
3305         if ((x & Mono_Posix_MessageFlags_MSG_FASTOPEN) == Mono_Posix_MessageFlags_MSG_FASTOPEN)
3306 #ifdef MSG_FASTOPEN
3307                 *r |= MSG_FASTOPEN;
3308 #else /* def MSG_FASTOPEN */
3309                 {errno = EINVAL; return -1;}
3310 #endif /* ndef MSG_FASTOPEN */
3311         if ((x & Mono_Posix_MessageFlags_MSG_FIN) == Mono_Posix_MessageFlags_MSG_FIN)
3312 #ifdef MSG_FIN
3313                 *r |= MSG_FIN;
3314 #else /* def MSG_FIN */
3315                 {errno = EINVAL; return -1;}
3316 #endif /* ndef MSG_FIN */
3317         if ((x & Mono_Posix_MessageFlags_MSG_MORE) == Mono_Posix_MessageFlags_MSG_MORE)
3318 #ifdef MSG_MORE
3319                 *r |= MSG_MORE;
3320 #else /* def MSG_MORE */
3321                 {errno = EINVAL; return -1;}
3322 #endif /* ndef MSG_MORE */
3323         if ((x & Mono_Posix_MessageFlags_MSG_NOSIGNAL) == Mono_Posix_MessageFlags_MSG_NOSIGNAL)
3324 #ifdef MSG_NOSIGNAL
3325                 *r |= MSG_NOSIGNAL;
3326 #else /* def MSG_NOSIGNAL */
3327                 {errno = EINVAL; return -1;}
3328 #endif /* ndef MSG_NOSIGNAL */
3329         if ((x & Mono_Posix_MessageFlags_MSG_OOB) == Mono_Posix_MessageFlags_MSG_OOB)
3330 #ifdef MSG_OOB
3331                 *r |= MSG_OOB;
3332 #else /* def MSG_OOB */
3333                 {errno = EINVAL; return -1;}
3334 #endif /* ndef MSG_OOB */
3335         if ((x & Mono_Posix_MessageFlags_MSG_PEEK) == Mono_Posix_MessageFlags_MSG_PEEK)
3336 #ifdef MSG_PEEK
3337                 *r |= MSG_PEEK;
3338 #else /* def MSG_PEEK */
3339                 {errno = EINVAL; return -1;}
3340 #endif /* ndef MSG_PEEK */
3341         if ((x & Mono_Posix_MessageFlags_MSG_PROXY) == Mono_Posix_MessageFlags_MSG_PROXY)
3342 #ifdef MSG_PROXY
3343                 *r |= MSG_PROXY;
3344 #else /* def MSG_PROXY */
3345                 {errno = EINVAL; return -1;}
3346 #endif /* ndef MSG_PROXY */
3347         if ((x & Mono_Posix_MessageFlags_MSG_RST) == Mono_Posix_MessageFlags_MSG_RST)
3348 #ifdef MSG_RST
3349                 *r |= MSG_RST;
3350 #else /* def MSG_RST */
3351                 {errno = EINVAL; return -1;}
3352 #endif /* ndef MSG_RST */
3353         if ((x & Mono_Posix_MessageFlags_MSG_SYN) == Mono_Posix_MessageFlags_MSG_SYN)
3354 #ifdef MSG_SYN
3355                 *r |= MSG_SYN;
3356 #else /* def MSG_SYN */
3357                 {errno = EINVAL; return -1;}
3358 #endif /* ndef MSG_SYN */
3359         if ((x & Mono_Posix_MessageFlags_MSG_TRUNC) == Mono_Posix_MessageFlags_MSG_TRUNC)
3360 #ifdef MSG_TRUNC
3361                 *r |= MSG_TRUNC;
3362 #else /* def MSG_TRUNC */
3363                 {errno = EINVAL; return -1;}
3364 #endif /* ndef MSG_TRUNC */
3365         if ((x & Mono_Posix_MessageFlags_MSG_WAITALL) == Mono_Posix_MessageFlags_MSG_WAITALL)
3366 #ifdef MSG_WAITALL
3367                 *r |= MSG_WAITALL;
3368 #else /* def MSG_WAITALL */
3369                 {errno = EINVAL; return -1;}
3370 #endif /* ndef MSG_WAITALL */
3371         if ((x & Mono_Posix_MessageFlags_MSG_WAITFORONE) == Mono_Posix_MessageFlags_MSG_WAITFORONE)
3372 #ifdef MSG_WAITFORONE
3373                 *r |= MSG_WAITFORONE;
3374 #else /* def MSG_WAITFORONE */
3375                 {errno = EINVAL; return -1;}
3376 #endif /* ndef MSG_WAITFORONE */
3377         if (x == 0)
3378                 return 0;
3379         return 0;
3380 }
3381
3382 int Mono_Posix_ToMessageFlags (int x, int *r)
3383 {
3384         *r = 0;
3385         if (x == 0)
3386                 return 0;
3387 #ifdef MSG_CMSG_CLOEXEC
3388         if ((x & MSG_CMSG_CLOEXEC) == MSG_CMSG_CLOEXEC)
3389                 *r |= Mono_Posix_MessageFlags_MSG_CMSG_CLOEXEC;
3390 #endif /* ndef MSG_CMSG_CLOEXEC */
3391 #ifdef MSG_CONFIRM
3392         if ((x & MSG_CONFIRM) == MSG_CONFIRM)
3393                 *r |= Mono_Posix_MessageFlags_MSG_CONFIRM;
3394 #endif /* ndef MSG_CONFIRM */
3395 #ifdef MSG_CTRUNC
3396         if ((x & MSG_CTRUNC) == MSG_CTRUNC)
3397                 *r |= Mono_Posix_MessageFlags_MSG_CTRUNC;
3398 #endif /* ndef MSG_CTRUNC */
3399 #ifdef MSG_DONTROUTE
3400         if ((x & MSG_DONTROUTE) == MSG_DONTROUTE)
3401                 *r |= Mono_Posix_MessageFlags_MSG_DONTROUTE;
3402 #endif /* ndef MSG_DONTROUTE */
3403 #ifdef MSG_DONTWAIT
3404         if ((x & MSG_DONTWAIT) == MSG_DONTWAIT)
3405                 *r |= Mono_Posix_MessageFlags_MSG_DONTWAIT;
3406 #endif /* ndef MSG_DONTWAIT */
3407 #ifdef MSG_EOR
3408         if ((x & MSG_EOR) == MSG_EOR)
3409                 *r |= Mono_Posix_MessageFlags_MSG_EOR;
3410 #endif /* ndef MSG_EOR */
3411 #ifdef MSG_ERRQUEUE
3412         if ((x & MSG_ERRQUEUE) == MSG_ERRQUEUE)
3413                 *r |= Mono_Posix_MessageFlags_MSG_ERRQUEUE;
3414 #endif /* ndef MSG_ERRQUEUE */
3415 #ifdef MSG_FASTOPEN
3416         if ((x & MSG_FASTOPEN) == MSG_FASTOPEN)
3417                 *r |= Mono_Posix_MessageFlags_MSG_FASTOPEN;
3418 #endif /* ndef MSG_FASTOPEN */
3419 #ifdef MSG_FIN
3420         if ((x & MSG_FIN) == MSG_FIN)
3421                 *r |= Mono_Posix_MessageFlags_MSG_FIN;
3422 #endif /* ndef MSG_FIN */
3423 #ifdef MSG_MORE
3424         if ((x & MSG_MORE) == MSG_MORE)
3425                 *r |= Mono_Posix_MessageFlags_MSG_MORE;
3426 #endif /* ndef MSG_MORE */
3427 #ifdef MSG_NOSIGNAL
3428         if ((x & MSG_NOSIGNAL) == MSG_NOSIGNAL)
3429                 *r |= Mono_Posix_MessageFlags_MSG_NOSIGNAL;
3430 #endif /* ndef MSG_NOSIGNAL */
3431 #ifdef MSG_OOB
3432         if ((x & MSG_OOB) == MSG_OOB)
3433                 *r |= Mono_Posix_MessageFlags_MSG_OOB;
3434 #endif /* ndef MSG_OOB */
3435 #ifdef MSG_PEEK
3436         if ((x & MSG_PEEK) == MSG_PEEK)
3437                 *r |= Mono_Posix_MessageFlags_MSG_PEEK;
3438 #endif /* ndef MSG_PEEK */
3439 #ifdef MSG_PROXY
3440         if ((x & MSG_PROXY) == MSG_PROXY)
3441                 *r |= Mono_Posix_MessageFlags_MSG_PROXY;
3442 #endif /* ndef MSG_PROXY */
3443 #ifdef MSG_RST
3444         if ((x & MSG_RST) == MSG_RST)
3445                 *r |= Mono_Posix_MessageFlags_MSG_RST;
3446 #endif /* ndef MSG_RST */
3447 #ifdef MSG_SYN
3448         if ((x & MSG_SYN) == MSG_SYN)
3449                 *r |= Mono_Posix_MessageFlags_MSG_SYN;
3450 #endif /* ndef MSG_SYN */
3451 #ifdef MSG_TRUNC
3452         if ((x & MSG_TRUNC) == MSG_TRUNC)
3453                 *r |= Mono_Posix_MessageFlags_MSG_TRUNC;
3454 #endif /* ndef MSG_TRUNC */
3455 #ifdef MSG_WAITALL
3456         if ((x & MSG_WAITALL) == MSG_WAITALL)
3457                 *r |= Mono_Posix_MessageFlags_MSG_WAITALL;
3458 #endif /* ndef MSG_WAITALL */
3459 #ifdef MSG_WAITFORONE
3460         if ((x & MSG_WAITFORONE) == MSG_WAITFORONE)
3461                 *r |= Mono_Posix_MessageFlags_MSG_WAITFORONE;
3462 #endif /* ndef MSG_WAITFORONE */
3463         return 0;
3464 }
3465
3466 int Mono_Posix_FromMlockallFlags (int x, int *r)
3467 {
3468         *r = 0;
3469         if ((x & Mono_Posix_MlockallFlags_MCL_CURRENT) == Mono_Posix_MlockallFlags_MCL_CURRENT)
3470 #ifdef MCL_CURRENT
3471                 *r |= MCL_CURRENT;
3472 #else /* def MCL_CURRENT */
3473                 {errno = EINVAL; return -1;}
3474 #endif /* ndef MCL_CURRENT */
3475         if ((x & Mono_Posix_MlockallFlags_MCL_FUTURE) == Mono_Posix_MlockallFlags_MCL_FUTURE)
3476 #ifdef MCL_FUTURE
3477                 *r |= MCL_FUTURE;
3478 #else /* def MCL_FUTURE */
3479                 {errno = EINVAL; return -1;}
3480 #endif /* ndef MCL_FUTURE */
3481         if (x == 0)
3482                 return 0;
3483         return 0;
3484 }
3485
3486 int Mono_Posix_ToMlockallFlags (int x, int *r)
3487 {
3488         *r = 0;
3489         if (x == 0)
3490                 return 0;
3491 #ifdef MCL_CURRENT
3492         if ((x & MCL_CURRENT) == MCL_CURRENT)
3493                 *r |= Mono_Posix_MlockallFlags_MCL_CURRENT;
3494 #endif /* ndef MCL_CURRENT */
3495 #ifdef MCL_FUTURE
3496         if ((x & MCL_FUTURE) == MCL_FUTURE)
3497                 *r |= Mono_Posix_MlockallFlags_MCL_FUTURE;
3498 #endif /* ndef MCL_FUTURE */
3499         return 0;
3500 }
3501
3502 int Mono_Posix_FromMmapFlags (int x, int *r)
3503 {
3504         *r = 0;
3505         if ((x & Mono_Posix_MmapFlags_MAP_ANON) == Mono_Posix_MmapFlags_MAP_ANON)
3506 #ifdef MAP_ANON
3507                 *r |= MAP_ANON;
3508 #else /* def MAP_ANON */
3509                 {errno = EINVAL; return -1;}
3510 #endif /* ndef MAP_ANON */
3511         if ((x & Mono_Posix_MmapFlags_MAP_ANONYMOUS) == Mono_Posix_MmapFlags_MAP_ANONYMOUS)
3512 #ifdef MAP_ANONYMOUS
3513                 *r |= MAP_ANONYMOUS;
3514 #else /* def MAP_ANONYMOUS */
3515                 {errno = EINVAL; return -1;}
3516 #endif /* ndef MAP_ANONYMOUS */
3517         if ((x & Mono_Posix_MmapFlags_MAP_DENYWRITE) == Mono_Posix_MmapFlags_MAP_DENYWRITE)
3518 #ifdef MAP_DENYWRITE
3519                 *r |= MAP_DENYWRITE;
3520 #else /* def MAP_DENYWRITE */
3521                 {errno = EINVAL; return -1;}
3522 #endif /* ndef MAP_DENYWRITE */
3523         if ((x & Mono_Posix_MmapFlags_MAP_EXECUTABLE) == Mono_Posix_MmapFlags_MAP_EXECUTABLE)
3524 #ifdef MAP_EXECUTABLE
3525                 *r |= MAP_EXECUTABLE;
3526 #else /* def MAP_EXECUTABLE */
3527                 {errno = EINVAL; return -1;}
3528 #endif /* ndef MAP_EXECUTABLE */
3529         if ((x & Mono_Posix_MmapFlags_MAP_FILE) == Mono_Posix_MmapFlags_MAP_FILE)
3530 #ifdef MAP_FILE
3531                 *r |= MAP_FILE;
3532 #else /* def MAP_FILE */
3533                 {errno = EINVAL; return -1;}
3534 #endif /* ndef MAP_FILE */
3535         if ((x & Mono_Posix_MmapFlags_MAP_FIXED) == Mono_Posix_MmapFlags_MAP_FIXED)
3536 #ifdef MAP_FIXED
3537                 *r |= MAP_FIXED;
3538 #else /* def MAP_FIXED */
3539                 {errno = EINVAL; return -1;}
3540 #endif /* ndef MAP_FIXED */
3541         if ((x & Mono_Posix_MmapFlags_MAP_GROWSDOWN) == Mono_Posix_MmapFlags_MAP_GROWSDOWN)
3542 #ifdef MAP_GROWSDOWN
3543                 *r |= MAP_GROWSDOWN;
3544 #else /* def MAP_GROWSDOWN */
3545                 {errno = EINVAL; return -1;}
3546 #endif /* ndef MAP_GROWSDOWN */
3547         if ((x & Mono_Posix_MmapFlags_MAP_LOCKED) == Mono_Posix_MmapFlags_MAP_LOCKED)
3548 #ifdef MAP_LOCKED
3549                 *r |= MAP_LOCKED;
3550 #else /* def MAP_LOCKED */
3551                 {errno = EINVAL; return -1;}
3552 #endif /* ndef MAP_LOCKED */
3553         if ((x & Mono_Posix_MmapFlags_MAP_NONBLOCK) == Mono_Posix_MmapFlags_MAP_NONBLOCK)
3554 #ifdef MAP_NONBLOCK
3555                 *r |= MAP_NONBLOCK;
3556 #else /* def MAP_NONBLOCK */
3557                 {errno = EINVAL; return -1;}
3558 #endif /* ndef MAP_NONBLOCK */
3559         if ((x & Mono_Posix_MmapFlags_MAP_NORESERVE) == Mono_Posix_MmapFlags_MAP_NORESERVE)
3560 #ifdef MAP_NORESERVE
3561                 *r |= MAP_NORESERVE;
3562 #else /* def MAP_NORESERVE */
3563                 {errno = EINVAL; return -1;}
3564 #endif /* ndef MAP_NORESERVE */
3565         if ((x & Mono_Posix_MmapFlags_MAP_POPULATE) == Mono_Posix_MmapFlags_MAP_POPULATE)
3566 #ifdef MAP_POPULATE
3567                 *r |= MAP_POPULATE;
3568 #else /* def MAP_POPULATE */
3569                 {errno = EINVAL; return -1;}
3570 #endif /* ndef MAP_POPULATE */
3571         if ((x & Mono_Posix_MmapFlags_MAP_PRIVATE) == Mono_Posix_MmapFlags_MAP_PRIVATE)
3572 #ifdef MAP_PRIVATE
3573                 *r |= MAP_PRIVATE;
3574 #else /* def MAP_PRIVATE */
3575                 {errno = EINVAL; return -1;}
3576 #endif /* ndef MAP_PRIVATE */
3577         if ((x & Mono_Posix_MmapFlags_MAP_SHARED) == Mono_Posix_MmapFlags_MAP_SHARED)
3578 #ifdef MAP_SHARED
3579                 *r |= MAP_SHARED;
3580 #else /* def MAP_SHARED */
3581                 {errno = EINVAL; return -1;}
3582 #endif /* ndef MAP_SHARED */
3583         if ((x & Mono_Posix_MmapFlags_MAP_TYPE) == Mono_Posix_MmapFlags_MAP_TYPE)
3584 #ifdef MAP_TYPE
3585                 *r |= MAP_TYPE;
3586 #else /* def MAP_TYPE */
3587                 {errno = EINVAL; return -1;}
3588 #endif /* ndef MAP_TYPE */
3589         if (x == 0)
3590                 return 0;
3591         return 0;
3592 }
3593
3594 int Mono_Posix_ToMmapFlags (int x, int *r)
3595 {
3596         *r = 0;
3597         if (x == 0)
3598                 return 0;
3599 #ifdef MAP_ANON
3600         if ((x & MAP_ANON) == MAP_ANON)
3601                 *r |= Mono_Posix_MmapFlags_MAP_ANON;
3602 #endif /* ndef MAP_ANON */
3603 #ifdef MAP_ANONYMOUS
3604         if ((x & MAP_ANONYMOUS) == MAP_ANONYMOUS)
3605                 *r |= Mono_Posix_MmapFlags_MAP_ANONYMOUS;
3606 #endif /* ndef MAP_ANONYMOUS */
3607 #ifdef MAP_DENYWRITE
3608         if ((x & MAP_DENYWRITE) == MAP_DENYWRITE)
3609                 *r |= Mono_Posix_MmapFlags_MAP_DENYWRITE;
3610 #endif /* ndef MAP_DENYWRITE */
3611 #ifdef MAP_EXECUTABLE
3612         if ((x & MAP_EXECUTABLE) == MAP_EXECUTABLE)
3613                 *r |= Mono_Posix_MmapFlags_MAP_EXECUTABLE;
3614 #endif /* ndef MAP_EXECUTABLE */
3615 #ifdef MAP_FILE
3616         if ((x & MAP_FILE) == MAP_FILE)
3617                 *r |= Mono_Posix_MmapFlags_MAP_FILE;
3618 #endif /* ndef MAP_FILE */
3619 #ifdef MAP_FIXED
3620         if ((x & MAP_FIXED) == MAP_FIXED)
3621                 *r |= Mono_Posix_MmapFlags_MAP_FIXED;
3622 #endif /* ndef MAP_FIXED */
3623 #ifdef MAP_GROWSDOWN
3624         if ((x & MAP_GROWSDOWN) == MAP_GROWSDOWN)
3625                 *r |= Mono_Posix_MmapFlags_MAP_GROWSDOWN;
3626 #endif /* ndef MAP_GROWSDOWN */
3627 #ifdef MAP_LOCKED
3628         if ((x & MAP_LOCKED) == MAP_LOCKED)
3629                 *r |= Mono_Posix_MmapFlags_MAP_LOCKED;
3630 #endif /* ndef MAP_LOCKED */
3631 #ifdef MAP_NONBLOCK
3632         if ((x & MAP_NONBLOCK) == MAP_NONBLOCK)
3633                 *r |= Mono_Posix_MmapFlags_MAP_NONBLOCK;
3634 #endif /* ndef MAP_NONBLOCK */
3635 #ifdef MAP_NORESERVE
3636         if ((x & MAP_NORESERVE) == MAP_NORESERVE)
3637                 *r |= Mono_Posix_MmapFlags_MAP_NORESERVE;
3638 #endif /* ndef MAP_NORESERVE */
3639 #ifdef MAP_POPULATE
3640         if ((x & MAP_POPULATE) == MAP_POPULATE)
3641                 *r |= Mono_Posix_MmapFlags_MAP_POPULATE;
3642 #endif /* ndef MAP_POPULATE */
3643 #ifdef MAP_PRIVATE
3644         if ((x & MAP_PRIVATE) == MAP_PRIVATE)
3645                 *r |= Mono_Posix_MmapFlags_MAP_PRIVATE;
3646 #endif /* ndef MAP_PRIVATE */
3647 #ifdef MAP_SHARED
3648         if ((x & MAP_SHARED) == MAP_SHARED)
3649                 *r |= Mono_Posix_MmapFlags_MAP_SHARED;
3650 #endif /* ndef MAP_SHARED */
3651 #ifdef MAP_TYPE
3652         if ((x & MAP_TYPE) == MAP_TYPE)
3653                 *r |= Mono_Posix_MmapFlags_MAP_TYPE;
3654 #endif /* ndef MAP_TYPE */
3655         return 0;
3656 }
3657
3658 int Mono_Posix_FromMmapProts (int x, int *r)
3659 {
3660         *r = 0;
3661         if ((x & Mono_Posix_MmapProts_PROT_EXEC) == Mono_Posix_MmapProts_PROT_EXEC)
3662 #ifdef PROT_EXEC
3663                 *r |= PROT_EXEC;
3664 #else /* def PROT_EXEC */
3665                 {errno = EINVAL; return -1;}
3666 #endif /* ndef PROT_EXEC */
3667         if ((x & Mono_Posix_MmapProts_PROT_GROWSDOWN) == Mono_Posix_MmapProts_PROT_GROWSDOWN)
3668 #ifdef PROT_GROWSDOWN
3669                 *r |= PROT_GROWSDOWN;
3670 #else /* def PROT_GROWSDOWN */
3671                 {errno = EINVAL; return -1;}
3672 #endif /* ndef PROT_GROWSDOWN */
3673         if ((x & Mono_Posix_MmapProts_PROT_GROWSUP) == Mono_Posix_MmapProts_PROT_GROWSUP)
3674 #ifdef PROT_GROWSUP
3675                 *r |= PROT_GROWSUP;
3676 #else /* def PROT_GROWSUP */
3677                 {errno = EINVAL; return -1;}
3678 #endif /* ndef PROT_GROWSUP */
3679         if ((x & Mono_Posix_MmapProts_PROT_NONE) == Mono_Posix_MmapProts_PROT_NONE)
3680 #ifdef PROT_NONE
3681                 *r |= PROT_NONE;
3682 #else /* def PROT_NONE */
3683                 {errno = EINVAL; return -1;}
3684 #endif /* ndef PROT_NONE */
3685         if ((x & Mono_Posix_MmapProts_PROT_READ) == Mono_Posix_MmapProts_PROT_READ)
3686 #ifdef PROT_READ
3687                 *r |= PROT_READ;
3688 #else /* def PROT_READ */
3689                 {errno = EINVAL; return -1;}
3690 #endif /* ndef PROT_READ */
3691         if ((x & Mono_Posix_MmapProts_PROT_WRITE) == Mono_Posix_MmapProts_PROT_WRITE)
3692 #ifdef PROT_WRITE
3693                 *r |= PROT_WRITE;
3694 #else /* def PROT_WRITE */
3695                 {errno = EINVAL; return -1;}
3696 #endif /* ndef PROT_WRITE */
3697         if (x == 0)
3698                 return 0;
3699         return 0;
3700 }
3701
3702 int Mono_Posix_ToMmapProts (int x, int *r)
3703 {
3704         *r = 0;
3705         if (x == 0)
3706                 return 0;
3707 #ifdef PROT_EXEC
3708         if ((x & PROT_EXEC) == PROT_EXEC)
3709                 *r |= Mono_Posix_MmapProts_PROT_EXEC;
3710 #endif /* ndef PROT_EXEC */
3711 #ifdef PROT_GROWSDOWN
3712         if ((x & PROT_GROWSDOWN) == PROT_GROWSDOWN)
3713                 *r |= Mono_Posix_MmapProts_PROT_GROWSDOWN;
3714 #endif /* ndef PROT_GROWSDOWN */
3715 #ifdef PROT_GROWSUP
3716         if ((x & PROT_GROWSUP) == PROT_GROWSUP)
3717                 *r |= Mono_Posix_MmapProts_PROT_GROWSUP;
3718 #endif /* ndef PROT_GROWSUP */
3719 #ifdef PROT_NONE
3720         if ((x & PROT_NONE) == PROT_NONE)
3721                 *r |= Mono_Posix_MmapProts_PROT_NONE;
3722 #endif /* ndef PROT_NONE */
3723 #ifdef PROT_READ
3724         if ((x & PROT_READ) == PROT_READ)
3725                 *r |= Mono_Posix_MmapProts_PROT_READ;
3726 #endif /* ndef PROT_READ */
3727 #ifdef PROT_WRITE
3728         if ((x & PROT_WRITE) == PROT_WRITE)
3729                 *r |= Mono_Posix_MmapProts_PROT_WRITE;
3730 #endif /* ndef PROT_WRITE */
3731         return 0;
3732 }
3733
3734 int Mono_Posix_FromMountFlags (guint64 x, guint64 *r)
3735 {
3736         *r = 0;
3737         if ((x & Mono_Posix_MountFlags_ST_APPEND) == Mono_Posix_MountFlags_ST_APPEND)
3738 #ifdef ST_APPEND
3739                 *r |= ST_APPEND;
3740 #else /* def ST_APPEND */
3741                 {errno = EINVAL; return -1;}
3742 #endif /* ndef ST_APPEND */
3743         if ((x & Mono_Posix_MountFlags_ST_BIND) == Mono_Posix_MountFlags_ST_BIND)
3744 #ifdef ST_BIND
3745                 *r |= ST_BIND;
3746 #else /* def ST_BIND */
3747                 {errno = EINVAL; return -1;}
3748 #endif /* ndef ST_BIND */
3749         if ((x & Mono_Posix_MountFlags_ST_IMMUTABLE) == Mono_Posix_MountFlags_ST_IMMUTABLE)
3750 #ifdef ST_IMMUTABLE
3751                 *r |= ST_IMMUTABLE;
3752 #else /* def ST_IMMUTABLE */
3753                 {errno = EINVAL; return -1;}
3754 #endif /* ndef ST_IMMUTABLE */
3755         if ((x & Mono_Posix_MountFlags_ST_MANDLOCK) == Mono_Posix_MountFlags_ST_MANDLOCK)
3756 #ifdef ST_MANDLOCK
3757                 *r |= ST_MANDLOCK;
3758 #else /* def ST_MANDLOCK */
3759                 {errno = EINVAL; return -1;}
3760 #endif /* ndef ST_MANDLOCK */
3761         if ((x & Mono_Posix_MountFlags_ST_NOATIME) == Mono_Posix_MountFlags_ST_NOATIME)
3762 #ifdef ST_NOATIME
3763                 *r |= ST_NOATIME;
3764 #else /* def ST_NOATIME */
3765                 {errno = EINVAL; return -1;}
3766 #endif /* ndef ST_NOATIME */
3767         if ((x & Mono_Posix_MountFlags_ST_NODEV) == Mono_Posix_MountFlags_ST_NODEV)
3768 #ifdef ST_NODEV
3769                 *r |= ST_NODEV;
3770 #else /* def ST_NODEV */
3771                 {errno = EINVAL; return -1;}
3772 #endif /* ndef ST_NODEV */
3773         if ((x & Mono_Posix_MountFlags_ST_NODIRATIME) == Mono_Posix_MountFlags_ST_NODIRATIME)
3774 #ifdef ST_NODIRATIME
3775                 *r |= ST_NODIRATIME;
3776 #else /* def ST_NODIRATIME */
3777                 {errno = EINVAL; return -1;}
3778 #endif /* ndef ST_NODIRATIME */
3779         if ((x & Mono_Posix_MountFlags_ST_NOEXEC) == Mono_Posix_MountFlags_ST_NOEXEC)
3780 #ifdef ST_NOEXEC
3781                 *r |= ST_NOEXEC;
3782 #else /* def ST_NOEXEC */
3783                 {errno = EINVAL; return -1;}
3784 #endif /* ndef ST_NOEXEC */
3785         if ((x & Mono_Posix_MountFlags_ST_NOSUID) == Mono_Posix_MountFlags_ST_NOSUID)
3786 #ifdef ST_NOSUID
3787                 *r |= ST_NOSUID;
3788 #else /* def ST_NOSUID */
3789                 {errno = EINVAL; return -1;}
3790 #endif /* ndef ST_NOSUID */
3791         if ((x & Mono_Posix_MountFlags_ST_RDONLY) == Mono_Posix_MountFlags_ST_RDONLY)
3792 #ifdef ST_RDONLY
3793                 *r |= ST_RDONLY;
3794 #else /* def ST_RDONLY */
3795                 {errno = EINVAL; return -1;}
3796 #endif /* ndef ST_RDONLY */
3797         if ((x & Mono_Posix_MountFlags_ST_REMOUNT) == Mono_Posix_MountFlags_ST_REMOUNT)
3798 #ifdef ST_REMOUNT
3799                 *r |= ST_REMOUNT;
3800 #else /* def ST_REMOUNT */
3801                 {errno = EINVAL; return -1;}
3802 #endif /* ndef ST_REMOUNT */
3803         if ((x & Mono_Posix_MountFlags_ST_SYNCHRONOUS) == Mono_Posix_MountFlags_ST_SYNCHRONOUS)
3804 #ifdef ST_SYNCHRONOUS
3805                 *r |= ST_SYNCHRONOUS;
3806 #else /* def ST_SYNCHRONOUS */
3807                 {errno = EINVAL; return -1;}
3808 #endif /* ndef ST_SYNCHRONOUS */
3809         if ((x & Mono_Posix_MountFlags_ST_WRITE) == Mono_Posix_MountFlags_ST_WRITE)
3810 #ifdef ST_WRITE
3811                 *r |= ST_WRITE;
3812 #else /* def ST_WRITE */
3813                 {errno = EINVAL; return -1;}
3814 #endif /* ndef ST_WRITE */
3815         if (x == 0)
3816                 return 0;
3817         return 0;
3818 }
3819
3820 int Mono_Posix_ToMountFlags (guint64 x, guint64 *r)
3821 {
3822         *r = 0;
3823         if (x == 0)
3824                 return 0;
3825 #ifdef ST_APPEND
3826         if ((x & ST_APPEND) == ST_APPEND)
3827                 *r |= Mono_Posix_MountFlags_ST_APPEND;
3828 #endif /* ndef ST_APPEND */
3829 #ifdef ST_BIND
3830         if ((x & ST_BIND) == ST_BIND)
3831                 *r |= Mono_Posix_MountFlags_ST_BIND;
3832 #endif /* ndef ST_BIND */
3833 #ifdef ST_IMMUTABLE
3834         if ((x & ST_IMMUTABLE) == ST_IMMUTABLE)
3835                 *r |= Mono_Posix_MountFlags_ST_IMMUTABLE;
3836 #endif /* ndef ST_IMMUTABLE */
3837 #ifdef ST_MANDLOCK
3838         if ((x & ST_MANDLOCK) == ST_MANDLOCK)
3839                 *r |= Mono_Posix_MountFlags_ST_MANDLOCK;
3840 #endif /* ndef ST_MANDLOCK */
3841 #ifdef ST_NOATIME
3842         if ((x & ST_NOATIME) == ST_NOATIME)
3843                 *r |= Mono_Posix_MountFlags_ST_NOATIME;
3844 #endif /* ndef ST_NOATIME */
3845 #ifdef ST_NODEV
3846         if ((x & ST_NODEV) == ST_NODEV)
3847                 *r |= Mono_Posix_MountFlags_ST_NODEV;
3848 #endif /* ndef ST_NODEV */
3849 #ifdef ST_NODIRATIME
3850         if ((x & ST_NODIRATIME) == ST_NODIRATIME)
3851                 *r |= Mono_Posix_MountFlags_ST_NODIRATIME;
3852 #endif /* ndef ST_NODIRATIME */
3853 #ifdef ST_NOEXEC
3854         if ((x & ST_NOEXEC) == ST_NOEXEC)
3855                 *r |= Mono_Posix_MountFlags_ST_NOEXEC;
3856 #endif /* ndef ST_NOEXEC */
3857 #ifdef ST_NOSUID
3858         if ((x & ST_NOSUID) == ST_NOSUID)
3859                 *r |= Mono_Posix_MountFlags_ST_NOSUID;
3860 #endif /* ndef ST_NOSUID */
3861 #ifdef ST_RDONLY
3862         if ((x & ST_RDONLY) == ST_RDONLY)
3863                 *r |= Mono_Posix_MountFlags_ST_RDONLY;
3864 #endif /* ndef ST_RDONLY */
3865 #ifdef ST_REMOUNT
3866         if ((x & ST_REMOUNT) == ST_REMOUNT)
3867                 *r |= Mono_Posix_MountFlags_ST_REMOUNT;
3868 #endif /* ndef ST_REMOUNT */
3869 #ifdef ST_SYNCHRONOUS
3870         if ((x & ST_SYNCHRONOUS) == ST_SYNCHRONOUS)
3871                 *r |= Mono_Posix_MountFlags_ST_SYNCHRONOUS;
3872 #endif /* ndef ST_SYNCHRONOUS */
3873 #ifdef ST_WRITE
3874         if ((x & ST_WRITE) == ST_WRITE)
3875                 *r |= Mono_Posix_MountFlags_ST_WRITE;
3876 #endif /* ndef ST_WRITE */
3877         return 0;
3878 }
3879
3880 int Mono_Posix_FromMremapFlags (guint64 x, guint64 *r)
3881 {
3882         *r = 0;
3883         if ((x & Mono_Posix_MremapFlags_MREMAP_MAYMOVE) == Mono_Posix_MremapFlags_MREMAP_MAYMOVE)
3884 #ifdef MREMAP_MAYMOVE
3885                 *r |= MREMAP_MAYMOVE;
3886 #else /* def MREMAP_MAYMOVE */
3887                 {errno = EINVAL; return -1;}
3888 #endif /* ndef MREMAP_MAYMOVE */
3889         if (x == 0)
3890                 return 0;
3891         return 0;
3892 }
3893
3894 int Mono_Posix_ToMremapFlags (guint64 x, guint64 *r)
3895 {
3896         *r = 0;
3897         if (x == 0)
3898                 return 0;
3899 #ifdef MREMAP_MAYMOVE
3900         if ((x & MREMAP_MAYMOVE) == MREMAP_MAYMOVE)
3901                 *r |= Mono_Posix_MremapFlags_MREMAP_MAYMOVE;
3902 #endif /* ndef MREMAP_MAYMOVE */
3903         return 0;
3904 }
3905
3906 int Mono_Posix_FromMsyncFlags (int x, int *r)
3907 {
3908         *r = 0;
3909         if ((x & Mono_Posix_MsyncFlags_MS_ASYNC) == Mono_Posix_MsyncFlags_MS_ASYNC)
3910 #ifdef MS_ASYNC
3911                 *r |= MS_ASYNC;
3912 #else /* def MS_ASYNC */
3913                 {errno = EINVAL; return -1;}
3914 #endif /* ndef MS_ASYNC */
3915         if ((x & Mono_Posix_MsyncFlags_MS_INVALIDATE) == Mono_Posix_MsyncFlags_MS_INVALIDATE)
3916 #ifdef MS_INVALIDATE
3917                 *r |= MS_INVALIDATE;
3918 #else /* def MS_INVALIDATE */
3919                 {errno = EINVAL; return -1;}
3920 #endif /* ndef MS_INVALIDATE */
3921         if ((x & Mono_Posix_MsyncFlags_MS_SYNC) == Mono_Posix_MsyncFlags_MS_SYNC)
3922 #ifdef MS_SYNC
3923                 *r |= MS_SYNC;
3924 #else /* def MS_SYNC */
3925                 {errno = EINVAL; return -1;}
3926 #endif /* ndef MS_SYNC */
3927         if (x == 0)
3928                 return 0;
3929         return 0;
3930 }
3931
3932 int Mono_Posix_ToMsyncFlags (int x, int *r)
3933 {
3934         *r = 0;
3935         if (x == 0)
3936                 return 0;
3937 #ifdef MS_ASYNC
3938         if ((x & MS_ASYNC) == MS_ASYNC)
3939                 *r |= Mono_Posix_MsyncFlags_MS_ASYNC;
3940 #endif /* ndef MS_ASYNC */
3941 #ifdef MS_INVALIDATE
3942         if ((x & MS_INVALIDATE) == MS_INVALIDATE)
3943                 *r |= Mono_Posix_MsyncFlags_MS_INVALIDATE;
3944 #endif /* ndef MS_INVALIDATE */
3945 #ifdef MS_SYNC
3946         if ((x & MS_SYNC) == MS_SYNC)
3947                 *r |= Mono_Posix_MsyncFlags_MS_SYNC;
3948 #endif /* ndef MS_SYNC */
3949         return 0;
3950 }
3951
3952 int Mono_Posix_FromOpenFlags (int x, int *r)
3953 {
3954         *r = 0;
3955         if ((x & Mono_Posix_OpenFlags_O_APPEND) == Mono_Posix_OpenFlags_O_APPEND)
3956 #ifdef O_APPEND
3957                 *r |= O_APPEND;
3958 #else /* def O_APPEND */
3959                 {errno = EINVAL; return -1;}
3960 #endif /* ndef O_APPEND */
3961         if ((x & Mono_Posix_OpenFlags_O_ASYNC) == Mono_Posix_OpenFlags_O_ASYNC)
3962 #ifdef O_ASYNC
3963                 *r |= O_ASYNC;
3964 #else /* def O_ASYNC */
3965                 {errno = EINVAL; return -1;}
3966 #endif /* ndef O_ASYNC */
3967         if ((x & Mono_Posix_OpenFlags_O_CLOEXEC) == Mono_Posix_OpenFlags_O_CLOEXEC)
3968 #ifdef O_CLOEXEC
3969                 *r |= O_CLOEXEC;
3970 #else /* def O_CLOEXEC */
3971                 {errno = EINVAL; return -1;}
3972 #endif /* ndef O_CLOEXEC */
3973         if ((x & Mono_Posix_OpenFlags_O_CREAT) == Mono_Posix_OpenFlags_O_CREAT)
3974 #ifdef O_CREAT
3975                 *r |= O_CREAT;
3976 #else /* def O_CREAT */
3977                 {errno = EINVAL; return -1;}
3978 #endif /* ndef O_CREAT */
3979         if ((x & Mono_Posix_OpenFlags_O_DIRECT) == Mono_Posix_OpenFlags_O_DIRECT)
3980 #ifdef O_DIRECT
3981                 *r |= O_DIRECT;
3982 #else /* def O_DIRECT */
3983                 {errno = EINVAL; return -1;}
3984 #endif /* ndef O_DIRECT */
3985         if ((x & Mono_Posix_OpenFlags_O_DIRECTORY) == Mono_Posix_OpenFlags_O_DIRECTORY)
3986 #ifdef O_DIRECTORY
3987                 *r |= O_DIRECTORY;
3988 #else /* def O_DIRECTORY */
3989                 {errno = EINVAL; return -1;}
3990 #endif /* ndef O_DIRECTORY */
3991         if ((x & Mono_Posix_OpenFlags_O_EXCL) == Mono_Posix_OpenFlags_O_EXCL)
3992 #ifdef O_EXCL
3993                 *r |= O_EXCL;
3994 #else /* def O_EXCL */
3995                 {errno = EINVAL; return -1;}
3996 #endif /* ndef O_EXCL */
3997         if ((x & Mono_Posix_OpenFlags_O_LARGEFILE) == Mono_Posix_OpenFlags_O_LARGEFILE)
3998 #ifdef O_LARGEFILE
3999                 *r |= O_LARGEFILE;
4000 #else /* def O_LARGEFILE */
4001                 {errno = EINVAL; return -1;}
4002 #endif /* ndef O_LARGEFILE */
4003         if ((x & Mono_Posix_OpenFlags_O_NOCTTY) == Mono_Posix_OpenFlags_O_NOCTTY)
4004 #ifdef O_NOCTTY
4005                 *r |= O_NOCTTY;
4006 #else /* def O_NOCTTY */
4007                 {errno = EINVAL; return -1;}
4008 #endif /* ndef O_NOCTTY */
4009         if ((x & Mono_Posix_OpenFlags_O_NOFOLLOW) == Mono_Posix_OpenFlags_O_NOFOLLOW)
4010 #ifdef O_NOFOLLOW
4011                 *r |= O_NOFOLLOW;
4012 #else /* def O_NOFOLLOW */
4013                 {errno = EINVAL; return -1;}
4014 #endif /* ndef O_NOFOLLOW */
4015         if ((x & Mono_Posix_OpenFlags_O_NONBLOCK) == Mono_Posix_OpenFlags_O_NONBLOCK)
4016 #ifdef O_NONBLOCK
4017                 *r |= O_NONBLOCK;
4018 #else /* def O_NONBLOCK */
4019                 {errno = EINVAL; return -1;}
4020 #endif /* ndef O_NONBLOCK */
4021         if ((x & Mono_Posix_OpenFlags_O_PATH) == Mono_Posix_OpenFlags_O_PATH)
4022 #ifdef O_PATH
4023                 *r |= O_PATH;
4024 #else /* def O_PATH */
4025                 {errno = EINVAL; return -1;}
4026 #endif /* ndef O_PATH */
4027         if ((x & Mono_Posix_OpenFlags_O_RDONLY) == Mono_Posix_OpenFlags_O_RDONLY)
4028 #ifdef O_RDONLY
4029                 *r |= O_RDONLY;
4030 #else /* def O_RDONLY */
4031                 {errno = EINVAL; return -1;}
4032 #endif /* ndef O_RDONLY */
4033         if ((x & Mono_Posix_OpenFlags_O_RDWR) == Mono_Posix_OpenFlags_O_RDWR)
4034 #ifdef O_RDWR
4035                 *r |= O_RDWR;
4036 #else /* def O_RDWR */
4037                 {errno = EINVAL; return -1;}
4038 #endif /* ndef O_RDWR */
4039         if ((x & Mono_Posix_OpenFlags_O_SYNC) == Mono_Posix_OpenFlags_O_SYNC)
4040 #ifdef O_SYNC
4041                 *r |= O_SYNC;
4042 #else /* def O_SYNC */
4043                 {errno = EINVAL; return -1;}
4044 #endif /* ndef O_SYNC */
4045         if ((x & Mono_Posix_OpenFlags_O_TRUNC) == Mono_Posix_OpenFlags_O_TRUNC)
4046 #ifdef O_TRUNC
4047                 *r |= O_TRUNC;
4048 #else /* def O_TRUNC */
4049                 {errno = EINVAL; return -1;}
4050 #endif /* ndef O_TRUNC */
4051         if ((x & Mono_Posix_OpenFlags_O_WRONLY) == Mono_Posix_OpenFlags_O_WRONLY)
4052 #ifdef O_WRONLY
4053                 *r |= O_WRONLY;
4054 #else /* def O_WRONLY */
4055                 {errno = EINVAL; return -1;}
4056 #endif /* ndef O_WRONLY */
4057         if (x == 0)
4058                 return 0;
4059         return 0;
4060 }
4061
4062 int Mono_Posix_ToOpenFlags (int x, int *r)
4063 {
4064         *r = 0;
4065         if (x == 0)
4066                 return 0;
4067 #ifdef O_APPEND
4068         if ((x & O_APPEND) == O_APPEND)
4069                 *r |= Mono_Posix_OpenFlags_O_APPEND;
4070 #endif /* ndef O_APPEND */
4071 #ifdef O_ASYNC
4072         if ((x & O_ASYNC) == O_ASYNC)
4073                 *r |= Mono_Posix_OpenFlags_O_ASYNC;
4074 #endif /* ndef O_ASYNC */
4075 #ifdef O_CLOEXEC
4076         if ((x & O_CLOEXEC) == O_CLOEXEC)
4077                 *r |= Mono_Posix_OpenFlags_O_CLOEXEC;
4078 #endif /* ndef O_CLOEXEC */
4079 #ifdef O_CREAT
4080         if ((x & O_CREAT) == O_CREAT)
4081                 *r |= Mono_Posix_OpenFlags_O_CREAT;
4082 #endif /* ndef O_CREAT */
4083 #ifdef O_DIRECT
4084         if ((x & O_DIRECT) == O_DIRECT)
4085                 *r |= Mono_Posix_OpenFlags_O_DIRECT;
4086 #endif /* ndef O_DIRECT */
4087 #ifdef O_DIRECTORY
4088         if ((x & O_DIRECTORY) == O_DIRECTORY)
4089                 *r |= Mono_Posix_OpenFlags_O_DIRECTORY;
4090 #endif /* ndef O_DIRECTORY */
4091 #ifdef O_EXCL
4092         if ((x & O_EXCL) == O_EXCL)
4093                 *r |= Mono_Posix_OpenFlags_O_EXCL;
4094 #endif /* ndef O_EXCL */
4095 #ifdef O_LARGEFILE
4096         if ((x & O_LARGEFILE) == O_LARGEFILE)
4097                 *r |= Mono_Posix_OpenFlags_O_LARGEFILE;
4098 #endif /* ndef O_LARGEFILE */
4099 #ifdef O_NOCTTY
4100         if ((x & O_NOCTTY) == O_NOCTTY)
4101                 *r |= Mono_Posix_OpenFlags_O_NOCTTY;
4102 #endif /* ndef O_NOCTTY */
4103 #ifdef O_NOFOLLOW
4104         if ((x & O_NOFOLLOW) == O_NOFOLLOW)
4105                 *r |= Mono_Posix_OpenFlags_O_NOFOLLOW;
4106 #endif /* ndef O_NOFOLLOW */
4107 #ifdef O_NONBLOCK
4108         if ((x & O_NONBLOCK) == O_NONBLOCK)
4109                 *r |= Mono_Posix_OpenFlags_O_NONBLOCK;
4110 #endif /* ndef O_NONBLOCK */
4111 #ifdef O_PATH
4112         if ((x & O_PATH) == O_PATH)
4113                 *r |= Mono_Posix_OpenFlags_O_PATH;
4114 #endif /* ndef O_PATH */
4115 #ifdef O_RDONLY
4116         if ((x & O_RDONLY) == O_RDONLY)
4117                 *r |= Mono_Posix_OpenFlags_O_RDONLY;
4118 #endif /* ndef O_RDONLY */
4119 #ifdef O_RDWR
4120         if ((x & O_RDWR) == O_RDWR)
4121                 *r |= Mono_Posix_OpenFlags_O_RDWR;
4122 #endif /* ndef O_RDWR */
4123 #ifdef O_SYNC
4124         if ((x & O_SYNC) == O_SYNC)
4125                 *r |= Mono_Posix_OpenFlags_O_SYNC;
4126 #endif /* ndef O_SYNC */
4127 #ifdef O_TRUNC
4128         if ((x & O_TRUNC) == O_TRUNC)
4129                 *r |= Mono_Posix_OpenFlags_O_TRUNC;
4130 #endif /* ndef O_TRUNC */
4131 #ifdef O_WRONLY
4132         if ((x & O_WRONLY) == O_WRONLY)
4133                 *r |= Mono_Posix_OpenFlags_O_WRONLY;
4134 #endif /* ndef O_WRONLY */
4135         return 0;
4136 }
4137
4138 int Mono_Posix_FromPathconfName (int x, int *r)
4139 {
4140         *r = 0;
4141         if (x == Mono_Posix_PathconfName__PC_2_SYMLINKS)
4142 #ifdef _PC_2_SYMLINKS
4143                 {*r = _PC_2_SYMLINKS; return 0;}
4144 #else /* def _PC_2_SYMLINKS */
4145                 {errno = EINVAL; return -1;}
4146 #endif /* ndef _PC_2_SYMLINKS */
4147         if (x == Mono_Posix_PathconfName__PC_ALLOC_SIZE_MIN)
4148 #ifdef _PC_ALLOC_SIZE_MIN
4149                 {*r = _PC_ALLOC_SIZE_MIN; return 0;}
4150 #else /* def _PC_ALLOC_SIZE_MIN */
4151                 {errno = EINVAL; return -1;}
4152 #endif /* ndef _PC_ALLOC_SIZE_MIN */
4153         if (x == Mono_Posix_PathconfName__PC_ASYNC_IO)
4154 #ifdef _PC_ASYNC_IO
4155                 {*r = _PC_ASYNC_IO; return 0;}
4156 #else /* def _PC_ASYNC_IO */
4157                 {errno = EINVAL; return -1;}
4158 #endif /* ndef _PC_ASYNC_IO */
4159         if (x == Mono_Posix_PathconfName__PC_CHOWN_RESTRICTED)
4160 #ifdef _PC_CHOWN_RESTRICTED
4161                 {*r = _PC_CHOWN_RESTRICTED; return 0;}
4162 #else /* def _PC_CHOWN_RESTRICTED */
4163                 {errno = EINVAL; return -1;}
4164 #endif /* ndef _PC_CHOWN_RESTRICTED */
4165         if (x == Mono_Posix_PathconfName__PC_FILESIZEBITS)
4166 #ifdef _PC_FILESIZEBITS
4167                 {*r = _PC_FILESIZEBITS; return 0;}
4168 #else /* def _PC_FILESIZEBITS */
4169                 {errno = EINVAL; return -1;}
4170 #endif /* ndef _PC_FILESIZEBITS */
4171         if (x == Mono_Posix_PathconfName__PC_LINK_MAX)
4172 #ifdef _PC_LINK_MAX
4173                 {*r = _PC_LINK_MAX; return 0;}
4174 #else /* def _PC_LINK_MAX */
4175                 {errno = EINVAL; return -1;}
4176 #endif /* ndef _PC_LINK_MAX */
4177         if (x == Mono_Posix_PathconfName__PC_MAX_CANON)
4178 #ifdef _PC_MAX_CANON
4179                 {*r = _PC_MAX_CANON; return 0;}
4180 #else /* def _PC_MAX_CANON */
4181                 {errno = EINVAL; return -1;}
4182 #endif /* ndef _PC_MAX_CANON */
4183         if (x == Mono_Posix_PathconfName__PC_MAX_INPUT)
4184 #ifdef _PC_MAX_INPUT
4185                 {*r = _PC_MAX_INPUT; return 0;}
4186 #else /* def _PC_MAX_INPUT */
4187                 {errno = EINVAL; return -1;}
4188 #endif /* ndef _PC_MAX_INPUT */
4189         if (x == Mono_Posix_PathconfName__PC_NAME_MAX)
4190 #ifdef _PC_NAME_MAX
4191                 {*r = _PC_NAME_MAX; return 0;}
4192 #else /* def _PC_NAME_MAX */
4193                 {errno = EINVAL; return -1;}
4194 #endif /* ndef _PC_NAME_MAX */
4195         if (x == Mono_Posix_PathconfName__PC_NO_TRUNC)
4196 #ifdef _PC_NO_TRUNC
4197                 {*r = _PC_NO_TRUNC; return 0;}
4198 #else /* def _PC_NO_TRUNC */
4199                 {errno = EINVAL; return -1;}
4200 #endif /* ndef _PC_NO_TRUNC */
4201         if (x == Mono_Posix_PathconfName__PC_PATH_MAX)
4202 #ifdef _PC_PATH_MAX
4203                 {*r = _PC_PATH_MAX; return 0;}
4204 #else /* def _PC_PATH_MAX */
4205                 {errno = EINVAL; return -1;}
4206 #endif /* ndef _PC_PATH_MAX */
4207         if (x == Mono_Posix_PathconfName__PC_PIPE_BUF)
4208 #ifdef _PC_PIPE_BUF
4209                 {*r = _PC_PIPE_BUF; return 0;}
4210 #else /* def _PC_PIPE_BUF */
4211                 {errno = EINVAL; return -1;}
4212 #endif /* ndef _PC_PIPE_BUF */
4213         if (x == Mono_Posix_PathconfName__PC_PRIO_IO)
4214 #ifdef _PC_PRIO_IO
4215                 {*r = _PC_PRIO_IO; return 0;}
4216 #else /* def _PC_PRIO_IO */
4217                 {errno = EINVAL; return -1;}
4218 #endif /* ndef _PC_PRIO_IO */
4219         if (x == Mono_Posix_PathconfName__PC_REC_INCR_XFER_SIZE)
4220 #ifdef _PC_REC_INCR_XFER_SIZE
4221                 {*r = _PC_REC_INCR_XFER_SIZE; return 0;}
4222 #else /* def _PC_REC_INCR_XFER_SIZE */
4223                 {errno = EINVAL; return -1;}
4224 #endif /* ndef _PC_REC_INCR_XFER_SIZE */
4225         if (x == Mono_Posix_PathconfName__PC_REC_MAX_XFER_SIZE)
4226 #ifdef _PC_REC_MAX_XFER_SIZE
4227                 {*r = _PC_REC_MAX_XFER_SIZE; return 0;}
4228 #else /* def _PC_REC_MAX_XFER_SIZE */
4229                 {errno = EINVAL; return -1;}
4230 #endif /* ndef _PC_REC_MAX_XFER_SIZE */
4231         if (x == Mono_Posix_PathconfName__PC_REC_MIN_XFER_SIZE)
4232 #ifdef _PC_REC_MIN_XFER_SIZE
4233                 {*r = _PC_REC_MIN_XFER_SIZE; return 0;}
4234 #else /* def _PC_REC_MIN_XFER_SIZE */
4235                 {errno = EINVAL; return -1;}
4236 #endif /* ndef _PC_REC_MIN_XFER_SIZE */
4237         if (x == Mono_Posix_PathconfName__PC_REC_XFER_ALIGN)
4238 #ifdef _PC_REC_XFER_ALIGN
4239                 {*r = _PC_REC_XFER_ALIGN; return 0;}
4240 #else /* def _PC_REC_XFER_ALIGN */
4241                 {errno = EINVAL; return -1;}
4242 #endif /* ndef _PC_REC_XFER_ALIGN */
4243         if (x == Mono_Posix_PathconfName__PC_SOCK_MAXBUF)
4244 #ifdef _PC_SOCK_MAXBUF
4245                 {*r = _PC_SOCK_MAXBUF; return 0;}
4246 #else /* def _PC_SOCK_MAXBUF */
4247                 {errno = EINVAL; return -1;}
4248 #endif /* ndef _PC_SOCK_MAXBUF */
4249         if (x == Mono_Posix_PathconfName__PC_SYMLINK_MAX)
4250 #ifdef _PC_SYMLINK_MAX
4251                 {*r = _PC_SYMLINK_MAX; return 0;}
4252 #else /* def _PC_SYMLINK_MAX */
4253                 {errno = EINVAL; return -1;}
4254 #endif /* ndef _PC_SYMLINK_MAX */
4255         if (x == Mono_Posix_PathconfName__PC_SYNC_IO)
4256 #ifdef _PC_SYNC_IO
4257                 {*r = _PC_SYNC_IO; return 0;}
4258 #else /* def _PC_SYNC_IO */
4259                 {errno = EINVAL; return -1;}
4260 #endif /* ndef _PC_SYNC_IO */
4261         if (x == Mono_Posix_PathconfName__PC_VDISABLE)
4262 #ifdef _PC_VDISABLE
4263                 {*r = _PC_VDISABLE; return 0;}
4264 #else /* def _PC_VDISABLE */
4265                 {errno = EINVAL; return -1;}
4266 #endif /* ndef _PC_VDISABLE */
4267         if (x == 0)
4268                 return 0;
4269         errno = EINVAL; return -1;
4270 }
4271
4272 int Mono_Posix_ToPathconfName (int x, int *r)
4273 {
4274         *r = 0;
4275         if (x == 0)
4276                 return 0;
4277 #ifdef _PC_2_SYMLINKS
4278         if (x == _PC_2_SYMLINKS)
4279                 {*r = Mono_Posix_PathconfName__PC_2_SYMLINKS; return 0;}
4280 #endif /* ndef _PC_2_SYMLINKS */
4281 #ifdef _PC_ALLOC_SIZE_MIN
4282         if (x == _PC_ALLOC_SIZE_MIN)
4283                 {*r = Mono_Posix_PathconfName__PC_ALLOC_SIZE_MIN; return 0;}
4284 #endif /* ndef _PC_ALLOC_SIZE_MIN */
4285 #ifdef _PC_ASYNC_IO
4286         if (x == _PC_ASYNC_IO)
4287                 {*r = Mono_Posix_PathconfName__PC_ASYNC_IO; return 0;}
4288 #endif /* ndef _PC_ASYNC_IO */
4289 #ifdef _PC_CHOWN_RESTRICTED
4290         if (x == _PC_CHOWN_RESTRICTED)
4291                 {*r = Mono_Posix_PathconfName__PC_CHOWN_RESTRICTED; return 0;}
4292 #endif /* ndef _PC_CHOWN_RESTRICTED */
4293 #ifdef _PC_FILESIZEBITS
4294         if (x == _PC_FILESIZEBITS)
4295                 {*r = Mono_Posix_PathconfName__PC_FILESIZEBITS; return 0;}
4296 #endif /* ndef _PC_FILESIZEBITS */
4297 #ifdef _PC_LINK_MAX
4298         if (x == _PC_LINK_MAX)
4299                 {*r = Mono_Posix_PathconfName__PC_LINK_MAX; return 0;}
4300 #endif /* ndef _PC_LINK_MAX */
4301 #ifdef _PC_MAX_CANON
4302         if (x == _PC_MAX_CANON)
4303                 {*r = Mono_Posix_PathconfName__PC_MAX_CANON; return 0;}
4304 #endif /* ndef _PC_MAX_CANON */
4305 #ifdef _PC_MAX_INPUT
4306         if (x == _PC_MAX_INPUT)
4307                 {*r = Mono_Posix_PathconfName__PC_MAX_INPUT; return 0;}
4308 #endif /* ndef _PC_MAX_INPUT */
4309 #ifdef _PC_NAME_MAX
4310         if (x == _PC_NAME_MAX)
4311                 {*r = Mono_Posix_PathconfName__PC_NAME_MAX; return 0;}
4312 #endif /* ndef _PC_NAME_MAX */
4313 #ifdef _PC_NO_TRUNC
4314         if (x == _PC_NO_TRUNC)
4315                 {*r = Mono_Posix_PathconfName__PC_NO_TRUNC; return 0;}
4316 #endif /* ndef _PC_NO_TRUNC */
4317 #ifdef _PC_PATH_MAX
4318         if (x == _PC_PATH_MAX)
4319                 {*r = Mono_Posix_PathconfName__PC_PATH_MAX; return 0;}
4320 #endif /* ndef _PC_PATH_MAX */
4321 #ifdef _PC_PIPE_BUF
4322         if (x == _PC_PIPE_BUF)
4323                 {*r = Mono_Posix_PathconfName__PC_PIPE_BUF; return 0;}
4324 #endif /* ndef _PC_PIPE_BUF */
4325 #ifdef _PC_PRIO_IO
4326         if (x == _PC_PRIO_IO)
4327                 {*r = Mono_Posix_PathconfName__PC_PRIO_IO; return 0;}
4328 #endif /* ndef _PC_PRIO_IO */
4329 #ifdef _PC_REC_INCR_XFER_SIZE
4330         if (x == _PC_REC_INCR_XFER_SIZE)
4331                 {*r = Mono_Posix_PathconfName__PC_REC_INCR_XFER_SIZE; return 0;}
4332 #endif /* ndef _PC_REC_INCR_XFER_SIZE */
4333 #ifdef _PC_REC_MAX_XFER_SIZE
4334         if (x == _PC_REC_MAX_XFER_SIZE)
4335                 {*r = Mono_Posix_PathconfName__PC_REC_MAX_XFER_SIZE; return 0;}
4336 #endif /* ndef _PC_REC_MAX_XFER_SIZE */
4337 #ifdef _PC_REC_MIN_XFER_SIZE
4338         if (x == _PC_REC_MIN_XFER_SIZE)
4339                 {*r = Mono_Posix_PathconfName__PC_REC_MIN_XFER_SIZE; return 0;}
4340 #endif /* ndef _PC_REC_MIN_XFER_SIZE */
4341 #ifdef _PC_REC_XFER_ALIGN
4342         if (x == _PC_REC_XFER_ALIGN)
4343                 {*r = Mono_Posix_PathconfName__PC_REC_XFER_ALIGN; return 0;}
4344 #endif /* ndef _PC_REC_XFER_ALIGN */
4345 #ifdef _PC_SOCK_MAXBUF
4346         if (x == _PC_SOCK_MAXBUF)
4347                 {*r = Mono_Posix_PathconfName__PC_SOCK_MAXBUF; return 0;}
4348 #endif /* ndef _PC_SOCK_MAXBUF */
4349 #ifdef _PC_SYMLINK_MAX
4350         if (x == _PC_SYMLINK_MAX)
4351                 {*r = Mono_Posix_PathconfName__PC_SYMLINK_MAX; return 0;}
4352 #endif /* ndef _PC_SYMLINK_MAX */
4353 #ifdef _PC_SYNC_IO
4354         if (x == _PC_SYNC_IO)
4355                 {*r = Mono_Posix_PathconfName__PC_SYNC_IO; return 0;}
4356 #endif /* ndef _PC_SYNC_IO */
4357 #ifdef _PC_VDISABLE
4358         if (x == _PC_VDISABLE)
4359                 {*r = Mono_Posix_PathconfName__PC_VDISABLE; return 0;}
4360 #endif /* ndef _PC_VDISABLE */
4361         errno = EINVAL; return -1;
4362 }
4363
4364 int Mono_Posix_FromPollEvents (short x, short *r)
4365 {
4366         *r = 0;
4367         if ((x & Mono_Posix_PollEvents_POLLERR) == Mono_Posix_PollEvents_POLLERR)
4368 #ifdef POLLERR
4369                 *r |= POLLERR;
4370 #else /* def POLLERR */
4371                 {errno = EINVAL; return -1;}
4372 #endif /* ndef POLLERR */
4373         if ((x & Mono_Posix_PollEvents_POLLHUP) == Mono_Posix_PollEvents_POLLHUP)
4374 #ifdef POLLHUP
4375                 *r |= POLLHUP;
4376 #else /* def POLLHUP */
4377                 {errno = EINVAL; return -1;}
4378 #endif /* ndef POLLHUP */
4379         if ((x & Mono_Posix_PollEvents_POLLIN) == Mono_Posix_PollEvents_POLLIN)
4380 #ifdef POLLIN
4381                 *r |= POLLIN;
4382 #else /* def POLLIN */
4383                 {errno = EINVAL; return -1;}
4384 #endif /* ndef POLLIN */
4385         if ((x & Mono_Posix_PollEvents_POLLNVAL) == Mono_Posix_PollEvents_POLLNVAL)
4386 #ifdef POLLNVAL
4387                 *r |= POLLNVAL;
4388 #else /* def POLLNVAL */
4389                 {errno = EINVAL; return -1;}
4390 #endif /* ndef POLLNVAL */
4391         if ((x & Mono_Posix_PollEvents_POLLOUT) == Mono_Posix_PollEvents_POLLOUT)
4392 #ifdef POLLOUT
4393                 *r |= POLLOUT;
4394 #else /* def POLLOUT */
4395                 {errno = EINVAL; return -1;}
4396 #endif /* ndef POLLOUT */
4397         if ((x & Mono_Posix_PollEvents_POLLPRI) == Mono_Posix_PollEvents_POLLPRI)
4398 #ifdef POLLPRI
4399                 *r |= POLLPRI;
4400 #else /* def POLLPRI */
4401                 {errno = EINVAL; return -1;}
4402 #endif /* ndef POLLPRI */
4403         if ((x & Mono_Posix_PollEvents_POLLRDBAND) == Mono_Posix_PollEvents_POLLRDBAND)
4404 #ifdef POLLRDBAND
4405                 *r |= POLLRDBAND;
4406 #else /* def POLLRDBAND */
4407                 {errno = EINVAL; return -1;}
4408 #endif /* ndef POLLRDBAND */
4409         if ((x & Mono_Posix_PollEvents_POLLRDNORM) == Mono_Posix_PollEvents_POLLRDNORM)
4410 #ifdef POLLRDNORM
4411                 *r |= POLLRDNORM;
4412 #else /* def POLLRDNORM */
4413                 {errno = EINVAL; return -1;}
4414 #endif /* ndef POLLRDNORM */
4415         if ((x & Mono_Posix_PollEvents_POLLWRBAND) == Mono_Posix_PollEvents_POLLWRBAND)
4416 #ifdef POLLWRBAND
4417                 *r |= POLLWRBAND;
4418 #else /* def POLLWRBAND */
4419                 {errno = EINVAL; return -1;}
4420 #endif /* ndef POLLWRBAND */
4421         if ((x & Mono_Posix_PollEvents_POLLWRNORM) == Mono_Posix_PollEvents_POLLWRNORM)
4422 #ifdef POLLWRNORM
4423                 *r |= POLLWRNORM;
4424 #else /* def POLLWRNORM */
4425                 {errno = EINVAL; return -1;}
4426 #endif /* ndef POLLWRNORM */
4427         if (x == 0)
4428                 return 0;
4429         return 0;
4430 }
4431
4432 int Mono_Posix_ToPollEvents (short x, short *r)
4433 {
4434         *r = 0;
4435         if (x == 0)
4436                 return 0;
4437 #ifdef POLLERR
4438         if ((x & POLLERR) == POLLERR)
4439                 *r |= Mono_Posix_PollEvents_POLLERR;
4440 #endif /* ndef POLLERR */
4441 #ifdef POLLHUP
4442         if ((x & POLLHUP) == POLLHUP)
4443                 *r |= Mono_Posix_PollEvents_POLLHUP;
4444 #endif /* ndef POLLHUP */
4445 #ifdef POLLIN
4446         if ((x & POLLIN) == POLLIN)
4447                 *r |= Mono_Posix_PollEvents_POLLIN;
4448 #endif /* ndef POLLIN */
4449 #ifdef POLLNVAL
4450         if ((x & POLLNVAL) == POLLNVAL)
4451                 *r |= Mono_Posix_PollEvents_POLLNVAL;
4452 #endif /* ndef POLLNVAL */
4453 #ifdef POLLOUT
4454         if ((x & POLLOUT) == POLLOUT)
4455                 *r |= Mono_Posix_PollEvents_POLLOUT;
4456 #endif /* ndef POLLOUT */
4457 #ifdef POLLPRI
4458         if ((x & POLLPRI) == POLLPRI)
4459                 *r |= Mono_Posix_PollEvents_POLLPRI;
4460 #endif /* ndef POLLPRI */
4461 #ifdef POLLRDBAND
4462         if ((x & POLLRDBAND) == POLLRDBAND)
4463                 *r |= Mono_Posix_PollEvents_POLLRDBAND;
4464 #endif /* ndef POLLRDBAND */
4465 #ifdef POLLRDNORM
4466         if ((x & POLLRDNORM) == POLLRDNORM)
4467                 *r |= Mono_Posix_PollEvents_POLLRDNORM;
4468 #endif /* ndef POLLRDNORM */
4469 #ifdef POLLWRBAND
4470         if ((x & POLLWRBAND) == POLLWRBAND)
4471                 *r |= Mono_Posix_PollEvents_POLLWRBAND;
4472 #endif /* ndef POLLWRBAND */
4473 #ifdef POLLWRNORM
4474         if ((x & POLLWRNORM) == POLLWRNORM)
4475                 *r |= Mono_Posix_PollEvents_POLLWRNORM;
4476 #endif /* ndef POLLWRNORM */
4477         return 0;
4478 }
4479
4480 #ifdef HAVE_STRUCT_POLLFD
4481 int
4482 Mono_Posix_FromPollfd (struct Mono_Posix_Pollfd *from, struct pollfd *to)
4483 {
4484         _cnm_return_val_if_overflow (int, from->fd, -1);
4485
4486         memset (to, 0, sizeof(*to));
4487
4488         to->fd      = from->fd;
4489         if (Mono_Posix_FromPollEvents (from->events, &to->events) != 0) {
4490                 return -1;
4491         }
4492         if (Mono_Posix_FromPollEvents (from->revents, &to->revents) != 0) {
4493                 return -1;
4494         }
4495
4496         return 0;
4497 }
4498 #endif /* ndef HAVE_STRUCT_POLLFD */
4499
4500
4501 #ifdef HAVE_STRUCT_POLLFD
4502 int
4503 Mono_Posix_ToPollfd (struct pollfd *from, struct Mono_Posix_Pollfd *to)
4504 {
4505         _cnm_return_val_if_overflow (int, from->fd, -1);
4506
4507         memset (to, 0, sizeof(*to));
4508
4509         to->fd      = from->fd;
4510         if (Mono_Posix_ToPollEvents (from->events, &to->events) != 0) {
4511                 return -1;
4512         }
4513         if (Mono_Posix_ToPollEvents (from->revents, &to->revents) != 0) {
4514                 return -1;
4515         }
4516
4517         return 0;
4518 }
4519 #endif /* ndef HAVE_STRUCT_POLLFD */
4520
4521
4522 int Mono_Posix_FromPosixFadviseAdvice (int x, int *r)
4523 {
4524         *r = 0;
4525         if (x == Mono_Posix_PosixFadviseAdvice_POSIX_FADV_DONTNEED)
4526 #ifdef POSIX_FADV_DONTNEED
4527                 {*r = POSIX_FADV_DONTNEED; return 0;}
4528 #else /* def POSIX_FADV_DONTNEED */
4529                 {errno = EINVAL; return -1;}
4530 #endif /* ndef POSIX_FADV_DONTNEED */
4531         if (x == Mono_Posix_PosixFadviseAdvice_POSIX_FADV_NOREUSE)
4532 #ifdef POSIX_FADV_NOREUSE
4533                 {*r = POSIX_FADV_NOREUSE; return 0;}
4534 #else /* def POSIX_FADV_NOREUSE */
4535                 {errno = EINVAL; return -1;}
4536 #endif /* ndef POSIX_FADV_NOREUSE */
4537         if (x == Mono_Posix_PosixFadviseAdvice_POSIX_FADV_NORMAL)
4538 #ifdef POSIX_FADV_NORMAL
4539                 {*r = POSIX_FADV_NORMAL; return 0;}
4540 #else /* def POSIX_FADV_NORMAL */
4541                 {errno = EINVAL; return -1;}
4542 #endif /* ndef POSIX_FADV_NORMAL */
4543         if (x == Mono_Posix_PosixFadviseAdvice_POSIX_FADV_RANDOM)
4544 #ifdef POSIX_FADV_RANDOM
4545                 {*r = POSIX_FADV_RANDOM; return 0;}
4546 #else /* def POSIX_FADV_RANDOM */
4547                 {errno = EINVAL; return -1;}
4548 #endif /* ndef POSIX_FADV_RANDOM */
4549         if (x == Mono_Posix_PosixFadviseAdvice_POSIX_FADV_SEQUENTIAL)
4550 #ifdef POSIX_FADV_SEQUENTIAL
4551                 {*r = POSIX_FADV_SEQUENTIAL; return 0;}
4552 #else /* def POSIX_FADV_SEQUENTIAL */
4553                 {errno = EINVAL; return -1;}
4554 #endif /* ndef POSIX_FADV_SEQUENTIAL */
4555         if (x == Mono_Posix_PosixFadviseAdvice_POSIX_FADV_WILLNEED)
4556 #ifdef POSIX_FADV_WILLNEED
4557                 {*r = POSIX_FADV_WILLNEED; return 0;}
4558 #else /* def POSIX_FADV_WILLNEED */
4559                 {errno = EINVAL; return -1;}
4560 #endif /* ndef POSIX_FADV_WILLNEED */
4561         if (x == 0)
4562                 return 0;
4563         errno = EINVAL; return -1;
4564 }
4565
4566 int Mono_Posix_ToPosixFadviseAdvice (int x, int *r)
4567 {
4568         *r = 0;
4569         if (x == 0)
4570                 return 0;
4571 #ifdef POSIX_FADV_DONTNEED
4572         if (x == POSIX_FADV_DONTNEED)
4573                 {*r = Mono_Posix_PosixFadviseAdvice_POSIX_FADV_DONTNEED; return 0;}
4574 #endif /* ndef POSIX_FADV_DONTNEED */
4575 #ifdef POSIX_FADV_NOREUSE
4576         if (x == POSIX_FADV_NOREUSE)
4577                 {*r = Mono_Posix_PosixFadviseAdvice_POSIX_FADV_NOREUSE; return 0;}
4578 #endif /* ndef POSIX_FADV_NOREUSE */
4579 #ifdef POSIX_FADV_NORMAL
4580         if (x == POSIX_FADV_NORMAL)
4581                 {*r = Mono_Posix_PosixFadviseAdvice_POSIX_FADV_NORMAL; return 0;}
4582 #endif /* ndef POSIX_FADV_NORMAL */
4583 #ifdef POSIX_FADV_RANDOM
4584         if (x == POSIX_FADV_RANDOM)
4585                 {*r = Mono_Posix_PosixFadviseAdvice_POSIX_FADV_RANDOM; return 0;}
4586 #endif /* ndef POSIX_FADV_RANDOM */
4587 #ifdef POSIX_FADV_SEQUENTIAL
4588         if (x == POSIX_FADV_SEQUENTIAL)
4589                 {*r = Mono_Posix_PosixFadviseAdvice_POSIX_FADV_SEQUENTIAL; return 0;}
4590 #endif /* ndef POSIX_FADV_SEQUENTIAL */
4591 #ifdef POSIX_FADV_WILLNEED
4592         if (x == POSIX_FADV_WILLNEED)
4593                 {*r = Mono_Posix_PosixFadviseAdvice_POSIX_FADV_WILLNEED; return 0;}
4594 #endif /* ndef POSIX_FADV_WILLNEED */
4595         errno = EINVAL; return -1;
4596 }
4597
4598 int Mono_Posix_FromPosixMadviseAdvice (int x, int *r)
4599 {
4600         *r = 0;
4601         if (x == Mono_Posix_PosixMadviseAdvice_POSIX_MADV_DONTNEED)
4602 #ifdef POSIX_MADV_DONTNEED
4603                 {*r = POSIX_MADV_DONTNEED; return 0;}
4604 #else /* def POSIX_MADV_DONTNEED */
4605                 {errno = EINVAL; return -1;}
4606 #endif /* ndef POSIX_MADV_DONTNEED */
4607         if (x == Mono_Posix_PosixMadviseAdvice_POSIX_MADV_NORMAL)
4608 #ifdef POSIX_MADV_NORMAL
4609                 {*r = POSIX_MADV_NORMAL; return 0;}
4610 #else /* def POSIX_MADV_NORMAL */
4611                 {errno = EINVAL; return -1;}
4612 #endif /* ndef POSIX_MADV_NORMAL */
4613         if (x == Mono_Posix_PosixMadviseAdvice_POSIX_MADV_RANDOM)
4614 #ifdef POSIX_MADV_RANDOM
4615                 {*r = POSIX_MADV_RANDOM; return 0;}
4616 #else /* def POSIX_MADV_RANDOM */
4617                 {errno = EINVAL; return -1;}
4618 #endif /* ndef POSIX_MADV_RANDOM */
4619         if (x == Mono_Posix_PosixMadviseAdvice_POSIX_MADV_SEQUENTIAL)
4620 #ifdef POSIX_MADV_SEQUENTIAL
4621                 {*r = POSIX_MADV_SEQUENTIAL; return 0;}
4622 #else /* def POSIX_MADV_SEQUENTIAL */
4623                 {errno = EINVAL; return -1;}
4624 #endif /* ndef POSIX_MADV_SEQUENTIAL */
4625         if (x == Mono_Posix_PosixMadviseAdvice_POSIX_MADV_WILLNEED)
4626 #ifdef POSIX_MADV_WILLNEED
4627                 {*r = POSIX_MADV_WILLNEED; return 0;}
4628 #else /* def POSIX_MADV_WILLNEED */
4629                 {errno = EINVAL; return -1;}
4630 #endif /* ndef POSIX_MADV_WILLNEED */
4631         if (x == 0)
4632                 return 0;
4633         errno = EINVAL; return -1;
4634 }
4635
4636 int Mono_Posix_ToPosixMadviseAdvice (int x, int *r)
4637 {
4638         *r = 0;
4639         if (x == 0)
4640                 return 0;
4641 #ifdef POSIX_MADV_DONTNEED
4642         if (x == POSIX_MADV_DONTNEED)
4643                 {*r = Mono_Posix_PosixMadviseAdvice_POSIX_MADV_DONTNEED; return 0;}
4644 #endif /* ndef POSIX_MADV_DONTNEED */
4645 #ifdef POSIX_MADV_NORMAL
4646         if (x == POSIX_MADV_NORMAL)
4647                 {*r = Mono_Posix_PosixMadviseAdvice_POSIX_MADV_NORMAL; return 0;}
4648 #endif /* ndef POSIX_MADV_NORMAL */
4649 #ifdef POSIX_MADV_RANDOM
4650         if (x == POSIX_MADV_RANDOM)
4651                 {*r = Mono_Posix_PosixMadviseAdvice_POSIX_MADV_RANDOM; return 0;}
4652 #endif /* ndef POSIX_MADV_RANDOM */
4653 #ifdef POSIX_MADV_SEQUENTIAL
4654         if (x == POSIX_MADV_SEQUENTIAL)
4655                 {*r = Mono_Posix_PosixMadviseAdvice_POSIX_MADV_SEQUENTIAL; return 0;}
4656 #endif /* ndef POSIX_MADV_SEQUENTIAL */
4657 #ifdef POSIX_MADV_WILLNEED
4658         if (x == POSIX_MADV_WILLNEED)
4659                 {*r = Mono_Posix_PosixMadviseAdvice_POSIX_MADV_WILLNEED; return 0;}
4660 #endif /* ndef POSIX_MADV_WILLNEED */
4661         errno = EINVAL; return -1;
4662 }
4663
4664 int Mono_Posix_FromSeekFlags (short x, short *r)
4665 {
4666         *r = 0;
4667         if (x == Mono_Posix_SeekFlags_L_INCR)
4668 #ifdef L_INCR
4669                 {*r = L_INCR; return 0;}
4670 #else /* def L_INCR */
4671                 {errno = EINVAL; return -1;}
4672 #endif /* ndef L_INCR */
4673         if (x == Mono_Posix_SeekFlags_L_SET)
4674 #ifdef L_SET
4675                 {*r = L_SET; return 0;}
4676 #else /* def L_SET */
4677                 {errno = EINVAL; return -1;}
4678 #endif /* ndef L_SET */
4679         if (x == Mono_Posix_SeekFlags_L_XTND)
4680 #ifdef L_XTND
4681                 {*r = L_XTND; return 0;}
4682 #else /* def L_XTND */
4683                 {errno = EINVAL; return -1;}
4684 #endif /* ndef L_XTND */
4685         if (x == Mono_Posix_SeekFlags_SEEK_CUR)
4686 #ifdef SEEK_CUR
4687                 {*r = SEEK_CUR; return 0;}
4688 #else /* def SEEK_CUR */
4689                 {errno = EINVAL; return -1;}
4690 #endif /* ndef SEEK_CUR */
4691         if (x == Mono_Posix_SeekFlags_SEEK_END)
4692 #ifdef SEEK_END
4693                 {*r = SEEK_END; return 0;}
4694 #else /* def SEEK_END */
4695                 {errno = EINVAL; return -1;}
4696 #endif /* ndef SEEK_END */
4697         if (x == Mono_Posix_SeekFlags_SEEK_SET)
4698 #ifdef SEEK_SET
4699                 {*r = SEEK_SET; return 0;}
4700 #else /* def SEEK_SET */
4701                 {errno = EINVAL; return -1;}
4702 #endif /* ndef SEEK_SET */
4703         if (x == 0)
4704                 return 0;
4705         errno = EINVAL; return -1;
4706 }
4707
4708 int Mono_Posix_ToSeekFlags (short x, short *r)
4709 {
4710         *r = 0;
4711         if (x == 0)
4712                 return 0;
4713 #ifdef L_INCR
4714         if (x == L_INCR)
4715                 {*r = Mono_Posix_SeekFlags_L_INCR; return 0;}
4716 #endif /* ndef L_INCR */
4717 #ifdef L_SET
4718         if (x == L_SET)
4719                 {*r = Mono_Posix_SeekFlags_L_SET; return 0;}
4720 #endif /* ndef L_SET */
4721 #ifdef L_XTND
4722         if (x == L_XTND)
4723                 {*r = Mono_Posix_SeekFlags_L_XTND; return 0;}
4724 #endif /* ndef L_XTND */
4725 #ifdef SEEK_CUR
4726         if (x == SEEK_CUR)
4727                 {*r = Mono_Posix_SeekFlags_SEEK_CUR; return 0;}
4728 #endif /* ndef SEEK_CUR */
4729 #ifdef SEEK_END
4730         if (x == SEEK_END)
4731                 {*r = Mono_Posix_SeekFlags_SEEK_END; return 0;}
4732 #endif /* ndef SEEK_END */
4733 #ifdef SEEK_SET
4734         if (x == SEEK_SET)
4735                 {*r = Mono_Posix_SeekFlags_SEEK_SET; return 0;}
4736 #endif /* ndef SEEK_SET */
4737         errno = EINVAL; return -1;
4738 }
4739
4740 int Mono_Posix_FromShutdownOption (int x, int *r)
4741 {
4742         *r = 0;
4743         if (x == Mono_Posix_ShutdownOption_SHUT_RD)
4744 #ifdef SHUT_RD
4745                 {*r = SHUT_RD; return 0;}
4746 #else /* def SHUT_RD */
4747                 {errno = EINVAL; return -1;}
4748 #endif /* ndef SHUT_RD */
4749         if (x == Mono_Posix_ShutdownOption_SHUT_RDWR)
4750 #ifdef SHUT_RDWR
4751                 {*r = SHUT_RDWR; return 0;}
4752 #else /* def SHUT_RDWR */
4753                 {errno = EINVAL; return -1;}
4754 #endif /* ndef SHUT_RDWR */
4755         if (x == Mono_Posix_ShutdownOption_SHUT_WR)
4756 #ifdef SHUT_WR
4757                 {*r = SHUT_WR; return 0;}
4758 #else /* def SHUT_WR */
4759                 {errno = EINVAL; return -1;}
4760 #endif /* ndef SHUT_WR */
4761         if (x == 0)
4762                 return 0;
4763         errno = EINVAL; return -1;
4764 }
4765
4766 int Mono_Posix_ToShutdownOption (int x, int *r)
4767 {
4768         *r = 0;
4769         if (x == 0)
4770                 return 0;
4771 #ifdef SHUT_RD
4772         if (x == SHUT_RD)
4773                 {*r = Mono_Posix_ShutdownOption_SHUT_RD; return 0;}
4774 #endif /* ndef SHUT_RD */
4775 #ifdef SHUT_RDWR
4776         if (x == SHUT_RDWR)
4777                 {*r = Mono_Posix_ShutdownOption_SHUT_RDWR; return 0;}
4778 #endif /* ndef SHUT_RDWR */
4779 #ifdef SHUT_WR
4780         if (x == SHUT_WR)
4781                 {*r = Mono_Posix_ShutdownOption_SHUT_WR; return 0;}
4782 #endif /* ndef SHUT_WR */
4783         errno = EINVAL; return -1;
4784 }
4785
4786 int Mono_Posix_FromSignum (int x, int *r)
4787 {
4788         *r = 0;
4789         if (x == Mono_Posix_Signum_SIGABRT)
4790 #ifdef SIGABRT
4791                 {*r = SIGABRT; return 0;}
4792 #else /* def SIGABRT */
4793                 {errno = EINVAL; return -1;}
4794 #endif /* ndef SIGABRT */
4795         if (x == Mono_Posix_Signum_SIGALRM)
4796 #ifdef SIGALRM
4797                 {*r = SIGALRM; return 0;}
4798 #else /* def SIGALRM */
4799                 {errno = EINVAL; return -1;}
4800 #endif /* ndef SIGALRM */
4801         if (x == Mono_Posix_Signum_SIGBUS)
4802 #ifdef SIGBUS
4803                 {*r = SIGBUS; return 0;}
4804 #else /* def SIGBUS */
4805                 {errno = EINVAL; return -1;}
4806 #endif /* ndef SIGBUS */
4807         if (x == Mono_Posix_Signum_SIGCHLD)
4808 #ifdef SIGCHLD
4809                 {*r = SIGCHLD; return 0;}
4810 #else /* def SIGCHLD */
4811                 {errno = EINVAL; return -1;}
4812 #endif /* ndef SIGCHLD */
4813         if (x == Mono_Posix_Signum_SIGCLD)
4814 #ifdef SIGCLD
4815                 {*r = SIGCLD; return 0;}
4816 #else /* def SIGCLD */
4817                 {errno = EINVAL; return -1;}
4818 #endif /* ndef SIGCLD */
4819         if (x == Mono_Posix_Signum_SIGCONT)
4820 #ifdef SIGCONT
4821                 {*r = SIGCONT; return 0;}
4822 #else /* def SIGCONT */
4823                 {errno = EINVAL; return -1;}
4824 #endif /* ndef SIGCONT */
4825         if (x == Mono_Posix_Signum_SIGFPE)
4826 #ifdef SIGFPE
4827                 {*r = SIGFPE; return 0;}
4828 #else /* def SIGFPE */
4829                 {errno = EINVAL; return -1;}
4830 #endif /* ndef SIGFPE */
4831         if (x == Mono_Posix_Signum_SIGHUP)
4832 #ifdef SIGHUP
4833                 {*r = SIGHUP; return 0;}
4834 #else /* def SIGHUP */
4835                 {errno = EINVAL; return -1;}
4836 #endif /* ndef SIGHUP */
4837         if (x == Mono_Posix_Signum_SIGILL)
4838 #ifdef SIGILL
4839                 {*r = SIGILL; return 0;}
4840 #else /* def SIGILL */
4841                 {errno = EINVAL; return -1;}
4842 #endif /* ndef SIGILL */
4843         if (x == Mono_Posix_Signum_SIGINT)
4844 #ifdef SIGINT
4845                 {*r = SIGINT; return 0;}
4846 #else /* def SIGINT */
4847                 {errno = EINVAL; return -1;}
4848 #endif /* ndef SIGINT */
4849         if (x == Mono_Posix_Signum_SIGIO)
4850 #ifdef SIGIO
4851                 {*r = SIGIO; return 0;}
4852 #else /* def SIGIO */
4853                 {errno = EINVAL; return -1;}
4854 #endif /* ndef SIGIO */
4855         if (x == Mono_Posix_Signum_SIGIOT)
4856 #ifdef SIGIOT
4857                 {*r = SIGIOT; return 0;}
4858 #else /* def SIGIOT */
4859                 {errno = EINVAL; return -1;}
4860 #endif /* ndef SIGIOT */
4861         if (x == Mono_Posix_Signum_SIGKILL)
4862 #ifdef SIGKILL
4863                 {*r = SIGKILL; return 0;}
4864 #else /* def SIGKILL */
4865                 {errno = EINVAL; return -1;}
4866 #endif /* ndef SIGKILL */
4867         if (x == Mono_Posix_Signum_SIGPIPE)
4868 #ifdef SIGPIPE
4869                 {*r = SIGPIPE; return 0;}
4870 #else /* def SIGPIPE */
4871                 {errno = EINVAL; return -1;}
4872 #endif /* ndef SIGPIPE */
4873         if (x == Mono_Posix_Signum_SIGPOLL)
4874 #ifdef SIGPOLL
4875                 {*r = SIGPOLL; return 0;}
4876 #else /* def SIGPOLL */
4877                 {errno = EINVAL; return -1;}
4878 #endif /* ndef SIGPOLL */
4879         if (x == Mono_Posix_Signum_SIGPROF)
4880 #ifdef SIGPROF
4881                 {*r = SIGPROF; return 0;}
4882 #else /* def SIGPROF */
4883                 {errno = EINVAL; return -1;}
4884 #endif /* ndef SIGPROF */
4885         if (x == Mono_Posix_Signum_SIGPWR)
4886 #ifdef SIGPWR
4887                 {*r = SIGPWR; return 0;}
4888 #else /* def SIGPWR */
4889                 {errno = EINVAL; return -1;}
4890 #endif /* ndef SIGPWR */
4891         if (x == Mono_Posix_Signum_SIGQUIT)
4892 #ifdef SIGQUIT
4893                 {*r = SIGQUIT; return 0;}
4894 #else /* def SIGQUIT */
4895                 {errno = EINVAL; return -1;}
4896 #endif /* ndef SIGQUIT */
4897         if (x == Mono_Posix_Signum_SIGSEGV)
4898 #ifdef SIGSEGV
4899                 {*r = SIGSEGV; return 0;}
4900 #else /* def SIGSEGV */
4901                 {errno = EINVAL; return -1;}
4902 #endif /* ndef SIGSEGV */
4903         if (x == Mono_Posix_Signum_SIGSTKFLT)
4904 #ifdef SIGSTKFLT
4905                 {*r = SIGSTKFLT; return 0;}
4906 #else /* def SIGSTKFLT */
4907                 {errno = EINVAL; return -1;}
4908 #endif /* ndef SIGSTKFLT */
4909         if (x == Mono_Posix_Signum_SIGSTOP)
4910 #ifdef SIGSTOP
4911                 {*r = SIGSTOP; return 0;}
4912 #else /* def SIGSTOP */
4913                 {errno = EINVAL; return -1;}
4914 #endif /* ndef SIGSTOP */
4915         if (x == Mono_Posix_Signum_SIGSYS)
4916 #ifdef SIGSYS
4917                 {*r = SIGSYS; return 0;}
4918 #else /* def SIGSYS */
4919                 {errno = EINVAL; return -1;}
4920 #endif /* ndef SIGSYS */
4921         if (x == Mono_Posix_Signum_SIGTERM)
4922 #ifdef SIGTERM
4923                 {*r = SIGTERM; return 0;}
4924 #else /* def SIGTERM */
4925                 {errno = EINVAL; return -1;}
4926 #endif /* ndef SIGTERM */
4927         if (x == Mono_Posix_Signum_SIGTRAP)
4928 #ifdef SIGTRAP
4929                 {*r = SIGTRAP; return 0;}
4930 #else /* def SIGTRAP */
4931                 {errno = EINVAL; return -1;}
4932 #endif /* ndef SIGTRAP */
4933         if (x == Mono_Posix_Signum_SIGTSTP)
4934 #ifdef SIGTSTP
4935                 {*r = SIGTSTP; return 0;}
4936 #else /* def SIGTSTP */
4937                 {errno = EINVAL; return -1;}
4938 #endif /* ndef SIGTSTP */
4939         if (x == Mono_Posix_Signum_SIGTTIN)
4940 #ifdef SIGTTIN
4941                 {*r = SIGTTIN; return 0;}
4942 #else /* def SIGTTIN */
4943                 {errno = EINVAL; return -1;}
4944 #endif /* ndef SIGTTIN */
4945         if (x == Mono_Posix_Signum_SIGTTOU)
4946 #ifdef SIGTTOU
4947                 {*r = SIGTTOU; return 0;}
4948 #else /* def SIGTTOU */
4949                 {errno = EINVAL; return -1;}
4950 #endif /* ndef SIGTTOU */
4951         if (x == Mono_Posix_Signum_SIGUNUSED)
4952 #ifdef SIGUNUSED
4953                 {*r = SIGUNUSED; return 0;}
4954 #else /* def SIGUNUSED */
4955                 {errno = EINVAL; return -1;}
4956 #endif /* ndef SIGUNUSED */
4957         if (x == Mono_Posix_Signum_SIGURG)
4958 #ifdef SIGURG
4959                 {*r = SIGURG; return 0;}
4960 #else /* def SIGURG */
4961                 {errno = EINVAL; return -1;}
4962 #endif /* ndef SIGURG */
4963         if (x == Mono_Posix_Signum_SIGUSR1)
4964 #ifdef SIGUSR1
4965                 {*r = SIGUSR1; return 0;}
4966 #else /* def SIGUSR1 */
4967                 {errno = EINVAL; return -1;}
4968 #endif /* ndef SIGUSR1 */
4969         if (x == Mono_Posix_Signum_SIGUSR2)
4970 #ifdef SIGUSR2
4971                 {*r = SIGUSR2; return 0;}
4972 #else /* def SIGUSR2 */
4973                 {errno = EINVAL; return -1;}
4974 #endif /* ndef SIGUSR2 */
4975         if (x == Mono_Posix_Signum_SIGVTALRM)
4976 #ifdef SIGVTALRM
4977                 {*r = SIGVTALRM; return 0;}
4978 #else /* def SIGVTALRM */
4979                 {errno = EINVAL; return -1;}
4980 #endif /* ndef SIGVTALRM */
4981         if (x == Mono_Posix_Signum_SIGWINCH)
4982 #ifdef SIGWINCH
4983                 {*r = SIGWINCH; return 0;}
4984 #else /* def SIGWINCH */
4985                 {errno = EINVAL; return -1;}
4986 #endif /* ndef SIGWINCH */
4987         if (x == Mono_Posix_Signum_SIGXCPU)
4988 #ifdef SIGXCPU
4989                 {*r = SIGXCPU; return 0;}
4990 #else /* def SIGXCPU */
4991                 {errno = EINVAL; return -1;}
4992 #endif /* ndef SIGXCPU */
4993         if (x == Mono_Posix_Signum_SIGXFSZ)
4994 #ifdef SIGXFSZ
4995                 {*r = SIGXFSZ; return 0;}
4996 #else /* def SIGXFSZ */
4997                 {errno = EINVAL; return -1;}
4998 #endif /* ndef SIGXFSZ */
4999         if (x == 0)
5000                 return 0;
5001         errno = EINVAL; return -1;
5002 }
5003
5004 int Mono_Posix_ToSignum (int x, int *r)
5005 {
5006         *r = 0;
5007         if (x == 0)
5008                 return 0;
5009 #ifdef SIGABRT
5010         if (x == SIGABRT)
5011                 {*r = Mono_Posix_Signum_SIGABRT; return 0;}
5012 #endif /* ndef SIGABRT */
5013 #ifdef SIGALRM
5014         if (x == SIGALRM)
5015                 {*r = Mono_Posix_Signum_SIGALRM; return 0;}
5016 #endif /* ndef SIGALRM */
5017 #ifdef SIGBUS
5018         if (x == SIGBUS)
5019                 {*r = Mono_Posix_Signum_SIGBUS; return 0;}
5020 #endif /* ndef SIGBUS */
5021 #ifdef SIGCHLD
5022         if (x == SIGCHLD)
5023                 {*r = Mono_Posix_Signum_SIGCHLD; return 0;}
5024 #endif /* ndef SIGCHLD */
5025 #ifdef SIGCLD
5026         if (x == SIGCLD)
5027                 {*r = Mono_Posix_Signum_SIGCLD; return 0;}
5028 #endif /* ndef SIGCLD */
5029 #ifdef SIGCONT
5030         if (x == SIGCONT)
5031                 {*r = Mono_Posix_Signum_SIGCONT; return 0;}
5032 #endif /* ndef SIGCONT */
5033 #ifdef SIGFPE
5034         if (x == SIGFPE)
5035                 {*r = Mono_Posix_Signum_SIGFPE; return 0;}
5036 #endif /* ndef SIGFPE */
5037 #ifdef SIGHUP
5038         if (x == SIGHUP)
5039                 {*r = Mono_Posix_Signum_SIGHUP; return 0;}
5040 #endif /* ndef SIGHUP */
5041 #ifdef SIGILL
5042         if (x == SIGILL)
5043                 {*r = Mono_Posix_Signum_SIGILL; return 0;}
5044 #endif /* ndef SIGILL */
5045 #ifdef SIGINT
5046         if (x == SIGINT)
5047                 {*r = Mono_Posix_Signum_SIGINT; return 0;}
5048 #endif /* ndef SIGINT */
5049 #ifdef SIGIO
5050         if (x == SIGIO)
5051                 {*r = Mono_Posix_Signum_SIGIO; return 0;}
5052 #endif /* ndef SIGIO */
5053 #ifdef SIGIOT
5054         if (x == SIGIOT)
5055                 {*r = Mono_Posix_Signum_SIGIOT; return 0;}
5056 #endif /* ndef SIGIOT */
5057 #ifdef SIGKILL
5058         if (x == SIGKILL)
5059                 {*r = Mono_Posix_Signum_SIGKILL; return 0;}
5060 #endif /* ndef SIGKILL */
5061 #ifdef SIGPIPE
5062         if (x == SIGPIPE)
5063                 {*r = Mono_Posix_Signum_SIGPIPE; return 0;}
5064 #endif /* ndef SIGPIPE */
5065 #ifdef SIGPOLL
5066         if (x == SIGPOLL)
5067                 {*r = Mono_Posix_Signum_SIGPOLL; return 0;}
5068 #endif /* ndef SIGPOLL */
5069 #ifdef SIGPROF
5070         if (x == SIGPROF)
5071                 {*r = Mono_Posix_Signum_SIGPROF; return 0;}
5072 #endif /* ndef SIGPROF */
5073 #ifdef SIGPWR
5074         if (x == SIGPWR)
5075                 {*r = Mono_Posix_Signum_SIGPWR; return 0;}
5076 #endif /* ndef SIGPWR */
5077 #ifdef SIGQUIT
5078         if (x == SIGQUIT)
5079                 {*r = Mono_Posix_Signum_SIGQUIT; return 0;}
5080 #endif /* ndef SIGQUIT */
5081 #ifdef SIGSEGV
5082         if (x == SIGSEGV)
5083                 {*r = Mono_Posix_Signum_SIGSEGV; return 0;}
5084 #endif /* ndef SIGSEGV */
5085 #ifdef SIGSTKFLT
5086         if (x == SIGSTKFLT)
5087                 {*r = Mono_Posix_Signum_SIGSTKFLT; return 0;}
5088 #endif /* ndef SIGSTKFLT */
5089 #ifdef SIGSTOP
5090         if (x == SIGSTOP)
5091                 {*r = Mono_Posix_Signum_SIGSTOP; return 0;}
5092 #endif /* ndef SIGSTOP */
5093 #ifdef SIGSYS
5094         if (x == SIGSYS)
5095                 {*r = Mono_Posix_Signum_SIGSYS; return 0;}
5096 #endif /* ndef SIGSYS */
5097 #ifdef SIGTERM
5098         if (x == SIGTERM)
5099                 {*r = Mono_Posix_Signum_SIGTERM; return 0;}
5100 #endif /* ndef SIGTERM */
5101 #ifdef SIGTRAP
5102         if (x == SIGTRAP)
5103                 {*r = Mono_Posix_Signum_SIGTRAP; return 0;}
5104 #endif /* ndef SIGTRAP */
5105 #ifdef SIGTSTP
5106         if (x == SIGTSTP)
5107                 {*r = Mono_Posix_Signum_SIGTSTP; return 0;}
5108 #endif /* ndef SIGTSTP */
5109 #ifdef SIGTTIN
5110         if (x == SIGTTIN)
5111                 {*r = Mono_Posix_Signum_SIGTTIN; return 0;}
5112 #endif /* ndef SIGTTIN */
5113 #ifdef SIGTTOU
5114         if (x == SIGTTOU)
5115                 {*r = Mono_Posix_Signum_SIGTTOU; return 0;}
5116 #endif /* ndef SIGTTOU */
5117 #ifdef SIGUNUSED
5118         if (x == SIGUNUSED)
5119                 {*r = Mono_Posix_Signum_SIGUNUSED; return 0;}
5120 #endif /* ndef SIGUNUSED */
5121 #ifdef SIGURG
5122         if (x == SIGURG)
5123                 {*r = Mono_Posix_Signum_SIGURG; return 0;}
5124 #endif /* ndef SIGURG */
5125 #ifdef SIGUSR1
5126         if (x == SIGUSR1)
5127                 {*r = Mono_Posix_Signum_SIGUSR1; return 0;}
5128 #endif /* ndef SIGUSR1 */
5129 #ifdef SIGUSR2
5130         if (x == SIGUSR2)
5131                 {*r = Mono_Posix_Signum_SIGUSR2; return 0;}
5132 #endif /* ndef SIGUSR2 */
5133 #ifdef SIGVTALRM
5134         if (x == SIGVTALRM)
5135                 {*r = Mono_Posix_Signum_SIGVTALRM; return 0;}
5136 #endif /* ndef SIGVTALRM */
5137 #ifdef SIGWINCH
5138         if (x == SIGWINCH)
5139                 {*r = Mono_Posix_Signum_SIGWINCH; return 0;}
5140 #endif /* ndef SIGWINCH */
5141 #ifdef SIGXCPU
5142         if (x == SIGXCPU)
5143                 {*r = Mono_Posix_Signum_SIGXCPU; return 0;}
5144 #endif /* ndef SIGXCPU */
5145 #ifdef SIGXFSZ
5146         if (x == SIGXFSZ)
5147                 {*r = Mono_Posix_Signum_SIGXFSZ; return 0;}
5148 #endif /* ndef SIGXFSZ */
5149         errno = EINVAL; return -1;
5150 }
5151
5152 #ifdef HAVE_STRUCT_SOCKADDR_IN
5153 int
5154 Mono_Posix_FromSockaddrIn (struct Mono_Posix_SockaddrIn *from, struct sockaddr_in *to)
5155 {
5156         _cnm_return_val_if_overflow (unsigned short, from->sin_port, -1);
5157
5158         memset (to, 0, sizeof(*to));
5159
5160         to->sin_port = from->sin_port;
5161         if (Mono_Posix_FromInAddr (&from->sin_addr, &to->sin_addr) != 0) {
5162                 return -1;
5163         }
5164
5165         return 0;
5166 }
5167 #endif /* ndef HAVE_STRUCT_SOCKADDR_IN */
5168
5169
5170 #ifdef HAVE_STRUCT_SOCKADDR_IN
5171 int
5172 Mono_Posix_ToSockaddrIn (struct sockaddr_in *from, struct Mono_Posix_SockaddrIn *to)
5173 {
5174         _cnm_return_val_if_overflow (unsigned short, from->sin_port, -1);
5175
5176         memset (to, 0, sizeof(*to));
5177
5178         to->sin_port = from->sin_port;
5179         if (Mono_Posix_ToInAddr (&from->sin_addr, &to->sin_addr) != 0) {
5180                 return -1;
5181         }
5182
5183         return 0;
5184 }
5185 #endif /* ndef HAVE_STRUCT_SOCKADDR_IN */
5186
5187
5188 #ifdef HAVE_STRUCT_SOCKADDR_IN6
5189 int
5190 Mono_Posix_FromSockaddrIn6 (struct Mono_Posix_SockaddrIn6 *from, struct sockaddr_in6 *to)
5191 {
5192         _cnm_return_val_if_overflow (unsigned short, from->sin6_port, -1);
5193         _cnm_return_val_if_overflow (unsigned int, from->sin6_flowinfo, -1);
5194         _cnm_return_val_if_overflow (unsigned int, from->sin6_scope_id, -1);
5195
5196         memset (to, 0, sizeof(*to));
5197
5198         to->sin6_port     = from->sin6_port;
5199         to->sin6_flowinfo = from->sin6_flowinfo;
5200         if (Mono_Posix_FromIn6Addr (&from->sin6_addr, &to->sin6_addr) != 0) {
5201                 return -1;
5202         }
5203         to->sin6_scope_id = from->sin6_scope_id;
5204
5205         return 0;
5206 }
5207 #endif /* ndef HAVE_STRUCT_SOCKADDR_IN6 */
5208
5209
5210 #ifdef HAVE_STRUCT_SOCKADDR_IN6
5211 int
5212 Mono_Posix_ToSockaddrIn6 (struct sockaddr_in6 *from, struct Mono_Posix_SockaddrIn6 *to)
5213 {
5214         _cnm_return_val_if_overflow (unsigned short, from->sin6_port, -1);
5215         _cnm_return_val_if_overflow (unsigned int, from->sin6_flowinfo, -1);
5216         _cnm_return_val_if_overflow (unsigned int, from->sin6_scope_id, -1);
5217
5218         memset (to, 0, sizeof(*to));
5219
5220         to->sin6_port     = from->sin6_port;
5221         to->sin6_flowinfo = from->sin6_flowinfo;
5222         if (Mono_Posix_ToIn6Addr (&from->sin6_addr, &to->sin6_addr) != 0) {
5223                 return -1;
5224         }
5225         to->sin6_scope_id = from->sin6_scope_id;
5226
5227         return 0;
5228 }
5229 #endif /* ndef HAVE_STRUCT_SOCKADDR_IN6 */
5230
5231
5232 int Mono_Posix_FromSockaddrType (int x, int *r)
5233 {
5234         *r = 0;
5235         if (x == Mono_Posix_SockaddrType_Invalid)
5236 #ifdef Invalid
5237                 {*r = Invalid; return 0;}
5238 #else /* def Invalid */
5239                 {errno = EINVAL; return -1;}
5240 #endif /* ndef Invalid */
5241         if (x == Mono_Posix_SockaddrType_MustBeWrapped)
5242 #ifdef MustBeWrapped
5243                 {*r = MustBeWrapped; return 0;}
5244 #else /* def MustBeWrapped */
5245                 {errno = EINVAL; return -1;}
5246 #endif /* ndef MustBeWrapped */
5247         if (x == Mono_Posix_SockaddrType_Sockaddr)
5248 #ifdef Sockaddr
5249                 {*r = Sockaddr; return 0;}
5250 #else /* def Sockaddr */
5251                 {errno = EINVAL; return -1;}
5252 #endif /* ndef Sockaddr */
5253         if (x == Mono_Posix_SockaddrType_SockaddrIn)
5254 #ifdef SockaddrIn
5255                 {*r = SockaddrIn; return 0;}
5256 #else /* def SockaddrIn */
5257                 {errno = EINVAL; return -1;}
5258 #endif /* ndef SockaddrIn */
5259         if (x == Mono_Posix_SockaddrType_SockaddrIn6)
5260 #ifdef SockaddrIn6
5261                 {*r = SockaddrIn6; return 0;}
5262 #else /* def SockaddrIn6 */
5263                 {errno = EINVAL; return -1;}
5264 #endif /* ndef SockaddrIn6 */
5265         if (x == Mono_Posix_SockaddrType_SockaddrStorage)
5266 #ifdef SockaddrStorage
5267                 {*r = SockaddrStorage; return 0;}
5268 #else /* def SockaddrStorage */
5269                 {errno = EINVAL; return -1;}
5270 #endif /* ndef SockaddrStorage */
5271         if (x == Mono_Posix_SockaddrType_SockaddrUn)
5272 #ifdef SockaddrUn
5273                 {*r = SockaddrUn; return 0;}
5274 #else /* def SockaddrUn */
5275                 {errno = EINVAL; return -1;}
5276 #endif /* ndef SockaddrUn */
5277         if (x == 0)
5278                 return 0;
5279         errno = EINVAL; return -1;
5280 }
5281
5282 int Mono_Posix_ToSockaddrType (int x, int *r)
5283 {
5284         *r = 0;
5285         if (x == 0)
5286                 return 0;
5287 #ifdef Invalid
5288         if (x == Invalid)
5289                 {*r = Mono_Posix_SockaddrType_Invalid; return 0;}
5290 #endif /* ndef Invalid */
5291 #ifdef MustBeWrapped
5292         if (x == MustBeWrapped)
5293                 {*r = Mono_Posix_SockaddrType_MustBeWrapped; return 0;}
5294 #endif /* ndef MustBeWrapped */
5295 #ifdef Sockaddr
5296         if (x == Sockaddr)
5297                 {*r = Mono_Posix_SockaddrType_Sockaddr; return 0;}
5298 #endif /* ndef Sockaddr */
5299 #ifdef SockaddrIn
5300         if (x == SockaddrIn)
5301                 {*r = Mono_Posix_SockaddrType_SockaddrIn; return 0;}
5302 #endif /* ndef SockaddrIn */
5303 #ifdef SockaddrIn6
5304         if (x == SockaddrIn6)
5305                 {*r = Mono_Posix_SockaddrType_SockaddrIn6; return 0;}
5306 #endif /* ndef SockaddrIn6 */
5307 #ifdef SockaddrStorage
5308         if (x == SockaddrStorage)
5309                 {*r = Mono_Posix_SockaddrType_SockaddrStorage; return 0;}
5310 #endif /* ndef SockaddrStorage */
5311 #ifdef SockaddrUn
5312         if (x == SockaddrUn)
5313                 {*r = Mono_Posix_SockaddrType_SockaddrUn; return 0;}
5314 #endif /* ndef SockaddrUn */
5315         errno = EINVAL; return -1;
5316 }
5317
5318 int Mono_Posix_FromSysconfName (int x, int *r)
5319 {
5320         *r = 0;
5321         if (x == Mono_Posix_SysconfName__SC_2_CHAR_TERM)
5322 #ifdef _SC_2_CHAR_TERM
5323                 {*r = _SC_2_CHAR_TERM; return 0;}
5324 #else /* def _SC_2_CHAR_TERM */
5325                 {errno = EINVAL; return -1;}
5326 #endif /* ndef _SC_2_CHAR_TERM */
5327         if (x == Mono_Posix_SysconfName__SC_2_C_BIND)
5328 #ifdef _SC_2_C_BIND
5329                 {*r = _SC_2_C_BIND; return 0;}
5330 #else /* def _SC_2_C_BIND */
5331                 {errno = EINVAL; return -1;}
5332 #endif /* ndef _SC_2_C_BIND */
5333         if (x == Mono_Posix_SysconfName__SC_2_C_DEV)
5334 #ifdef _SC_2_C_DEV
5335                 {*r = _SC_2_C_DEV; return 0;}
5336 #else /* def _SC_2_C_DEV */
5337                 {errno = EINVAL; return -1;}
5338 #endif /* ndef _SC_2_C_DEV */
5339         if (x == Mono_Posix_SysconfName__SC_2_C_VERSION)
5340 #ifdef _SC_2_C_VERSION
5341                 {*r = _SC_2_C_VERSION; return 0;}
5342 #else /* def _SC_2_C_VERSION */
5343                 {errno = EINVAL; return -1;}
5344 #endif /* ndef _SC_2_C_VERSION */
5345         if (x == Mono_Posix_SysconfName__SC_2_FORT_DEV)
5346 #ifdef _SC_2_FORT_DEV
5347                 {*r = _SC_2_FORT_DEV; return 0;}
5348 #else /* def _SC_2_FORT_DEV */
5349                 {errno = EINVAL; return -1;}
5350 #endif /* ndef _SC_2_FORT_DEV */
5351         if (x == Mono_Posix_SysconfName__SC_2_FORT_RUN)
5352 #ifdef _SC_2_FORT_RUN
5353                 {*r = _SC_2_FORT_RUN; return 0;}
5354 #else /* def _SC_2_FORT_RUN */
5355                 {errno = EINVAL; return -1;}
5356 #endif /* ndef _SC_2_FORT_RUN */
5357         if (x == Mono_Posix_SysconfName__SC_2_LOCALEDEF)
5358 #ifdef _SC_2_LOCALEDEF
5359                 {*r = _SC_2_LOCALEDEF; return 0;}
5360 #else /* def _SC_2_LOCALEDEF */
5361                 {errno = EINVAL; return -1;}
5362 #endif /* ndef _SC_2_LOCALEDEF */
5363         if (x == Mono_Posix_SysconfName__SC_2_PBS)
5364 #ifdef _SC_2_PBS
5365                 {*r = _SC_2_PBS; return 0;}
5366 #else /* def _SC_2_PBS */
5367                 {errno = EINVAL; return -1;}
5368 #endif /* ndef _SC_2_PBS */
5369         if (x == Mono_Posix_SysconfName__SC_2_PBS_ACCOUNTING)
5370 #ifdef _SC_2_PBS_ACCOUNTING
5371                 {*r = _SC_2_PBS_ACCOUNTING; return 0;}
5372 #else /* def _SC_2_PBS_ACCOUNTING */
5373                 {errno = EINVAL; return -1;}
5374 #endif /* ndef _SC_2_PBS_ACCOUNTING */
5375         if (x == Mono_Posix_SysconfName__SC_2_PBS_CHECKPOINT)
5376 #ifdef _SC_2_PBS_CHECKPOINT
5377                 {*r = _SC_2_PBS_CHECKPOINT; return 0;}
5378 #else /* def _SC_2_PBS_CHECKPOINT */
5379                 {errno = EINVAL; return -1;}
5380 #endif /* ndef _SC_2_PBS_CHECKPOINT */
5381         if (x == Mono_Posix_SysconfName__SC_2_PBS_LOCATE)
5382 #ifdef _SC_2_PBS_LOCATE
5383                 {*r = _SC_2_PBS_LOCATE; return 0;}
5384 #else /* def _SC_2_PBS_LOCATE */
5385                 {errno = EINVAL; return -1;}
5386 #endif /* ndef _SC_2_PBS_LOCATE */
5387         if (x == Mono_Posix_SysconfName__SC_2_PBS_MESSAGE)
5388 #ifdef _SC_2_PBS_MESSAGE
5389                 {*r = _SC_2_PBS_MESSAGE; return 0;}
5390 #else /* def _SC_2_PBS_MESSAGE */
5391                 {errno = EINVAL; return -1;}
5392 #endif /* ndef _SC_2_PBS_MESSAGE */
5393         if (x == Mono_Posix_SysconfName__SC_2_PBS_TRACK)
5394 #ifdef _SC_2_PBS_TRACK
5395                 {*r = _SC_2_PBS_TRACK; return 0;}
5396 #else /* def _SC_2_PBS_TRACK */
5397                 {errno = EINVAL; return -1;}
5398 #endif /* ndef _SC_2_PBS_TRACK */
5399         if (x == Mono_Posix_SysconfName__SC_2_SW_DEV)
5400 #ifdef _SC_2_SW_DEV
5401                 {*r = _SC_2_SW_DEV; return 0;}
5402 #else /* def _SC_2_SW_DEV */
5403                 {errno = EINVAL; return -1;}
5404 #endif /* ndef _SC_2_SW_DEV */
5405         if (x == Mono_Posix_SysconfName__SC_2_UPE)
5406 #ifdef _SC_2_UPE
5407                 {*r = _SC_2_UPE; return 0;}
5408 #else /* def _SC_2_UPE */
5409                 {errno = EINVAL; return -1;}
5410 #endif /* ndef _SC_2_UPE */
5411         if (x == Mono_Posix_SysconfName__SC_2_VERSION)
5412 #ifdef _SC_2_VERSION
5413                 {*r = _SC_2_VERSION; return 0;}
5414 #else /* def _SC_2_VERSION */
5415                 {errno = EINVAL; return -1;}
5416 #endif /* ndef _SC_2_VERSION */
5417         if (x == Mono_Posix_SysconfName__SC_ADVISORY_INFO)
5418 #ifdef _SC_ADVISORY_INFO
5419                 {*r = _SC_ADVISORY_INFO; return 0;}
5420 #else /* def _SC_ADVISORY_INFO */
5421                 {errno = EINVAL; return -1;}
5422 #endif /* ndef _SC_ADVISORY_INFO */
5423         if (x == Mono_Posix_SysconfName__SC_AIO_LISTIO_MAX)
5424 #ifdef _SC_AIO_LISTIO_MAX
5425                 {*r = _SC_AIO_LISTIO_MAX; return 0;}
5426 #else /* def _SC_AIO_LISTIO_MAX */
5427                 {errno = EINVAL; return -1;}
5428 #endif /* ndef _SC_AIO_LISTIO_MAX */
5429         if (x == Mono_Posix_SysconfName__SC_AIO_MAX)
5430 #ifdef _SC_AIO_MAX
5431                 {*r = _SC_AIO_MAX; return 0;}
5432 #else /* def _SC_AIO_MAX */
5433                 {errno = EINVAL; return -1;}
5434 #endif /* ndef _SC_AIO_MAX */
5435         if (x == Mono_Posix_SysconfName__SC_AIO_PRIO_DELTA_MAX)
5436 #ifdef _SC_AIO_PRIO_DELTA_MAX
5437                 {*r = _SC_AIO_PRIO_DELTA_MAX; return 0;}
5438 #else /* def _SC_AIO_PRIO_DELTA_MAX */
5439                 {errno = EINVAL; return -1;}
5440 #endif /* ndef _SC_AIO_PRIO_DELTA_MAX */
5441         if (x == Mono_Posix_SysconfName__SC_ARG_MAX)
5442 #ifdef _SC_ARG_MAX
5443                 {*r = _SC_ARG_MAX; return 0;}
5444 #else /* def _SC_ARG_MAX */
5445                 {errno = EINVAL; return -1;}
5446 #endif /* ndef _SC_ARG_MAX */
5447         if (x == Mono_Posix_SysconfName__SC_ASYNCHRONOUS_IO)
5448 #ifdef _SC_ASYNCHRONOUS_IO
5449                 {*r = _SC_ASYNCHRONOUS_IO; return 0;}
5450 #else /* def _SC_ASYNCHRONOUS_IO */
5451                 {errno = EINVAL; return -1;}
5452 #endif /* ndef _SC_ASYNCHRONOUS_IO */
5453         if (x == Mono_Posix_SysconfName__SC_ATEXIT_MAX)
5454 #ifdef _SC_ATEXIT_MAX
5455                 {*r = _SC_ATEXIT_MAX; return 0;}
5456 #else /* def _SC_ATEXIT_MAX */
5457                 {errno = EINVAL; return -1;}
5458 #endif /* ndef _SC_ATEXIT_MAX */
5459         if (x == Mono_Posix_SysconfName__SC_AVPHYS_PAGES)
5460 #ifdef _SC_AVPHYS_PAGES
5461                 {*r = _SC_AVPHYS_PAGES; return 0;}
5462 #else /* def _SC_AVPHYS_PAGES */
5463                 {errno = EINVAL; return -1;}
5464 #endif /* ndef _SC_AVPHYS_PAGES */
5465         if (x == Mono_Posix_SysconfName__SC_BARRIERS)
5466 #ifdef _SC_BARRIERS
5467                 {*r = _SC_BARRIERS; return 0;}
5468 #else /* def _SC_BARRIERS */
5469                 {errno = EINVAL; return -1;}
5470 #endif /* ndef _SC_BARRIERS */
5471         if (x == Mono_Posix_SysconfName__SC_BASE)
5472 #ifdef _SC_BASE
5473                 {*r = _SC_BASE; return 0;}
5474 #else /* def _SC_BASE */
5475                 {errno = EINVAL; return -1;}
5476 #endif /* ndef _SC_BASE */
5477         if (x == Mono_Posix_SysconfName__SC_BC_BASE_MAX)
5478 #ifdef _SC_BC_BASE_MAX
5479                 {*r = _SC_BC_BASE_MAX; return 0;}
5480 #else /* def _SC_BC_BASE_MAX */
5481                 {errno = EINVAL; return -1;}
5482 #endif /* ndef _SC_BC_BASE_MAX */
5483         if (x == Mono_Posix_SysconfName__SC_BC_DIM_MAX)
5484 #ifdef _SC_BC_DIM_MAX
5485                 {*r = _SC_BC_DIM_MAX; return 0;}
5486 #else /* def _SC_BC_DIM_MAX */
5487                 {errno = EINVAL; return -1;}
5488 #endif /* ndef _SC_BC_DIM_MAX */
5489         if (x == Mono_Posix_SysconfName__SC_BC_SCALE_MAX)
5490 #ifdef _SC_BC_SCALE_MAX
5491                 {*r = _SC_BC_SCALE_MAX; return 0;}
5492 #else /* def _SC_BC_SCALE_MAX */
5493                 {errno = EINVAL; return -1;}
5494 #endif /* ndef _SC_BC_SCALE_MAX */
5495         if (x == Mono_Posix_SysconfName__SC_BC_STRING_MAX)
5496 #ifdef _SC_BC_STRING_MAX
5497                 {*r = _SC_BC_STRING_MAX; return 0;}
5498 #else /* def _SC_BC_STRING_MAX */
5499                 {errno = EINVAL; return -1;}
5500 #endif /* ndef _SC_BC_STRING_MAX */
5501         if (x == Mono_Posix_SysconfName__SC_CHARCLASS_NAME_MAX)
5502 #ifdef _SC_CHARCLASS_NAME_MAX
5503                 {*r = _SC_CHARCLASS_NAME_MAX; return 0;}
5504 #else /* def _SC_CHARCLASS_NAME_MAX */
5505                 {errno = EINVAL; return -1;}
5506 #endif /* ndef _SC_CHARCLASS_NAME_MAX */
5507         if (x == Mono_Posix_SysconfName__SC_CHAR_BIT)
5508 #ifdef _SC_CHAR_BIT
5509                 {*r = _SC_CHAR_BIT; return 0;}
5510 #else /* def _SC_CHAR_BIT */
5511                 {errno = EINVAL; return -1;}
5512 #endif /* ndef _SC_CHAR_BIT */
5513         if (x == Mono_Posix_SysconfName__SC_CHAR_MAX)
5514 #ifdef _SC_CHAR_MAX
5515                 {*r = _SC_CHAR_MAX; return 0;}
5516 #else /* def _SC_CHAR_MAX */
5517                 {errno = EINVAL; return -1;}
5518 #endif /* ndef _SC_CHAR_MAX */
5519         if (x == Mono_Posix_SysconfName__SC_CHAR_MIN)
5520 #ifdef _SC_CHAR_MIN
5521                 {*r = _SC_CHAR_MIN; return 0;}
5522 #else /* def _SC_CHAR_MIN */
5523                 {errno = EINVAL; return -1;}
5524 #endif /* ndef _SC_CHAR_MIN */
5525         if (x == Mono_Posix_SysconfName__SC_CHILD_MAX)
5526 #ifdef _SC_CHILD_MAX
5527                 {*r = _SC_CHILD_MAX; return 0;}
5528 #else /* def _SC_CHILD_MAX */
5529                 {errno = EINVAL; return -1;}
5530 #endif /* ndef _SC_CHILD_MAX */
5531         if (x == Mono_Posix_SysconfName__SC_CLK_TCK)
5532 #ifdef _SC_CLK_TCK
5533                 {*r = _SC_CLK_TCK; return 0;}
5534 #else /* def _SC_CLK_TCK */
5535                 {errno = EINVAL; return -1;}
5536 #endif /* ndef _SC_CLK_TCK */
5537         if (x == Mono_Posix_SysconfName__SC_CLOCK_SELECTION)
5538 #ifdef _SC_CLOCK_SELECTION
5539                 {*r = _SC_CLOCK_SELECTION; return 0;}
5540 #else /* def _SC_CLOCK_SELECTION */
5541                 {errno = EINVAL; return -1;}
5542 #endif /* ndef _SC_CLOCK_SELECTION */
5543         if (x == Mono_Posix_SysconfName__SC_COLL_WEIGHTS_MAX)
5544 #ifdef _SC_COLL_WEIGHTS_MAX
5545                 {*r = _SC_COLL_WEIGHTS_MAX; return 0;}
5546 #else /* def _SC_COLL_WEIGHTS_MAX */
5547                 {errno = EINVAL; return -1;}
5548 #endif /* ndef _SC_COLL_WEIGHTS_MAX */
5549         if (x == Mono_Posix_SysconfName__SC_CPUTIME)
5550 #ifdef _SC_CPUTIME
5551                 {*r = _SC_CPUTIME; return 0;}
5552 #else /* def _SC_CPUTIME */
5553                 {errno = EINVAL; return -1;}
5554 #endif /* ndef _SC_CPUTIME */
5555         if (x == Mono_Posix_SysconfName__SC_C_LANG_SUPPORT)
5556 #ifdef _SC_C_LANG_SUPPORT
5557                 {*r = _SC_C_LANG_SUPPORT; return 0;}
5558 #else /* def _SC_C_LANG_SUPPORT */
5559                 {errno = EINVAL; return -1;}
5560 #endif /* ndef _SC_C_LANG_SUPPORT */
5561         if (x == Mono_Posix_SysconfName__SC_C_LANG_SUPPORT_R)
5562 #ifdef _SC_C_LANG_SUPPORT_R
5563                 {*r = _SC_C_LANG_SUPPORT_R; return 0;}
5564 #else /* def _SC_C_LANG_SUPPORT_R */
5565                 {errno = EINVAL; return -1;}
5566 #endif /* ndef _SC_C_LANG_SUPPORT_R */
5567         if (x == Mono_Posix_SysconfName__SC_DELAYTIMER_MAX)
5568 #ifdef _SC_DELAYTIMER_MAX
5569                 {*r = _SC_DELAYTIMER_MAX; return 0;}
5570 #else /* def _SC_DELAYTIMER_MAX */
5571                 {errno = EINVAL; return -1;}
5572 #endif /* ndef _SC_DELAYTIMER_MAX */
5573         if (x == Mono_Posix_SysconfName__SC_DEVICE_IO)
5574 #ifdef _SC_DEVICE_IO
5575                 {*r = _SC_DEVICE_IO; return 0;}
5576 #else /* def _SC_DEVICE_IO */
5577                 {errno = EINVAL; return -1;}
5578 #endif /* ndef _SC_DEVICE_IO */
5579         if (x == Mono_Posix_SysconfName__SC_DEVICE_SPECIFIC)
5580 #ifdef _SC_DEVICE_SPECIFIC
5581                 {*r = _SC_DEVICE_SPECIFIC; return 0;}
5582 #else /* def _SC_DEVICE_SPECIFIC */
5583                 {errno = EINVAL; return -1;}
5584 #endif /* ndef _SC_DEVICE_SPECIFIC */
5585         if (x == Mono_Posix_SysconfName__SC_DEVICE_SPECIFIC_R)
5586 #ifdef _SC_DEVICE_SPECIFIC_R
5587                 {*r = _SC_DEVICE_SPECIFIC_R; return 0;}
5588 #else /* def _SC_DEVICE_SPECIFIC_R */
5589                 {errno = EINVAL; return -1;}
5590 #endif /* ndef _SC_DEVICE_SPECIFIC_R */
5591         if (x == Mono_Posix_SysconfName__SC_EQUIV_CLASS_MAX)
5592 #ifdef _SC_EQUIV_CLASS_MAX
5593                 {*r = _SC_EQUIV_CLASS_MAX; return 0;}
5594 #else /* def _SC_EQUIV_CLASS_MAX */
5595                 {errno = EINVAL; return -1;}
5596 #endif /* ndef _SC_EQUIV_CLASS_MAX */
5597         if (x == Mono_Posix_SysconfName__SC_EXPR_NEST_MAX)
5598 #ifdef _SC_EXPR_NEST_MAX
5599                 {*r = _SC_EXPR_NEST_MAX; return 0;}
5600 #else /* def _SC_EXPR_NEST_MAX */
5601                 {errno = EINVAL; return -1;}
5602 #endif /* ndef _SC_EXPR_NEST_MAX */
5603         if (x == Mono_Posix_SysconfName__SC_FD_MGMT)
5604 #ifdef _SC_FD_MGMT
5605                 {*r = _SC_FD_MGMT; return 0;}
5606 #else /* def _SC_FD_MGMT */
5607                 {errno = EINVAL; return -1;}
5608 #endif /* ndef _SC_FD_MGMT */
5609         if (x == Mono_Posix_SysconfName__SC_FIFO)
5610 #ifdef _SC_FIFO
5611                 {*r = _SC_FIFO; return 0;}
5612 #else /* def _SC_FIFO */
5613                 {errno = EINVAL; return -1;}
5614 #endif /* ndef _SC_FIFO */
5615         if (x == Mono_Posix_SysconfName__SC_FILE_ATTRIBUTES)
5616 #ifdef _SC_FILE_ATTRIBUTES
5617                 {*r = _SC_FILE_ATTRIBUTES; return 0;}
5618 #else /* def _SC_FILE_ATTRIBUTES */
5619                 {errno = EINVAL; return -1;}
5620 #endif /* ndef _SC_FILE_ATTRIBUTES */
5621         if (x == Mono_Posix_SysconfName__SC_FILE_LOCKING)
5622 #ifdef _SC_FILE_LOCKING
5623                 {*r = _SC_FILE_LOCKING; return 0;}
5624 #else /* def _SC_FILE_LOCKING */
5625                 {errno = EINVAL; return -1;}
5626 #endif /* ndef _SC_FILE_LOCKING */
5627         if (x == Mono_Posix_SysconfName__SC_FILE_SYSTEM)
5628 #ifdef _SC_FILE_SYSTEM
5629                 {*r = _SC_FILE_SYSTEM; return 0;}
5630 #else /* def _SC_FILE_SYSTEM */
5631                 {errno = EINVAL; return -1;}
5632 #endif /* ndef _SC_FILE_SYSTEM */
5633         if (x == Mono_Posix_SysconfName__SC_FSYNC)
5634 #ifdef _SC_FSYNC
5635                 {*r = _SC_FSYNC; return 0;}
5636 #else /* def _SC_FSYNC */
5637                 {errno = EINVAL; return -1;}
5638 #endif /* ndef _SC_FSYNC */
5639         if (x == Mono_Posix_SysconfName__SC_GETGR_R_SIZE_MAX)
5640 #ifdef _SC_GETGR_R_SIZE_MAX
5641                 {*r = _SC_GETGR_R_SIZE_MAX; return 0;}
5642 #else /* def _SC_GETGR_R_SIZE_MAX */
5643                 {errno = EINVAL; return -1;}
5644 #endif /* ndef _SC_GETGR_R_SIZE_MAX */
5645         if (x == Mono_Posix_SysconfName__SC_GETPW_R_SIZE_MAX)
5646 #ifdef _SC_GETPW_R_SIZE_MAX
5647                 {*r = _SC_GETPW_R_SIZE_MAX; return 0;}
5648 #else /* def _SC_GETPW_R_SIZE_MAX */
5649                 {errno = EINVAL; return -1;}
5650 #endif /* ndef _SC_GETPW_R_SIZE_MAX */
5651         if (x == Mono_Posix_SysconfName__SC_HOST_NAME_MAX)
5652 #ifdef _SC_HOST_NAME_MAX
5653                 {*r = _SC_HOST_NAME_MAX; return 0;}
5654 #else /* def _SC_HOST_NAME_MAX */
5655                 {errno = EINVAL; return -1;}
5656 #endif /* ndef _SC_HOST_NAME_MAX */
5657         if (x == Mono_Posix_SysconfName__SC_INT_MAX)
5658 #ifdef _SC_INT_MAX
5659                 {*r = _SC_INT_MAX; return 0;}
5660 #else /* def _SC_INT_MAX */
5661                 {errno = EINVAL; return -1;}
5662 #endif /* ndef _SC_INT_MAX */
5663         if (x == Mono_Posix_SysconfName__SC_INT_MIN)
5664 #ifdef _SC_INT_MIN
5665                 {*r = _SC_INT_MIN; return 0;}
5666 #else /* def _SC_INT_MIN */
5667                 {errno = EINVAL; return -1;}
5668 #endif /* ndef _SC_INT_MIN */
5669         if (x == Mono_Posix_SysconfName__SC_IOV_MAX)
5670 #ifdef _SC_IOV_MAX
5671                 {*r = _SC_IOV_MAX; return 0;}
5672 #else /* def _SC_IOV_MAX */
5673                 {errno = EINVAL; return -1;}
5674 #endif /* ndef _SC_IOV_MAX */
5675         if (x == Mono_Posix_SysconfName__SC_JOB_CONTROL)
5676 #ifdef _SC_JOB_CONTROL
5677                 {*r = _SC_JOB_CONTROL; return 0;}
5678 #else /* def _SC_JOB_CONTROL */
5679                 {errno = EINVAL; return -1;}
5680 #endif /* ndef _SC_JOB_CONTROL */
5681         if (x == Mono_Posix_SysconfName__SC_LEVEL1_DCACHE_ASSOC)
5682 #ifdef _SC_LEVEL1_DCACHE_ASSOC
5683                 {*r = _SC_LEVEL1_DCACHE_ASSOC; return 0;}
5684 #else /* def _SC_LEVEL1_DCACHE_ASSOC */
5685                 {errno = EINVAL; return -1;}
5686 #endif /* ndef _SC_LEVEL1_DCACHE_ASSOC */
5687         if (x == Mono_Posix_SysconfName__SC_LEVEL1_DCACHE_LINESIZE)
5688 #ifdef _SC_LEVEL1_DCACHE_LINESIZE
5689                 {*r = _SC_LEVEL1_DCACHE_LINESIZE; return 0;}
5690 #else /* def _SC_LEVEL1_DCACHE_LINESIZE */
5691                 {errno = EINVAL; return -1;}
5692 #endif /* ndef _SC_LEVEL1_DCACHE_LINESIZE */
5693         if (x == Mono_Posix_SysconfName__SC_LEVEL1_DCACHE_SIZE)
5694 #ifdef _SC_LEVEL1_DCACHE_SIZE
5695                 {*r = _SC_LEVEL1_DCACHE_SIZE; return 0;}
5696 #else /* def _SC_LEVEL1_DCACHE_SIZE */
5697                 {errno = EINVAL; return -1;}
5698 #endif /* ndef _SC_LEVEL1_DCACHE_SIZE */
5699         if (x == Mono_Posix_SysconfName__SC_LEVEL1_ICACHE_ASSOC)
5700 #ifdef _SC_LEVEL1_ICACHE_ASSOC
5701                 {*r = _SC_LEVEL1_ICACHE_ASSOC; return 0;}
5702 #else /* def _SC_LEVEL1_ICACHE_ASSOC */
5703                 {errno = EINVAL; return -1;}
5704 #endif /* ndef _SC_LEVEL1_ICACHE_ASSOC */
5705         if (x == Mono_Posix_SysconfName__SC_LEVEL1_ICACHE_LINESIZE)
5706 #ifdef _SC_LEVEL1_ICACHE_LINESIZE
5707                 {*r = _SC_LEVEL1_ICACHE_LINESIZE; return 0;}
5708 #else /* def _SC_LEVEL1_ICACHE_LINESIZE */
5709                 {errno = EINVAL; return -1;}
5710 #endif /* ndef _SC_LEVEL1_ICACHE_LINESIZE */
5711         if (x == Mono_Posix_SysconfName__SC_LEVEL1_ICACHE_SIZE)
5712 #ifdef _SC_LEVEL1_ICACHE_SIZE
5713                 {*r = _SC_LEVEL1_ICACHE_SIZE; return 0;}
5714 #else /* def _SC_LEVEL1_ICACHE_SIZE */
5715                 {errno = EINVAL; return -1;}
5716 #endif /* ndef _SC_LEVEL1_ICACHE_SIZE */
5717         if (x == Mono_Posix_SysconfName__SC_LEVEL2_CACHE_ASSOC)
5718 #ifdef _SC_LEVEL2_CACHE_ASSOC
5719                 {*r = _SC_LEVEL2_CACHE_ASSOC; return 0;}
5720 #else /* def _SC_LEVEL2_CACHE_ASSOC */
5721                 {errno = EINVAL; return -1;}
5722 #endif /* ndef _SC_LEVEL2_CACHE_ASSOC */
5723         if (x == Mono_Posix_SysconfName__SC_LEVEL2_CACHE_LINESIZE)
5724 #ifdef _SC_LEVEL2_CACHE_LINESIZE
5725                 {*r = _SC_LEVEL2_CACHE_LINESIZE; return 0;}
5726 #else /* def _SC_LEVEL2_CACHE_LINESIZE */
5727                 {errno = EINVAL; return -1;}
5728 #endif /* ndef _SC_LEVEL2_CACHE_LINESIZE */
5729         if (x == Mono_Posix_SysconfName__SC_LEVEL2_CACHE_SIZE)
5730 #ifdef _SC_LEVEL2_CACHE_SIZE
5731                 {*r = _SC_LEVEL2_CACHE_SIZE; return 0;}
5732 #else /* def _SC_LEVEL2_CACHE_SIZE */
5733                 {errno = EINVAL; return -1;}
5734 #endif /* ndef _SC_LEVEL2_CACHE_SIZE */
5735         if (x == Mono_Posix_SysconfName__SC_LEVEL3_CACHE_ASSOC)
5736 #ifdef _SC_LEVEL3_CACHE_ASSOC
5737                 {*r = _SC_LEVEL3_CACHE_ASSOC; return 0;}
5738 #else /* def _SC_LEVEL3_CACHE_ASSOC */
5739                 {errno = EINVAL; return -1;}
5740 #endif /* ndef _SC_LEVEL3_CACHE_ASSOC */
5741         if (x == Mono_Posix_SysconfName__SC_LEVEL3_CACHE_LINESIZE)
5742 #ifdef _SC_LEVEL3_CACHE_LINESIZE
5743                 {*r = _SC_LEVEL3_CACHE_LINESIZE; return 0;}
5744 #else /* def _SC_LEVEL3_CACHE_LINESIZE */
5745                 {errno = EINVAL; return -1;}
5746 #endif /* ndef _SC_LEVEL3_CACHE_LINESIZE */
5747         if (x == Mono_Posix_SysconfName__SC_LEVEL3_CACHE_SIZE)
5748 #ifdef _SC_LEVEL3_CACHE_SIZE
5749                 {*r = _SC_LEVEL3_CACHE_SIZE; return 0;}
5750 #else /* def _SC_LEVEL3_CACHE_SIZE */
5751                 {errno = EINVAL; return -1;}
5752 #endif /* ndef _SC_LEVEL3_CACHE_SIZE */
5753         if (x == Mono_Posix_SysconfName__SC_LEVEL4_CACHE_ASSOC)
5754 #ifdef _SC_LEVEL4_CACHE_ASSOC
5755                 {*r = _SC_LEVEL4_CACHE_ASSOC; return 0;}
5756 #else /* def _SC_LEVEL4_CACHE_ASSOC */
5757                 {errno = EINVAL; return -1;}
5758 #endif /* ndef _SC_LEVEL4_CACHE_ASSOC */
5759         if (x == Mono_Posix_SysconfName__SC_LEVEL4_CACHE_LINESIZE)
5760 #ifdef _SC_LEVEL4_CACHE_LINESIZE
5761                 {*r = _SC_LEVEL4_CACHE_LINESIZE; return 0;}
5762 #else /* def _SC_LEVEL4_CACHE_LINESIZE */
5763                 {errno = EINVAL; return -1;}
5764 #endif /* ndef _SC_LEVEL4_CACHE_LINESIZE */
5765         if (x == Mono_Posix_SysconfName__SC_LEVEL4_CACHE_SIZE)
5766 #ifdef _SC_LEVEL4_CACHE_SIZE
5767                 {*r = _SC_LEVEL4_CACHE_SIZE; return 0;}
5768 #else /* def _SC_LEVEL4_CACHE_SIZE */
5769                 {errno = EINVAL; return -1;}
5770 #endif /* ndef _SC_LEVEL4_CACHE_SIZE */
5771         if (x == Mono_Posix_SysconfName__SC_LINE_MAX)
5772 #ifdef _SC_LINE_MAX
5773                 {*r = _SC_LINE_MAX; return 0;}
5774 #else /* def _SC_LINE_MAX */
5775                 {errno = EINVAL; return -1;}
5776 #endif /* ndef _SC_LINE_MAX */
5777         if (x == Mono_Posix_SysconfName__SC_LOGIN_NAME_MAX)
5778 #ifdef _SC_LOGIN_NAME_MAX
5779                 {*r = _SC_LOGIN_NAME_MAX; return 0;}
5780 #else /* def _SC_LOGIN_NAME_MAX */
5781                 {errno = EINVAL; return -1;}
5782 #endif /* ndef _SC_LOGIN_NAME_MAX */
5783         if (x == Mono_Posix_SysconfName__SC_LONG_BIT)
5784 #ifdef _SC_LONG_BIT
5785                 {*r = _SC_LONG_BIT; return 0;}
5786 #else /* def _SC_LONG_BIT */
5787                 {errno = EINVAL; return -1;}
5788 #endif /* ndef _SC_LONG_BIT */
5789         if (x == Mono_Posix_SysconfName__SC_MAPPED_FILES)
5790 #ifdef _SC_MAPPED_FILES
5791                 {*r = _SC_MAPPED_FILES; return 0;}
5792 #else /* def _SC_MAPPED_FILES */
5793                 {errno = EINVAL; return -1;}
5794 #endif /* ndef _SC_MAPPED_FILES */
5795         if (x == Mono_Posix_SysconfName__SC_MB_LEN_MAX)
5796 #ifdef _SC_MB_LEN_MAX
5797                 {*r = _SC_MB_LEN_MAX; return 0;}
5798 #else /* def _SC_MB_LEN_MAX */
5799                 {errno = EINVAL; return -1;}
5800 #endif /* ndef _SC_MB_LEN_MAX */
5801         if (x == Mono_Posix_SysconfName__SC_MEMLOCK)
5802 #ifdef _SC_MEMLOCK
5803                 {*r = _SC_MEMLOCK; return 0;}
5804 #else /* def _SC_MEMLOCK */
5805                 {errno = EINVAL; return -1;}
5806 #endif /* ndef _SC_MEMLOCK */
5807         if (x == Mono_Posix_SysconfName__SC_MEMLOCK_RANGE)
5808 #ifdef _SC_MEMLOCK_RANGE
5809                 {*r = _SC_MEMLOCK_RANGE; return 0;}
5810 #else /* def _SC_MEMLOCK_RANGE */
5811                 {errno = EINVAL; return -1;}
5812 #endif /* ndef _SC_MEMLOCK_RANGE */
5813         if (x == Mono_Posix_SysconfName__SC_MEMORY_PROTECTION)
5814 #ifdef _SC_MEMORY_PROTECTION
5815                 {*r = _SC_MEMORY_PROTECTION; return 0;}
5816 #else /* def _SC_MEMORY_PROTECTION */
5817                 {errno = EINVAL; return -1;}
5818 #endif /* ndef _SC_MEMORY_PROTECTION */
5819         if (x == Mono_Posix_SysconfName__SC_MESSAGE_PASSING)
5820 #ifdef _SC_MESSAGE_PASSING
5821                 {*r = _SC_MESSAGE_PASSING; return 0;}
5822 #else /* def _SC_MESSAGE_PASSING */
5823                 {errno = EINVAL; return -1;}
5824 #endif /* ndef _SC_MESSAGE_PASSING */
5825         if (x == Mono_Posix_SysconfName__SC_MONOTONIC_CLOCK)
5826 #ifdef _SC_MONOTONIC_CLOCK
5827                 {*r = _SC_MONOTONIC_CLOCK; return 0;}
5828 #else /* def _SC_MONOTONIC_CLOCK */
5829                 {errno = EINVAL; return -1;}
5830 #endif /* ndef _SC_MONOTONIC_CLOCK */
5831         if (x == Mono_Posix_SysconfName__SC_MQ_OPEN_MAX)
5832 #ifdef _SC_MQ_OPEN_MAX
5833                 {*r = _SC_MQ_OPEN_MAX; return 0;}
5834 #else /* def _SC_MQ_OPEN_MAX */
5835                 {errno = EINVAL; return -1;}
5836 #endif /* ndef _SC_MQ_OPEN_MAX */
5837         if (x == Mono_Posix_SysconfName__SC_MQ_PRIO_MAX)
5838 #ifdef _SC_MQ_PRIO_MAX
5839                 {*r = _SC_MQ_PRIO_MAX; return 0;}
5840 #else /* def _SC_MQ_PRIO_MAX */
5841                 {errno = EINVAL; return -1;}
5842 #endif /* ndef _SC_MQ_PRIO_MAX */
5843         if (x == Mono_Posix_SysconfName__SC_MULTI_PROCESS)
5844 #ifdef _SC_MULTI_PROCESS
5845                 {*r = _SC_MULTI_PROCESS; return 0;}
5846 #else /* def _SC_MULTI_PROCESS */
5847                 {errno = EINVAL; return -1;}
5848 #endif /* ndef _SC_MULTI_PROCESS */
5849         if (x == Mono_Posix_SysconfName__SC_NETWORKING)
5850 #ifdef _SC_NETWORKING
5851                 {*r = _SC_NETWORKING; return 0;}
5852 #else /* def _SC_NETWORKING */
5853                 {errno = EINVAL; return -1;}
5854 #endif /* ndef _SC_NETWORKING */
5855         if (x == Mono_Posix_SysconfName__SC_NGROUPS_MAX)
5856 #ifdef _SC_NGROUPS_MAX
5857                 {*r = _SC_NGROUPS_MAX; return 0;}
5858 #else /* def _SC_NGROUPS_MAX */
5859                 {errno = EINVAL; return -1;}
5860 #endif /* ndef _SC_NGROUPS_MAX */
5861         if (x == Mono_Posix_SysconfName__SC_NL_ARGMAX)
5862 #ifdef _SC_NL_ARGMAX
5863                 {*r = _SC_NL_ARGMAX; return 0;}
5864 #else /* def _SC_NL_ARGMAX */
5865                 {errno = EINVAL; return -1;}
5866 #endif /* ndef _SC_NL_ARGMAX */
5867         if (x == Mono_Posix_SysconfName__SC_NL_LANGMAX)
5868 #ifdef _SC_NL_LANGMAX
5869                 {*r = _SC_NL_LANGMAX; return 0;}
5870 #else /* def _SC_NL_LANGMAX */
5871                 {errno = EINVAL; return -1;}
5872 #endif /* ndef _SC_NL_LANGMAX */
5873         if (x == Mono_Posix_SysconfName__SC_NL_MSGMAX)
5874 #ifdef _SC_NL_MSGMAX
5875                 {*r = _SC_NL_MSGMAX; return 0;}
5876 #else /* def _SC_NL_MSGMAX */
5877                 {errno = EINVAL; return -1;}
5878 #endif /* ndef _SC_NL_MSGMAX */
5879         if (x == Mono_Posix_SysconfName__SC_NL_NMAX)
5880 #ifdef _SC_NL_NMAX
5881                 {*r = _SC_NL_NMAX; return 0;}
5882 #else /* def _SC_NL_NMAX */
5883                 {errno = EINVAL; return -1;}
5884 #endif /* ndef _SC_NL_NMAX */
5885         if (x == Mono_Posix_SysconfName__SC_NL_SETMAX)
5886 #ifdef _SC_NL_SETMAX
5887                 {*r = _SC_NL_SETMAX; return 0;}
5888 #else /* def _SC_NL_SETMAX */
5889                 {errno = EINVAL; return -1;}
5890 #endif /* ndef _SC_NL_SETMAX */
5891         if (x == Mono_Posix_SysconfName__SC_NL_TEXTMAX)
5892 #ifdef _SC_NL_TEXTMAX
5893                 {*r = _SC_NL_TEXTMAX; return 0;}
5894 #else /* def _SC_NL_TEXTMAX */
5895                 {errno = EINVAL; return -1;}
5896 #endif /* ndef _SC_NL_TEXTMAX */
5897         if (x == Mono_Posix_SysconfName__SC_NPROCESSORS_CONF)
5898 #ifdef _SC_NPROCESSORS_CONF
5899                 {*r = _SC_NPROCESSORS_CONF; return 0;}
5900 #else /* def _SC_NPROCESSORS_CONF */
5901                 {errno = EINVAL; return -1;}
5902 #endif /* ndef _SC_NPROCESSORS_CONF */
5903         if (x == Mono_Posix_SysconfName__SC_NPROCESSORS_ONLN)
5904 #ifdef _SC_NPROCESSORS_ONLN
5905                 {*r = _SC_NPROCESSORS_ONLN; return 0;}
5906 #else /* def _SC_NPROCESSORS_ONLN */
5907                 {errno = EINVAL; return -1;}
5908 #endif /* ndef _SC_NPROCESSORS_ONLN */
5909         if (x == Mono_Posix_SysconfName__SC_NZERO)
5910 #ifdef _SC_NZERO
5911                 {*r = _SC_NZERO; return 0;}
5912 #else /* def _SC_NZERO */
5913                 {errno = EINVAL; return -1;}
5914 #endif /* ndef _SC_NZERO */
5915         if (x == Mono_Posix_SysconfName__SC_OPEN_MAX)
5916 #ifdef _SC_OPEN_MAX
5917                 {*r = _SC_OPEN_MAX; return 0;}
5918 #else /* def _SC_OPEN_MAX */
5919                 {errno = EINVAL; return -1;}
5920 #endif /* ndef _SC_OPEN_MAX */
5921         if (x == Mono_Posix_SysconfName__SC_PAGESIZE)
5922 #ifdef _SC_PAGESIZE
5923                 {*r = _SC_PAGESIZE; return 0;}
5924 #else /* def _SC_PAGESIZE */
5925                 {errno = EINVAL; return -1;}
5926 #endif /* ndef _SC_PAGESIZE */
5927         if (x == Mono_Posix_SysconfName__SC_PASS_MAX)
5928 #ifdef _SC_PASS_MAX
5929                 {*r = _SC_PASS_MAX; return 0;}
5930 #else /* def _SC_PASS_MAX */
5931                 {errno = EINVAL; return -1;}
5932 #endif /* ndef _SC_PASS_MAX */
5933         if (x == Mono_Posix_SysconfName__SC_PHYS_PAGES)
5934 #ifdef _SC_PHYS_PAGES
5935                 {*r = _SC_PHYS_PAGES; return 0;}
5936 #else /* def _SC_PHYS_PAGES */
5937                 {errno = EINVAL; return -1;}
5938 #endif /* ndef _SC_PHYS_PAGES */
5939         if (x == Mono_Posix_SysconfName__SC_PII)
5940 #ifdef _SC_PII
5941                 {*r = _SC_PII; return 0;}
5942 #else /* def _SC_PII */
5943                 {errno = EINVAL; return -1;}
5944 #endif /* ndef _SC_PII */
5945         if (x == Mono_Posix_SysconfName__SC_PII_INTERNET)
5946 #ifdef _SC_PII_INTERNET
5947                 {*r = _SC_PII_INTERNET; return 0;}
5948 #else /* def _SC_PII_INTERNET */
5949                 {errno = EINVAL; return -1;}
5950 #endif /* ndef _SC_PII_INTERNET */
5951         if (x == Mono_Posix_SysconfName__SC_PII_INTERNET_DGRAM)
5952 #ifdef _SC_PII_INTERNET_DGRAM
5953                 {*r = _SC_PII_INTERNET_DGRAM; return 0;}
5954 #else /* def _SC_PII_INTERNET_DGRAM */
5955                 {errno = EINVAL; return -1;}
5956 #endif /* ndef _SC_PII_INTERNET_DGRAM */
5957         if (x == Mono_Posix_SysconfName__SC_PII_INTERNET_STREAM)
5958 #ifdef _SC_PII_INTERNET_STREAM
5959                 {*r = _SC_PII_INTERNET_STREAM; return 0;}
5960 #else /* def _SC_PII_INTERNET_STREAM */
5961                 {errno = EINVAL; return -1;}
5962 #endif /* ndef _SC_PII_INTERNET_STREAM */
5963         if (x == Mono_Posix_SysconfName__SC_PII_OSI)
5964 #ifdef _SC_PII_OSI
5965                 {*r = _SC_PII_OSI; return 0;}
5966 #else /* def _SC_PII_OSI */
5967                 {errno = EINVAL; return -1;}
5968 #endif /* ndef _SC_PII_OSI */
5969         if (x == Mono_Posix_SysconfName__SC_PII_OSI_CLTS)
5970 #ifdef _SC_PII_OSI_CLTS
5971                 {*r = _SC_PII_OSI_CLTS; return 0;}
5972 #else /* def _SC_PII_OSI_CLTS */
5973                 {errno = EINVAL; return -1;}
5974 #endif /* ndef _SC_PII_OSI_CLTS */
5975         if (x == Mono_Posix_SysconfName__SC_PII_OSI_COTS)
5976 #ifdef _SC_PII_OSI_COTS
5977                 {*r = _SC_PII_OSI_COTS; return 0;}
5978 #else /* def _SC_PII_OSI_COTS */
5979                 {errno = EINVAL; return -1;}
5980 #endif /* ndef _SC_PII_OSI_COTS */
5981         if (x == Mono_Posix_SysconfName__SC_PII_OSI_M)
5982 #ifdef _SC_PII_OSI_M
5983                 {*r = _SC_PII_OSI_M; return 0;}
5984 #else /* def _SC_PII_OSI_M */
5985                 {errno = EINVAL; return -1;}
5986 #endif /* ndef _SC_PII_OSI_M */
5987         if (x == Mono_Posix_SysconfName__SC_PII_SOCKET)
5988 #ifdef _SC_PII_SOCKET
5989                 {*r = _SC_PII_SOCKET; return 0;}
5990 #else /* def _SC_PII_SOCKET */
5991                 {errno = EINVAL; return -1;}
5992 #endif /* ndef _SC_PII_SOCKET */
5993         if (x == Mono_Posix_SysconfName__SC_PII_XTI)
5994 #ifdef _SC_PII_XTI
5995                 {*r = _SC_PII_XTI; return 0;}
5996 #else /* def _SC_PII_XTI */
5997                 {errno = EINVAL; return -1;}
5998 #endif /* ndef _SC_PII_XTI */
5999         if (x == Mono_Posix_SysconfName__SC_PIPE)
6000 #ifdef _SC_PIPE
6001                 {*r = _SC_PIPE; return 0;}
6002 #else /* def _SC_PIPE */
6003                 {errno = EINVAL; return -1;}
6004 #endif /* ndef _SC_PIPE */
6005         if (x == Mono_Posix_SysconfName__SC_POLL)
6006 #ifdef _SC_POLL
6007                 {*r = _SC_POLL; return 0;}
6008 #else /* def _SC_POLL */
6009                 {errno = EINVAL; return -1;}
6010 #endif /* ndef _SC_POLL */
6011         if (x == Mono_Posix_SysconfName__SC_PRIORITIZED_IO)
6012 #ifdef _SC_PRIORITIZED_IO
6013                 {*r = _SC_PRIORITIZED_IO; return 0;}
6014 #else /* def _SC_PRIORITIZED_IO */
6015                 {errno = EINVAL; return -1;}
6016 #endif /* ndef _SC_PRIORITIZED_IO */
6017         if (x == Mono_Posix_SysconfName__SC_PRIORITY_SCHEDULING)
6018 #ifdef _SC_PRIORITY_SCHEDULING
6019                 {*r = _SC_PRIORITY_SCHEDULING; return 0;}
6020 #else /* def _SC_PRIORITY_SCHEDULING */
6021                 {errno = EINVAL; return -1;}
6022 #endif /* ndef _SC_PRIORITY_SCHEDULING */
6023         if (x == Mono_Posix_SysconfName__SC_READER_WRITER_LOCKS)
6024 #ifdef _SC_READER_WRITER_LOCKS
6025                 {*r = _SC_READER_WRITER_LOCKS; return 0;}
6026 #else /* def _SC_READER_WRITER_LOCKS */
6027                 {errno = EINVAL; return -1;}
6028 #endif /* ndef _SC_READER_WRITER_LOCKS */
6029         if (x == Mono_Posix_SysconfName__SC_REALTIME_SIGNALS)
6030 #ifdef _SC_REALTIME_SIGNALS
6031                 {*r = _SC_REALTIME_SIGNALS; return 0;}
6032 #else /* def _SC_REALTIME_SIGNALS */
6033                 {errno = EINVAL; return -1;}
6034 #endif /* ndef _SC_REALTIME_SIGNALS */
6035         if (x == Mono_Posix_SysconfName__SC_REGEXP)
6036 #ifdef _SC_REGEXP
6037                 {*r = _SC_REGEXP; return 0;}
6038 #else /* def _SC_REGEXP */
6039                 {errno = EINVAL; return -1;}
6040 #endif /* ndef _SC_REGEXP */
6041         if (x == Mono_Posix_SysconfName__SC_REGEX_VERSION)
6042 #ifdef _SC_REGEX_VERSION
6043                 {*r = _SC_REGEX_VERSION; return 0;}
6044 #else /* def _SC_REGEX_VERSION */
6045                 {errno = EINVAL; return -1;}
6046 #endif /* ndef _SC_REGEX_VERSION */
6047         if (x == Mono_Posix_SysconfName__SC_RE_DUP_MAX)
6048 #ifdef _SC_RE_DUP_MAX
6049                 {*r = _SC_RE_DUP_MAX; return 0;}
6050 #else /* def _SC_RE_DUP_MAX */
6051                 {errno = EINVAL; return -1;}
6052 #endif /* ndef _SC_RE_DUP_MAX */
6053         if (x == Mono_Posix_SysconfName__SC_RTSIG_MAX)
6054 #ifdef _SC_RTSIG_MAX
6055                 {*r = _SC_RTSIG_MAX; return 0;}
6056 #else /* def _SC_RTSIG_MAX */
6057                 {errno = EINVAL; return -1;}
6058 #endif /* ndef _SC_RTSIG_MAX */
6059         if (x == Mono_Posix_SysconfName__SC_SAVED_IDS)
6060 #ifdef _SC_SAVED_IDS
6061                 {*r = _SC_SAVED_IDS; return 0;}
6062 #else /* def _SC_SAVED_IDS */
6063                 {errno = EINVAL; return -1;}
6064 #endif /* ndef _SC_SAVED_IDS */
6065         if (x == Mono_Posix_SysconfName__SC_SCHAR_MAX)
6066 #ifdef _SC_SCHAR_MAX
6067                 {*r = _SC_SCHAR_MAX; return 0;}
6068 #else /* def _SC_SCHAR_MAX */
6069                 {errno = EINVAL; return -1;}
6070 #endif /* ndef _SC_SCHAR_MAX */
6071         if (x == Mono_Posix_SysconfName__SC_SCHAR_MIN)
6072 #ifdef _SC_SCHAR_MIN
6073                 {*r = _SC_SCHAR_MIN; return 0;}
6074 #else /* def _SC_SCHAR_MIN */
6075                 {errno = EINVAL; return -1;}
6076 #endif /* ndef _SC_SCHAR_MIN */
6077         if (x == Mono_Posix_SysconfName__SC_SELECT)
6078 #ifdef _SC_SELECT
6079                 {*r = _SC_SELECT; return 0;}
6080 #else /* def _SC_SELECT */
6081                 {errno = EINVAL; return -1;}
6082 #endif /* ndef _SC_SELECT */
6083         if (x == Mono_Posix_SysconfName__SC_SEMAPHORES)
6084 #ifdef _SC_SEMAPHORES
6085                 {*r = _SC_SEMAPHORES; return 0;}
6086 #else /* def _SC_SEMAPHORES */
6087                 {errno = EINVAL; return -1;}
6088 #endif /* ndef _SC_SEMAPHORES */
6089         if (x == Mono_Posix_SysconfName__SC_SEM_NSEMS_MAX)
6090 #ifdef _SC_SEM_NSEMS_MAX
6091                 {*r = _SC_SEM_NSEMS_MAX; return 0;}
6092 #else /* def _SC_SEM_NSEMS_MAX */
6093                 {errno = EINVAL; return -1;}
6094 #endif /* ndef _SC_SEM_NSEMS_MAX */
6095         if (x == Mono_Posix_SysconfName__SC_SEM_VALUE_MAX)
6096 #ifdef _SC_SEM_VALUE_MAX
6097                 {*r = _SC_SEM_VALUE_MAX; return 0;}
6098 #else /* def _SC_SEM_VALUE_MAX */
6099                 {errno = EINVAL; return -1;}
6100 #endif /* ndef _SC_SEM_VALUE_MAX */
6101         if (x == Mono_Posix_SysconfName__SC_SHARED_MEMORY_OBJECTS)
6102 #ifdef _SC_SHARED_MEMORY_OBJECTS
6103                 {*r = _SC_SHARED_MEMORY_OBJECTS; return 0;}
6104 #else /* def _SC_SHARED_MEMORY_OBJECTS */
6105                 {errno = EINVAL; return -1;}
6106 #endif /* ndef _SC_SHARED_MEMORY_OBJECTS */
6107         if (x == Mono_Posix_SysconfName__SC_SHELL)
6108 #ifdef _SC_SHELL
6109                 {*r = _SC_SHELL; return 0;}
6110 #else /* def _SC_SHELL */
6111                 {errno = EINVAL; return -1;}
6112 #endif /* ndef _SC_SHELL */
6113         if (x == Mono_Posix_SysconfName__SC_SHRT_MAX)
6114 #ifdef _SC_SHRT_MAX
6115                 {*r = _SC_SHRT_MAX; return 0;}
6116 #else /* def _SC_SHRT_MAX */
6117                 {errno = EINVAL; return -1;}
6118 #endif /* ndef _SC_SHRT_MAX */
6119         if (x == Mono_Posix_SysconfName__SC_SHRT_MIN)
6120 #ifdef _SC_SHRT_MIN
6121                 {*r = _SC_SHRT_MIN; return 0;}
6122 #else /* def _SC_SHRT_MIN */
6123                 {errno = EINVAL; return -1;}
6124 #endif /* ndef _SC_SHRT_MIN */
6125         if (x == Mono_Posix_SysconfName__SC_SIGNALS)
6126 #ifdef _SC_SIGNALS
6127                 {*r = _SC_SIGNALS; return 0;}
6128 #else /* def _SC_SIGNALS */
6129                 {errno = EINVAL; return -1;}
6130 #endif /* ndef _SC_SIGNALS */
6131         if (x == Mono_Posix_SysconfName__SC_SIGQUEUE_MAX)
6132 #ifdef _SC_SIGQUEUE_MAX
6133                 {*r = _SC_SIGQUEUE_MAX; return 0;}
6134 #else /* def _SC_SIGQUEUE_MAX */
6135                 {errno = EINVAL; return -1;}
6136 #endif /* ndef _SC_SIGQUEUE_MAX */
6137         if (x == Mono_Posix_SysconfName__SC_SINGLE_PROCESS)
6138 #ifdef _SC_SINGLE_PROCESS
6139                 {*r = _SC_SINGLE_PROCESS; return 0;}
6140 #else /* def _SC_SINGLE_PROCESS */
6141                 {errno = EINVAL; return -1;}
6142 #endif /* ndef _SC_SINGLE_PROCESS */
6143         if (x == Mono_Posix_SysconfName__SC_SPAWN)
6144 #ifdef _SC_SPAWN
6145                 {*r = _SC_SPAWN; return 0;}
6146 #else /* def _SC_SPAWN */
6147                 {errno = EINVAL; return -1;}
6148 #endif /* ndef _SC_SPAWN */
6149         if (x == Mono_Posix_SysconfName__SC_SPIN_LOCKS)
6150 #ifdef _SC_SPIN_LOCKS
6151                 {*r = _SC_SPIN_LOCKS; return 0;}
6152 #else /* def _SC_SPIN_LOCKS */
6153                 {errno = EINVAL; return -1;}
6154 #endif /* ndef _SC_SPIN_LOCKS */
6155         if (x == Mono_Posix_SysconfName__SC_SPORADIC_SERVER)
6156 #ifdef _SC_SPORADIC_SERVER
6157                 {*r = _SC_SPORADIC_SERVER; return 0;}
6158 #else /* def _SC_SPORADIC_SERVER */
6159                 {errno = EINVAL; return -1;}
6160 #endif /* ndef _SC_SPORADIC_SERVER */
6161         if (x == Mono_Posix_SysconfName__SC_SSIZE_MAX)
6162 #ifdef _SC_SSIZE_MAX
6163                 {*r = _SC_SSIZE_MAX; return 0;}
6164 #else /* def _SC_SSIZE_MAX */
6165                 {errno = EINVAL; return -1;}
6166 #endif /* ndef _SC_SSIZE_MAX */
6167         if (x == Mono_Posix_SysconfName__SC_STREAMS)
6168 #ifdef _SC_STREAMS
6169                 {*r = _SC_STREAMS; return 0;}
6170 #else /* def _SC_STREAMS */
6171                 {errno = EINVAL; return -1;}
6172 #endif /* ndef _SC_STREAMS */
6173         if (x == Mono_Posix_SysconfName__SC_STREAM_MAX)
6174 #ifdef _SC_STREAM_MAX
6175                 {*r = _SC_STREAM_MAX; return 0;}
6176 #else /* def _SC_STREAM_MAX */
6177                 {errno = EINVAL; return -1;}
6178 #endif /* ndef _SC_STREAM_MAX */
6179         if (x == Mono_Posix_SysconfName__SC_SYMLOOP_MAX)
6180 #ifdef _SC_SYMLOOP_MAX
6181                 {*r = _SC_SYMLOOP_MAX; return 0;}
6182 #else /* def _SC_SYMLOOP_MAX */
6183                 {errno = EINVAL; return -1;}
6184 #endif /* ndef _SC_SYMLOOP_MAX */
6185         if (x == Mono_Posix_SysconfName__SC_SYNCHRONIZED_IO)
6186 #ifdef _SC_SYNCHRONIZED_IO
6187                 {*r = _SC_SYNCHRONIZED_IO; return 0;}
6188 #else /* def _SC_SYNCHRONIZED_IO */
6189                 {errno = EINVAL; return -1;}
6190 #endif /* ndef _SC_SYNCHRONIZED_IO */
6191         if (x == Mono_Posix_SysconfName__SC_SYSTEM_DATABASE)
6192 #ifdef _SC_SYSTEM_DATABASE
6193                 {*r = _SC_SYSTEM_DATABASE; return 0;}
6194 #else /* def _SC_SYSTEM_DATABASE */
6195                 {errno = EINVAL; return -1;}
6196 #endif /* ndef _SC_SYSTEM_DATABASE */
6197         if (x == Mono_Posix_SysconfName__SC_SYSTEM_DATABASE_R)
6198 #ifdef _SC_SYSTEM_DATABASE_R
6199                 {*r = _SC_SYSTEM_DATABASE_R; return 0;}
6200 #else /* def _SC_SYSTEM_DATABASE_R */
6201                 {errno = EINVAL; return -1;}
6202 #endif /* ndef _SC_SYSTEM_DATABASE_R */
6203         if (x == Mono_Posix_SysconfName__SC_THREADS)
6204 #ifdef _SC_THREADS
6205                 {*r = _SC_THREADS; return 0;}
6206 #else /* def _SC_THREADS */
6207                 {errno = EINVAL; return -1;}
6208 #endif /* ndef _SC_THREADS */
6209         if (x == Mono_Posix_SysconfName__SC_THREAD_ATTR_STACKADDR)
6210 #ifdef _SC_THREAD_ATTR_STACKADDR
6211                 {*r = _SC_THREAD_ATTR_STACKADDR; return 0;}
6212 #else /* def _SC_THREAD_ATTR_STACKADDR */
6213                 {errno = EINVAL; return -1;}
6214 #endif /* ndef _SC_THREAD_ATTR_STACKADDR */
6215         if (x == Mono_Posix_SysconfName__SC_THREAD_ATTR_STACKSIZE)
6216 #ifdef _SC_THREAD_ATTR_STACKSIZE
6217                 {*r = _SC_THREAD_ATTR_STACKSIZE; return 0;}
6218 #else /* def _SC_THREAD_ATTR_STACKSIZE */
6219                 {errno = EINVAL; return -1;}
6220 #endif /* ndef _SC_THREAD_ATTR_STACKSIZE */
6221         if (x == Mono_Posix_SysconfName__SC_THREAD_CPUTIME)
6222 #ifdef _SC_THREAD_CPUTIME
6223                 {*r = _SC_THREAD_CPUTIME; return 0;}
6224 #else /* def _SC_THREAD_CPUTIME */
6225                 {errno = EINVAL; return -1;}
6226 #endif /* ndef _SC_THREAD_CPUTIME */
6227         if (x == Mono_Posix_SysconfName__SC_THREAD_DESTRUCTOR_ITERATIONS)
6228 #ifdef _SC_THREAD_DESTRUCTOR_ITERATIONS
6229                 {*r = _SC_THREAD_DESTRUCTOR_ITERATIONS; return 0;}
6230 #else /* def _SC_THREAD_DESTRUCTOR_ITERATIONS */
6231                 {errno = EINVAL; return -1;}
6232 #endif /* ndef _SC_THREAD_DESTRUCTOR_ITERATIONS */
6233         if (x == Mono_Posix_SysconfName__SC_THREAD_KEYS_MAX)
6234 #ifdef _SC_THREAD_KEYS_MAX
6235                 {*r = _SC_THREAD_KEYS_MAX; return 0;}
6236 #else /* def _SC_THREAD_KEYS_MAX */
6237                 {errno = EINVAL; return -1;}
6238 #endif /* ndef _SC_THREAD_KEYS_MAX */
6239         if (x == Mono_Posix_SysconfName__SC_THREAD_PRIORITY_SCHEDULING)
6240 #ifdef _SC_THREAD_PRIORITY_SCHEDULING
6241                 {*r = _SC_THREAD_PRIORITY_SCHEDULING; return 0;}
6242 #else /* def _SC_THREAD_PRIORITY_SCHEDULING */
6243                 {errno = EINVAL; return -1;}
6244 #endif /* ndef _SC_THREAD_PRIORITY_SCHEDULING */
6245         if (x == Mono_Posix_SysconfName__SC_THREAD_PRIO_INHERIT)
6246 #ifdef _SC_THREAD_PRIO_INHERIT
6247                 {*r = _SC_THREAD_PRIO_INHERIT; return 0;}
6248 #else /* def _SC_THREAD_PRIO_INHERIT */
6249                 {errno = EINVAL; return -1;}
6250 #endif /* ndef _SC_THREAD_PRIO_INHERIT */
6251         if (x == Mono_Posix_SysconfName__SC_THREAD_PRIO_PROTECT)
6252 #ifdef _SC_THREAD_PRIO_PROTECT
6253                 {*r = _SC_THREAD_PRIO_PROTECT; return 0;}
6254 #else /* def _SC_THREAD_PRIO_PROTECT */
6255                 {errno = EINVAL; return -1;}
6256 #endif /* ndef _SC_THREAD_PRIO_PROTECT */
6257         if (x == Mono_Posix_SysconfName__SC_THREAD_PROCESS_SHARED)
6258 #ifdef _SC_THREAD_PROCESS_SHARED
6259                 {*r = _SC_THREAD_PROCESS_SHARED; return 0;}
6260 #else /* def _SC_THREAD_PROCESS_SHARED */
6261                 {errno = EINVAL; return -1;}
6262 #endif /* ndef _SC_THREAD_PROCESS_SHARED */
6263         if (x == Mono_Posix_SysconfName__SC_THREAD_SAFE_FUNCTIONS)
6264 #ifdef _SC_THREAD_SAFE_FUNCTIONS
6265                 {*r = _SC_THREAD_SAFE_FUNCTIONS; return 0;}
6266 #else /* def _SC_THREAD_SAFE_FUNCTIONS */
6267                 {errno = EINVAL; return -1;}
6268 #endif /* ndef _SC_THREAD_SAFE_FUNCTIONS */
6269         if (x == Mono_Posix_SysconfName__SC_THREAD_SPORADIC_SERVER)
6270 #ifdef _SC_THREAD_SPORADIC_SERVER
6271                 {*r = _SC_THREAD_SPORADIC_SERVER; return 0;}
6272 #else /* def _SC_THREAD_SPORADIC_SERVER */
6273                 {errno = EINVAL; return -1;}
6274 #endif /* ndef _SC_THREAD_SPORADIC_SERVER */
6275         if (x == Mono_Posix_SysconfName__SC_THREAD_STACK_MIN)
6276 #ifdef _SC_THREAD_STACK_MIN
6277                 {*r = _SC_THREAD_STACK_MIN; return 0;}
6278 #else /* def _SC_THREAD_STACK_MIN */
6279                 {errno = EINVAL; return -1;}
6280 #endif /* ndef _SC_THREAD_STACK_MIN */
6281         if (x == Mono_Posix_SysconfName__SC_THREAD_THREADS_MAX)
6282 #ifdef _SC_THREAD_THREADS_MAX
6283                 {*r = _SC_THREAD_THREADS_MAX; return 0;}
6284 #else /* def _SC_THREAD_THREADS_MAX */
6285                 {errno = EINVAL; return -1;}
6286 #endif /* ndef _SC_THREAD_THREADS_MAX */
6287         if (x == Mono_Posix_SysconfName__SC_TIMEOUTS)
6288 #ifdef _SC_TIMEOUTS
6289                 {*r = _SC_TIMEOUTS; return 0;}
6290 #else /* def _SC_TIMEOUTS */
6291                 {errno = EINVAL; return -1;}
6292 #endif /* ndef _SC_TIMEOUTS */
6293         if (x == Mono_Posix_SysconfName__SC_TIMERS)
6294 #ifdef _SC_TIMERS
6295                 {*r = _SC_TIMERS; return 0;}
6296 #else /* def _SC_TIMERS */
6297                 {errno = EINVAL; return -1;}
6298 #endif /* ndef _SC_TIMERS */
6299         if (x == Mono_Posix_SysconfName__SC_TIMER_MAX)
6300 #ifdef _SC_TIMER_MAX
6301                 {*r = _SC_TIMER_MAX; return 0;}
6302 #else /* def _SC_TIMER_MAX */
6303                 {errno = EINVAL; return -1;}
6304 #endif /* ndef _SC_TIMER_MAX */
6305         if (x == Mono_Posix_SysconfName__SC_TRACE)
6306 #ifdef _SC_TRACE
6307                 {*r = _SC_TRACE; return 0;}
6308 #else /* def _SC_TRACE */
6309                 {errno = EINVAL; return -1;}
6310 #endif /* ndef _SC_TRACE */
6311         if (x == Mono_Posix_SysconfName__SC_TRACE_EVENT_FILTER)
6312 #ifdef _SC_TRACE_EVENT_FILTER
6313                 {*r = _SC_TRACE_EVENT_FILTER; return 0;}
6314 #else /* def _SC_TRACE_EVENT_FILTER */
6315                 {errno = EINVAL; return -1;}
6316 #endif /* ndef _SC_TRACE_EVENT_FILTER */
6317         if (x == Mono_Posix_SysconfName__SC_TRACE_INHERIT)
6318 #ifdef _SC_TRACE_INHERIT
6319                 {*r = _SC_TRACE_INHERIT; return 0;}
6320 #else /* def _SC_TRACE_INHERIT */
6321                 {errno = EINVAL; return -1;}
6322 #endif /* ndef _SC_TRACE_INHERIT */
6323         if (x == Mono_Posix_SysconfName__SC_TRACE_LOG)
6324 #ifdef _SC_TRACE_LOG
6325                 {*r = _SC_TRACE_LOG; return 0;}
6326 #else /* def _SC_TRACE_LOG */
6327                 {errno = EINVAL; return -1;}
6328 #endif /* ndef _SC_TRACE_LOG */
6329         if (x == Mono_Posix_SysconfName__SC_TTY_NAME_MAX)
6330 #ifdef _SC_TTY_NAME_MAX
6331                 {*r = _SC_TTY_NAME_MAX; return 0;}
6332 #else /* def _SC_TTY_NAME_MAX */
6333                 {errno = EINVAL; return -1;}
6334 #endif /* ndef _SC_TTY_NAME_MAX */
6335         if (x == Mono_Posix_SysconfName__SC_TYPED_MEMORY_OBJECTS)
6336 #ifdef _SC_TYPED_MEMORY_OBJECTS
6337                 {*r = _SC_TYPED_MEMORY_OBJECTS; return 0;}
6338 #else /* def _SC_TYPED_MEMORY_OBJECTS */
6339                 {errno = EINVAL; return -1;}
6340 #endif /* ndef _SC_TYPED_MEMORY_OBJECTS */
6341         if (x == Mono_Posix_SysconfName__SC_TZNAME_MAX)
6342 #ifdef _SC_TZNAME_MAX
6343                 {*r = _SC_TZNAME_MAX; return 0;}
6344 #else /* def _SC_TZNAME_MAX */
6345                 {errno = EINVAL; return -1;}
6346 #endif /* ndef _SC_TZNAME_MAX */
6347         if (x == Mono_Posix_SysconfName__SC_T_IOV_MAX)
6348 #ifdef _SC_T_IOV_MAX
6349                 {*r = _SC_T_IOV_MAX; return 0;}
6350 #else /* def _SC_T_IOV_MAX */
6351                 {errno = EINVAL; return -1;}
6352 #endif /* ndef _SC_T_IOV_MAX */
6353         if (x == Mono_Posix_SysconfName__SC_UCHAR_MAX)
6354 #ifdef _SC_UCHAR_MAX
6355                 {*r = _SC_UCHAR_MAX; return 0;}
6356 #else /* def _SC_UCHAR_MAX */
6357                 {errno = EINVAL; return -1;}
6358 #endif /* ndef _SC_UCHAR_MAX */
6359         if (x == Mono_Posix_SysconfName__SC_UINT_MAX)
6360 #ifdef _SC_UINT_MAX
6361                 {*r = _SC_UINT_MAX; return 0;}
6362 #else /* def _SC_UINT_MAX */
6363                 {errno = EINVAL; return -1;}
6364 #endif /* ndef _SC_UINT_MAX */
6365         if (x == Mono_Posix_SysconfName__SC_UIO_MAXIOV)
6366 #ifdef _SC_UIO_MAXIOV
6367                 {*r = _SC_UIO_MAXIOV; return 0;}
6368 #else /* def _SC_UIO_MAXIOV */
6369                 {errno = EINVAL; return -1;}
6370 #endif /* ndef _SC_UIO_MAXIOV */
6371         if (x == Mono_Posix_SysconfName__SC_ULONG_MAX)
6372 #ifdef _SC_ULONG_MAX
6373                 {*r = _SC_ULONG_MAX; return 0;}
6374 #else /* def _SC_ULONG_MAX */
6375                 {errno = EINVAL; return -1;}
6376 #endif /* ndef _SC_ULONG_MAX */
6377         if (x == Mono_Posix_SysconfName__SC_USER_GROUPS)
6378 #ifdef _SC_USER_GROUPS
6379                 {*r = _SC_USER_GROUPS; return 0;}
6380 #else /* def _SC_USER_GROUPS */
6381                 {errno = EINVAL; return -1;}
6382 #endif /* ndef _SC_USER_GROUPS */
6383         if (x == Mono_Posix_SysconfName__SC_USER_GROUPS_R)
6384 #ifdef _SC_USER_GROUPS_R
6385                 {*r = _SC_USER_GROUPS_R; return 0;}
6386 #else /* def _SC_USER_GROUPS_R */
6387                 {errno = EINVAL; return -1;}
6388 #endif /* ndef _SC_USER_GROUPS_R */
6389         if (x == Mono_Posix_SysconfName__SC_USHRT_MAX)
6390 #ifdef _SC_USHRT_MAX
6391                 {*r = _SC_USHRT_MAX; return 0;}
6392 #else /* def _SC_USHRT_MAX */
6393                 {errno = EINVAL; return -1;}
6394 #endif /* ndef _SC_USHRT_MAX */
6395         if (x == Mono_Posix_SysconfName__SC_V6_ILP32_OFF32)
6396 #ifdef _SC_V6_ILP32_OFF32
6397                 {*r = _SC_V6_ILP32_OFF32; return 0;}
6398 #else /* def _SC_V6_ILP32_OFF32 */
6399                 {errno = EINVAL; return -1;}
6400 #endif /* ndef _SC_V6_ILP32_OFF32 */
6401         if (x == Mono_Posix_SysconfName__SC_V6_ILP32_OFFBIG)
6402 #ifdef _SC_V6_ILP32_OFFBIG
6403                 {*r = _SC_V6_ILP32_OFFBIG; return 0;}
6404 #else /* def _SC_V6_ILP32_OFFBIG */
6405                 {errno = EINVAL; return -1;}
6406 #endif /* ndef _SC_V6_ILP32_OFFBIG */
6407         if (x == Mono_Posix_SysconfName__SC_V6_LP64_OFF64)
6408 #ifdef _SC_V6_LP64_OFF64
6409                 {*r = _SC_V6_LP64_OFF64; return 0;}
6410 #else /* def _SC_V6_LP64_OFF64 */
6411                 {errno = EINVAL; return -1;}
6412 #endif /* ndef _SC_V6_LP64_OFF64 */
6413         if (x == Mono_Posix_SysconfName__SC_V6_LPBIG_OFFBIG)
6414 #ifdef _SC_V6_LPBIG_OFFBIG
6415                 {*r = _SC_V6_LPBIG_OFFBIG; return 0;}
6416 #else /* def _SC_V6_LPBIG_OFFBIG */
6417                 {errno = EINVAL; return -1;}
6418 #endif /* ndef _SC_V6_LPBIG_OFFBIG */
6419         if (x == Mono_Posix_SysconfName__SC_VERSION)
6420 #ifdef _SC_VERSION
6421                 {*r = _SC_VERSION; return 0;}
6422 #else /* def _SC_VERSION */
6423                 {errno = EINVAL; return -1;}
6424 #endif /* ndef _SC_VERSION */
6425         if (x == Mono_Posix_SysconfName__SC_WORD_BIT)
6426 #ifdef _SC_WORD_BIT
6427                 {*r = _SC_WORD_BIT; return 0;}
6428 #else /* def _SC_WORD_BIT */
6429                 {errno = EINVAL; return -1;}
6430 #endif /* ndef _SC_WORD_BIT */
6431         if (x == Mono_Posix_SysconfName__SC_XBS5_ILP32_OFF32)
6432 #ifdef _SC_XBS5_ILP32_OFF32
6433                 {*r = _SC_XBS5_ILP32_OFF32; return 0;}
6434 #else /* def _SC_XBS5_ILP32_OFF32 */
6435                 {errno = EINVAL; return -1;}
6436 #endif /* ndef _SC_XBS5_ILP32_OFF32 */
6437         if (x == Mono_Posix_SysconfName__SC_XBS5_ILP32_OFFBIG)
6438 #ifdef _SC_XBS5_ILP32_OFFBIG
6439                 {*r = _SC_XBS5_ILP32_OFFBIG; return 0;}
6440 #else /* def _SC_XBS5_ILP32_OFFBIG */
6441                 {errno = EINVAL; return -1;}
6442 #endif /* ndef _SC_XBS5_ILP32_OFFBIG */
6443         if (x == Mono_Posix_SysconfName__SC_XBS5_LP64_OFF64)
6444 #ifdef _SC_XBS5_LP64_OFF64
6445                 {*r = _SC_XBS5_LP64_OFF64; return 0;}
6446 #else /* def _SC_XBS5_LP64_OFF64 */
6447                 {errno = EINVAL; return -1;}
6448 #endif /* ndef _SC_XBS5_LP64_OFF64 */
6449         if (x == Mono_Posix_SysconfName__SC_XBS5_LPBIG_OFFBIG)
6450 #ifdef _SC_XBS5_LPBIG_OFFBIG
6451                 {*r = _SC_XBS5_LPBIG_OFFBIG; return 0;}
6452 #else /* def _SC_XBS5_LPBIG_OFFBIG */
6453                 {errno = EINVAL; return -1;}
6454 #endif /* ndef _SC_XBS5_LPBIG_OFFBIG */
6455         if (x == Mono_Posix_SysconfName__SC_XOPEN_CRYPT)
6456 #ifdef _SC_XOPEN_CRYPT
6457                 {*r = _SC_XOPEN_CRYPT; return 0;}
6458 #else /* def _SC_XOPEN_CRYPT */
6459                 {errno = EINVAL; return -1;}
6460 #endif /* ndef _SC_XOPEN_CRYPT */
6461         if (x == Mono_Posix_SysconfName__SC_XOPEN_ENH_I18N)
6462 #ifdef _SC_XOPEN_ENH_I18N
6463                 {*r = _SC_XOPEN_ENH_I18N; return 0;}
6464 #else /* def _SC_XOPEN_ENH_I18N */
6465                 {errno = EINVAL; return -1;}
6466 #endif /* ndef _SC_XOPEN_ENH_I18N */
6467         if (x == Mono_Posix_SysconfName__SC_XOPEN_LEGACY)
6468 #ifdef _SC_XOPEN_LEGACY
6469                 {*r = _SC_XOPEN_LEGACY; return 0;}
6470 #else /* def _SC_XOPEN_LEGACY */
6471                 {errno = EINVAL; return -1;}
6472 #endif /* ndef _SC_XOPEN_LEGACY */
6473         if (x == Mono_Posix_SysconfName__SC_XOPEN_REALTIME)
6474 #ifdef _SC_XOPEN_REALTIME
6475                 {*r = _SC_XOPEN_REALTIME; return 0;}
6476 #else /* def _SC_XOPEN_REALTIME */
6477                 {errno = EINVAL; return -1;}
6478 #endif /* ndef _SC_XOPEN_REALTIME */
6479         if (x == Mono_Posix_SysconfName__SC_XOPEN_REALTIME_THREADS)
6480 #ifdef _SC_XOPEN_REALTIME_THREADS
6481                 {*r = _SC_XOPEN_REALTIME_THREADS; return 0;}
6482 #else /* def _SC_XOPEN_REALTIME_THREADS */
6483                 {errno = EINVAL; return -1;}
6484 #endif /* ndef _SC_XOPEN_REALTIME_THREADS */
6485         if (x == Mono_Posix_SysconfName__SC_XOPEN_SHM)
6486 #ifdef _SC_XOPEN_SHM
6487                 {*r = _SC_XOPEN_SHM; return 0;}
6488 #else /* def _SC_XOPEN_SHM */
6489                 {errno = EINVAL; return -1;}
6490 #endif /* ndef _SC_XOPEN_SHM */
6491         if (x == Mono_Posix_SysconfName__SC_XOPEN_UNIX)
6492 #ifdef _SC_XOPEN_UNIX
6493                 {*r = _SC_XOPEN_UNIX; return 0;}
6494 #else /* def _SC_XOPEN_UNIX */
6495                 {errno = EINVAL; return -1;}
6496 #endif /* ndef _SC_XOPEN_UNIX */
6497         if (x == Mono_Posix_SysconfName__SC_XOPEN_VERSION)
6498 #ifdef _SC_XOPEN_VERSION
6499                 {*r = _SC_XOPEN_VERSION; return 0;}
6500 #else /* def _SC_XOPEN_VERSION */
6501                 {errno = EINVAL; return -1;}
6502 #endif /* ndef _SC_XOPEN_VERSION */
6503         if (x == Mono_Posix_SysconfName__SC_XOPEN_XCU_VERSION)
6504 #ifdef _SC_XOPEN_XCU_VERSION
6505                 {*r = _SC_XOPEN_XCU_VERSION; return 0;}
6506 #else /* def _SC_XOPEN_XCU_VERSION */
6507                 {errno = EINVAL; return -1;}
6508 #endif /* ndef _SC_XOPEN_XCU_VERSION */
6509         if (x == Mono_Posix_SysconfName__SC_XOPEN_XPG2)
6510 #ifdef _SC_XOPEN_XPG2
6511                 {*r = _SC_XOPEN_XPG2; return 0;}
6512 #else /* def _SC_XOPEN_XPG2 */
6513                 {errno = EINVAL; return -1;}
6514 #endif /* ndef _SC_XOPEN_XPG2 */
6515         if (x == Mono_Posix_SysconfName__SC_XOPEN_XPG3)
6516 #ifdef _SC_XOPEN_XPG3
6517                 {*r = _SC_XOPEN_XPG3; return 0;}
6518 #else /* def _SC_XOPEN_XPG3 */
6519                 {errno = EINVAL; return -1;}
6520 #endif /* ndef _SC_XOPEN_XPG3 */
6521         if (x == Mono_Posix_SysconfName__SC_XOPEN_XPG4)
6522 #ifdef _SC_XOPEN_XPG4
6523                 {*r = _SC_XOPEN_XPG4; return 0;}
6524 #else /* def _SC_XOPEN_XPG4 */
6525                 {errno = EINVAL; return -1;}
6526 #endif /* ndef _SC_XOPEN_XPG4 */
6527         if (x == 0)
6528                 return 0;
6529         errno = EINVAL; return -1;
6530 }
6531
6532 int Mono_Posix_ToSysconfName (int x, int *r)
6533 {
6534         *r = 0;
6535         if (x == 0)
6536                 return 0;
6537 #ifdef _SC_2_CHAR_TERM
6538         if (x == _SC_2_CHAR_TERM)
6539                 {*r = Mono_Posix_SysconfName__SC_2_CHAR_TERM; return 0;}
6540 #endif /* ndef _SC_2_CHAR_TERM */
6541 #ifdef _SC_2_C_BIND
6542         if (x == _SC_2_C_BIND)
6543                 {*r = Mono_Posix_SysconfName__SC_2_C_BIND; return 0;}
6544 #endif /* ndef _SC_2_C_BIND */
6545 #ifdef _SC_2_C_DEV
6546         if (x == _SC_2_C_DEV)
6547                 {*r = Mono_Posix_SysconfName__SC_2_C_DEV; return 0;}
6548 #endif /* ndef _SC_2_C_DEV */
6549 #ifdef _SC_2_C_VERSION
6550         if (x == _SC_2_C_VERSION)
6551                 {*r = Mono_Posix_SysconfName__SC_2_C_VERSION; return 0;}
6552 #endif /* ndef _SC_2_C_VERSION */
6553 #ifdef _SC_2_FORT_DEV
6554         if (x == _SC_2_FORT_DEV)
6555                 {*r = Mono_Posix_SysconfName__SC_2_FORT_DEV; return 0;}
6556 #endif /* ndef _SC_2_FORT_DEV */
6557 #ifdef _SC_2_FORT_RUN
6558         if (x == _SC_2_FORT_RUN)
6559                 {*r = Mono_Posix_SysconfName__SC_2_FORT_RUN; return 0;}
6560 #endif /* ndef _SC_2_FORT_RUN */
6561 #ifdef _SC_2_LOCALEDEF
6562         if (x == _SC_2_LOCALEDEF)
6563                 {*r = Mono_Posix_SysconfName__SC_2_LOCALEDEF; return 0;}
6564 #endif /* ndef _SC_2_LOCALEDEF */
6565 #ifdef _SC_2_PBS
6566         if (x == _SC_2_PBS)
6567                 {*r = Mono_Posix_SysconfName__SC_2_PBS; return 0;}
6568 #endif /* ndef _SC_2_PBS */
6569 #ifdef _SC_2_PBS_ACCOUNTING
6570         if (x == _SC_2_PBS_ACCOUNTING)
6571                 {*r = Mono_Posix_SysconfName__SC_2_PBS_ACCOUNTING; return 0;}
6572 #endif /* ndef _SC_2_PBS_ACCOUNTING */
6573 #ifdef _SC_2_PBS_CHECKPOINT
6574         if (x == _SC_2_PBS_CHECKPOINT)
6575                 {*r = Mono_Posix_SysconfName__SC_2_PBS_CHECKPOINT; return 0;}
6576 #endif /* ndef _SC_2_PBS_CHECKPOINT */
6577 #ifdef _SC_2_PBS_LOCATE
6578         if (x == _SC_2_PBS_LOCATE)
6579                 {*r = Mono_Posix_SysconfName__SC_2_PBS_LOCATE; return 0;}
6580 #endif /* ndef _SC_2_PBS_LOCATE */
6581 #ifdef _SC_2_PBS_MESSAGE
6582         if (x == _SC_2_PBS_MESSAGE)
6583                 {*r = Mono_Posix_SysconfName__SC_2_PBS_MESSAGE; return 0;}
6584 #endif /* ndef _SC_2_PBS_MESSAGE */
6585 #ifdef _SC_2_PBS_TRACK
6586         if (x == _SC_2_PBS_TRACK)
6587                 {*r = Mono_Posix_SysconfName__SC_2_PBS_TRACK; return 0;}
6588 #endif /* ndef _SC_2_PBS_TRACK */
6589 #ifdef _SC_2_SW_DEV
6590         if (x == _SC_2_SW_DEV)
6591                 {*r = Mono_Posix_SysconfName__SC_2_SW_DEV; return 0;}
6592 #endif /* ndef _SC_2_SW_DEV */
6593 #ifdef _SC_2_UPE
6594         if (x == _SC_2_UPE)
6595                 {*r = Mono_Posix_SysconfName__SC_2_UPE; return 0;}
6596 #endif /* ndef _SC_2_UPE */
6597 #ifdef _SC_2_VERSION
6598         if (x == _SC_2_VERSION)
6599                 {*r = Mono_Posix_SysconfName__SC_2_VERSION; return 0;}
6600 #endif /* ndef _SC_2_VERSION */
6601 #ifdef _SC_ADVISORY_INFO
6602         if (x == _SC_ADVISORY_INFO)
6603                 {*r = Mono_Posix_SysconfName__SC_ADVISORY_INFO; return 0;}
6604 #endif /* ndef _SC_ADVISORY_INFO */
6605 #ifdef _SC_AIO_LISTIO_MAX
6606         if (x == _SC_AIO_LISTIO_MAX)
6607                 {*r = Mono_Posix_SysconfName__SC_AIO_LISTIO_MAX; return 0;}
6608 #endif /* ndef _SC_AIO_LISTIO_MAX */
6609 #ifdef _SC_AIO_MAX
6610         if (x == _SC_AIO_MAX)
6611                 {*r = Mono_Posix_SysconfName__SC_AIO_MAX; return 0;}
6612 #endif /* ndef _SC_AIO_MAX */
6613 #ifdef _SC_AIO_PRIO_DELTA_MAX
6614         if (x == _SC_AIO_PRIO_DELTA_MAX)
6615                 {*r = Mono_Posix_SysconfName__SC_AIO_PRIO_DELTA_MAX; return 0;}
6616 #endif /* ndef _SC_AIO_PRIO_DELTA_MAX */
6617 #ifdef _SC_ARG_MAX
6618         if (x == _SC_ARG_MAX)
6619                 {*r = Mono_Posix_SysconfName__SC_ARG_MAX; return 0;}
6620 #endif /* ndef _SC_ARG_MAX */
6621 #ifdef _SC_ASYNCHRONOUS_IO
6622         if (x == _SC_ASYNCHRONOUS_IO)
6623                 {*r = Mono_Posix_SysconfName__SC_ASYNCHRONOUS_IO; return 0;}
6624 #endif /* ndef _SC_ASYNCHRONOUS_IO */
6625 #ifdef _SC_ATEXIT_MAX
6626         if (x == _SC_ATEXIT_MAX)
6627                 {*r = Mono_Posix_SysconfName__SC_ATEXIT_MAX; return 0;}
6628 #endif /* ndef _SC_ATEXIT_MAX */
6629 #ifdef _SC_AVPHYS_PAGES
6630         if (x == _SC_AVPHYS_PAGES)
6631                 {*r = Mono_Posix_SysconfName__SC_AVPHYS_PAGES; return 0;}
6632 #endif /* ndef _SC_AVPHYS_PAGES */
6633 #ifdef _SC_BARRIERS
6634         if (x == _SC_BARRIERS)
6635                 {*r = Mono_Posix_SysconfName__SC_BARRIERS; return 0;}
6636 #endif /* ndef _SC_BARRIERS */
6637 #ifdef _SC_BASE
6638         if (x == _SC_BASE)
6639                 {*r = Mono_Posix_SysconfName__SC_BASE; return 0;}
6640 #endif /* ndef _SC_BASE */
6641 #ifdef _SC_BC_BASE_MAX
6642         if (x == _SC_BC_BASE_MAX)
6643                 {*r = Mono_Posix_SysconfName__SC_BC_BASE_MAX; return 0;}
6644 #endif /* ndef _SC_BC_BASE_MAX */
6645 #ifdef _SC_BC_DIM_MAX
6646         if (x == _SC_BC_DIM_MAX)
6647                 {*r = Mono_Posix_SysconfName__SC_BC_DIM_MAX; return 0;}
6648 #endif /* ndef _SC_BC_DIM_MAX */
6649 #ifdef _SC_BC_SCALE_MAX
6650         if (x == _SC_BC_SCALE_MAX)
6651                 {*r = Mono_Posix_SysconfName__SC_BC_SCALE_MAX; return 0;}
6652 #endif /* ndef _SC_BC_SCALE_MAX */
6653 #ifdef _SC_BC_STRING_MAX
6654         if (x == _SC_BC_STRING_MAX)
6655                 {*r = Mono_Posix_SysconfName__SC_BC_STRING_MAX; return 0;}
6656 #endif /* ndef _SC_BC_STRING_MAX */
6657 #ifdef _SC_CHARCLASS_NAME_MAX
6658         if (x == _SC_CHARCLASS_NAME_MAX)
6659                 {*r = Mono_Posix_SysconfName__SC_CHARCLASS_NAME_MAX; return 0;}
6660 #endif /* ndef _SC_CHARCLASS_NAME_MAX */
6661 #ifdef _SC_CHAR_BIT
6662         if (x == _SC_CHAR_BIT)
6663                 {*r = Mono_Posix_SysconfName__SC_CHAR_BIT; return 0;}
6664 #endif /* ndef _SC_CHAR_BIT */
6665 #ifdef _SC_CHAR_MAX
6666         if (x == _SC_CHAR_MAX)
6667                 {*r = Mono_Posix_SysconfName__SC_CHAR_MAX; return 0;}
6668 #endif /* ndef _SC_CHAR_MAX */
6669 #ifdef _SC_CHAR_MIN
6670         if (x == _SC_CHAR_MIN)
6671                 {*r = Mono_Posix_SysconfName__SC_CHAR_MIN; return 0;}
6672 #endif /* ndef _SC_CHAR_MIN */
6673 #ifdef _SC_CHILD_MAX
6674         if (x == _SC_CHILD_MAX)
6675                 {*r = Mono_Posix_SysconfName__SC_CHILD_MAX; return 0;}
6676 #endif /* ndef _SC_CHILD_MAX */
6677 #ifdef _SC_CLK_TCK
6678         if (x == _SC_CLK_TCK)
6679                 {*r = Mono_Posix_SysconfName__SC_CLK_TCK; return 0;}
6680 #endif /* ndef _SC_CLK_TCK */
6681 #ifdef _SC_CLOCK_SELECTION
6682         if (x == _SC_CLOCK_SELECTION)
6683                 {*r = Mono_Posix_SysconfName__SC_CLOCK_SELECTION; return 0;}
6684 #endif /* ndef _SC_CLOCK_SELECTION */
6685 #ifdef _SC_COLL_WEIGHTS_MAX
6686         if (x == _SC_COLL_WEIGHTS_MAX)
6687                 {*r = Mono_Posix_SysconfName__SC_COLL_WEIGHTS_MAX; return 0;}
6688 #endif /* ndef _SC_COLL_WEIGHTS_MAX */
6689 #ifdef _SC_CPUTIME
6690         if (x == _SC_CPUTIME)
6691                 {*r = Mono_Posix_SysconfName__SC_CPUTIME; return 0;}
6692 #endif /* ndef _SC_CPUTIME */
6693 #ifdef _SC_C_LANG_SUPPORT
6694         if (x == _SC_C_LANG_SUPPORT)
6695                 {*r = Mono_Posix_SysconfName__SC_C_LANG_SUPPORT; return 0;}
6696 #endif /* ndef _SC_C_LANG_SUPPORT */
6697 #ifdef _SC_C_LANG_SUPPORT_R
6698         if (x == _SC_C_LANG_SUPPORT_R)
6699                 {*r = Mono_Posix_SysconfName__SC_C_LANG_SUPPORT_R; return 0;}
6700 #endif /* ndef _SC_C_LANG_SUPPORT_R */
6701 #ifdef _SC_DELAYTIMER_MAX
6702         if (x == _SC_DELAYTIMER_MAX)
6703                 {*r = Mono_Posix_SysconfName__SC_DELAYTIMER_MAX; return 0;}
6704 #endif /* ndef _SC_DELAYTIMER_MAX */
6705 #ifdef _SC_DEVICE_IO
6706         if (x == _SC_DEVICE_IO)
6707                 {*r = Mono_Posix_SysconfName__SC_DEVICE_IO; return 0;}
6708 #endif /* ndef _SC_DEVICE_IO */
6709 #ifdef _SC_DEVICE_SPECIFIC
6710         if (x == _SC_DEVICE_SPECIFIC)
6711                 {*r = Mono_Posix_SysconfName__SC_DEVICE_SPECIFIC; return 0;}
6712 #endif /* ndef _SC_DEVICE_SPECIFIC */
6713 #ifdef _SC_DEVICE_SPECIFIC_R
6714         if (x == _SC_DEVICE_SPECIFIC_R)
6715                 {*r = Mono_Posix_SysconfName__SC_DEVICE_SPECIFIC_R; return 0;}
6716 #endif /* ndef _SC_DEVICE_SPECIFIC_R */
6717 #ifdef _SC_EQUIV_CLASS_MAX
6718         if (x == _SC_EQUIV_CLASS_MAX)
6719                 {*r = Mono_Posix_SysconfName__SC_EQUIV_CLASS_MAX; return 0;}
6720 #endif /* ndef _SC_EQUIV_CLASS_MAX */
6721 #ifdef _SC_EXPR_NEST_MAX
6722         if (x == _SC_EXPR_NEST_MAX)
6723                 {*r = Mono_Posix_SysconfName__SC_EXPR_NEST_MAX; return 0;}
6724 #endif /* ndef _SC_EXPR_NEST_MAX */
6725 #ifdef _SC_FD_MGMT
6726         if (x == _SC_FD_MGMT)
6727                 {*r = Mono_Posix_SysconfName__SC_FD_MGMT; return 0;}
6728 #endif /* ndef _SC_FD_MGMT */
6729 #ifdef _SC_FIFO
6730         if (x == _SC_FIFO)
6731                 {*r = Mono_Posix_SysconfName__SC_FIFO; return 0;}
6732 #endif /* ndef _SC_FIFO */
6733 #ifdef _SC_FILE_ATTRIBUTES
6734         if (x == _SC_FILE_ATTRIBUTES)
6735                 {*r = Mono_Posix_SysconfName__SC_FILE_ATTRIBUTES; return 0;}
6736 #endif /* ndef _SC_FILE_ATTRIBUTES */
6737 #ifdef _SC_FILE_LOCKING
6738         if (x == _SC_FILE_LOCKING)
6739                 {*r = Mono_Posix_SysconfName__SC_FILE_LOCKING; return 0;}
6740 #endif /* ndef _SC_FILE_LOCKING */
6741 #ifdef _SC_FILE_SYSTEM
6742         if (x == _SC_FILE_SYSTEM)
6743                 {*r = Mono_Posix_SysconfName__SC_FILE_SYSTEM; return 0;}
6744 #endif /* ndef _SC_FILE_SYSTEM */
6745 #ifdef _SC_FSYNC
6746         if (x == _SC_FSYNC)
6747                 {*r = Mono_Posix_SysconfName__SC_FSYNC; return 0;}
6748 #endif /* ndef _SC_FSYNC */
6749 #ifdef _SC_GETGR_R_SIZE_MAX
6750         if (x == _SC_GETGR_R_SIZE_MAX)
6751                 {*r = Mono_Posix_SysconfName__SC_GETGR_R_SIZE_MAX; return 0;}
6752 #endif /* ndef _SC_GETGR_R_SIZE_MAX */
6753 #ifdef _SC_GETPW_R_SIZE_MAX
6754         if (x == _SC_GETPW_R_SIZE_MAX)
6755                 {*r = Mono_Posix_SysconfName__SC_GETPW_R_SIZE_MAX; return 0;}
6756 #endif /* ndef _SC_GETPW_R_SIZE_MAX */
6757 #ifdef _SC_HOST_NAME_MAX
6758         if (x == _SC_HOST_NAME_MAX)
6759                 {*r = Mono_Posix_SysconfName__SC_HOST_NAME_MAX; return 0;}
6760 #endif /* ndef _SC_HOST_NAME_MAX */
6761 #ifdef _SC_INT_MAX
6762         if (x == _SC_INT_MAX)
6763                 {*r = Mono_Posix_SysconfName__SC_INT_MAX; return 0;}
6764 #endif /* ndef _SC_INT_MAX */
6765 #ifdef _SC_INT_MIN
6766         if (x == _SC_INT_MIN)
6767                 {*r = Mono_Posix_SysconfName__SC_INT_MIN; return 0;}
6768 #endif /* ndef _SC_INT_MIN */
6769 #ifdef _SC_IOV_MAX
6770         if (x == _SC_IOV_MAX)
6771                 {*r = Mono_Posix_SysconfName__SC_IOV_MAX; return 0;}
6772 #endif /* ndef _SC_IOV_MAX */
6773 #ifdef _SC_JOB_CONTROL
6774         if (x == _SC_JOB_CONTROL)
6775                 {*r = Mono_Posix_SysconfName__SC_JOB_CONTROL; return 0;}
6776 #endif /* ndef _SC_JOB_CONTROL */
6777 #ifdef _SC_LEVEL1_DCACHE_ASSOC
6778         if (x == _SC_LEVEL1_DCACHE_ASSOC)
6779                 {*r = Mono_Posix_SysconfName__SC_LEVEL1_DCACHE_ASSOC; return 0;}
6780 #endif /* ndef _SC_LEVEL1_DCACHE_ASSOC */
6781 #ifdef _SC_LEVEL1_DCACHE_LINESIZE
6782         if (x == _SC_LEVEL1_DCACHE_LINESIZE)
6783                 {*r = Mono_Posix_SysconfName__SC_LEVEL1_DCACHE_LINESIZE; return 0;}
6784 #endif /* ndef _SC_LEVEL1_DCACHE_LINESIZE */
6785 #ifdef _SC_LEVEL1_DCACHE_SIZE
6786         if (x == _SC_LEVEL1_DCACHE_SIZE)
6787                 {*r = Mono_Posix_SysconfName__SC_LEVEL1_DCACHE_SIZE; return 0;}
6788 #endif /* ndef _SC_LEVEL1_DCACHE_SIZE */
6789 #ifdef _SC_LEVEL1_ICACHE_ASSOC
6790         if (x == _SC_LEVEL1_ICACHE_ASSOC)
6791                 {*r = Mono_Posix_SysconfName__SC_LEVEL1_ICACHE_ASSOC; return 0;}
6792 #endif /* ndef _SC_LEVEL1_ICACHE_ASSOC */
6793 #ifdef _SC_LEVEL1_ICACHE_LINESIZE
6794         if (x == _SC_LEVEL1_ICACHE_LINESIZE)
6795                 {*r = Mono_Posix_SysconfName__SC_LEVEL1_ICACHE_LINESIZE; return 0;}
6796 #endif /* ndef _SC_LEVEL1_ICACHE_LINESIZE */
6797 #ifdef _SC_LEVEL1_ICACHE_SIZE
6798         if (x == _SC_LEVEL1_ICACHE_SIZE)
6799                 {*r = Mono_Posix_SysconfName__SC_LEVEL1_ICACHE_SIZE; return 0;}
6800 #endif /* ndef _SC_LEVEL1_ICACHE_SIZE */
6801 #ifdef _SC_LEVEL2_CACHE_ASSOC
6802         if (x == _SC_LEVEL2_CACHE_ASSOC)
6803                 {*r = Mono_Posix_SysconfName__SC_LEVEL2_CACHE_ASSOC; return 0;}
6804 #endif /* ndef _SC_LEVEL2_CACHE_ASSOC */
6805 #ifdef _SC_LEVEL2_CACHE_LINESIZE
6806         if (x == _SC_LEVEL2_CACHE_LINESIZE)
6807                 {*r = Mono_Posix_SysconfName__SC_LEVEL2_CACHE_LINESIZE; return 0;}
6808 #endif /* ndef _SC_LEVEL2_CACHE_LINESIZE */
6809 #ifdef _SC_LEVEL2_CACHE_SIZE
6810         if (x == _SC_LEVEL2_CACHE_SIZE)
6811                 {*r = Mono_Posix_SysconfName__SC_LEVEL2_CACHE_SIZE; return 0;}
6812 #endif /* ndef _SC_LEVEL2_CACHE_SIZE */
6813 #ifdef _SC_LEVEL3_CACHE_ASSOC
6814         if (x == _SC_LEVEL3_CACHE_ASSOC)
6815                 {*r = Mono_Posix_SysconfName__SC_LEVEL3_CACHE_ASSOC; return 0;}
6816 #endif /* ndef _SC_LEVEL3_CACHE_ASSOC */
6817 #ifdef _SC_LEVEL3_CACHE_LINESIZE
6818         if (x == _SC_LEVEL3_CACHE_LINESIZE)
6819                 {*r = Mono_Posix_SysconfName__SC_LEVEL3_CACHE_LINESIZE; return 0;}
6820 #endif /* ndef _SC_LEVEL3_CACHE_LINESIZE */
6821 #ifdef _SC_LEVEL3_CACHE_SIZE
6822         if (x == _SC_LEVEL3_CACHE_SIZE)
6823                 {*r = Mono_Posix_SysconfName__SC_LEVEL3_CACHE_SIZE; return 0;}
6824 #endif /* ndef _SC_LEVEL3_CACHE_SIZE */
6825 #ifdef _SC_LEVEL4_CACHE_ASSOC
6826         if (x == _SC_LEVEL4_CACHE_ASSOC)
6827                 {*r = Mono_Posix_SysconfName__SC_LEVEL4_CACHE_ASSOC; return 0;}
6828 #endif /* ndef _SC_LEVEL4_CACHE_ASSOC */
6829 #ifdef _SC_LEVEL4_CACHE_LINESIZE
6830         if (x == _SC_LEVEL4_CACHE_LINESIZE)
6831                 {*r = Mono_Posix_SysconfName__SC_LEVEL4_CACHE_LINESIZE; return 0;}
6832 #endif /* ndef _SC_LEVEL4_CACHE_LINESIZE */
6833 #ifdef _SC_LEVEL4_CACHE_SIZE
6834         if (x == _SC_LEVEL4_CACHE_SIZE)
6835                 {*r = Mono_Posix_SysconfName__SC_LEVEL4_CACHE_SIZE; return 0;}
6836 #endif /* ndef _SC_LEVEL4_CACHE_SIZE */
6837 #ifdef _SC_LINE_MAX
6838         if (x == _SC_LINE_MAX)
6839                 {*r = Mono_Posix_SysconfName__SC_LINE_MAX; return 0;}
6840 #endif /* ndef _SC_LINE_MAX */
6841 #ifdef _SC_LOGIN_NAME_MAX
6842         if (x == _SC_LOGIN_NAME_MAX)
6843                 {*r = Mono_Posix_SysconfName__SC_LOGIN_NAME_MAX; return 0;}
6844 #endif /* ndef _SC_LOGIN_NAME_MAX */
6845 #ifdef _SC_LONG_BIT
6846         if (x == _SC_LONG_BIT)
6847                 {*r = Mono_Posix_SysconfName__SC_LONG_BIT; return 0;}
6848 #endif /* ndef _SC_LONG_BIT */
6849 #ifdef _SC_MAPPED_FILES
6850         if (x == _SC_MAPPED_FILES)
6851                 {*r = Mono_Posix_SysconfName__SC_MAPPED_FILES; return 0;}
6852 #endif /* ndef _SC_MAPPED_FILES */
6853 #ifdef _SC_MB_LEN_MAX
6854         if (x == _SC_MB_LEN_MAX)
6855                 {*r = Mono_Posix_SysconfName__SC_MB_LEN_MAX; return 0;}
6856 #endif /* ndef _SC_MB_LEN_MAX */
6857 #ifdef _SC_MEMLOCK
6858         if (x == _SC_MEMLOCK)
6859                 {*r = Mono_Posix_SysconfName__SC_MEMLOCK; return 0;}
6860 #endif /* ndef _SC_MEMLOCK */
6861 #ifdef _SC_MEMLOCK_RANGE
6862         if (x == _SC_MEMLOCK_RANGE)
6863                 {*r = Mono_Posix_SysconfName__SC_MEMLOCK_RANGE; return 0;}
6864 #endif /* ndef _SC_MEMLOCK_RANGE */
6865 #ifdef _SC_MEMORY_PROTECTION
6866         if (x == _SC_MEMORY_PROTECTION)
6867                 {*r = Mono_Posix_SysconfName__SC_MEMORY_PROTECTION; return 0;}
6868 #endif /* ndef _SC_MEMORY_PROTECTION */
6869 #ifdef _SC_MESSAGE_PASSING
6870         if (x == _SC_MESSAGE_PASSING)
6871                 {*r = Mono_Posix_SysconfName__SC_MESSAGE_PASSING; return 0;}
6872 #endif /* ndef _SC_MESSAGE_PASSING */
6873 #ifdef _SC_MONOTONIC_CLOCK
6874         if (x == _SC_MONOTONIC_CLOCK)
6875                 {*r = Mono_Posix_SysconfName__SC_MONOTONIC_CLOCK; return 0;}
6876 #endif /* ndef _SC_MONOTONIC_CLOCK */
6877 #ifdef _SC_MQ_OPEN_MAX
6878         if (x == _SC_MQ_OPEN_MAX)
6879                 {*r = Mono_Posix_SysconfName__SC_MQ_OPEN_MAX; return 0;}
6880 #endif /* ndef _SC_MQ_OPEN_MAX */
6881 #ifdef _SC_MQ_PRIO_MAX
6882         if (x == _SC_MQ_PRIO_MAX)
6883                 {*r = Mono_Posix_SysconfName__SC_MQ_PRIO_MAX; return 0;}
6884 #endif /* ndef _SC_MQ_PRIO_MAX */
6885 #ifdef _SC_MULTI_PROCESS
6886         if (x == _SC_MULTI_PROCESS)
6887                 {*r = Mono_Posix_SysconfName__SC_MULTI_PROCESS; return 0;}
6888 #endif /* ndef _SC_MULTI_PROCESS */
6889 #ifdef _SC_NETWORKING
6890         if (x == _SC_NETWORKING)
6891                 {*r = Mono_Posix_SysconfName__SC_NETWORKING; return 0;}
6892 #endif /* ndef _SC_NETWORKING */
6893 #ifdef _SC_NGROUPS_MAX
6894         if (x == _SC_NGROUPS_MAX)
6895                 {*r = Mono_Posix_SysconfName__SC_NGROUPS_MAX; return 0;}
6896 #endif /* ndef _SC_NGROUPS_MAX */
6897 #ifdef _SC_NL_ARGMAX
6898         if (x == _SC_NL_ARGMAX)
6899                 {*r = Mono_Posix_SysconfName__SC_NL_ARGMAX; return 0;}
6900 #endif /* ndef _SC_NL_ARGMAX */
6901 #ifdef _SC_NL_LANGMAX
6902         if (x == _SC_NL_LANGMAX)
6903                 {*r = Mono_Posix_SysconfName__SC_NL_LANGMAX; return 0;}
6904 #endif /* ndef _SC_NL_LANGMAX */
6905 #ifdef _SC_NL_MSGMAX
6906         if (x == _SC_NL_MSGMAX)
6907                 {*r = Mono_Posix_SysconfName__SC_NL_MSGMAX; return 0;}
6908 #endif /* ndef _SC_NL_MSGMAX */
6909 #ifdef _SC_NL_NMAX
6910         if (x == _SC_NL_NMAX)
6911                 {*r = Mono_Posix_SysconfName__SC_NL_NMAX; return 0;}
6912 #endif /* ndef _SC_NL_NMAX */
6913 #ifdef _SC_NL_SETMAX
6914         if (x == _SC_NL_SETMAX)
6915                 {*r = Mono_Posix_SysconfName__SC_NL_SETMAX; return 0;}
6916 #endif /* ndef _SC_NL_SETMAX */
6917 #ifdef _SC_NL_TEXTMAX
6918         if (x == _SC_NL_TEXTMAX)
6919                 {*r = Mono_Posix_SysconfName__SC_NL_TEXTMAX; return 0;}
6920 #endif /* ndef _SC_NL_TEXTMAX */
6921 #ifdef _SC_NPROCESSORS_CONF
6922         if (x == _SC_NPROCESSORS_CONF)
6923                 {*r = Mono_Posix_SysconfName__SC_NPROCESSORS_CONF; return 0;}
6924 #endif /* ndef _SC_NPROCESSORS_CONF */
6925 #ifdef _SC_NPROCESSORS_ONLN
6926         if (x == _SC_NPROCESSORS_ONLN)
6927                 {*r = Mono_Posix_SysconfName__SC_NPROCESSORS_ONLN; return 0;}
6928 #endif /* ndef _SC_NPROCESSORS_ONLN */
6929 #ifdef _SC_NZERO
6930         if (x == _SC_NZERO)
6931                 {*r = Mono_Posix_SysconfName__SC_NZERO; return 0;}
6932 #endif /* ndef _SC_NZERO */
6933 #ifdef _SC_OPEN_MAX
6934         if (x == _SC_OPEN_MAX)
6935                 {*r = Mono_Posix_SysconfName__SC_OPEN_MAX; return 0;}
6936 #endif /* ndef _SC_OPEN_MAX */
6937 #ifdef _SC_PAGESIZE
6938         if (x == _SC_PAGESIZE)
6939                 {*r = Mono_Posix_SysconfName__SC_PAGESIZE; return 0;}
6940 #endif /* ndef _SC_PAGESIZE */
6941 #ifdef _SC_PASS_MAX
6942         if (x == _SC_PASS_MAX)
6943                 {*r = Mono_Posix_SysconfName__SC_PASS_MAX; return 0;}
6944 #endif /* ndef _SC_PASS_MAX */
6945 #ifdef _SC_PHYS_PAGES
6946         if (x == _SC_PHYS_PAGES)
6947                 {*r = Mono_Posix_SysconfName__SC_PHYS_PAGES; return 0;}
6948 #endif /* ndef _SC_PHYS_PAGES */
6949 #ifdef _SC_PII
6950         if (x == _SC_PII)
6951                 {*r = Mono_Posix_SysconfName__SC_PII; return 0;}
6952 #endif /* ndef _SC_PII */
6953 #ifdef _SC_PII_INTERNET
6954         if (x == _SC_PII_INTERNET)
6955                 {*r = Mono_Posix_SysconfName__SC_PII_INTERNET; return 0;}
6956 #endif /* ndef _SC_PII_INTERNET */
6957 #ifdef _SC_PII_INTERNET_DGRAM
6958         if (x == _SC_PII_INTERNET_DGRAM)
6959                 {*r = Mono_Posix_SysconfName__SC_PII_INTERNET_DGRAM; return 0;}
6960 #endif /* ndef _SC_PII_INTERNET_DGRAM */
6961 #ifdef _SC_PII_INTERNET_STREAM
6962         if (x == _SC_PII_INTERNET_STREAM)
6963                 {*r = Mono_Posix_SysconfName__SC_PII_INTERNET_STREAM; return 0;}
6964 #endif /* ndef _SC_PII_INTERNET_STREAM */
6965 #ifdef _SC_PII_OSI
6966         if (x == _SC_PII_OSI)
6967                 {*r = Mono_Posix_SysconfName__SC_PII_OSI; return 0;}
6968 #endif /* ndef _SC_PII_OSI */
6969 #ifdef _SC_PII_OSI_CLTS
6970         if (x == _SC_PII_OSI_CLTS)
6971                 {*r = Mono_Posix_SysconfName__SC_PII_OSI_CLTS; return 0;}
6972 #endif /* ndef _SC_PII_OSI_CLTS */
6973 #ifdef _SC_PII_OSI_COTS
6974         if (x == _SC_PII_OSI_COTS)
6975                 {*r = Mono_Posix_SysconfName__SC_PII_OSI_COTS; return 0;}
6976 #endif /* ndef _SC_PII_OSI_COTS */
6977 #ifdef _SC_PII_OSI_M
6978         if (x == _SC_PII_OSI_M)
6979                 {*r = Mono_Posix_SysconfName__SC_PII_OSI_M; return 0;}
6980 #endif /* ndef _SC_PII_OSI_M */
6981 #ifdef _SC_PII_SOCKET
6982         if (x == _SC_PII_SOCKET)
6983                 {*r = Mono_Posix_SysconfName__SC_PII_SOCKET; return 0;}
6984 #endif /* ndef _SC_PII_SOCKET */
6985 #ifdef _SC_PII_XTI
6986         if (x == _SC_PII_XTI)
6987                 {*r = Mono_Posix_SysconfName__SC_PII_XTI; return 0;}
6988 #endif /* ndef _SC_PII_XTI */
6989 #ifdef _SC_PIPE
6990         if (x == _SC_PIPE)
6991                 {*r = Mono_Posix_SysconfName__SC_PIPE; return 0;}
6992 #endif /* ndef _SC_PIPE */
6993 #ifdef _SC_POLL
6994         if (x == _SC_POLL)
6995                 {*r = Mono_Posix_SysconfName__SC_POLL; return 0;}
6996 #endif /* ndef _SC_POLL */
6997 #ifdef _SC_PRIORITIZED_IO
6998         if (x == _SC_PRIORITIZED_IO)
6999                 {*r = Mono_Posix_SysconfName__SC_PRIORITIZED_IO; return 0;}
7000 #endif /* ndef _SC_PRIORITIZED_IO */
7001 #ifdef _SC_PRIORITY_SCHEDULING
7002         if (x == _SC_PRIORITY_SCHEDULING)
7003                 {*r = Mono_Posix_SysconfName__SC_PRIORITY_SCHEDULING; return 0;}
7004 #endif /* ndef _SC_PRIORITY_SCHEDULING */
7005 #ifdef _SC_READER_WRITER_LOCKS
7006         if (x == _SC_READER_WRITER_LOCKS)
7007                 {*r = Mono_Posix_SysconfName__SC_READER_WRITER_LOCKS; return 0;}
7008 #endif /* ndef _SC_READER_WRITER_LOCKS */
7009 #ifdef _SC_REALTIME_SIGNALS
7010         if (x == _SC_REALTIME_SIGNALS)
7011                 {*r = Mono_Posix_SysconfName__SC_REALTIME_SIGNALS; return 0;}
7012 #endif /* ndef _SC_REALTIME_SIGNALS */
7013 #ifdef _SC_REGEXP
7014         if (x == _SC_REGEXP)
7015                 {*r = Mono_Posix_SysconfName__SC_REGEXP; return 0;}
7016 #endif /* ndef _SC_REGEXP */
7017 #ifdef _SC_REGEX_VERSION
7018         if (x == _SC_REGEX_VERSION)
7019                 {*r = Mono_Posix_SysconfName__SC_REGEX_VERSION; return 0;}
7020 #endif /* ndef _SC_REGEX_VERSION */
7021 #ifdef _SC_RE_DUP_MAX
7022         if (x == _SC_RE_DUP_MAX)
7023                 {*r = Mono_Posix_SysconfName__SC_RE_DUP_MAX; return 0;}
7024 #endif /* ndef _SC_RE_DUP_MAX */
7025 #ifdef _SC_RTSIG_MAX
7026         if (x == _SC_RTSIG_MAX)
7027                 {*r = Mono_Posix_SysconfName__SC_RTSIG_MAX; return 0;}
7028 #endif /* ndef _SC_RTSIG_MAX */
7029 #ifdef _SC_SAVED_IDS
7030         if (x == _SC_SAVED_IDS)
7031                 {*r = Mono_Posix_SysconfName__SC_SAVED_IDS; return 0;}
7032 #endif /* ndef _SC_SAVED_IDS */
7033 #ifdef _SC_SCHAR_MAX
7034         if (x == _SC_SCHAR_MAX)
7035                 {*r = Mono_Posix_SysconfName__SC_SCHAR_MAX; return 0;}
7036 #endif /* ndef _SC_SCHAR_MAX */
7037 #ifdef _SC_SCHAR_MIN
7038         if (x == _SC_SCHAR_MIN)
7039                 {*r = Mono_Posix_SysconfName__SC_SCHAR_MIN; return 0;}
7040 #endif /* ndef _SC_SCHAR_MIN */
7041 #ifdef _SC_SELECT
7042         if (x == _SC_SELECT)
7043                 {*r = Mono_Posix_SysconfName__SC_SELECT; return 0;}
7044 #endif /* ndef _SC_SELECT */
7045 #ifdef _SC_SEMAPHORES
7046         if (x == _SC_SEMAPHORES)
7047                 {*r = Mono_Posix_SysconfName__SC_SEMAPHORES; return 0;}
7048 #endif /* ndef _SC_SEMAPHORES */
7049 #ifdef _SC_SEM_NSEMS_MAX
7050         if (x == _SC_SEM_NSEMS_MAX)
7051                 {*r = Mono_Posix_SysconfName__SC_SEM_NSEMS_MAX; return 0;}
7052 #endif /* ndef _SC_SEM_NSEMS_MAX */
7053 #ifdef _SC_SEM_VALUE_MAX
7054         if (x == _SC_SEM_VALUE_MAX)
7055                 {*r = Mono_Posix_SysconfName__SC_SEM_VALUE_MAX; return 0;}
7056 #endif /* ndef _SC_SEM_VALUE_MAX */
7057 #ifdef _SC_SHARED_MEMORY_OBJECTS
7058         if (x == _SC_SHARED_MEMORY_OBJECTS)
7059                 {*r = Mono_Posix_SysconfName__SC_SHARED_MEMORY_OBJECTS; return 0;}
7060 #endif /* ndef _SC_SHARED_MEMORY_OBJECTS */
7061 #ifdef _SC_SHELL
7062         if (x == _SC_SHELL)
7063                 {*r = Mono_Posix_SysconfName__SC_SHELL; return 0;}
7064 #endif /* ndef _SC_SHELL */
7065 #ifdef _SC_SHRT_MAX
7066         if (x == _SC_SHRT_MAX)
7067                 {*r = Mono_Posix_SysconfName__SC_SHRT_MAX; return 0;}
7068 #endif /* ndef _SC_SHRT_MAX */
7069 #ifdef _SC_SHRT_MIN
7070         if (x == _SC_SHRT_MIN)
7071                 {*r = Mono_Posix_SysconfName__SC_SHRT_MIN; return 0;}
7072 #endif /* ndef _SC_SHRT_MIN */
7073 #ifdef _SC_SIGNALS
7074         if (x == _SC_SIGNALS)
7075                 {*r = Mono_Posix_SysconfName__SC_SIGNALS; return 0;}
7076 #endif /* ndef _SC_SIGNALS */
7077 #ifdef _SC_SIGQUEUE_MAX
7078         if (x == _SC_SIGQUEUE_MAX)
7079                 {*r = Mono_Posix_SysconfName__SC_SIGQUEUE_MAX; return 0;}
7080 #endif /* ndef _SC_SIGQUEUE_MAX */
7081 #ifdef _SC_SINGLE_PROCESS
7082         if (x == _SC_SINGLE_PROCESS)
7083                 {*r = Mono_Posix_SysconfName__SC_SINGLE_PROCESS; return 0;}
7084 #endif /* ndef _SC_SINGLE_PROCESS */
7085 #ifdef _SC_SPAWN
7086         if (x == _SC_SPAWN)
7087                 {*r = Mono_Posix_SysconfName__SC_SPAWN; return 0;}
7088 #endif /* ndef _SC_SPAWN */
7089 #ifdef _SC_SPIN_LOCKS
7090         if (x == _SC_SPIN_LOCKS)
7091                 {*r = Mono_Posix_SysconfName__SC_SPIN_LOCKS; return 0;}
7092 #endif /* ndef _SC_SPIN_LOCKS */
7093 #ifdef _SC_SPORADIC_SERVER
7094         if (x == _SC_SPORADIC_SERVER)
7095                 {*r = Mono_Posix_SysconfName__SC_SPORADIC_SERVER; return 0;}
7096 #endif /* ndef _SC_SPORADIC_SERVER */
7097 #ifdef _SC_SSIZE_MAX
7098         if (x == _SC_SSIZE_MAX)
7099                 {*r = Mono_Posix_SysconfName__SC_SSIZE_MAX; return 0;}
7100 #endif /* ndef _SC_SSIZE_MAX */
7101 #ifdef _SC_STREAMS
7102         if (x == _SC_STREAMS)
7103                 {*r = Mono_Posix_SysconfName__SC_STREAMS; return 0;}
7104 #endif /* ndef _SC_STREAMS */
7105 #ifdef _SC_STREAM_MAX
7106         if (x == _SC_STREAM_MAX)
7107                 {*r = Mono_Posix_SysconfName__SC_STREAM_MAX; return 0;}
7108 #endif /* ndef _SC_STREAM_MAX */
7109 #ifdef _SC_SYMLOOP_MAX
7110         if (x == _SC_SYMLOOP_MAX)
7111                 {*r = Mono_Posix_SysconfName__SC_SYMLOOP_MAX; return 0;}
7112 #endif /* ndef _SC_SYMLOOP_MAX */
7113 #ifdef _SC_SYNCHRONIZED_IO
7114         if (x == _SC_SYNCHRONIZED_IO)
7115                 {*r = Mono_Posix_SysconfName__SC_SYNCHRONIZED_IO; return 0;}
7116 #endif /* ndef _SC_SYNCHRONIZED_IO */
7117 #ifdef _SC_SYSTEM_DATABASE
7118         if (x == _SC_SYSTEM_DATABASE)
7119                 {*r = Mono_Posix_SysconfName__SC_SYSTEM_DATABASE; return 0;}
7120 #endif /* ndef _SC_SYSTEM_DATABASE */
7121 #ifdef _SC_SYSTEM_DATABASE_R
7122         if (x == _SC_SYSTEM_DATABASE_R)
7123                 {*r = Mono_Posix_SysconfName__SC_SYSTEM_DATABASE_R; return 0;}
7124 #endif /* ndef _SC_SYSTEM_DATABASE_R */
7125 #ifdef _SC_THREADS
7126         if (x == _SC_THREADS)
7127                 {*r = Mono_Posix_SysconfName__SC_THREADS; return 0;}
7128 #endif /* ndef _SC_THREADS */
7129 #ifdef _SC_THREAD_ATTR_STACKADDR
7130         if (x == _SC_THREAD_ATTR_STACKADDR)
7131                 {*r = Mono_Posix_SysconfName__SC_THREAD_ATTR_STACKADDR; return 0;}
7132 #endif /* ndef _SC_THREAD_ATTR_STACKADDR */
7133 #ifdef _SC_THREAD_ATTR_STACKSIZE
7134         if (x == _SC_THREAD_ATTR_STACKSIZE)
7135                 {*r = Mono_Posix_SysconfName__SC_THREAD_ATTR_STACKSIZE; return 0;}
7136 #endif /* ndef _SC_THREAD_ATTR_STACKSIZE */
7137 #ifdef _SC_THREAD_CPUTIME
7138         if (x == _SC_THREAD_CPUTIME)
7139                 {*r = Mono_Posix_SysconfName__SC_THREAD_CPUTIME; return 0;}
7140 #endif /* ndef _SC_THREAD_CPUTIME */
7141 #ifdef _SC_THREAD_DESTRUCTOR_ITERATIONS
7142         if (x == _SC_THREAD_DESTRUCTOR_ITERATIONS)
7143                 {*r = Mono_Posix_SysconfName__SC_THREAD_DESTRUCTOR_ITERATIONS; return 0;}
7144 #endif /* ndef _SC_THREAD_DESTRUCTOR_ITERATIONS */
7145 #ifdef _SC_THREAD_KEYS_MAX
7146         if (x == _SC_THREAD_KEYS_MAX)
7147                 {*r = Mono_Posix_SysconfName__SC_THREAD_KEYS_MAX; return 0;}
7148 #endif /* ndef _SC_THREAD_KEYS_MAX */
7149 #ifdef _SC_THREAD_PRIORITY_SCHEDULING
7150         if (x == _SC_THREAD_PRIORITY_SCHEDULING)
7151                 {*r = Mono_Posix_SysconfName__SC_THREAD_PRIORITY_SCHEDULING; return 0;}
7152 #endif /* ndef _SC_THREAD_PRIORITY_SCHEDULING */
7153 #ifdef _SC_THREAD_PRIO_INHERIT
7154         if (x == _SC_THREAD_PRIO_INHERIT)
7155                 {*r = Mono_Posix_SysconfName__SC_THREAD_PRIO_INHERIT; return 0;}
7156 #endif /* ndef _SC_THREAD_PRIO_INHERIT */
7157 #ifdef _SC_THREAD_PRIO_PROTECT
7158         if (x == _SC_THREAD_PRIO_PROTECT)
7159                 {*r = Mono_Posix_SysconfName__SC_THREAD_PRIO_PROTECT; return 0;}
7160 #endif /* ndef _SC_THREAD_PRIO_PROTECT */
7161 #ifdef _SC_THREAD_PROCESS_SHARED
7162         if (x == _SC_THREAD_PROCESS_SHARED)
7163                 {*r = Mono_Posix_SysconfName__SC_THREAD_PROCESS_SHARED; return 0;}
7164 #endif /* ndef _SC_THREAD_PROCESS_SHARED */
7165 #ifdef _SC_THREAD_SAFE_FUNCTIONS
7166         if (x == _SC_THREAD_SAFE_FUNCTIONS)
7167                 {*r = Mono_Posix_SysconfName__SC_THREAD_SAFE_FUNCTIONS; return 0;}
7168 #endif /* ndef _SC_THREAD_SAFE_FUNCTIONS */
7169 #ifdef _SC_THREAD_SPORADIC_SERVER
7170         if (x == _SC_THREAD_SPORADIC_SERVER)
7171                 {*r = Mono_Posix_SysconfName__SC_THREAD_SPORADIC_SERVER; return 0;}
7172 #endif /* ndef _SC_THREAD_SPORADIC_SERVER */
7173 #ifdef _SC_THREAD_STACK_MIN
7174         if (x == _SC_THREAD_STACK_MIN)
7175                 {*r = Mono_Posix_SysconfName__SC_THREAD_STACK_MIN; return 0;}
7176 #endif /* ndef _SC_THREAD_STACK_MIN */
7177 #ifdef _SC_THREAD_THREADS_MAX
7178         if (x == _SC_THREAD_THREADS_MAX)
7179                 {*r = Mono_Posix_SysconfName__SC_THREAD_THREADS_MAX; return 0;}
7180 #endif /* ndef _SC_THREAD_THREADS_MAX */
7181 #ifdef _SC_TIMEOUTS
7182         if (x == _SC_TIMEOUTS)
7183                 {*r = Mono_Posix_SysconfName__SC_TIMEOUTS; return 0;}
7184 #endif /* ndef _SC_TIMEOUTS */
7185 #ifdef _SC_TIMERS
7186         if (x == _SC_TIMERS)
7187                 {*r = Mono_Posix_SysconfName__SC_TIMERS; return 0;}
7188 #endif /* ndef _SC_TIMERS */
7189 #ifdef _SC_TIMER_MAX
7190         if (x == _SC_TIMER_MAX)
7191                 {*r = Mono_Posix_SysconfName__SC_TIMER_MAX; return 0;}
7192 #endif /* ndef _SC_TIMER_MAX */
7193 #ifdef _SC_TRACE
7194         if (x == _SC_TRACE)
7195                 {*r = Mono_Posix_SysconfName__SC_TRACE; return 0;}
7196 #endif /* ndef _SC_TRACE */
7197 #ifdef _SC_TRACE_EVENT_FILTER
7198         if (x == _SC_TRACE_EVENT_FILTER)
7199                 {*r = Mono_Posix_SysconfName__SC_TRACE_EVENT_FILTER; return 0;}
7200 #endif /* ndef _SC_TRACE_EVENT_FILTER */
7201 #ifdef _SC_TRACE_INHERIT
7202         if (x == _SC_TRACE_INHERIT)
7203                 {*r = Mono_Posix_SysconfName__SC_TRACE_INHERIT; return 0;}
7204 #endif /* ndef _SC_TRACE_INHERIT */
7205 #ifdef _SC_TRACE_LOG
7206         if (x == _SC_TRACE_LOG)
7207                 {*r = Mono_Posix_SysconfName__SC_TRACE_LOG; return 0;}
7208 #endif /* ndef _SC_TRACE_LOG */
7209 #ifdef _SC_TTY_NAME_MAX
7210         if (x == _SC_TTY_NAME_MAX)
7211                 {*r = Mono_Posix_SysconfName__SC_TTY_NAME_MAX; return 0;}
7212 #endif /* ndef _SC_TTY_NAME_MAX */
7213 #ifdef _SC_TYPED_MEMORY_OBJECTS
7214         if (x == _SC_TYPED_MEMORY_OBJECTS)
7215                 {*r = Mono_Posix_SysconfName__SC_TYPED_MEMORY_OBJECTS; return 0;}
7216 #endif /* ndef _SC_TYPED_MEMORY_OBJECTS */
7217 #ifdef _SC_TZNAME_MAX
7218         if (x == _SC_TZNAME_MAX)
7219                 {*r = Mono_Posix_SysconfName__SC_TZNAME_MAX; return 0;}
7220 #endif /* ndef _SC_TZNAME_MAX */
7221 #ifdef _SC_T_IOV_MAX
7222         if (x == _SC_T_IOV_MAX)
7223                 {*r = Mono_Posix_SysconfName__SC_T_IOV_MAX; return 0;}
7224 #endif /* ndef _SC_T_IOV_MAX */
7225 #ifdef _SC_UCHAR_MAX
7226         if (x == _SC_UCHAR_MAX)
7227                 {*r = Mono_Posix_SysconfName__SC_UCHAR_MAX; return 0;}
7228 #endif /* ndef _SC_UCHAR_MAX */
7229 #ifdef _SC_UINT_MAX
7230         if (x == _SC_UINT_MAX)
7231                 {*r = Mono_Posix_SysconfName__SC_UINT_MAX; return 0;}
7232 #endif /* ndef _SC_UINT_MAX */
7233 #ifdef _SC_UIO_MAXIOV
7234         if (x == _SC_UIO_MAXIOV)
7235                 {*r = Mono_Posix_SysconfName__SC_UIO_MAXIOV; return 0;}
7236 #endif /* ndef _SC_UIO_MAXIOV */
7237 #ifdef _SC_ULONG_MAX
7238         if (x == _SC_ULONG_MAX)
7239                 {*r = Mono_Posix_SysconfName__SC_ULONG_MAX; return 0;}
7240 #endif /* ndef _SC_ULONG_MAX */
7241 #ifdef _SC_USER_GROUPS
7242         if (x == _SC_USER_GROUPS)
7243                 {*r = Mono_Posix_SysconfName__SC_USER_GROUPS; return 0;}
7244 #endif /* ndef _SC_USER_GROUPS */
7245 #ifdef _SC_USER_GROUPS_R
7246         if (x == _SC_USER_GROUPS_R)
7247                 {*r = Mono_Posix_SysconfName__SC_USER_GROUPS_R; return 0;}
7248 #endif /* ndef _SC_USER_GROUPS_R */
7249 #ifdef _SC_USHRT_MAX
7250         if (x == _SC_USHRT_MAX)
7251                 {*r = Mono_Posix_SysconfName__SC_USHRT_MAX; return 0;}
7252 #endif /* ndef _SC_USHRT_MAX */
7253 #ifdef _SC_V6_ILP32_OFF32
7254         if (x == _SC_V6_ILP32_OFF32)
7255                 {*r = Mono_Posix_SysconfName__SC_V6_ILP32_OFF32; return 0;}
7256 #endif /* ndef _SC_V6_ILP32_OFF32 */
7257 #ifdef _SC_V6_ILP32_OFFBIG
7258         if (x == _SC_V6_ILP32_OFFBIG)
7259                 {*r = Mono_Posix_SysconfName__SC_V6_ILP32_OFFBIG; return 0;}
7260 #endif /* ndef _SC_V6_ILP32_OFFBIG */
7261 #ifdef _SC_V6_LP64_OFF64
7262         if (x == _SC_V6_LP64_OFF64)
7263                 {*r = Mono_Posix_SysconfName__SC_V6_LP64_OFF64; return 0;}
7264 #endif /* ndef _SC_V6_LP64_OFF64 */
7265 #ifdef _SC_V6_LPBIG_OFFBIG
7266         if (x == _SC_V6_LPBIG_OFFBIG)
7267                 {*r = Mono_Posix_SysconfName__SC_V6_LPBIG_OFFBIG; return 0;}
7268 #endif /* ndef _SC_V6_LPBIG_OFFBIG */
7269 #ifdef _SC_VERSION
7270         if (x == _SC_VERSION)
7271                 {*r = Mono_Posix_SysconfName__SC_VERSION; return 0;}
7272 #endif /* ndef _SC_VERSION */
7273 #ifdef _SC_WORD_BIT
7274         if (x == _SC_WORD_BIT)
7275                 {*r = Mono_Posix_SysconfName__SC_WORD_BIT; return 0;}
7276 #endif /* ndef _SC_WORD_BIT */
7277 #ifdef _SC_XBS5_ILP32_OFF32
7278         if (x == _SC_XBS5_ILP32_OFF32)
7279                 {*r = Mono_Posix_SysconfName__SC_XBS5_ILP32_OFF32; return 0;}
7280 #endif /* ndef _SC_XBS5_ILP32_OFF32 */
7281 #ifdef _SC_XBS5_ILP32_OFFBIG
7282         if (x == _SC_XBS5_ILP32_OFFBIG)
7283                 {*r = Mono_Posix_SysconfName__SC_XBS5_ILP32_OFFBIG; return 0;}
7284 #endif /* ndef _SC_XBS5_ILP32_OFFBIG */
7285 #ifdef _SC_XBS5_LP64_OFF64
7286         if (x == _SC_XBS5_LP64_OFF64)
7287                 {*r = Mono_Posix_SysconfName__SC_XBS5_LP64_OFF64; return 0;}
7288 #endif /* ndef _SC_XBS5_LP64_OFF64 */
7289 #ifdef _SC_XBS5_LPBIG_OFFBIG
7290         if (x == _SC_XBS5_LPBIG_OFFBIG)
7291                 {*r = Mono_Posix_SysconfName__SC_XBS5_LPBIG_OFFBIG; return 0;}
7292 #endif /* ndef _SC_XBS5_LPBIG_OFFBIG */
7293 #ifdef _SC_XOPEN_CRYPT
7294         if (x == _SC_XOPEN_CRYPT)
7295                 {*r = Mono_Posix_SysconfName__SC_XOPEN_CRYPT; return 0;}
7296 #endif /* ndef _SC_XOPEN_CRYPT */
7297 #ifdef _SC_XOPEN_ENH_I18N
7298         if (x == _SC_XOPEN_ENH_I18N)
7299                 {*r = Mono_Posix_SysconfName__SC_XOPEN_ENH_I18N; return 0;}
7300 #endif /* ndef _SC_XOPEN_ENH_I18N */
7301 #ifdef _SC_XOPEN_LEGACY
7302         if (x == _SC_XOPEN_LEGACY)
7303                 {*r = Mono_Posix_SysconfName__SC_XOPEN_LEGACY; return 0;}
7304 #endif /* ndef _SC_XOPEN_LEGACY */
7305 #ifdef _SC_XOPEN_REALTIME
7306         if (x == _SC_XOPEN_REALTIME)
7307                 {*r = Mono_Posix_SysconfName__SC_XOPEN_REALTIME; return 0;}
7308 #endif /* ndef _SC_XOPEN_REALTIME */
7309 #ifdef _SC_XOPEN_REALTIME_THREADS
7310         if (x == _SC_XOPEN_REALTIME_THREADS)
7311                 {*r = Mono_Posix_SysconfName__SC_XOPEN_REALTIME_THREADS; return 0;}
7312 #endif /* ndef _SC_XOPEN_REALTIME_THREADS */
7313 #ifdef _SC_XOPEN_SHM
7314         if (x == _SC_XOPEN_SHM)
7315                 {*r = Mono_Posix_SysconfName__SC_XOPEN_SHM; return 0;}
7316 #endif /* ndef _SC_XOPEN_SHM */
7317 #ifdef _SC_XOPEN_UNIX
7318         if (x == _SC_XOPEN_UNIX)
7319                 {*r = Mono_Posix_SysconfName__SC_XOPEN_UNIX; return 0;}
7320 #endif /* ndef _SC_XOPEN_UNIX */
7321 #ifdef _SC_XOPEN_VERSION
7322         if (x == _SC_XOPEN_VERSION)
7323                 {*r = Mono_Posix_SysconfName__SC_XOPEN_VERSION; return 0;}
7324 #endif /* ndef _SC_XOPEN_VERSION */
7325 #ifdef _SC_XOPEN_XCU_VERSION
7326         if (x == _SC_XOPEN_XCU_VERSION)
7327                 {*r = Mono_Posix_SysconfName__SC_XOPEN_XCU_VERSION; return 0;}
7328 #endif /* ndef _SC_XOPEN_XCU_VERSION */
7329 #ifdef _SC_XOPEN_XPG2
7330         if (x == _SC_XOPEN_XPG2)
7331                 {*r = Mono_Posix_SysconfName__SC_XOPEN_XPG2; return 0;}
7332 #endif /* ndef _SC_XOPEN_XPG2 */
7333 #ifdef _SC_XOPEN_XPG3
7334         if (x == _SC_XOPEN_XPG3)
7335                 {*r = Mono_Posix_SysconfName__SC_XOPEN_XPG3; return 0;}
7336 #endif /* ndef _SC_XOPEN_XPG3 */
7337 #ifdef _SC_XOPEN_XPG4
7338         if (x == _SC_XOPEN_XPG4)
7339                 {*r = Mono_Posix_SysconfName__SC_XOPEN_XPG4; return 0;}
7340 #endif /* ndef _SC_XOPEN_XPG4 */
7341         errno = EINVAL; return -1;
7342 }
7343
7344 int Mono_Posix_FromSyslogFacility (int x, int *r)
7345 {
7346         *r = 0;
7347         if (x == Mono_Posix_SyslogFacility_LOG_AUTH)
7348 #ifdef LOG_AUTH
7349                 {*r = LOG_AUTH; return 0;}
7350 #else /* def LOG_AUTH */
7351                 {errno = EINVAL; return -1;}
7352 #endif /* ndef LOG_AUTH */
7353         if (x == Mono_Posix_SyslogFacility_LOG_AUTHPRIV)
7354 #ifdef LOG_AUTHPRIV
7355                 {*r = LOG_AUTHPRIV; return 0;}
7356 #else /* def LOG_AUTHPRIV */
7357                 {errno = EINVAL; return -1;}
7358 #endif /* ndef LOG_AUTHPRIV */
7359         if (x == Mono_Posix_SyslogFacility_LOG_CRON)
7360 #ifdef LOG_CRON
7361                 {*r = LOG_CRON; return 0;}
7362 #else /* def LOG_CRON */
7363                 {errno = EINVAL; return -1;}
7364 #endif /* ndef LOG_CRON */
7365         if (x == Mono_Posix_SyslogFacility_LOG_DAEMON)
7366 #ifdef LOG_DAEMON
7367                 {*r = LOG_DAEMON; return 0;}
7368 #else /* def LOG_DAEMON */
7369                 {errno = EINVAL; return -1;}
7370 #endif /* ndef LOG_DAEMON */
7371         if (x == Mono_Posix_SyslogFacility_LOG_FTP)
7372 #ifdef LOG_FTP
7373                 {*r = LOG_FTP; return 0;}
7374 #else /* def LOG_FTP */
7375                 {errno = EINVAL; return -1;}
7376 #endif /* ndef LOG_FTP */
7377         if (x == Mono_Posix_SyslogFacility_LOG_KERN)
7378 #ifdef LOG_KERN
7379                 {*r = LOG_KERN; return 0;}
7380 #else /* def LOG_KERN */
7381                 {errno = EINVAL; return -1;}
7382 #endif /* ndef LOG_KERN */
7383         if (x == Mono_Posix_SyslogFacility_LOG_LOCAL0)
7384 #ifdef LOG_LOCAL0
7385                 {*r = LOG_LOCAL0; return 0;}
7386 #else /* def LOG_LOCAL0 */
7387                 {errno = EINVAL; return -1;}
7388 #endif /* ndef LOG_LOCAL0 */
7389         if (x == Mono_Posix_SyslogFacility_LOG_LOCAL1)
7390 #ifdef LOG_LOCAL1
7391                 {*r = LOG_LOCAL1; return 0;}
7392 #else /* def LOG_LOCAL1 */
7393                 {errno = EINVAL; return -1;}
7394 #endif /* ndef LOG_LOCAL1 */
7395         if (x == Mono_Posix_SyslogFacility_LOG_LOCAL2)
7396 #ifdef LOG_LOCAL2
7397                 {*r = LOG_LOCAL2; return 0;}
7398 #else /* def LOG_LOCAL2 */
7399                 {errno = EINVAL; return -1;}
7400 #endif /* ndef LOG_LOCAL2 */
7401         if (x == Mono_Posix_SyslogFacility_LOG_LOCAL3)
7402 #ifdef LOG_LOCAL3
7403                 {*r = LOG_LOCAL3; return 0;}
7404 #else /* def LOG_LOCAL3 */
7405                 {errno = EINVAL; return -1;}
7406 #endif /* ndef LOG_LOCAL3 */
7407         if (x == Mono_Posix_SyslogFacility_LOG_LOCAL4)
7408 #ifdef LOG_LOCAL4
7409                 {*r = LOG_LOCAL4; return 0;}
7410 #else /* def LOG_LOCAL4 */
7411                 {errno = EINVAL; return -1;}
7412 #endif /* ndef LOG_LOCAL4 */
7413         if (x == Mono_Posix_SyslogFacility_LOG_LOCAL5)
7414 #ifdef LOG_LOCAL5
7415                 {*r = LOG_LOCAL5; return 0;}
7416 #else /* def LOG_LOCAL5 */
7417                 {errno = EINVAL; return -1;}
7418 #endif /* ndef LOG_LOCAL5 */
7419         if (x == Mono_Posix_SyslogFacility_LOG_LOCAL6)
7420 #ifdef LOG_LOCAL6
7421                 {*r = LOG_LOCAL6; return 0;}
7422 #else /* def LOG_LOCAL6 */
7423                 {errno = EINVAL; return -1;}
7424 #endif /* ndef LOG_LOCAL6 */
7425         if (x == Mono_Posix_SyslogFacility_LOG_LOCAL7)
7426 #ifdef LOG_LOCAL7
7427                 {*r = LOG_LOCAL7; return 0;}
7428 #else /* def LOG_LOCAL7 */
7429                 {errno = EINVAL; return -1;}
7430 #endif /* ndef LOG_LOCAL7 */
7431         if (x == Mono_Posix_SyslogFacility_LOG_LPR)
7432 #ifdef LOG_LPR
7433                 {*r = LOG_LPR; return 0;}
7434 #else /* def LOG_LPR */
7435                 {errno = EINVAL; return -1;}
7436 #endif /* ndef LOG_LPR */
7437         if (x == Mono_Posix_SyslogFacility_LOG_MAIL)
7438 #ifdef LOG_MAIL
7439                 {*r = LOG_MAIL; return 0;}
7440 #else /* def LOG_MAIL */
7441                 {errno = EINVAL; return -1;}
7442 #endif /* ndef LOG_MAIL */
7443         if (x == Mono_Posix_SyslogFacility_LOG_NEWS)
7444 #ifdef LOG_NEWS
7445                 {*r = LOG_NEWS; return 0;}
7446 #else /* def LOG_NEWS */
7447                 {errno = EINVAL; return -1;}
7448 #endif /* ndef LOG_NEWS */
7449         if (x == Mono_Posix_SyslogFacility_LOG_SYSLOG)
7450 #ifdef LOG_SYSLOG
7451                 {*r = LOG_SYSLOG; return 0;}
7452 #else /* def LOG_SYSLOG */
7453                 {errno = EINVAL; return -1;}
7454 #endif /* ndef LOG_SYSLOG */
7455         if (x == Mono_Posix_SyslogFacility_LOG_USER)
7456 #ifdef LOG_USER
7457                 {*r = LOG_USER; return 0;}
7458 #else /* def LOG_USER */
7459                 {errno = EINVAL; return -1;}
7460 #endif /* ndef LOG_USER */
7461         if (x == Mono_Posix_SyslogFacility_LOG_UUCP)
7462 #ifdef LOG_UUCP
7463                 {*r = LOG_UUCP; return 0;}
7464 #else /* def LOG_UUCP */
7465                 {errno = EINVAL; return -1;}
7466 #endif /* ndef LOG_UUCP */
7467         if (x == 0)
7468                 return 0;
7469         errno = EINVAL; return -1;
7470 }
7471
7472 int Mono_Posix_ToSyslogFacility (int x, int *r)
7473 {
7474         *r = 0;
7475         if (x == 0)
7476                 return 0;
7477 #ifdef LOG_AUTH
7478         if (x == LOG_AUTH)
7479                 {*r = Mono_Posix_SyslogFacility_LOG_AUTH; return 0;}
7480 #endif /* ndef LOG_AUTH */
7481 #ifdef LOG_AUTHPRIV
7482         if (x == LOG_AUTHPRIV)
7483                 {*r = Mono_Posix_SyslogFacility_LOG_AUTHPRIV; return 0;}
7484 #endif /* ndef LOG_AUTHPRIV */
7485 #ifdef LOG_CRON
7486         if (x == LOG_CRON)
7487                 {*r = Mono_Posix_SyslogFacility_LOG_CRON; return 0;}
7488 #endif /* ndef LOG_CRON */
7489 #ifdef LOG_DAEMON
7490         if (x == LOG_DAEMON)
7491                 {*r = Mono_Posix_SyslogFacility_LOG_DAEMON; return 0;}
7492 #endif /* ndef LOG_DAEMON */
7493 #ifdef LOG_FTP
7494         if (x == LOG_FTP)
7495                 {*r = Mono_Posix_SyslogFacility_LOG_FTP; return 0;}
7496 #endif /* ndef LOG_FTP */
7497 #ifdef LOG_KERN
7498         if (x == LOG_KERN)
7499                 {*r = Mono_Posix_SyslogFacility_LOG_KERN; return 0;}
7500 #endif /* ndef LOG_KERN */
7501 #ifdef LOG_LOCAL0
7502         if (x == LOG_LOCAL0)
7503                 {*r = Mono_Posix_SyslogFacility_LOG_LOCAL0; return 0;}
7504 #endif /* ndef LOG_LOCAL0 */
7505 #ifdef LOG_LOCAL1
7506         if (x == LOG_LOCAL1)
7507                 {*r = Mono_Posix_SyslogFacility_LOG_LOCAL1; return 0;}
7508 #endif /* ndef LOG_LOCAL1 */
7509 #ifdef LOG_LOCAL2
7510         if (x == LOG_LOCAL2)
7511                 {*r = Mono_Posix_SyslogFacility_LOG_LOCAL2; return 0;}
7512 #endif /* ndef LOG_LOCAL2 */
7513 #ifdef LOG_LOCAL3
7514         if (x == LOG_LOCAL3)
7515                 {*r = Mono_Posix_SyslogFacility_LOG_LOCAL3; return 0;}
7516 #endif /* ndef LOG_LOCAL3 */
7517 #ifdef LOG_LOCAL4
7518         if (x == LOG_LOCAL4)
7519                 {*r = Mono_Posix_SyslogFacility_LOG_LOCAL4; return 0;}
7520 #endif /* ndef LOG_LOCAL4 */
7521 #ifdef LOG_LOCAL5
7522         if (x == LOG_LOCAL5)
7523                 {*r = Mono_Posix_SyslogFacility_LOG_LOCAL5; return 0;}
7524 #endif /* ndef LOG_LOCAL5 */
7525 #ifdef LOG_LOCAL6
7526         if (x == LOG_LOCAL6)
7527                 {*r = Mono_Posix_SyslogFacility_LOG_LOCAL6; return 0;}
7528 #endif /* ndef LOG_LOCAL6 */
7529 #ifdef LOG_LOCAL7
7530         if (x == LOG_LOCAL7)
7531                 {*r = Mono_Posix_SyslogFacility_LOG_LOCAL7; return 0;}
7532 #endif /* ndef LOG_LOCAL7 */
7533 #ifdef LOG_LPR
7534         if (x == LOG_LPR)
7535                 {*r = Mono_Posix_SyslogFacility_LOG_LPR; return 0;}
7536 #endif /* ndef LOG_LPR */
7537 #ifdef LOG_MAIL
7538         if (x == LOG_MAIL)
7539                 {*r = Mono_Posix_SyslogFacility_LOG_MAIL; return 0;}
7540 #endif /* ndef LOG_MAIL */
7541 #ifdef LOG_NEWS
7542         if (x == LOG_NEWS)
7543                 {*r = Mono_Posix_SyslogFacility_LOG_NEWS; return 0;}
7544 #endif /* ndef LOG_NEWS */
7545 #ifdef LOG_SYSLOG
7546         if (x == LOG_SYSLOG)
7547                 {*r = Mono_Posix_SyslogFacility_LOG_SYSLOG; return 0;}
7548 #endif /* ndef LOG_SYSLOG */
7549 #ifdef LOG_USER
7550         if (x == LOG_USER)
7551                 {*r = Mono_Posix_SyslogFacility_LOG_USER; return 0;}
7552 #endif /* ndef LOG_USER */
7553 #ifdef LOG_UUCP
7554         if (x == LOG_UUCP)
7555                 {*r = Mono_Posix_SyslogFacility_LOG_UUCP; return 0;}
7556 #endif /* ndef LOG_UUCP */
7557         errno = EINVAL; return -1;
7558 }
7559
7560 int Mono_Posix_FromSyslogLevel (int x, int *r)
7561 {
7562         *r = 0;
7563         if (x == Mono_Posix_SyslogLevel_LOG_ALERT)
7564 #ifdef LOG_ALERT
7565                 {*r = LOG_ALERT; return 0;}
7566 #else /* def LOG_ALERT */
7567                 {errno = EINVAL; return -1;}
7568 #endif /* ndef LOG_ALERT */
7569         if (x == Mono_Posix_SyslogLevel_LOG_CRIT)
7570 #ifdef LOG_CRIT
7571                 {*r = LOG_CRIT; return 0;}
7572 #else /* def LOG_CRIT */
7573                 {errno = EINVAL; return -1;}
7574 #endif /* ndef LOG_CRIT */
7575         if (x == Mono_Posix_SyslogLevel_LOG_DEBUG)
7576 #ifdef LOG_DEBUG
7577                 {*r = LOG_DEBUG; return 0;}
7578 #else /* def LOG_DEBUG */
7579                 {errno = EINVAL; return -1;}
7580 #endif /* ndef LOG_DEBUG */
7581         if (x == Mono_Posix_SyslogLevel_LOG_EMERG)
7582 #ifdef LOG_EMERG
7583                 {*r = LOG_EMERG; return 0;}
7584 #else /* def LOG_EMERG */
7585                 {errno = EINVAL; return -1;}
7586 #endif /* ndef LOG_EMERG */
7587         if (x == Mono_Posix_SyslogLevel_LOG_ERR)
7588 #ifdef LOG_ERR
7589                 {*r = LOG_ERR; return 0;}
7590 #else /* def LOG_ERR */
7591                 {errno = EINVAL; return -1;}
7592 #endif /* ndef LOG_ERR */
7593         if (x == Mono_Posix_SyslogLevel_LOG_INFO)
7594 #ifdef LOG_INFO
7595                 {*r = LOG_INFO; return 0;}
7596 #else /* def LOG_INFO */
7597                 {errno = EINVAL; return -1;}
7598 #endif /* ndef LOG_INFO */
7599         if (x == Mono_Posix_SyslogLevel_LOG_NOTICE)
7600 #ifdef LOG_NOTICE
7601                 {*r = LOG_NOTICE; return 0;}
7602 #else /* def LOG_NOTICE */
7603                 {errno = EINVAL; return -1;}
7604 #endif /* ndef LOG_NOTICE */
7605         if (x == Mono_Posix_SyslogLevel_LOG_WARNING)
7606 #ifdef LOG_WARNING
7607                 {*r = LOG_WARNING; return 0;}
7608 #else /* def LOG_WARNING */
7609                 {errno = EINVAL; return -1;}
7610 #endif /* ndef LOG_WARNING */
7611         if (x == 0)
7612                 return 0;
7613         errno = EINVAL; return -1;
7614 }
7615
7616 int Mono_Posix_ToSyslogLevel (int x, int *r)
7617 {
7618         *r = 0;
7619         if (x == 0)
7620                 return 0;
7621 #ifdef LOG_ALERT
7622         if (x == LOG_ALERT)
7623                 {*r = Mono_Posix_SyslogLevel_LOG_ALERT; return 0;}
7624 #endif /* ndef LOG_ALERT */
7625 #ifdef LOG_CRIT
7626         if (x == LOG_CRIT)
7627                 {*r = Mono_Posix_SyslogLevel_LOG_CRIT; return 0;}
7628 #endif /* ndef LOG_CRIT */
7629 #ifdef LOG_DEBUG
7630         if (x == LOG_DEBUG)
7631                 {*r = Mono_Posix_SyslogLevel_LOG_DEBUG; return 0;}
7632 #endif /* ndef LOG_DEBUG */
7633 #ifdef LOG_EMERG
7634         if (x == LOG_EMERG)
7635                 {*r = Mono_Posix_SyslogLevel_LOG_EMERG; return 0;}
7636 #endif /* ndef LOG_EMERG */
7637 #ifdef LOG_ERR
7638         if (x == LOG_ERR)
7639                 {*r = Mono_Posix_SyslogLevel_LOG_ERR; return 0;}
7640 #endif /* ndef LOG_ERR */
7641 #ifdef LOG_INFO
7642         if (x == LOG_INFO)
7643                 {*r = Mono_Posix_SyslogLevel_LOG_INFO; return 0;}
7644 #endif /* ndef LOG_INFO */
7645 #ifdef LOG_NOTICE
7646         if (x == LOG_NOTICE)
7647                 {*r = Mono_Posix_SyslogLevel_LOG_NOTICE; return 0;}
7648 #endif /* ndef LOG_NOTICE */
7649 #ifdef LOG_WARNING
7650         if (x == LOG_WARNING)
7651                 {*r = Mono_Posix_SyslogLevel_LOG_WARNING; return 0;}
7652 #endif /* ndef LOG_WARNING */
7653         errno = EINVAL; return -1;
7654 }
7655
7656 int Mono_Posix_FromSyslogOptions (int x, int *r)
7657 {
7658         *r = 0;
7659         if ((x & Mono_Posix_SyslogOptions_LOG_CONS) == Mono_Posix_SyslogOptions_LOG_CONS)
7660 #ifdef LOG_CONS
7661                 *r |= LOG_CONS;
7662 #else /* def LOG_CONS */
7663                 {errno = EINVAL; return -1;}
7664 #endif /* ndef LOG_CONS */
7665         if ((x & Mono_Posix_SyslogOptions_LOG_NDELAY) == Mono_Posix_SyslogOptions_LOG_NDELAY)
7666 #ifdef LOG_NDELAY
7667                 *r |= LOG_NDELAY;
7668 #else /* def LOG_NDELAY */
7669                 {errno = EINVAL; return -1;}
7670 #endif /* ndef LOG_NDELAY */
7671         if ((x & Mono_Posix_SyslogOptions_LOG_NOWAIT) == Mono_Posix_SyslogOptions_LOG_NOWAIT)
7672 #ifdef LOG_NOWAIT
7673                 *r |= LOG_NOWAIT;
7674 #else /* def LOG_NOWAIT */
7675                 {errno = EINVAL; return -1;}
7676 #endif /* ndef LOG_NOWAIT */
7677         if ((x & Mono_Posix_SyslogOptions_LOG_ODELAY) == Mono_Posix_SyslogOptions_LOG_ODELAY)
7678 #ifdef LOG_ODELAY
7679                 *r |= LOG_ODELAY;
7680 #else /* def LOG_ODELAY */
7681                 {errno = EINVAL; return -1;}
7682 #endif /* ndef LOG_ODELAY */
7683         if ((x & Mono_Posix_SyslogOptions_LOG_PERROR) == Mono_Posix_SyslogOptions_LOG_PERROR)
7684 #ifdef LOG_PERROR
7685                 *r |= LOG_PERROR;
7686 #else /* def LOG_PERROR */
7687                 {errno = EINVAL; return -1;}
7688 #endif /* ndef LOG_PERROR */
7689         if ((x & Mono_Posix_SyslogOptions_LOG_PID) == Mono_Posix_SyslogOptions_LOG_PID)
7690 #ifdef LOG_PID
7691                 *r |= LOG_PID;
7692 #else /* def LOG_PID */
7693                 {errno = EINVAL; return -1;}
7694 #endif /* ndef LOG_PID */
7695         if (x == 0)
7696                 return 0;
7697         return 0;
7698 }
7699
7700 int Mono_Posix_ToSyslogOptions (int x, int *r)
7701 {
7702         *r = 0;
7703         if (x == 0)
7704                 return 0;
7705 #ifdef LOG_CONS
7706         if ((x & LOG_CONS) == LOG_CONS)
7707                 *r |= Mono_Posix_SyslogOptions_LOG_CONS;
7708 #endif /* ndef LOG_CONS */
7709 #ifdef LOG_NDELAY
7710         if ((x & LOG_NDELAY) == LOG_NDELAY)
7711                 *r |= Mono_Posix_SyslogOptions_LOG_NDELAY;
7712 #endif /* ndef LOG_NDELAY */
7713 #ifdef LOG_NOWAIT
7714         if ((x & LOG_NOWAIT) == LOG_NOWAIT)
7715                 *r |= Mono_Posix_SyslogOptions_LOG_NOWAIT;
7716 #endif /* ndef LOG_NOWAIT */
7717 #ifdef LOG_ODELAY
7718         if ((x & LOG_ODELAY) == LOG_ODELAY)
7719                 *r |= Mono_Posix_SyslogOptions_LOG_ODELAY;
7720 #endif /* ndef LOG_ODELAY */
7721 #ifdef LOG_PERROR
7722         if ((x & LOG_PERROR) == LOG_PERROR)
7723                 *r |= Mono_Posix_SyslogOptions_LOG_PERROR;
7724 #endif /* ndef LOG_PERROR */
7725 #ifdef LOG_PID
7726         if ((x & LOG_PID) == LOG_PID)
7727                 *r |= Mono_Posix_SyslogOptions_LOG_PID;
7728 #endif /* ndef LOG_PID */
7729         return 0;
7730 }
7731
7732 #ifdef HAVE_STRUCT_TIMESPEC
7733 int
7734 Mono_Posix_FromTimespec (struct Mono_Posix_Timespec *from, struct timespec *to)
7735 {
7736         _cnm_return_val_if_overflow (time_t, from->tv_sec, -1);
7737         _cnm_return_val_if_overflow (gint64, from->tv_nsec, -1);
7738
7739         memset (to, 0, sizeof(*to));
7740
7741         to->tv_sec  = from->tv_sec;
7742         to->tv_nsec = from->tv_nsec;
7743
7744         return 0;
7745 }
7746 #endif /* ndef HAVE_STRUCT_TIMESPEC */
7747
7748
7749 #ifdef HAVE_STRUCT_TIMESPEC
7750 int
7751 Mono_Posix_ToTimespec (struct timespec *from, struct Mono_Posix_Timespec *to)
7752 {
7753         _cnm_return_val_if_overflow (gint64, from->tv_sec, -1);
7754         _cnm_return_val_if_overflow (gint64, from->tv_nsec, -1);
7755
7756         memset (to, 0, sizeof(*to));
7757
7758         to->tv_sec  = from->tv_sec;
7759         to->tv_nsec = from->tv_nsec;
7760
7761         return 0;
7762 }
7763 #endif /* ndef HAVE_STRUCT_TIMESPEC */
7764
7765
7766 #ifdef HAVE_STRUCT_TIMEVAL
7767 int
7768 Mono_Posix_FromTimeval (struct Mono_Posix_Timeval *from, struct timeval *to)
7769 {
7770         _cnm_return_val_if_overflow (time_t, from->tv_sec, -1);
7771         _cnm_return_val_if_overflow (suseconds_t, from->tv_usec, -1);
7772
7773         memset (to, 0, sizeof(*to));
7774
7775         to->tv_sec  = from->tv_sec;
7776         to->tv_usec = from->tv_usec;
7777
7778         return 0;
7779 }
7780 #endif /* ndef HAVE_STRUCT_TIMEVAL */
7781
7782
7783 #ifdef HAVE_STRUCT_TIMEVAL
7784 int
7785 Mono_Posix_ToTimeval (struct timeval *from, struct Mono_Posix_Timeval *to)
7786 {
7787         _cnm_return_val_if_overflow (gint64, from->tv_sec, -1);
7788         _cnm_return_val_if_overflow (gint64, from->tv_usec, -1);
7789
7790         memset (to, 0, sizeof(*to));
7791
7792         to->tv_sec  = from->tv_sec;
7793         to->tv_usec = from->tv_usec;
7794
7795         return 0;
7796 }
7797 #endif /* ndef HAVE_STRUCT_TIMEVAL */
7798
7799
7800 #ifdef HAVE_STRUCT_TIMEZONE
7801 int
7802 Mono_Posix_FromTimezone (struct Mono_Posix_Timezone *from, struct timezone *to)
7803 {
7804         _cnm_return_val_if_overflow (int, from->tz_minuteswest, -1);
7805         _cnm_return_val_if_overflow (int, from->tz_dsttime, -1);
7806
7807         memset (to, 0, sizeof(*to));
7808
7809         to->tz_minuteswest = from->tz_minuteswest;
7810         to->tz_dsttime     = from->tz_dsttime;
7811
7812         return 0;
7813 }
7814 #endif /* ndef HAVE_STRUCT_TIMEZONE */
7815
7816
7817 #ifdef HAVE_STRUCT_TIMEZONE
7818 int
7819 Mono_Posix_ToTimezone (struct timezone *from, struct Mono_Posix_Timezone *to)
7820 {
7821         _cnm_return_val_if_overflow (int, from->tz_minuteswest, -1);
7822         _cnm_return_val_if_overflow (int, from->tz_dsttime, -1);
7823
7824         memset (to, 0, sizeof(*to));
7825
7826         to->tz_minuteswest = from->tz_minuteswest;
7827         to->tz_dsttime     = from->tz_dsttime;
7828
7829         return 0;
7830 }
7831 #endif /* ndef HAVE_STRUCT_TIMEZONE */
7832
7833
7834 int Mono_Posix_FromUnixAddressFamily (int x, int *r)
7835 {
7836         *r = 0;
7837         if (x == Mono_Posix_UnixAddressFamily_AF_ALG)
7838 #ifdef AF_ALG
7839                 {*r = AF_ALG; return 0;}
7840 #else /* def AF_ALG */
7841                 {errno = EINVAL; return -1;}
7842 #endif /* ndef AF_ALG */
7843         if (x == Mono_Posix_UnixAddressFamily_AF_APPLETALK)
7844 #ifdef AF_APPLETALK
7845                 {*r = AF_APPLETALK; return 0;}
7846 #else /* def AF_APPLETALK */
7847                 {errno = EINVAL; return -1;}
7848 #endif /* ndef AF_APPLETALK */
7849         if (x == Mono_Posix_UnixAddressFamily_AF_ASH)
7850 #ifdef AF_ASH
7851                 {*r = AF_ASH; return 0;}
7852 #else /* def AF_ASH */
7853                 {errno = EINVAL; return -1;}
7854 #endif /* ndef AF_ASH */
7855         if (x == Mono_Posix_UnixAddressFamily_AF_ATMPVC)
7856 #ifdef AF_ATMPVC
7857                 {*r = AF_ATMPVC; return 0;}
7858 #else /* def AF_ATMPVC */
7859                 {errno = EINVAL; return -1;}
7860 #endif /* ndef AF_ATMPVC */
7861         if (x == Mono_Posix_UnixAddressFamily_AF_ATMSVC)
7862 #ifdef AF_ATMSVC
7863                 {*r = AF_ATMSVC; return 0;}
7864 #else /* def AF_ATMSVC */
7865                 {errno = EINVAL; return -1;}
7866 #endif /* ndef AF_ATMSVC */
7867         if (x == Mono_Posix_UnixAddressFamily_AF_AX25)
7868 #ifdef AF_AX25
7869                 {*r = AF_AX25; return 0;}
7870 #else /* def AF_AX25 */
7871                 {errno = EINVAL; return -1;}
7872 #endif /* ndef AF_AX25 */
7873         if (x == Mono_Posix_UnixAddressFamily_AF_BLUETOOTH)
7874 #ifdef AF_BLUETOOTH
7875                 {*r = AF_BLUETOOTH; return 0;}
7876 #else /* def AF_BLUETOOTH */
7877                 {errno = EINVAL; return -1;}
7878 #endif /* ndef AF_BLUETOOTH */
7879         if (x == Mono_Posix_UnixAddressFamily_AF_BRIDGE)
7880 #ifdef AF_BRIDGE
7881                 {*r = AF_BRIDGE; return 0;}
7882 #else /* def AF_BRIDGE */
7883                 {errno = EINVAL; return -1;}
7884 #endif /* ndef AF_BRIDGE */
7885         if (x == Mono_Posix_UnixAddressFamily_AF_CAIF)
7886 #ifdef AF_CAIF
7887                 {*r = AF_CAIF; return 0;}
7888 #else /* def AF_CAIF */
7889                 {errno = EINVAL; return -1;}
7890 #endif /* ndef AF_CAIF */
7891         if (x == Mono_Posix_UnixAddressFamily_AF_CAN)
7892 #ifdef AF_CAN
7893                 {*r = AF_CAN; return 0;}
7894 #else /* def AF_CAN */
7895                 {errno = EINVAL; return -1;}
7896 #endif /* ndef AF_CAN */
7897         if (x == Mono_Posix_UnixAddressFamily_AF_DECnet)
7898 #ifdef AF_DECnet
7899                 {*r = AF_DECnet; return 0;}
7900 #else /* def AF_DECnet */
7901                 {errno = EINVAL; return -1;}
7902 #endif /* ndef AF_DECnet */
7903         if (x == Mono_Posix_UnixAddressFamily_AF_ECONET)
7904 #ifdef AF_ECONET
7905                 {*r = AF_ECONET; return 0;}
7906 #else /* def AF_ECONET */
7907                 {errno = EINVAL; return -1;}
7908 #endif /* ndef AF_ECONET */
7909         if (x == Mono_Posix_UnixAddressFamily_AF_IEEE802154)
7910 #ifdef AF_IEEE802154
7911                 {*r = AF_IEEE802154; return 0;}
7912 #else /* def AF_IEEE802154 */
7913                 {errno = EINVAL; return -1;}
7914 #endif /* ndef AF_IEEE802154 */
7915         if (x == Mono_Posix_UnixAddressFamily_AF_INET)
7916 #ifdef AF_INET
7917                 {*r = AF_INET; return 0;}
7918 #else /* def AF_INET */
7919                 {errno = EINVAL; return -1;}
7920 #endif /* ndef AF_INET */
7921         if (x == Mono_Posix_UnixAddressFamily_AF_INET6)
7922 #ifdef AF_INET6
7923                 {*r = AF_INET6; return 0;}
7924 #else /* def AF_INET6 */
7925                 {errno = EINVAL; return -1;}
7926 #endif /* ndef AF_INET6 */
7927         if (x == Mono_Posix_UnixAddressFamily_AF_IPX)
7928 #ifdef AF_IPX
7929                 {*r = AF_IPX; return 0;}
7930 #else /* def AF_IPX */
7931                 {errno = EINVAL; return -1;}
7932 #endif /* ndef AF_IPX */
7933         if (x == Mono_Posix_UnixAddressFamily_AF_IRDA)
7934 #ifdef AF_IRDA
7935                 {*r = AF_IRDA; return 0;}
7936 #else /* def AF_IRDA */
7937                 {errno = EINVAL; return -1;}
7938 #endif /* ndef AF_IRDA */
7939         if (x == Mono_Posix_UnixAddressFamily_AF_ISDN)
7940 #ifdef AF_ISDN
7941                 {*r = AF_ISDN; return 0;}
7942 #else /* def AF_ISDN */
7943                 {errno = EINVAL; return -1;}
7944 #endif /* ndef AF_ISDN */
7945         if (x == Mono_Posix_UnixAddressFamily_AF_IUCV)
7946 #ifdef AF_IUCV
7947                 {*r = AF_IUCV; return 0;}
7948 #else /* def AF_IUCV */
7949                 {errno = EINVAL; return -1;}
7950 #endif /* ndef AF_IUCV */
7951         if (x == Mono_Posix_UnixAddressFamily_AF_KEY)
7952 #ifdef AF_KEY
7953                 {*r = AF_KEY; return 0;}
7954 #else /* def AF_KEY */
7955                 {errno = EINVAL; return -1;}
7956 #endif /* ndef AF_KEY */
7957         if (x == Mono_Posix_UnixAddressFamily_AF_LLC)
7958 #ifdef AF_LLC
7959                 {*r = AF_LLC; return 0;}
7960 #else /* def AF_LLC */
7961                 {errno = EINVAL; return -1;}
7962 #endif /* ndef AF_LLC */
7963         if (x == Mono_Posix_UnixAddressFamily_AF_NETBEUI)
7964 #ifdef AF_NETBEUI
7965                 {*r = AF_NETBEUI; return 0;}
7966 #else /* def AF_NETBEUI */
7967                 {errno = EINVAL; return -1;}
7968 #endif /* ndef AF_NETBEUI */
7969         if (x == Mono_Posix_UnixAddressFamily_AF_NETLINK)
7970 #ifdef AF_NETLINK
7971                 {*r = AF_NETLINK; return 0;}
7972 #else /* def AF_NETLINK */
7973                 {errno = EINVAL; return -1;}
7974 #endif /* ndef AF_NETLINK */
7975         if (x == Mono_Posix_UnixAddressFamily_AF_NETROM)
7976 #ifdef AF_NETROM
7977                 {*r = AF_NETROM; return 0;}
7978 #else /* def AF_NETROM */
7979                 {errno = EINVAL; return -1;}
7980 #endif /* ndef AF_NETROM */
7981         if (x == Mono_Posix_UnixAddressFamily_AF_NFC)
7982 #ifdef AF_NFC
7983                 {*r = AF_NFC; return 0;}
7984 #else /* def AF_NFC */
7985                 {errno = EINVAL; return -1;}
7986 #endif /* ndef AF_NFC */
7987         if (x == Mono_Posix_UnixAddressFamily_AF_PACKET)
7988 #ifdef AF_PACKET
7989                 {*r = AF_PACKET; return 0;}
7990 #else /* def AF_PACKET */
7991                 {errno = EINVAL; return -1;}
7992 #endif /* ndef AF_PACKET */
7993         if (x == Mono_Posix_UnixAddressFamily_AF_PHONET)
7994 #ifdef AF_PHONET
7995                 {*r = AF_PHONET; return 0;}
7996 #else /* def AF_PHONET */
7997                 {errno = EINVAL; return -1;}
7998 #endif /* ndef AF_PHONET */
7999         if (x == Mono_Posix_UnixAddressFamily_AF_PPPOX)
8000 #ifdef AF_PPPOX
8001                 {*r = AF_PPPOX; return 0;}
8002 #else /* def AF_PPPOX */
8003                 {errno = EINVAL; return -1;}
8004 #endif /* ndef AF_PPPOX */
8005         if (x == Mono_Posix_UnixAddressFamily_AF_RDS)
8006 #ifdef AF_RDS
8007                 {*r = AF_RDS; return 0;}
8008 #else /* def AF_RDS */
8009                 {errno = EINVAL; return -1;}
8010 #endif /* ndef AF_RDS */
8011         if (x == Mono_Posix_UnixAddressFamily_AF_ROSE)
8012 #ifdef AF_ROSE
8013                 {*r = AF_ROSE; return 0;}
8014 #else /* def AF_ROSE */
8015                 {errno = EINVAL; return -1;}
8016 #endif /* ndef AF_ROSE */
8017         if (x == Mono_Posix_UnixAddressFamily_AF_RXRPC)
8018 #ifdef AF_RXRPC
8019                 {*r = AF_RXRPC; return 0;}
8020 #else /* def AF_RXRPC */
8021                 {errno = EINVAL; return -1;}
8022 #endif /* ndef AF_RXRPC */
8023         if (x == Mono_Posix_UnixAddressFamily_AF_SECURITY)
8024 #ifdef AF_SECURITY
8025                 {*r = AF_SECURITY; return 0;}
8026 #else /* def AF_SECURITY */
8027                 {errno = EINVAL; return -1;}
8028 #endif /* ndef AF_SECURITY */
8029         if (x == Mono_Posix_UnixAddressFamily_AF_SNA)
8030 #ifdef AF_SNA
8031                 {*r = AF_SNA; return 0;}
8032 #else /* def AF_SNA */
8033                 {errno = EINVAL; return -1;}
8034 #endif /* ndef AF_SNA */
8035         if (x == Mono_Posix_UnixAddressFamily_AF_TIPC)
8036 #ifdef AF_TIPC
8037                 {*r = AF_TIPC; return 0;}
8038 #else /* def AF_TIPC */
8039                 {errno = EINVAL; return -1;}
8040 #endif /* ndef AF_TIPC */
8041         if (x == Mono_Posix_UnixAddressFamily_AF_UNIX)
8042 #ifdef AF_UNIX
8043                 {*r = AF_UNIX; return 0;}
8044 #else /* def AF_UNIX */
8045                 {errno = EINVAL; return -1;}
8046 #endif /* ndef AF_UNIX */
8047         if (x == Mono_Posix_UnixAddressFamily_AF_UNSPEC)
8048 #ifdef AF_UNSPEC
8049                 {*r = AF_UNSPEC; return 0;}
8050 #else /* def AF_UNSPEC */
8051                 {errno = EINVAL; return -1;}
8052 #endif /* ndef AF_UNSPEC */
8053         if (x == Mono_Posix_UnixAddressFamily_AF_VSOCK)
8054 #ifdef AF_VSOCK
8055                 {*r = AF_VSOCK; return 0;}
8056 #else /* def AF_VSOCK */
8057                 {errno = EINVAL; return -1;}
8058 #endif /* ndef AF_VSOCK */
8059         if (x == Mono_Posix_UnixAddressFamily_AF_WANPIPE)
8060 #ifdef AF_WANPIPE
8061                 {*r = AF_WANPIPE; return 0;}
8062 #else /* def AF_WANPIPE */
8063                 {errno = EINVAL; return -1;}
8064 #endif /* ndef AF_WANPIPE */
8065         if (x == Mono_Posix_UnixAddressFamily_AF_X25)
8066 #ifdef AF_X25
8067                 {*r = AF_X25; return 0;}
8068 #else /* def AF_X25 */
8069                 {errno = EINVAL; return -1;}
8070 #endif /* ndef AF_X25 */
8071         if (x == Mono_Posix_UnixAddressFamily_Unknown)
8072 #ifdef Unknown
8073                 {*r = Unknown; return 0;}
8074 #else /* def Unknown */
8075                 {errno = EINVAL; return -1;}
8076 #endif /* ndef Unknown */
8077         if (x == 0)
8078                 return 0;
8079         errno = EINVAL; return -1;
8080 }
8081
8082 int Mono_Posix_ToUnixAddressFamily (int x, int *r)
8083 {
8084         *r = 0;
8085         if (x == 0)
8086                 return 0;
8087 #ifdef AF_ALG
8088         if (x == AF_ALG)
8089                 {*r = Mono_Posix_UnixAddressFamily_AF_ALG; return 0;}
8090 #endif /* ndef AF_ALG */
8091 #ifdef AF_APPLETALK
8092         if (x == AF_APPLETALK)
8093                 {*r = Mono_Posix_UnixAddressFamily_AF_APPLETALK; return 0;}
8094 #endif /* ndef AF_APPLETALK */
8095 #ifdef AF_ASH
8096         if (x == AF_ASH)
8097                 {*r = Mono_Posix_UnixAddressFamily_AF_ASH; return 0;}
8098 #endif /* ndef AF_ASH */
8099 #ifdef AF_ATMPVC
8100         if (x == AF_ATMPVC)
8101                 {*r = Mono_Posix_UnixAddressFamily_AF_ATMPVC; return 0;}
8102 #endif /* ndef AF_ATMPVC */
8103 #ifdef AF_ATMSVC
8104         if (x == AF_ATMSVC)
8105                 {*r = Mono_Posix_UnixAddressFamily_AF_ATMSVC; return 0;}
8106 #endif /* ndef AF_ATMSVC */
8107 #ifdef AF_AX25
8108         if (x == AF_AX25)
8109                 {*r = Mono_Posix_UnixAddressFamily_AF_AX25; return 0;}
8110 #endif /* ndef AF_AX25 */
8111 #ifdef AF_BLUETOOTH
8112         if (x == AF_BLUETOOTH)
8113                 {*r = Mono_Posix_UnixAddressFamily_AF_BLUETOOTH; return 0;}
8114 #endif /* ndef AF_BLUETOOTH */
8115 #ifdef AF_BRIDGE
8116         if (x == AF_BRIDGE)
8117                 {*r = Mono_Posix_UnixAddressFamily_AF_BRIDGE; return 0;}
8118 #endif /* ndef AF_BRIDGE */
8119 #ifdef AF_CAIF
8120         if (x == AF_CAIF)
8121                 {*r = Mono_Posix_UnixAddressFamily_AF_CAIF; return 0;}
8122 #endif /* ndef AF_CAIF */
8123 #ifdef AF_CAN
8124         if (x == AF_CAN)
8125                 {*r = Mono_Posix_UnixAddressFamily_AF_CAN; return 0;}
8126 #endif /* ndef AF_CAN */
8127 #ifdef AF_DECnet
8128         if (x == AF_DECnet)
8129                 {*r = Mono_Posix_UnixAddressFamily_AF_DECnet; return 0;}
8130 #endif /* ndef AF_DECnet */
8131 #ifdef AF_ECONET
8132         if (x == AF_ECONET)
8133                 {*r = Mono_Posix_UnixAddressFamily_AF_ECONET; return 0;}
8134 #endif /* ndef AF_ECONET */
8135 #ifdef AF_IEEE802154
8136         if (x == AF_IEEE802154)
8137                 {*r = Mono_Posix_UnixAddressFamily_AF_IEEE802154; return 0;}
8138 #endif /* ndef AF_IEEE802154 */
8139 #ifdef AF_INET
8140         if (x == AF_INET)
8141                 {*r = Mono_Posix_UnixAddressFamily_AF_INET; return 0;}
8142 #endif /* ndef AF_INET */
8143 #ifdef AF_INET6
8144         if (x == AF_INET6)
8145                 {*r = Mono_Posix_UnixAddressFamily_AF_INET6; return 0;}
8146 #endif /* ndef AF_INET6 */
8147 #ifdef AF_IPX
8148         if (x == AF_IPX)
8149                 {*r = Mono_Posix_UnixAddressFamily_AF_IPX; return 0;}
8150 #endif /* ndef AF_IPX */
8151 #ifdef AF_IRDA
8152         if (x == AF_IRDA)
8153                 {*r = Mono_Posix_UnixAddressFamily_AF_IRDA; return 0;}
8154 #endif /* ndef AF_IRDA */
8155 #ifdef AF_ISDN
8156         if (x == AF_ISDN)
8157                 {*r = Mono_Posix_UnixAddressFamily_AF_ISDN; return 0;}
8158 #endif /* ndef AF_ISDN */
8159 #ifdef AF_IUCV
8160         if (x == AF_IUCV)
8161                 {*r = Mono_Posix_UnixAddressFamily_AF_IUCV; return 0;}
8162 #endif /* ndef AF_IUCV */
8163 #ifdef AF_KEY
8164         if (x == AF_KEY)
8165                 {*r = Mono_Posix_UnixAddressFamily_AF_KEY; return 0;}
8166 #endif /* ndef AF_KEY */
8167 #ifdef AF_LLC
8168         if (x == AF_LLC)
8169                 {*r = Mono_Posix_UnixAddressFamily_AF_LLC; return 0;}
8170 #endif /* ndef AF_LLC */
8171 #ifdef AF_NETBEUI
8172         if (x == AF_NETBEUI)
8173                 {*r = Mono_Posix_UnixAddressFamily_AF_NETBEUI; return 0;}
8174 #endif /* ndef AF_NETBEUI */
8175 #ifdef AF_NETLINK
8176         if (x == AF_NETLINK)
8177                 {*r = Mono_Posix_UnixAddressFamily_AF_NETLINK; return 0;}
8178 #endif /* ndef AF_NETLINK */
8179 #ifdef AF_NETROM
8180         if (x == AF_NETROM)
8181                 {*r = Mono_Posix_UnixAddressFamily_AF_NETROM; return 0;}
8182 #endif /* ndef AF_NETROM */
8183 #ifdef AF_NFC
8184         if (x == AF_NFC)
8185                 {*r = Mono_Posix_UnixAddressFamily_AF_NFC; return 0;}
8186 #endif /* ndef AF_NFC */
8187 #ifdef AF_PACKET
8188         if (x == AF_PACKET)
8189                 {*r = Mono_Posix_UnixAddressFamily_AF_PACKET; return 0;}
8190 #endif /* ndef AF_PACKET */
8191 #ifdef AF_PHONET
8192         if (x == AF_PHONET)
8193                 {*r = Mono_Posix_UnixAddressFamily_AF_PHONET; return 0;}
8194 #endif /* ndef AF_PHONET */
8195 #ifdef AF_PPPOX
8196         if (x == AF_PPPOX)
8197                 {*r = Mono_Posix_UnixAddressFamily_AF_PPPOX; return 0;}
8198 #endif /* ndef AF_PPPOX */
8199 #ifdef AF_RDS
8200         if (x == AF_RDS)
8201                 {*r = Mono_Posix_UnixAddressFamily_AF_RDS; return 0;}
8202 #endif /* ndef AF_RDS */
8203 #ifdef AF_ROSE
8204         if (x == AF_ROSE)
8205                 {*r = Mono_Posix_UnixAddressFamily_AF_ROSE; return 0;}
8206 #endif /* ndef AF_ROSE */
8207 #ifdef AF_RXRPC
8208         if (x == AF_RXRPC)
8209                 {*r = Mono_Posix_UnixAddressFamily_AF_RXRPC; return 0;}
8210 #endif /* ndef AF_RXRPC */
8211 #ifdef AF_SECURITY
8212         if (x == AF_SECURITY)
8213                 {*r = Mono_Posix_UnixAddressFamily_AF_SECURITY; return 0;}
8214 #endif /* ndef AF_SECURITY */
8215 #ifdef AF_SNA
8216         if (x == AF_SNA)
8217                 {*r = Mono_Posix_UnixAddressFamily_AF_SNA; return 0;}
8218 #endif /* ndef AF_SNA */
8219 #ifdef AF_TIPC
8220         if (x == AF_TIPC)
8221                 {*r = Mono_Posix_UnixAddressFamily_AF_TIPC; return 0;}
8222 #endif /* ndef AF_TIPC */
8223 #ifdef AF_UNIX
8224         if (x == AF_UNIX)
8225                 {*r = Mono_Posix_UnixAddressFamily_AF_UNIX; return 0;}
8226 #endif /* ndef AF_UNIX */
8227 #ifdef AF_UNSPEC
8228         if (x == AF_UNSPEC)
8229                 {*r = Mono_Posix_UnixAddressFamily_AF_UNSPEC; return 0;}
8230 #endif /* ndef AF_UNSPEC */
8231 #ifdef AF_VSOCK
8232         if (x == AF_VSOCK)
8233                 {*r = Mono_Posix_UnixAddressFamily_AF_VSOCK; return 0;}
8234 #endif /* ndef AF_VSOCK */
8235 #ifdef AF_WANPIPE
8236         if (x == AF_WANPIPE)
8237                 {*r = Mono_Posix_UnixAddressFamily_AF_WANPIPE; return 0;}
8238 #endif /* ndef AF_WANPIPE */
8239 #ifdef AF_X25
8240         if (x == AF_X25)
8241                 {*r = Mono_Posix_UnixAddressFamily_AF_X25; return 0;}
8242 #endif /* ndef AF_X25 */
8243 #ifdef Unknown
8244         if (x == Unknown)
8245                 {*r = Mono_Posix_UnixAddressFamily_Unknown; return 0;}
8246 #endif /* ndef Unknown */
8247         errno = EINVAL; return -1;
8248 }
8249
8250 int Mono_Posix_FromUnixSocketFlags (int x, int *r)
8251 {
8252         *r = 0;
8253         if ((x & Mono_Posix_UnixSocketFlags_SOCK_CLOEXEC) == Mono_Posix_UnixSocketFlags_SOCK_CLOEXEC)
8254 #ifdef SOCK_CLOEXEC
8255                 *r |= SOCK_CLOEXEC;
8256 #else /* def SOCK_CLOEXEC */
8257                 {errno = EINVAL; return -1;}
8258 #endif /* ndef SOCK_CLOEXEC */
8259         if ((x & Mono_Posix_UnixSocketFlags_SOCK_NONBLOCK) == Mono_Posix_UnixSocketFlags_SOCK_NONBLOCK)
8260 #ifdef SOCK_NONBLOCK
8261                 *r |= SOCK_NONBLOCK;
8262 #else /* def SOCK_NONBLOCK */
8263                 {errno = EINVAL; return -1;}
8264 #endif /* ndef SOCK_NONBLOCK */
8265         if (x == 0)
8266                 return 0;
8267         return 0;
8268 }
8269
8270 int Mono_Posix_ToUnixSocketFlags (int x, int *r)
8271 {
8272         *r = 0;
8273         if (x == 0)
8274                 return 0;
8275 #ifdef SOCK_CLOEXEC
8276         if ((x & SOCK_CLOEXEC) == SOCK_CLOEXEC)
8277                 *r |= Mono_Posix_UnixSocketFlags_SOCK_CLOEXEC;
8278 #endif /* ndef SOCK_CLOEXEC */
8279 #ifdef SOCK_NONBLOCK
8280         if ((x & SOCK_NONBLOCK) == SOCK_NONBLOCK)
8281                 *r |= Mono_Posix_UnixSocketFlags_SOCK_NONBLOCK;
8282 #endif /* ndef SOCK_NONBLOCK */
8283         return 0;
8284 }
8285
8286 int Mono_Posix_FromUnixSocketOptionName (int x, int *r)
8287 {
8288         *r = 0;
8289         if (x == Mono_Posix_UnixSocketOptionName_SO_ACCEPTCONN)
8290 #ifdef SO_ACCEPTCONN
8291                 {*r = SO_ACCEPTCONN; return 0;}
8292 #else /* def SO_ACCEPTCONN */
8293                 {errno = EINVAL; return -1;}
8294 #endif /* ndef SO_ACCEPTCONN */
8295         if (x == Mono_Posix_UnixSocketOptionName_SO_ATTACH_FILTER)
8296 #ifdef SO_ATTACH_FILTER
8297                 {*r = SO_ATTACH_FILTER; return 0;}
8298 #else /* def SO_ATTACH_FILTER */
8299                 {errno = EINVAL; return -1;}
8300 #endif /* ndef SO_ATTACH_FILTER */
8301         if (x == Mono_Posix_UnixSocketOptionName_SO_BINDTODEVICE)
8302 #ifdef SO_BINDTODEVICE
8303                 {*r = SO_BINDTODEVICE; return 0;}
8304 #else /* def SO_BINDTODEVICE */
8305                 {errno = EINVAL; return -1;}
8306 #endif /* ndef SO_BINDTODEVICE */
8307         if (x == Mono_Posix_UnixSocketOptionName_SO_BROADCAST)
8308 #ifdef SO_BROADCAST
8309                 {*r = SO_BROADCAST; return 0;}
8310 #else /* def SO_BROADCAST */
8311                 {errno = EINVAL; return -1;}
8312 #endif /* ndef SO_BROADCAST */
8313         if (x == Mono_Posix_UnixSocketOptionName_SO_BSDCOMPAT)
8314 #ifdef SO_BSDCOMPAT
8315                 {*r = SO_BSDCOMPAT; return 0;}
8316 #else /* def SO_BSDCOMPAT */
8317                 {errno = EINVAL; return -1;}
8318 #endif /* ndef SO_BSDCOMPAT */
8319         if (x == Mono_Posix_UnixSocketOptionName_SO_BUSY_POLL)
8320 #ifdef SO_BUSY_POLL
8321                 {*r = SO_BUSY_POLL; return 0;}
8322 #else /* def SO_BUSY_POLL */
8323                 {errno = EINVAL; return -1;}
8324 #endif /* ndef SO_BUSY_POLL */
8325         if (x == Mono_Posix_UnixSocketOptionName_SO_DEBUG)
8326 #ifdef SO_DEBUG
8327                 {*r = SO_DEBUG; return 0;}
8328 #else /* def SO_DEBUG */
8329                 {errno = EINVAL; return -1;}
8330 #endif /* ndef SO_DEBUG */
8331         if (x == Mono_Posix_UnixSocketOptionName_SO_DETACH_FILTER)
8332 #ifdef SO_DETACH_FILTER
8333                 {*r = SO_DETACH_FILTER; return 0;}
8334 #else /* def SO_DETACH_FILTER */
8335                 {errno = EINVAL; return -1;}
8336 #endif /* ndef SO_DETACH_FILTER */
8337         if (x == Mono_Posix_UnixSocketOptionName_SO_DOMAIN)
8338 #ifdef SO_DOMAIN
8339                 {*r = SO_DOMAIN; return 0;}
8340 #else /* def SO_DOMAIN */
8341                 {errno = EINVAL; return -1;}
8342 #endif /* ndef SO_DOMAIN */
8343         if (x == Mono_Posix_UnixSocketOptionName_SO_DONTROUTE)
8344 #ifdef SO_DONTROUTE
8345                 {*r = SO_DONTROUTE; return 0;}
8346 #else /* def SO_DONTROUTE */
8347                 {errno = EINVAL; return -1;}
8348 #endif /* ndef SO_DONTROUTE */
8349         if (x == Mono_Posix_UnixSocketOptionName_SO_ERROR)
8350 #ifdef SO_ERROR
8351                 {*r = SO_ERROR; return 0;}
8352 #else /* def SO_ERROR */
8353                 {errno = EINVAL; return -1;}
8354 #endif /* ndef SO_ERROR */
8355         if (x == Mono_Posix_UnixSocketOptionName_SO_KEEPALIVE)
8356 #ifdef SO_KEEPALIVE
8357                 {*r = SO_KEEPALIVE; return 0;}
8358 #else /* def SO_KEEPALIVE */
8359                 {errno = EINVAL; return -1;}
8360 #endif /* ndef SO_KEEPALIVE */
8361         if (x == Mono_Posix_UnixSocketOptionName_SO_LINGER)
8362 #ifdef SO_LINGER
8363                 {*r = SO_LINGER; return 0;}
8364 #else /* def SO_LINGER */
8365                 {errno = EINVAL; return -1;}
8366 #endif /* ndef SO_LINGER */
8367         if (x == Mono_Posix_UnixSocketOptionName_SO_LOCK_FILTER)
8368 #ifdef SO_LOCK_FILTER
8369                 {*r = SO_LOCK_FILTER; return 0;}
8370 #else /* def SO_LOCK_FILTER */
8371                 {errno = EINVAL; return -1;}
8372 #endif /* ndef SO_LOCK_FILTER */
8373         if (x == Mono_Posix_UnixSocketOptionName_SO_MARK)
8374 #ifdef SO_MARK
8375                 {*r = SO_MARK; return 0;}
8376 #else /* def SO_MARK */
8377                 {errno = EINVAL; return -1;}
8378 #endif /* ndef SO_MARK */
8379         if (x == Mono_Posix_UnixSocketOptionName_SO_MAX_PACING_RATE)
8380 #ifdef SO_MAX_PACING_RATE
8381                 {*r = SO_MAX_PACING_RATE; return 0;}
8382 #else /* def SO_MAX_PACING_RATE */
8383                 {errno = EINVAL; return -1;}
8384 #endif /* ndef SO_MAX_PACING_RATE */
8385         if (x == Mono_Posix_UnixSocketOptionName_SO_NOFCS)
8386 #ifdef SO_NOFCS
8387                 {*r = SO_NOFCS; return 0;}
8388 #else /* def SO_NOFCS */
8389                 {errno = EINVAL; return -1;}
8390 #endif /* ndef SO_NOFCS */
8391         if (x == Mono_Posix_UnixSocketOptionName_SO_NO_CHECK)
8392 #ifdef SO_NO_CHECK
8393                 {*r = SO_NO_CHECK; return 0;}
8394 #else /* def SO_NO_CHECK */
8395                 {errno = EINVAL; return -1;}
8396 #endif /* ndef SO_NO_CHECK */
8397         if (x == Mono_Posix_UnixSocketOptionName_SO_OOBINLINE)
8398 #ifdef SO_OOBINLINE
8399                 {*r = SO_OOBINLINE; return 0;}
8400 #else /* def SO_OOBINLINE */
8401                 {errno = EINVAL; return -1;}
8402 #endif /* ndef SO_OOBINLINE */
8403         if (x == Mono_Posix_UnixSocketOptionName_SO_PASSCRED)
8404 #ifdef SO_PASSCRED
8405                 {*r = SO_PASSCRED; return 0;}
8406 #else /* def SO_PASSCRED */
8407                 {errno = EINVAL; return -1;}
8408 #endif /* ndef SO_PASSCRED */
8409         if (x == Mono_Posix_UnixSocketOptionName_SO_PASSSEC)
8410 #ifdef SO_PASSSEC
8411                 {*r = SO_PASSSEC; return 0;}
8412 #else /* def SO_PASSSEC */
8413                 {errno = EINVAL; return -1;}
8414 #endif /* ndef SO_PASSSEC */
8415         if (x == Mono_Posix_UnixSocketOptionName_SO_PEEK_OFF)
8416 #ifdef SO_PEEK_OFF
8417                 {*r = SO_PEEK_OFF; return 0;}
8418 #else /* def SO_PEEK_OFF */
8419                 {errno = EINVAL; return -1;}
8420 #endif /* ndef SO_PEEK_OFF */
8421         if (x == Mono_Posix_UnixSocketOptionName_SO_PEERCRED)
8422 #ifdef SO_PEERCRED
8423                 {*r = SO_PEERCRED; return 0;}
8424 #else /* def SO_PEERCRED */
8425                 {errno = EINVAL; return -1;}
8426 #endif /* ndef SO_PEERCRED */
8427         if (x == Mono_Posix_UnixSocketOptionName_SO_PEERNAME)
8428 #ifdef SO_PEERNAME
8429                 {*r = SO_PEERNAME; return 0;}
8430 #else /* def SO_PEERNAME */
8431                 {errno = EINVAL; return -1;}
8432 #endif /* ndef SO_PEERNAME */
8433         if (x == Mono_Posix_UnixSocketOptionName_SO_PEERSEC)
8434 #ifdef SO_PEERSEC
8435                 {*r = SO_PEERSEC; return 0;}
8436 #else /* def SO_PEERSEC */
8437                 {errno = EINVAL; return -1;}
8438 #endif /* ndef SO_PEERSEC */
8439         if (x == Mono_Posix_UnixSocketOptionName_SO_PRIORITY)
8440 #ifdef SO_PRIORITY
8441                 {*r = SO_PRIORITY; return 0;}
8442 #else /* def SO_PRIORITY */
8443                 {errno = EINVAL; return -1;}
8444 #endif /* ndef SO_PRIORITY */
8445         if (x == Mono_Posix_UnixSocketOptionName_SO_PROTOCOL)
8446 #ifdef SO_PROTOCOL
8447                 {*r = SO_PROTOCOL; return 0;}
8448 #else /* def SO_PROTOCOL */
8449                 {errno = EINVAL; return -1;}
8450 #endif /* ndef SO_PROTOCOL */
8451         if (x == Mono_Posix_UnixSocketOptionName_SO_RCVBUF)
8452 #ifdef SO_RCVBUF
8453                 {*r = SO_RCVBUF; return 0;}
8454 #else /* def SO_RCVBUF */
8455                 {errno = EINVAL; return -1;}
8456 #endif /* ndef SO_RCVBUF */
8457         if (x == Mono_Posix_UnixSocketOptionName_SO_RCVBUFFORCE)
8458 #ifdef SO_RCVBUFFORCE
8459                 {*r = SO_RCVBUFFORCE; return 0;}
8460 #else /* def SO_RCVBUFFORCE */
8461                 {errno = EINVAL; return -1;}
8462 #endif /* ndef SO_RCVBUFFORCE */
8463         if (x == Mono_Posix_UnixSocketOptionName_SO_RCVLOWAT)
8464 #ifdef SO_RCVLOWAT
8465                 {*r = SO_RCVLOWAT; return 0;}
8466 #else /* def SO_RCVLOWAT */
8467                 {errno = EINVAL; return -1;}
8468 #endif /* ndef SO_RCVLOWAT */
8469         if (x == Mono_Posix_UnixSocketOptionName_SO_RCVTIMEO)
8470 #ifdef SO_RCVTIMEO
8471                 {*r = SO_RCVTIMEO; return 0;}
8472 #else /* def SO_RCVTIMEO */
8473                 {errno = EINVAL; return -1;}
8474 #endif /* ndef SO_RCVTIMEO */
8475         if (x == Mono_Posix_UnixSocketOptionName_SO_REUSEADDR)
8476 #ifdef SO_REUSEADDR
8477                 {*r = SO_REUSEADDR; return 0;}
8478 #else /* def SO_REUSEADDR */
8479                 {errno = EINVAL; return -1;}
8480 #endif /* ndef SO_REUSEADDR */
8481         if (x == Mono_Posix_UnixSocketOptionName_SO_REUSEPORT)
8482 #ifdef SO_REUSEPORT
8483                 {*r = SO_REUSEPORT; return 0;}
8484 #else /* def SO_REUSEPORT */
8485                 {errno = EINVAL; return -1;}
8486 #endif /* ndef SO_REUSEPORT */
8487         if (x == Mono_Posix_UnixSocketOptionName_SO_RXQ_OVFL)
8488 #ifdef SO_RXQ_OVFL
8489                 {*r = SO_RXQ_OVFL; return 0;}
8490 #else /* def SO_RXQ_OVFL */
8491                 {errno = EINVAL; return -1;}
8492 #endif /* ndef SO_RXQ_OVFL */
8493         if (x == Mono_Posix_UnixSocketOptionName_SO_SECURITY_AUTHENTICATION)
8494 #ifdef SO_SECURITY_AUTHENTICATION
8495                 {*r = SO_SECURITY_AUTHENTICATION; return 0;}
8496 #else /* def SO_SECURITY_AUTHENTICATION */
8497                 {errno = EINVAL; return -1;}
8498 #endif /* ndef SO_SECURITY_AUTHENTICATION */
8499         if (x == Mono_Posix_UnixSocketOptionName_SO_SECURITY_ENCRYPTION_NETWORK)
8500 #ifdef SO_SECURITY_ENCRYPTION_NETWORK
8501                 {*r = SO_SECURITY_ENCRYPTION_NETWORK; return 0;}
8502 #else /* def SO_SECURITY_ENCRYPTION_NETWORK */
8503                 {errno = EINVAL; return -1;}
8504 #endif /* ndef SO_SECURITY_ENCRYPTION_NETWORK */
8505         if (x == Mono_Posix_UnixSocketOptionName_SO_SECURITY_ENCRYPTION_TRANSPORT)
8506 #ifdef SO_SECURITY_ENCRYPTION_TRANSPORT
8507                 {*r = SO_SECURITY_ENCRYPTION_TRANSPORT; return 0;}
8508 #else /* def SO_SECURITY_ENCRYPTION_TRANSPORT */
8509                 {errno = EINVAL; return -1;}
8510 #endif /* ndef SO_SECURITY_ENCRYPTION_TRANSPORT */
8511         if (x == Mono_Posix_UnixSocketOptionName_SO_SELECT_ERR_QUEUE)
8512 #ifdef SO_SELECT_ERR_QUEUE
8513                 {*r = SO_SELECT_ERR_QUEUE; return 0;}
8514 #else /* def SO_SELECT_ERR_QUEUE */
8515                 {errno = EINVAL; return -1;}
8516 #endif /* ndef SO_SELECT_ERR_QUEUE */
8517         if (x == Mono_Posix_UnixSocketOptionName_SO_SNDBUF)
8518 #ifdef SO_SNDBUF
8519                 {*r = SO_SNDBUF; return 0;}
8520 #else /* def SO_SNDBUF */
8521                 {errno = EINVAL; return -1;}
8522 #endif /* ndef SO_SNDBUF */
8523         if (x == Mono_Posix_UnixSocketOptionName_SO_SNDBUFFORCE)
8524 #ifdef SO_SNDBUFFORCE
8525                 {*r = SO_SNDBUFFORCE; return 0;}
8526 #else /* def SO_SNDBUFFORCE */
8527                 {errno = EINVAL; return -1;}
8528 #endif /* ndef SO_SNDBUFFORCE */
8529         if (x == Mono_Posix_UnixSocketOptionName_SO_SNDLOWAT)
8530 #ifdef SO_SNDLOWAT
8531                 {*r = SO_SNDLOWAT; return 0;}
8532 #else /* def SO_SNDLOWAT */
8533                 {errno = EINVAL; return -1;}
8534 #endif /* ndef SO_SNDLOWAT */
8535         if (x == Mono_Posix_UnixSocketOptionName_SO_SNDTIMEO)
8536 #ifdef SO_SNDTIMEO
8537                 {*r = SO_SNDTIMEO; return 0;}
8538 #else /* def SO_SNDTIMEO */
8539                 {errno = EINVAL; return -1;}
8540 #endif /* ndef SO_SNDTIMEO */
8541         if (x == Mono_Posix_UnixSocketOptionName_SO_TIMESTAMP)
8542 #ifdef SO_TIMESTAMP
8543                 {*r = SO_TIMESTAMP; return 0;}
8544 #else /* def SO_TIMESTAMP */
8545                 {errno = EINVAL; return -1;}
8546 #endif /* ndef SO_TIMESTAMP */
8547         if (x == Mono_Posix_UnixSocketOptionName_SO_TIMESTAMPING)
8548 #ifdef SO_TIMESTAMPING
8549                 {*r = SO_TIMESTAMPING; return 0;}
8550 #else /* def SO_TIMESTAMPING */
8551                 {errno = EINVAL; return -1;}
8552 #endif /* ndef SO_TIMESTAMPING */
8553         if (x == Mono_Posix_UnixSocketOptionName_SO_TIMESTAMPNS)
8554 #ifdef SO_TIMESTAMPNS
8555                 {*r = SO_TIMESTAMPNS; return 0;}
8556 #else /* def SO_TIMESTAMPNS */
8557                 {errno = EINVAL; return -1;}
8558 #endif /* ndef SO_TIMESTAMPNS */
8559         if (x == Mono_Posix_UnixSocketOptionName_SO_TYPE)
8560 #ifdef SO_TYPE
8561                 {*r = SO_TYPE; return 0;}
8562 #else /* def SO_TYPE */
8563                 {errno = EINVAL; return -1;}
8564 #endif /* ndef SO_TYPE */
8565         if (x == Mono_Posix_UnixSocketOptionName_SO_WIFI_STATUS)
8566 #ifdef SO_WIFI_STATUS
8567                 {*r = SO_WIFI_STATUS; return 0;}
8568 #else /* def SO_WIFI_STATUS */
8569                 {errno = EINVAL; return -1;}
8570 #endif /* ndef SO_WIFI_STATUS */
8571         if (x == 0)
8572                 return 0;
8573         errno = EINVAL; return -1;
8574 }
8575
8576 int Mono_Posix_ToUnixSocketOptionName (int x, int *r)
8577 {
8578         *r = 0;
8579         if (x == 0)
8580                 return 0;
8581 #ifdef SO_ACCEPTCONN
8582         if (x == SO_ACCEPTCONN)
8583                 {*r = Mono_Posix_UnixSocketOptionName_SO_ACCEPTCONN; return 0;}
8584 #endif /* ndef SO_ACCEPTCONN */
8585 #ifdef SO_ATTACH_FILTER
8586         if (x == SO_ATTACH_FILTER)
8587                 {*r = Mono_Posix_UnixSocketOptionName_SO_ATTACH_FILTER; return 0;}
8588 #endif /* ndef SO_ATTACH_FILTER */
8589 #ifdef SO_BINDTODEVICE
8590         if (x == SO_BINDTODEVICE)
8591                 {*r = Mono_Posix_UnixSocketOptionName_SO_BINDTODEVICE; return 0;}
8592 #endif /* ndef SO_BINDTODEVICE */
8593 #ifdef SO_BROADCAST
8594         if (x == SO_BROADCAST)
8595                 {*r = Mono_Posix_UnixSocketOptionName_SO_BROADCAST; return 0;}
8596 #endif /* ndef SO_BROADCAST */
8597 #ifdef SO_BSDCOMPAT
8598         if (x == SO_BSDCOMPAT)
8599                 {*r = Mono_Posix_UnixSocketOptionName_SO_BSDCOMPAT; return 0;}
8600 #endif /* ndef SO_BSDCOMPAT */
8601 #ifdef SO_BUSY_POLL
8602         if (x == SO_BUSY_POLL)
8603                 {*r = Mono_Posix_UnixSocketOptionName_SO_BUSY_POLL; return 0;}
8604 #endif /* ndef SO_BUSY_POLL */
8605 #ifdef SO_DEBUG
8606         if (x == SO_DEBUG)
8607                 {*r = Mono_Posix_UnixSocketOptionName_SO_DEBUG; return 0;}
8608 #endif /* ndef SO_DEBUG */
8609 #ifdef SO_DETACH_FILTER
8610         if (x == SO_DETACH_FILTER)
8611                 {*r = Mono_Posix_UnixSocketOptionName_SO_DETACH_FILTER; return 0;}
8612 #endif /* ndef SO_DETACH_FILTER */
8613 #ifdef SO_DOMAIN
8614         if (x == SO_DOMAIN)
8615                 {*r = Mono_Posix_UnixSocketOptionName_SO_DOMAIN; return 0;}
8616 #endif /* ndef SO_DOMAIN */
8617 #ifdef SO_DONTROUTE
8618         if (x == SO_DONTROUTE)
8619                 {*r = Mono_Posix_UnixSocketOptionName_SO_DONTROUTE; return 0;}
8620 #endif /* ndef SO_DONTROUTE */
8621 #ifdef SO_ERROR
8622         if (x == SO_ERROR)
8623                 {*r = Mono_Posix_UnixSocketOptionName_SO_ERROR; return 0;}
8624 #endif /* ndef SO_ERROR */
8625 #ifdef SO_KEEPALIVE
8626         if (x == SO_KEEPALIVE)
8627                 {*r = Mono_Posix_UnixSocketOptionName_SO_KEEPALIVE; return 0;}
8628 #endif /* ndef SO_KEEPALIVE */
8629 #ifdef SO_LINGER
8630         if (x == SO_LINGER)
8631                 {*r = Mono_Posix_UnixSocketOptionName_SO_LINGER; return 0;}
8632 #endif /* ndef SO_LINGER */
8633 #ifdef SO_LOCK_FILTER
8634         if (x == SO_LOCK_FILTER)
8635                 {*r = Mono_Posix_UnixSocketOptionName_SO_LOCK_FILTER; return 0;}
8636 #endif /* ndef SO_LOCK_FILTER */
8637 #ifdef SO_MARK
8638         if (x == SO_MARK)
8639                 {*r = Mono_Posix_UnixSocketOptionName_SO_MARK; return 0;}
8640 #endif /* ndef SO_MARK */
8641 #ifdef SO_MAX_PACING_RATE
8642         if (x == SO_MAX_PACING_RATE)
8643                 {*r = Mono_Posix_UnixSocketOptionName_SO_MAX_PACING_RATE; return 0;}
8644 #endif /* ndef SO_MAX_PACING_RATE */
8645 #ifdef SO_NOFCS
8646         if (x == SO_NOFCS)
8647                 {*r = Mono_Posix_UnixSocketOptionName_SO_NOFCS; return 0;}
8648 #endif /* ndef SO_NOFCS */
8649 #ifdef SO_NO_CHECK
8650         if (x == SO_NO_CHECK)
8651                 {*r = Mono_Posix_UnixSocketOptionName_SO_NO_CHECK; return 0;}
8652 #endif /* ndef SO_NO_CHECK */
8653 #ifdef SO_OOBINLINE
8654         if (x == SO_OOBINLINE)
8655                 {*r = Mono_Posix_UnixSocketOptionName_SO_OOBINLINE; return 0;}
8656 #endif /* ndef SO_OOBINLINE */
8657 #ifdef SO_PASSCRED
8658         if (x == SO_PASSCRED)
8659                 {*r = Mono_Posix_UnixSocketOptionName_SO_PASSCRED; return 0;}
8660 #endif /* ndef SO_PASSCRED */
8661 #ifdef SO_PASSSEC
8662         if (x == SO_PASSSEC)
8663                 {*r = Mono_Posix_UnixSocketOptionName_SO_PASSSEC; return 0;}
8664 #endif /* ndef SO_PASSSEC */
8665 #ifdef SO_PEEK_OFF
8666         if (x == SO_PEEK_OFF)
8667                 {*r = Mono_Posix_UnixSocketOptionName_SO_PEEK_OFF; return 0;}
8668 #endif /* ndef SO_PEEK_OFF */
8669 #ifdef SO_PEERCRED
8670         if (x == SO_PEERCRED)
8671                 {*r = Mono_Posix_UnixSocketOptionName_SO_PEERCRED; return 0;}
8672 #endif /* ndef SO_PEERCRED */
8673 #ifdef SO_PEERNAME
8674         if (x == SO_PEERNAME)
8675                 {*r = Mono_Posix_UnixSocketOptionName_SO_PEERNAME; return 0;}
8676 #endif /* ndef SO_PEERNAME */
8677 #ifdef SO_PEERSEC
8678         if (x == SO_PEERSEC)
8679                 {*r = Mono_Posix_UnixSocketOptionName_SO_PEERSEC; return 0;}
8680 #endif /* ndef SO_PEERSEC */
8681 #ifdef SO_PRIORITY
8682         if (x == SO_PRIORITY)
8683                 {*r = Mono_Posix_UnixSocketOptionName_SO_PRIORITY; return 0;}
8684 #endif /* ndef SO_PRIORITY */
8685 #ifdef SO_PROTOCOL
8686         if (x == SO_PROTOCOL)
8687                 {*r = Mono_Posix_UnixSocketOptionName_SO_PROTOCOL; return 0;}
8688 #endif /* ndef SO_PROTOCOL */
8689 #ifdef SO_RCVBUF
8690         if (x == SO_RCVBUF)
8691                 {*r = Mono_Posix_UnixSocketOptionName_SO_RCVBUF; return 0;}
8692 #endif /* ndef SO_RCVBUF */
8693 #ifdef SO_RCVBUFFORCE
8694         if (x == SO_RCVBUFFORCE)
8695                 {*r = Mono_Posix_UnixSocketOptionName_SO_RCVBUFFORCE; return 0;}
8696 #endif /* ndef SO_RCVBUFFORCE */
8697 #ifdef SO_RCVLOWAT
8698         if (x == SO_RCVLOWAT)
8699                 {*r = Mono_Posix_UnixSocketOptionName_SO_RCVLOWAT; return 0;}
8700 #endif /* ndef SO_RCVLOWAT */
8701 #ifdef SO_RCVTIMEO
8702         if (x == SO_RCVTIMEO)
8703                 {*r = Mono_Posix_UnixSocketOptionName_SO_RCVTIMEO; return 0;}
8704 #endif /* ndef SO_RCVTIMEO */
8705 #ifdef SO_REUSEADDR
8706         if (x == SO_REUSEADDR)
8707                 {*r = Mono_Posix_UnixSocketOptionName_SO_REUSEADDR; return 0;}
8708 #endif /* ndef SO_REUSEADDR */
8709 #ifdef SO_REUSEPORT
8710         if (x == SO_REUSEPORT)
8711                 {*r = Mono_Posix_UnixSocketOptionName_SO_REUSEPORT; return 0;}
8712 #endif /* ndef SO_REUSEPORT */
8713 #ifdef SO_RXQ_OVFL
8714         if (x == SO_RXQ_OVFL)
8715                 {*r = Mono_Posix_UnixSocketOptionName_SO_RXQ_OVFL; return 0;}
8716 #endif /* ndef SO_RXQ_OVFL */
8717 #ifdef SO_SECURITY_AUTHENTICATION
8718         if (x == SO_SECURITY_AUTHENTICATION)
8719                 {*r = Mono_Posix_UnixSocketOptionName_SO_SECURITY_AUTHENTICATION; return 0;}
8720 #endif /* ndef SO_SECURITY_AUTHENTICATION */
8721 #ifdef SO_SECURITY_ENCRYPTION_NETWORK
8722         if (x == SO_SECURITY_ENCRYPTION_NETWORK)
8723                 {*r = Mono_Posix_UnixSocketOptionName_SO_SECURITY_ENCRYPTION_NETWORK; return 0;}
8724 #endif /* ndef SO_SECURITY_ENCRYPTION_NETWORK */
8725 #ifdef SO_SECURITY_ENCRYPTION_TRANSPORT
8726         if (x == SO_SECURITY_ENCRYPTION_TRANSPORT)
8727                 {*r = Mono_Posix_UnixSocketOptionName_SO_SECURITY_ENCRYPTION_TRANSPORT; return 0;}
8728 #endif /* ndef SO_SECURITY_ENCRYPTION_TRANSPORT */
8729 #ifdef SO_SELECT_ERR_QUEUE
8730         if (x == SO_SELECT_ERR_QUEUE)
8731                 {*r = Mono_Posix_UnixSocketOptionName_SO_SELECT_ERR_QUEUE; return 0;}
8732 #endif /* ndef SO_SELECT_ERR_QUEUE */
8733 #ifdef SO_SNDBUF
8734         if (x == SO_SNDBUF)
8735                 {*r = Mono_Posix_UnixSocketOptionName_SO_SNDBUF; return 0;}
8736 #endif /* ndef SO_SNDBUF */
8737 #ifdef SO_SNDBUFFORCE
8738         if (x == SO_SNDBUFFORCE)
8739                 {*r = Mono_Posix_UnixSocketOptionName_SO_SNDBUFFORCE; return 0;}
8740 #endif /* ndef SO_SNDBUFFORCE */
8741 #ifdef SO_SNDLOWAT
8742         if (x == SO_SNDLOWAT)
8743                 {*r = Mono_Posix_UnixSocketOptionName_SO_SNDLOWAT; return 0;}
8744 #endif /* ndef SO_SNDLOWAT */
8745 #ifdef SO_SNDTIMEO
8746         if (x == SO_SNDTIMEO)
8747                 {*r = Mono_Posix_UnixSocketOptionName_SO_SNDTIMEO; return 0;}
8748 #endif /* ndef SO_SNDTIMEO */
8749 #ifdef SO_TIMESTAMP
8750         if (x == SO_TIMESTAMP)
8751                 {*r = Mono_Posix_UnixSocketOptionName_SO_TIMESTAMP; return 0;}
8752 #endif /* ndef SO_TIMESTAMP */
8753 #ifdef SO_TIMESTAMPING
8754         if (x == SO_TIMESTAMPING)
8755                 {*r = Mono_Posix_UnixSocketOptionName_SO_TIMESTAMPING; return 0;}
8756 #endif /* ndef SO_TIMESTAMPING */
8757 #ifdef SO_TIMESTAMPNS
8758         if (x == SO_TIMESTAMPNS)
8759                 {*r = Mono_Posix_UnixSocketOptionName_SO_TIMESTAMPNS; return 0;}
8760 #endif /* ndef SO_TIMESTAMPNS */
8761 #ifdef SO_TYPE
8762         if (x == SO_TYPE)
8763                 {*r = Mono_Posix_UnixSocketOptionName_SO_TYPE; return 0;}
8764 #endif /* ndef SO_TYPE */
8765 #ifdef SO_WIFI_STATUS
8766         if (x == SO_WIFI_STATUS)
8767                 {*r = Mono_Posix_UnixSocketOptionName_SO_WIFI_STATUS; return 0;}
8768 #endif /* ndef SO_WIFI_STATUS */
8769         errno = EINVAL; return -1;
8770 }
8771
8772 int Mono_Posix_FromUnixSocketProtocol (int x, int *r)
8773 {
8774         *r = 0;
8775         if (x == Mono_Posix_UnixSocketProtocol_IPPROTO_AH)
8776 #ifdef IPPROTO_AH
8777                 {*r = IPPROTO_AH; return 0;}
8778 #else /* def IPPROTO_AH */
8779                 {errno = EINVAL; return -1;}
8780 #endif /* ndef IPPROTO_AH */
8781         if (x == Mono_Posix_UnixSocketProtocol_IPPROTO_BEETPH)
8782 #ifdef IPPROTO_BEETPH
8783                 {*r = IPPROTO_BEETPH; return 0;}
8784 #else /* def IPPROTO_BEETPH */
8785                 {errno = EINVAL; return -1;}
8786 #endif /* ndef IPPROTO_BEETPH */
8787         if (x == Mono_Posix_UnixSocketProtocol_IPPROTO_COMP)
8788 #ifdef IPPROTO_COMP
8789                 {*r = IPPROTO_COMP; return 0;}
8790 #else /* def IPPROTO_COMP */
8791                 {errno = EINVAL; return -1;}
8792 #endif /* ndef IPPROTO_COMP */
8793         if (x == Mono_Posix_UnixSocketProtocol_IPPROTO_DCCP)
8794 #ifdef IPPROTO_DCCP
8795                 {*r = IPPROTO_DCCP; return 0;}
8796 #else /* def IPPROTO_DCCP */
8797                 {errno = EINVAL; return -1;}
8798 #endif /* ndef IPPROTO_DCCP */
8799         if (x == Mono_Posix_UnixSocketProtocol_IPPROTO_EGP)
8800 #ifdef IPPROTO_EGP
8801                 {*r = IPPROTO_EGP; return 0;}
8802 #else /* def IPPROTO_EGP */
8803                 {errno = EINVAL; return -1;}
8804 #endif /* ndef IPPROTO_EGP */
8805         if (x == Mono_Posix_UnixSocketProtocol_IPPROTO_ENCAP)
8806 #ifdef IPPROTO_ENCAP
8807                 {*r = IPPROTO_ENCAP; return 0;}
8808 #else /* def IPPROTO_ENCAP */
8809                 {errno = EINVAL; return -1;}
8810 #endif /* ndef IPPROTO_ENCAP */
8811         if (x == Mono_Posix_UnixSocketProtocol_IPPROTO_ESP)
8812 #ifdef IPPROTO_ESP
8813                 {*r = IPPROTO_ESP; return 0;}
8814 #else /* def IPPROTO_ESP */
8815                 {errno = EINVAL; return -1;}
8816 #endif /* ndef IPPROTO_ESP */
8817         if (x == Mono_Posix_UnixSocketProtocol_IPPROTO_GRE)
8818 #ifdef IPPROTO_GRE
8819                 {*r = IPPROTO_GRE; return 0;}
8820 #else /* def IPPROTO_GRE */
8821                 {errno = EINVAL; return -1;}
8822 #endif /* ndef IPPROTO_GRE */
8823         if (x == Mono_Posix_UnixSocketProtocol_IPPROTO_ICMP)
8824 #ifdef IPPROTO_ICMP
8825                 {*r = IPPROTO_ICMP; return 0;}
8826 #else /* def IPPROTO_ICMP */
8827                 {errno = EINVAL; return -1;}
8828 #endif /* ndef IPPROTO_ICMP */
8829         if (x == Mono_Posix_UnixSocketProtocol_IPPROTO_IDP)
8830 #ifdef IPPROTO_IDP
8831                 {*r = IPPROTO_IDP; return 0;}
8832 #else /* def IPPROTO_IDP */
8833                 {errno = EINVAL; return -1;}
8834 #endif /* ndef IPPROTO_IDP */
8835         if (x == Mono_Posix_UnixSocketProtocol_IPPROTO_IGMP)
8836 #ifdef IPPROTO_IGMP
8837                 {*r = IPPROTO_IGMP; return 0;}
8838 #else /* def IPPROTO_IGMP */
8839                 {errno = EINVAL; return -1;}
8840 #endif /* ndef IPPROTO_IGMP */
8841         if (x == Mono_Posix_UnixSocketProtocol_IPPROTO_IP)
8842 #ifdef IPPROTO_IP
8843                 {*r = IPPROTO_IP; return 0;}
8844 #else /* def IPPROTO_IP */
8845                 {errno = EINVAL; return -1;}
8846 #endif /* ndef IPPROTO_IP */
8847         if (x == Mono_Posix_UnixSocketProtocol_IPPROTO_IPIP)
8848 #ifdef IPPROTO_IPIP
8849                 {*r = IPPROTO_IPIP; return 0;}
8850 #else /* def IPPROTO_IPIP */
8851                 {errno = EINVAL; return -1;}
8852 #endif /* ndef IPPROTO_IPIP */
8853         if (x == Mono_Posix_UnixSocketProtocol_IPPROTO_IPV6)
8854 #ifdef IPPROTO_IPV6
8855                 {*r = IPPROTO_IPV6; return 0;}
8856 #else /* def IPPROTO_IPV6 */
8857                 {errno = EINVAL; return -1;}
8858 #endif /* ndef IPPROTO_IPV6 */
8859         if (x == Mono_Posix_UnixSocketProtocol_IPPROTO_MTP)
8860 #ifdef IPPROTO_MTP
8861                 {*r = IPPROTO_MTP; return 0;}
8862 #else /* def IPPROTO_MTP */
8863                 {errno = EINVAL; return -1;}
8864 #endif /* ndef IPPROTO_MTP */
8865         if (x == Mono_Posix_UnixSocketProtocol_IPPROTO_PIM)
8866 #ifdef IPPROTO_PIM
8867                 {*r = IPPROTO_PIM; return 0;}
8868 #else /* def IPPROTO_PIM */
8869                 {errno = EINVAL; return -1;}
8870 #endif /* ndef IPPROTO_PIM */
8871         if (x == Mono_Posix_UnixSocketProtocol_IPPROTO_PUP)
8872 #ifdef IPPROTO_PUP
8873                 {*r = IPPROTO_PUP; return 0;}
8874 #else /* def IPPROTO_PUP */
8875                 {errno = EINVAL; return -1;}
8876 #endif /* ndef IPPROTO_PUP */
8877         if (x == Mono_Posix_UnixSocketProtocol_IPPROTO_RAW)
8878 #ifdef IPPROTO_RAW
8879                 {*r = IPPROTO_RAW; return 0;}
8880 #else /* def IPPROTO_RAW */
8881                 {errno = EINVAL; return -1;}
8882 #endif /* ndef IPPROTO_RAW */
8883         if (x == Mono_Posix_UnixSocketProtocol_IPPROTO_RSVP)
8884 #ifdef IPPROTO_RSVP
8885                 {*r = IPPROTO_RSVP; return 0;}
8886 #else /* def IPPROTO_RSVP */
8887                 {errno = EINVAL; return -1;}
8888 #endif /* ndef IPPROTO_RSVP */
8889         if (x == Mono_Posix_UnixSocketProtocol_IPPROTO_SCTP)
8890 #ifdef IPPROTO_SCTP
8891                 {*r = IPPROTO_SCTP; return 0;}
8892 #else /* def IPPROTO_SCTP */
8893                 {errno = EINVAL; return -1;}
8894 #endif /* ndef IPPROTO_SCTP */
8895         if (x == Mono_Posix_UnixSocketProtocol_IPPROTO_TCP)
8896 #ifdef IPPROTO_TCP
8897                 {*r = IPPROTO_TCP; return 0;}
8898 #else /* def IPPROTO_TCP */
8899                 {errno = EINVAL; return -1;}
8900 #endif /* ndef IPPROTO_TCP */
8901         if (x == Mono_Posix_UnixSocketProtocol_IPPROTO_TP)
8902 #ifdef IPPROTO_TP
8903                 {*r = IPPROTO_TP; return 0;}
8904 #else /* def IPPROTO_TP */
8905                 {errno = EINVAL; return -1;}
8906 #endif /* ndef IPPROTO_TP */
8907         if (x == Mono_Posix_UnixSocketProtocol_IPPROTO_UDP)
8908 #ifdef IPPROTO_UDP
8909                 {*r = IPPROTO_UDP; return 0;}
8910 #else /* def IPPROTO_UDP */
8911                 {errno = EINVAL; return -1;}
8912 #endif /* ndef IPPROTO_UDP */
8913         if (x == Mono_Posix_UnixSocketProtocol_IPPROTO_UDPLITE)
8914 #ifdef IPPROTO_UDPLITE
8915                 {*r = IPPROTO_UDPLITE; return 0;}
8916 #else /* def IPPROTO_UDPLITE */
8917                 {errno = EINVAL; return -1;}
8918 #endif /* ndef IPPROTO_UDPLITE */
8919         if (x == Mono_Posix_UnixSocketProtocol_SOL_SOCKET)
8920 #ifdef SOL_SOCKET
8921                 {*r = SOL_SOCKET; return 0;}
8922 #else /* def SOL_SOCKET */
8923                 {errno = EINVAL; return -1;}
8924 #endif /* ndef SOL_SOCKET */
8925         if (x == 0)
8926                 return 0;
8927         errno = EINVAL; return -1;
8928 }
8929
8930 int Mono_Posix_ToUnixSocketProtocol (int x, int *r)
8931 {
8932         *r = 0;
8933         if (x == 0)
8934                 return 0;
8935 #ifdef IPPROTO_AH
8936         if (x == IPPROTO_AH)
8937                 {*r = Mono_Posix_UnixSocketProtocol_IPPROTO_AH; return 0;}
8938 #endif /* ndef IPPROTO_AH */
8939 #ifdef IPPROTO_BEETPH
8940         if (x == IPPROTO_BEETPH)
8941                 {*r = Mono_Posix_UnixSocketProtocol_IPPROTO_BEETPH; return 0;}
8942 #endif /* ndef IPPROTO_BEETPH */
8943 #ifdef IPPROTO_COMP
8944         if (x == IPPROTO_COMP)
8945                 {*r = Mono_Posix_UnixSocketProtocol_IPPROTO_COMP; return 0;}
8946 #endif /* ndef IPPROTO_COMP */
8947 #ifdef IPPROTO_DCCP
8948         if (x == IPPROTO_DCCP)
8949                 {*r = Mono_Posix_UnixSocketProtocol_IPPROTO_DCCP; return 0;}
8950 #endif /* ndef IPPROTO_DCCP */
8951 #ifdef IPPROTO_EGP
8952         if (x == IPPROTO_EGP)
8953                 {*r = Mono_Posix_UnixSocketProtocol_IPPROTO_EGP; return 0;}
8954 #endif /* ndef IPPROTO_EGP */
8955 #ifdef IPPROTO_ENCAP
8956         if (x == IPPROTO_ENCAP)
8957                 {*r = Mono_Posix_UnixSocketProtocol_IPPROTO_ENCAP; return 0;}
8958 #endif /* ndef IPPROTO_ENCAP */
8959 #ifdef IPPROTO_ESP
8960         if (x == IPPROTO_ESP)
8961                 {*r = Mono_Posix_UnixSocketProtocol_IPPROTO_ESP; return 0;}
8962 #endif /* ndef IPPROTO_ESP */
8963 #ifdef IPPROTO_GRE
8964         if (x == IPPROTO_GRE)
8965                 {*r = Mono_Posix_UnixSocketProtocol_IPPROTO_GRE; return 0;}
8966 #endif /* ndef IPPROTO_GRE */
8967 #ifdef IPPROTO_ICMP
8968         if (x == IPPROTO_ICMP)
8969                 {*r = Mono_Posix_UnixSocketProtocol_IPPROTO_ICMP; return 0;}
8970 #endif /* ndef IPPROTO_ICMP */
8971 #ifdef IPPROTO_IDP
8972         if (x == IPPROTO_IDP)
8973                 {*r = Mono_Posix_UnixSocketProtocol_IPPROTO_IDP; return 0;}
8974 #endif /* ndef IPPROTO_IDP */
8975 #ifdef IPPROTO_IGMP
8976         if (x == IPPROTO_IGMP)
8977                 {*r = Mono_Posix_UnixSocketProtocol_IPPROTO_IGMP; return 0;}
8978 #endif /* ndef IPPROTO_IGMP */
8979 #ifdef IPPROTO_IP
8980         if (x == IPPROTO_IP)
8981                 {*r = Mono_Posix_UnixSocketProtocol_IPPROTO_IP; return 0;}
8982 #endif /* ndef IPPROTO_IP */
8983 #ifdef IPPROTO_IPIP
8984         if (x == IPPROTO_IPIP)
8985                 {*r = Mono_Posix_UnixSocketProtocol_IPPROTO_IPIP; return 0;}
8986 #endif /* ndef IPPROTO_IPIP */
8987 #ifdef IPPROTO_IPV6
8988         if (x == IPPROTO_IPV6)
8989                 {*r = Mono_Posix_UnixSocketProtocol_IPPROTO_IPV6; return 0;}
8990 #endif /* ndef IPPROTO_IPV6 */
8991 #ifdef IPPROTO_MTP
8992         if (x == IPPROTO_MTP)
8993                 {*r = Mono_Posix_UnixSocketProtocol_IPPROTO_MTP; return 0;}
8994 #endif /* ndef IPPROTO_MTP */
8995 #ifdef IPPROTO_PIM
8996         if (x == IPPROTO_PIM)
8997                 {*r = Mono_Posix_UnixSocketProtocol_IPPROTO_PIM; return 0;}
8998 #endif /* ndef IPPROTO_PIM */
8999 #ifdef IPPROTO_PUP
9000         if (x == IPPROTO_PUP)
9001                 {*r = Mono_Posix_UnixSocketProtocol_IPPROTO_PUP; return 0;}
9002 #endif /* ndef IPPROTO_PUP */
9003 #ifdef IPPROTO_RAW
9004         if (x == IPPROTO_RAW)
9005                 {*r = Mono_Posix_UnixSocketProtocol_IPPROTO_RAW; return 0;}
9006 #endif /* ndef IPPROTO_RAW */
9007 #ifdef IPPROTO_RSVP
9008         if (x == IPPROTO_RSVP)
9009                 {*r = Mono_Posix_UnixSocketProtocol_IPPROTO_RSVP; return 0;}
9010 #endif /* ndef IPPROTO_RSVP */
9011 #ifdef IPPROTO_SCTP
9012         if (x == IPPROTO_SCTP)
9013                 {*r = Mono_Posix_UnixSocketProtocol_IPPROTO_SCTP; return 0;}
9014 #endif /* ndef IPPROTO_SCTP */
9015 #ifdef IPPROTO_TCP
9016         if (x == IPPROTO_TCP)
9017                 {*r = Mono_Posix_UnixSocketProtocol_IPPROTO_TCP; return 0;}
9018 #endif /* ndef IPPROTO_TCP */
9019 #ifdef IPPROTO_TP
9020         if (x == IPPROTO_TP)
9021                 {*r = Mono_Posix_UnixSocketProtocol_IPPROTO_TP; return 0;}
9022 #endif /* ndef IPPROTO_TP */
9023 #ifdef IPPROTO_UDP
9024         if (x == IPPROTO_UDP)
9025                 {*r = Mono_Posix_UnixSocketProtocol_IPPROTO_UDP; return 0;}
9026 #endif /* ndef IPPROTO_UDP */
9027 #ifdef IPPROTO_UDPLITE
9028         if (x == IPPROTO_UDPLITE)
9029                 {*r = Mono_Posix_UnixSocketProtocol_IPPROTO_UDPLITE; return 0;}
9030 #endif /* ndef IPPROTO_UDPLITE */
9031 #ifdef SOL_SOCKET
9032         if (x == SOL_SOCKET)
9033                 {*r = Mono_Posix_UnixSocketProtocol_SOL_SOCKET; return 0;}
9034 #endif /* ndef SOL_SOCKET */
9035         errno = EINVAL; return -1;
9036 }
9037
9038 int Mono_Posix_FromUnixSocketType (int x, int *r)
9039 {
9040         *r = 0;
9041         if (x == Mono_Posix_UnixSocketType_SOCK_DCCP)
9042 #ifdef SOCK_DCCP
9043                 {*r = SOCK_DCCP; return 0;}
9044 #else /* def SOCK_DCCP */
9045                 {errno = EINVAL; return -1;}
9046 #endif /* ndef SOCK_DCCP */
9047         if (x == Mono_Posix_UnixSocketType_SOCK_DGRAM)
9048 #ifdef SOCK_DGRAM
9049                 {*r = SOCK_DGRAM; return 0;}
9050 #else /* def SOCK_DGRAM */
9051                 {errno = EINVAL; return -1;}
9052 #endif /* ndef SOCK_DGRAM */
9053         if (x == Mono_Posix_UnixSocketType_SOCK_PACKET)
9054 #ifdef SOCK_PACKET
9055                 {*r = SOCK_PACKET; return 0;}
9056 #else /* def SOCK_PACKET */
9057                 {errno = EINVAL; return -1;}
9058 #endif /* ndef SOCK_PACKET */
9059         if (x == Mono_Posix_UnixSocketType_SOCK_RAW)
9060 #ifdef SOCK_RAW
9061                 {*r = SOCK_RAW; return 0;}
9062 #else /* def SOCK_RAW */
9063                 {errno = EINVAL; return -1;}
9064 #endif /* ndef SOCK_RAW */
9065         if (x == Mono_Posix_UnixSocketType_SOCK_RDM)
9066 #ifdef SOCK_RDM
9067                 {*r = SOCK_RDM; return 0;}
9068 #else /* def SOCK_RDM */
9069                 {errno = EINVAL; return -1;}
9070 #endif /* ndef SOCK_RDM */
9071         if (x == Mono_Posix_UnixSocketType_SOCK_SEQPACKET)
9072 #ifdef SOCK_SEQPACKET
9073                 {*r = SOCK_SEQPACKET; return 0;}
9074 #else /* def SOCK_SEQPACKET */
9075                 {errno = EINVAL; return -1;}
9076 #endif /* ndef SOCK_SEQPACKET */
9077         if (x == Mono_Posix_UnixSocketType_SOCK_STREAM)
9078 #ifdef SOCK_STREAM
9079                 {*r = SOCK_STREAM; return 0;}
9080 #else /* def SOCK_STREAM */
9081                 {errno = EINVAL; return -1;}
9082 #endif /* ndef SOCK_STREAM */
9083         if (x == 0)
9084                 return 0;
9085         errno = EINVAL; return -1;
9086 }
9087
9088 int Mono_Posix_ToUnixSocketType (int x, int *r)
9089 {
9090         *r = 0;
9091         if (x == 0)
9092                 return 0;
9093 #ifdef SOCK_DCCP
9094         if (x == SOCK_DCCP)
9095                 {*r = Mono_Posix_UnixSocketType_SOCK_DCCP; return 0;}
9096 #endif /* ndef SOCK_DCCP */
9097 #ifdef SOCK_DGRAM
9098         if (x == SOCK_DGRAM)
9099                 {*r = Mono_Posix_UnixSocketType_SOCK_DGRAM; return 0;}
9100 #endif /* ndef SOCK_DGRAM */
9101 #ifdef SOCK_PACKET
9102         if (x == SOCK_PACKET)
9103                 {*r = Mono_Posix_UnixSocketType_SOCK_PACKET; return 0;}
9104 #endif /* ndef SOCK_PACKET */
9105 #ifdef SOCK_RAW
9106         if (x == SOCK_RAW)
9107                 {*r = Mono_Posix_UnixSocketType_SOCK_RAW; return 0;}
9108 #endif /* ndef SOCK_RAW */
9109 #ifdef SOCK_RDM
9110         if (x == SOCK_RDM)
9111                 {*r = Mono_Posix_UnixSocketType_SOCK_RDM; return 0;}
9112 #endif /* ndef SOCK_RDM */
9113 #ifdef SOCK_SEQPACKET
9114         if (x == SOCK_SEQPACKET)
9115                 {*r = Mono_Posix_UnixSocketType_SOCK_SEQPACKET; return 0;}
9116 #endif /* ndef SOCK_SEQPACKET */
9117 #ifdef SOCK_STREAM
9118         if (x == SOCK_STREAM)
9119                 {*r = Mono_Posix_UnixSocketType_SOCK_STREAM; return 0;}
9120 #endif /* ndef SOCK_STREAM */
9121         errno = EINVAL; return -1;
9122 }
9123
9124 #ifdef HAVE_STRUCT_UTIMBUF
9125 int
9126 Mono_Posix_FromUtimbuf (struct Mono_Posix_Utimbuf *from, struct utimbuf *to)
9127 {
9128         _cnm_return_val_if_overflow (time_t, from->actime, -1);
9129         _cnm_return_val_if_overflow (time_t, from->modtime, -1);
9130
9131         memset (to, 0, sizeof(*to));
9132
9133         to->actime  = from->actime;
9134         to->modtime = from->modtime;
9135
9136         return 0;
9137 }
9138 #endif /* ndef HAVE_STRUCT_UTIMBUF */
9139
9140
9141 #ifdef HAVE_STRUCT_UTIMBUF
9142 int
9143 Mono_Posix_ToUtimbuf (struct utimbuf *from, struct Mono_Posix_Utimbuf *to)
9144 {
9145         _cnm_return_val_if_overflow (gint64, from->actime, -1);
9146         _cnm_return_val_if_overflow (gint64, from->modtime, -1);
9147
9148         memset (to, 0, sizeof(*to));
9149
9150         to->actime  = from->actime;
9151         to->modtime = from->modtime;
9152
9153         return 0;
9154 }
9155 #endif /* ndef HAVE_STRUCT_UTIMBUF */
9156
9157
9158 int Mono_Posix_FromWaitOptions (int x, int *r)
9159 {
9160         *r = 0;
9161         if ((x & Mono_Posix_WaitOptions_WNOHANG) == Mono_Posix_WaitOptions_WNOHANG)
9162 #ifdef WNOHANG
9163                 *r |= WNOHANG;
9164 #else /* def WNOHANG */
9165                 {errno = EINVAL; return -1;}
9166 #endif /* ndef WNOHANG */
9167         if ((x & Mono_Posix_WaitOptions_WUNTRACED) == Mono_Posix_WaitOptions_WUNTRACED)
9168 #ifdef WUNTRACED
9169                 *r |= WUNTRACED;
9170 #else /* def WUNTRACED */
9171                 {errno = EINVAL; return -1;}
9172 #endif /* ndef WUNTRACED */
9173         if (x == 0)
9174                 return 0;
9175         return 0;
9176 }
9177
9178 int Mono_Posix_ToWaitOptions (int x, int *r)
9179 {
9180         *r = 0;
9181         if (x == 0)
9182                 return 0;
9183 #ifdef WNOHANG
9184         if ((x & WNOHANG) == WNOHANG)
9185                 *r |= Mono_Posix_WaitOptions_WNOHANG;
9186 #endif /* ndef WNOHANG */
9187 #ifdef WUNTRACED
9188         if ((x & WUNTRACED) == WUNTRACED)
9189                 *r |= Mono_Posix_WaitOptions_WUNTRACED;
9190 #endif /* ndef WUNTRACED */
9191         return 0;
9192 }
9193
9194 int Mono_Posix_FromXattrFlags (int x, int *r)
9195 {
9196         *r = 0;
9197         if ((x & Mono_Posix_XattrFlags_XATTR_AUTO) == Mono_Posix_XattrFlags_XATTR_AUTO)
9198 #ifdef XATTR_AUTO
9199                 *r |= XATTR_AUTO;
9200 #else /* def XATTR_AUTO */
9201                 {errno = EINVAL; return -1;}
9202 #endif /* ndef XATTR_AUTO */
9203         if ((x & Mono_Posix_XattrFlags_XATTR_CREATE) == Mono_Posix_XattrFlags_XATTR_CREATE)
9204 #ifdef XATTR_CREATE
9205                 *r |= XATTR_CREATE;
9206 #else /* def XATTR_CREATE */
9207                 {errno = EINVAL; return -1;}
9208 #endif /* ndef XATTR_CREATE */
9209         if ((x & Mono_Posix_XattrFlags_XATTR_REPLACE) == Mono_Posix_XattrFlags_XATTR_REPLACE)
9210 #ifdef XATTR_REPLACE
9211                 *r |= XATTR_REPLACE;
9212 #else /* def XATTR_REPLACE */
9213                 {errno = EINVAL; return -1;}
9214 #endif /* ndef XATTR_REPLACE */
9215         if (x == 0)
9216                 return 0;
9217         return 0;
9218 }
9219
9220 int Mono_Posix_ToXattrFlags (int x, int *r)
9221 {
9222         *r = 0;
9223         if (x == 0)
9224                 return 0;
9225 #ifdef XATTR_AUTO
9226         if ((x & XATTR_AUTO) == XATTR_AUTO)
9227                 *r |= Mono_Posix_XattrFlags_XATTR_AUTO;
9228 #endif /* ndef XATTR_AUTO */
9229 #ifdef XATTR_CREATE
9230         if ((x & XATTR_CREATE) == XATTR_CREATE)
9231                 *r |= Mono_Posix_XattrFlags_XATTR_CREATE;
9232 #endif /* ndef XATTR_CREATE */
9233 #ifdef XATTR_REPLACE
9234         if ((x & XATTR_REPLACE) == XATTR_REPLACE)
9235                 *r |= Mono_Posix_XattrFlags_XATTR_REPLACE;
9236 #endif /* ndef XATTR_REPLACE */
9237         return 0;
9238 }
9239