Merge pull request #600 from tr8dr/master
[mono.git] / support / map.c
1 /*
2  * This file was automatically generated by create-native-map from ../../mcs/class/lib/net_2_0/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_SYS_TIME_H
31 #include <sys/time.h>
32 #endif /* ndef HAVE_SYS_TIME_H */
33 #ifdef HAVE_SYS_POLL_H
34 #include <sys/poll.h>
35 #endif /* ndef HAVE_SYS_POLL_H */
36 #ifdef HAVE_SYS_WAIT_H
37 #include <sys/wait.h>
38 #endif /* ndef HAVE_SYS_WAIT_H */
39 #ifdef HAVE_SYS_STATVFS_H
40 #include <sys/statvfs.h>
41 #endif /* ndef HAVE_SYS_STATVFS_H */
42 #ifdef HAVE_SYS_XATTR_H
43 #include <sys/xattr.h>
44 #endif /* ndef HAVE_SYS_XATTR_H */
45 #ifdef HAVE_SYS_MMAN_H
46 #include <sys/mman.h>
47 #endif /* ndef HAVE_SYS_MMAN_H */
48 #ifdef HAVE_SYS_UIO_H
49 #include <sys/uio.h>
50 #endif /* ndef HAVE_SYS_UIO_H */
51 #ifdef HAVE_UNISTD_H
52 #include <unistd.h>
53 #endif /* ndef HAVE_UNISTD_H */
54 #include <fcntl.h>
55 #include <signal.h>
56 #ifdef HAVE_POLL_H
57 #include <poll.h>
58 #endif /* ndef HAVE_POLL_H */
59 #ifdef HAVE_GRP_H
60 #include <grp.h>
61 #endif /* ndef HAVE_GRP_H */
62 #include <errno.h>
63 #ifdef HAVE_SYSLOG_H
64 #include <syslog.h>
65 #endif /* ndef HAVE_SYSLOG_H */
66 #ifdef HAVE_DIRENT_H
67 #include <dirent.h>
68 #endif /* ndef HAVE_DIRENT_H */
69 #ifdef HAVE_UTIME_H
70 #include <utime.h>
71 #endif /* ndef HAVE_UTIME_H */
72 #include <time.h>
73 #include "mph.h"
74
75 #include "map.h"
76
77 #include <errno.h>    /* errno, EOVERFLOW */
78 #include <glib.h>     /* g* types, g_assert_not_reached() */
79
80 #if defined (G_MININT8)
81 #define CNM_MININT8 G_MININT8
82 #else
83 #define CNM_MININT8 (-128)
84 #endif
85
86 #if defined (G_MAXINT8)
87 #define CNM_MAXINT8 G_MAXINT8
88 #else
89 #define CNM_MAXINT8 (127)
90 #endif
91
92 #if defined (G_MAXUINT8)
93 #define CNM_MAXUINT8 G_MAXUINT8
94 #else
95 #define CNM_MAXUINT8 (255)
96 #endif
97
98 #if defined (G_MININT16)
99 #define CNM_MININT16 G_MININT16
100 #else
101 #define CNM_MININT16 (-32768)
102 #endif
103
104 #if defined (G_MAXINT16)
105 #define CNM_MAXINT16 G_MAXINT16
106 #else
107 #define CNM_MAXINT16 (32767)
108 #endif
109
110 #if defined (G_MAXUINT16)
111 #define CNM_MAXUINT16 G_MAXUINT16
112 #else
113 #define CNM_MAXUINT16 (65535)
114 #endif
115
116 #if defined (G_MININT32)
117 #define CNM_MININT32 G_MININT32
118 #else
119 #define CNM_MININT32 (-2147483648)
120 #endif
121
122 #if defined (G_MAXINT32)
123 #define CNM_MAXINT32 G_MAXINT32
124 #else
125 #define CNM_MAXINT32 (2147483647)
126 #endif
127
128 #if defined (G_MAXUINT32)
129 #define CNM_MAXUINT32 G_MAXUINT32
130 #else
131 #define CNM_MAXUINT32 (4294967295U)
132 #endif
133
134 #if defined (G_MININT64)
135 #define CNM_MININT64 G_MININT64
136 #else
137 #define CNM_MININT64 (-9223372036854775808LL)
138 #endif
139
140 #if defined (G_MAXINT64)
141 #define CNM_MAXINT64 G_MAXINT64
142 #else
143 #define CNM_MAXINT64 (9223372036854775807LL)
144 #endif
145
146 #if defined (G_MAXUINT64)
147 #define CNM_MAXUINT64 G_MAXUINT64
148 #else
149 #define CNM_MAXUINT64 (18446744073709551615ULL)
150 #endif
151
152
153 /* returns TRUE if @type is an unsigned type */
154 #define _cnm_integral_type_is_unsigned(type) \
155     (sizeof(type) == sizeof(gint8)           \
156       ? (((type)-1) > CNM_MAXINT8)             \
157       : sizeof(type) == sizeof(gint16)       \
158         ? (((type)-1) > CNM_MAXINT16)          \
159         : sizeof(type) == sizeof(gint32)     \
160           ? (((type)-1) > CNM_MAXINT32)        \
161           : sizeof(type) == sizeof(gint64)   \
162             ? (((type)-1) > CNM_MAXINT64)      \
163             : (g_assert_not_reached (), 0))
164
165 /* returns the minimum value of @type as a gint64 */
166 #define _cnm_integral_type_min(type)          \
167     (_cnm_integral_type_is_unsigned (type)    \
168       ? 0                                     \
169       : sizeof(type) == sizeof(gint8)         \
170         ? CNM_MININT8                           \
171         : sizeof(type) == sizeof(gint16)      \
172           ? CNM_MININT16                        \
173           : sizeof(type) == sizeof(gint32)    \
174             ? CNM_MININT32                      \
175             : sizeof(type) == sizeof(gint64)  \
176               ? CNM_MININT64                    \
177               : (g_assert_not_reached (), 0))
178
179 /* returns the maximum value of @type as a guint64 */
180 #define _cnm_integral_type_max(type)            \
181     (_cnm_integral_type_is_unsigned (type)      \
182       ? sizeof(type) == sizeof(gint8)           \
183         ? CNM_MAXUINT8                            \
184         : sizeof(type) == sizeof(gint16)        \
185           ? CNM_MAXUINT16                         \
186           : sizeof(type) == sizeof(gint32)      \
187             ? CNM_MAXUINT32                       \
188             : sizeof(type) == sizeof(gint64)    \
189               ? CNM_MAXUINT64                     \
190               : (g_assert_not_reached (), 0)    \
191       : sizeof(type) == sizeof(gint8)           \
192           ? CNM_MAXINT8                           \
193           : sizeof(type) == sizeof(gint16)      \
194             ? CNM_MAXINT16                        \
195             : sizeof(type) == sizeof(gint32)    \
196               ? CNM_MAXINT32                      \
197               : sizeof(type) == sizeof(gint64)  \
198                 ? CNM_MAXINT64                    \
199                 : (g_assert_not_reached (), 0))
200
201 #ifdef _CNM_DUMP
202 #define _cnm_dump(to_t,from)                                             \
203   printf ("# %s -> %s: uns=%i; min=%llx; max=%llx; value=%llx; lt=%i; l0=%i; gt=%i; e=%i\n", \
204     #from, #to_t,                                                        \
205     (int) _cnm_integral_type_is_unsigned (to_t),                         \
206     (gint64) (_cnm_integral_type_min (to_t)),                            \
207     (gint64) (_cnm_integral_type_max (to_t)),                            \
208     (gint64) (from),                                                     \
209     (((gint64) _cnm_integral_type_min (to_t)) <= (gint64) from),         \
210     (from < 0),                                                          \
211     (((guint64) from) <= (guint64) _cnm_integral_type_max (to_t)),       \
212     !((int) _cnm_integral_type_is_unsigned (to_t)                        \
213       ? ((0 <= from) &&                                                  \
214          ((guint64) from <= (guint64) _cnm_integral_type_max (to_t)))    \
215       : ((gint64) _cnm_integral_type_min(to_t) <= (gint64) from &&       \
216          (guint64) from <= (guint64) _cnm_integral_type_max (to_t)))     \
217   )
218 #else /* ndef _CNM_DUMP */
219 #define _cnm_dump(to_t, from) do {} while (0)
220 #endif /* def _CNM_DUMP */
221
222 #ifdef DEBUG
223 #define _cnm_return_val_if_overflow(to_t,from,val)  G_STMT_START {   \
224     int     uns = _cnm_integral_type_is_unsigned (to_t);             \
225     gint64  min = (gint64)  _cnm_integral_type_min (to_t);           \
226     guint64 max = (guint64) _cnm_integral_type_max (to_t);           \
227     gint64  sf  = (gint64)  from;                                    \
228     guint64 uf  = (guint64) from;                                    \
229     if (!(uns ? ((0 <= from) && (uf <= max))                         \
230               : (min <= sf && (from < 0 || uf <= max)))) {           \
231       _cnm_dump(to_t, from);                                         \
232       errno = EOVERFLOW;                                             \
233       return (val);                                                  \
234     }                                                                \
235   } G_STMT_END
236 #else /* !def DEBUG */
237 /* don't do any overflow checking */
238 #define _cnm_return_val_if_overflow(to_t,from,val)  G_STMT_START {   \
239   } G_STMT_END
240 #endif /* def DEBUG */
241
242 int Mono_Posix_FromAccessModes (int x, int *r)
243 {
244         *r = 0;
245         if ((x & Mono_Posix_AccessModes_F_OK) == Mono_Posix_AccessModes_F_OK)
246 #ifdef F_OK
247                 *r |= F_OK;
248 #else /* def F_OK */
249                 {errno = EINVAL; return -1;}
250 #endif /* ndef F_OK */
251         if ((x & Mono_Posix_AccessModes_R_OK) == Mono_Posix_AccessModes_R_OK)
252 #ifdef R_OK
253                 *r |= R_OK;
254 #else /* def R_OK */
255                 {errno = EINVAL; return -1;}
256 #endif /* ndef R_OK */
257         if ((x & Mono_Posix_AccessModes_W_OK) == Mono_Posix_AccessModes_W_OK)
258 #ifdef W_OK
259                 *r |= W_OK;
260 #else /* def W_OK */
261                 {errno = EINVAL; return -1;}
262 #endif /* ndef W_OK */
263         if ((x & Mono_Posix_AccessModes_X_OK) == Mono_Posix_AccessModes_X_OK)
264 #ifdef X_OK
265                 *r |= X_OK;
266 #else /* def X_OK */
267                 {errno = EINVAL; return -1;}
268 #endif /* ndef X_OK */
269         if (x == 0)
270                 return 0;
271         return 0;
272 }
273
274 int Mono_Posix_ToAccessModes (int x, int *r)
275 {
276         *r = 0;
277         if (x == 0)
278                 return 0;
279 #ifdef F_OK
280         if ((x & F_OK) == F_OK)
281                 *r |= Mono_Posix_AccessModes_F_OK;
282 #endif /* ndef F_OK */
283 #ifdef R_OK
284         if ((x & R_OK) == R_OK)
285                 *r |= Mono_Posix_AccessModes_R_OK;
286 #endif /* ndef R_OK */
287 #ifdef W_OK
288         if ((x & W_OK) == W_OK)
289                 *r |= Mono_Posix_AccessModes_W_OK;
290 #endif /* ndef W_OK */
291 #ifdef X_OK
292         if ((x & X_OK) == X_OK)
293                 *r |= Mono_Posix_AccessModes_X_OK;
294 #endif /* ndef X_OK */
295         return 0;
296 }
297
298 int Mono_Posix_FromAtFlags (int x, int *r)
299 {
300         *r = 0;
301         if ((x & Mono_Posix_AtFlags_AT_EMPTY_PATH) == Mono_Posix_AtFlags_AT_EMPTY_PATH)
302 #ifdef AT_EMPTY_PATH
303                 *r |= AT_EMPTY_PATH;
304 #else /* def AT_EMPTY_PATH */
305                 {errno = EINVAL; return -1;}
306 #endif /* ndef AT_EMPTY_PATH */
307         if ((x & Mono_Posix_AtFlags_AT_NO_AUTOMOUNT) == Mono_Posix_AtFlags_AT_NO_AUTOMOUNT)
308 #ifdef AT_NO_AUTOMOUNT
309                 *r |= AT_NO_AUTOMOUNT;
310 #else /* def AT_NO_AUTOMOUNT */
311                 {errno = EINVAL; return -1;}
312 #endif /* ndef AT_NO_AUTOMOUNT */
313         if ((x & Mono_Posix_AtFlags_AT_REMOVEDIR) == Mono_Posix_AtFlags_AT_REMOVEDIR)
314 #ifdef AT_REMOVEDIR
315                 *r |= AT_REMOVEDIR;
316 #else /* def AT_REMOVEDIR */
317                 {errno = EINVAL; return -1;}
318 #endif /* ndef AT_REMOVEDIR */
319         if ((x & Mono_Posix_AtFlags_AT_SYMLINK_FOLLOW) == Mono_Posix_AtFlags_AT_SYMLINK_FOLLOW)
320 #ifdef AT_SYMLINK_FOLLOW
321                 *r |= AT_SYMLINK_FOLLOW;
322 #else /* def AT_SYMLINK_FOLLOW */
323                 {errno = EINVAL; return -1;}
324 #endif /* ndef AT_SYMLINK_FOLLOW */
325         if ((x & Mono_Posix_AtFlags_AT_SYMLINK_NOFOLLOW) == Mono_Posix_AtFlags_AT_SYMLINK_NOFOLLOW)
326 #ifdef AT_SYMLINK_NOFOLLOW
327                 *r |= AT_SYMLINK_NOFOLLOW;
328 #else /* def AT_SYMLINK_NOFOLLOW */
329                 {errno = EINVAL; return -1;}
330 #endif /* ndef AT_SYMLINK_NOFOLLOW */
331         if (x == 0)
332                 return 0;
333         return 0;
334 }
335
336 int Mono_Posix_ToAtFlags (int x, int *r)
337 {
338         *r = 0;
339         if (x == 0)
340                 return 0;
341 #ifdef AT_EMPTY_PATH
342         if ((x & AT_EMPTY_PATH) == AT_EMPTY_PATH)
343                 *r |= Mono_Posix_AtFlags_AT_EMPTY_PATH;
344 #endif /* ndef AT_EMPTY_PATH */
345 #ifdef AT_NO_AUTOMOUNT
346         if ((x & AT_NO_AUTOMOUNT) == AT_NO_AUTOMOUNT)
347                 *r |= Mono_Posix_AtFlags_AT_NO_AUTOMOUNT;
348 #endif /* ndef AT_NO_AUTOMOUNT */
349 #ifdef AT_REMOVEDIR
350         if ((x & AT_REMOVEDIR) == AT_REMOVEDIR)
351                 *r |= Mono_Posix_AtFlags_AT_REMOVEDIR;
352 #endif /* ndef AT_REMOVEDIR */
353 #ifdef AT_SYMLINK_FOLLOW
354         if ((x & AT_SYMLINK_FOLLOW) == AT_SYMLINK_FOLLOW)
355                 *r |= Mono_Posix_AtFlags_AT_SYMLINK_FOLLOW;
356 #endif /* ndef AT_SYMLINK_FOLLOW */
357 #ifdef AT_SYMLINK_NOFOLLOW
358         if ((x & AT_SYMLINK_NOFOLLOW) == AT_SYMLINK_NOFOLLOW)
359                 *r |= Mono_Posix_AtFlags_AT_SYMLINK_NOFOLLOW;
360 #endif /* ndef AT_SYMLINK_NOFOLLOW */
361         return 0;
362 }
363
364 int Mono_Posix_FromConfstrName (int x, int *r)
365 {
366         *r = 0;
367         if (x == Mono_Posix_ConfstrName__CS_GNU_LIBC_VERSION)
368 #ifdef _CS_GNU_LIBC_VERSION
369                 {*r = _CS_GNU_LIBC_VERSION; return 0;}
370 #else /* def _CS_GNU_LIBC_VERSION */
371                 {errno = EINVAL; return -1;}
372 #endif /* ndef _CS_GNU_LIBC_VERSION */
373         if (x == Mono_Posix_ConfstrName__CS_GNU_LIBPTHREAD_VERSION)
374 #ifdef _CS_GNU_LIBPTHREAD_VERSION
375                 {*r = _CS_GNU_LIBPTHREAD_VERSION; return 0;}
376 #else /* def _CS_GNU_LIBPTHREAD_VERSION */
377                 {errno = EINVAL; return -1;}
378 #endif /* ndef _CS_GNU_LIBPTHREAD_VERSION */
379         if (x == Mono_Posix_ConfstrName__CS_LFS64_CFLAGS)
380 #ifdef _CS_LFS64_CFLAGS
381                 {*r = _CS_LFS64_CFLAGS; return 0;}
382 #else /* def _CS_LFS64_CFLAGS */
383                 {errno = EINVAL; return -1;}
384 #endif /* ndef _CS_LFS64_CFLAGS */
385         if (x == Mono_Posix_ConfstrName__CS_LFS64_LDFLAGS)
386 #ifdef _CS_LFS64_LDFLAGS
387                 {*r = _CS_LFS64_LDFLAGS; return 0;}
388 #else /* def _CS_LFS64_LDFLAGS */
389                 {errno = EINVAL; return -1;}
390 #endif /* ndef _CS_LFS64_LDFLAGS */
391         if (x == Mono_Posix_ConfstrName__CS_LFS64_LIBS)
392 #ifdef _CS_LFS64_LIBS
393                 {*r = _CS_LFS64_LIBS; return 0;}
394 #else /* def _CS_LFS64_LIBS */
395                 {errno = EINVAL; return -1;}
396 #endif /* ndef _CS_LFS64_LIBS */
397         if (x == Mono_Posix_ConfstrName__CS_LFS64_LINTFLAGS)
398 #ifdef _CS_LFS64_LINTFLAGS
399                 {*r = _CS_LFS64_LINTFLAGS; return 0;}
400 #else /* def _CS_LFS64_LINTFLAGS */
401                 {errno = EINVAL; return -1;}
402 #endif /* ndef _CS_LFS64_LINTFLAGS */
403         if (x == Mono_Posix_ConfstrName__CS_LFS_CFLAGS)
404 #ifdef _CS_LFS_CFLAGS
405                 {*r = _CS_LFS_CFLAGS; return 0;}
406 #else /* def _CS_LFS_CFLAGS */
407                 {errno = EINVAL; return -1;}
408 #endif /* ndef _CS_LFS_CFLAGS */
409         if (x == Mono_Posix_ConfstrName__CS_LFS_LDFLAGS)
410 #ifdef _CS_LFS_LDFLAGS
411                 {*r = _CS_LFS_LDFLAGS; return 0;}
412 #else /* def _CS_LFS_LDFLAGS */
413                 {errno = EINVAL; return -1;}
414 #endif /* ndef _CS_LFS_LDFLAGS */
415         if (x == Mono_Posix_ConfstrName__CS_LFS_LIBS)
416 #ifdef _CS_LFS_LIBS
417                 {*r = _CS_LFS_LIBS; return 0;}
418 #else /* def _CS_LFS_LIBS */
419                 {errno = EINVAL; return -1;}
420 #endif /* ndef _CS_LFS_LIBS */
421         if (x == Mono_Posix_ConfstrName__CS_LFS_LINTFLAGS)
422 #ifdef _CS_LFS_LINTFLAGS
423                 {*r = _CS_LFS_LINTFLAGS; return 0;}
424 #else /* def _CS_LFS_LINTFLAGS */
425                 {errno = EINVAL; return -1;}
426 #endif /* ndef _CS_LFS_LINTFLAGS */
427         if (x == Mono_Posix_ConfstrName__CS_PATH)
428 #ifdef _CS_PATH
429                 {*r = _CS_PATH; return 0;}
430 #else /* def _CS_PATH */
431                 {errno = EINVAL; return -1;}
432 #endif /* ndef _CS_PATH */
433         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFF32_CFLAGS)
434 #ifdef _CS_POSIX_V6_ILP32_OFF32_CFLAGS
435                 {*r = _CS_POSIX_V6_ILP32_OFF32_CFLAGS; return 0;}
436 #else /* def _CS_POSIX_V6_ILP32_OFF32_CFLAGS */
437                 {errno = EINVAL; return -1;}
438 #endif /* ndef _CS_POSIX_V6_ILP32_OFF32_CFLAGS */
439         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFF32_LDFLAGS)
440 #ifdef _CS_POSIX_V6_ILP32_OFF32_LDFLAGS
441                 {*r = _CS_POSIX_V6_ILP32_OFF32_LDFLAGS; return 0;}
442 #else /* def _CS_POSIX_V6_ILP32_OFF32_LDFLAGS */
443                 {errno = EINVAL; return -1;}
444 #endif /* ndef _CS_POSIX_V6_ILP32_OFF32_LDFLAGS */
445         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFF32_LIBS)
446 #ifdef _CS_POSIX_V6_ILP32_OFF32_LIBS
447                 {*r = _CS_POSIX_V6_ILP32_OFF32_LIBS; return 0;}
448 #else /* def _CS_POSIX_V6_ILP32_OFF32_LIBS */
449                 {errno = EINVAL; return -1;}
450 #endif /* ndef _CS_POSIX_V6_ILP32_OFF32_LIBS */
451         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFF32_LINTFLAGS)
452 #ifdef _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS
453                 {*r = _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS; return 0;}
454 #else /* def _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS */
455                 {errno = EINVAL; return -1;}
456 #endif /* ndef _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS */
457         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFFBIG_CFLAGS)
458 #ifdef _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
459                 {*r = _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS; return 0;}
460 #else /* def _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS */
461                 {errno = EINVAL; return -1;}
462 #endif /* ndef _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS */
463         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS)
464 #ifdef _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
465                 {*r = _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS; return 0;}
466 #else /* def _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS */
467                 {errno = EINVAL; return -1;}
468 #endif /* ndef _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS */
469         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFFBIG_LIBS)
470 #ifdef _CS_POSIX_V6_ILP32_OFFBIG_LIBS
471                 {*r = _CS_POSIX_V6_ILP32_OFFBIG_LIBS; return 0;}
472 #else /* def _CS_POSIX_V6_ILP32_OFFBIG_LIBS */
473                 {errno = EINVAL; return -1;}
474 #endif /* ndef _CS_POSIX_V6_ILP32_OFFBIG_LIBS */
475         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS)
476 #ifdef _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS
477                 {*r = _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS; return 0;}
478 #else /* def _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS */
479                 {errno = EINVAL; return -1;}
480 #endif /* ndef _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS */
481         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_LP64_OFF64_CFLAGS)
482 #ifdef _CS_POSIX_V6_LP64_OFF64_CFLAGS
483                 {*r = _CS_POSIX_V6_LP64_OFF64_CFLAGS; return 0;}
484 #else /* def _CS_POSIX_V6_LP64_OFF64_CFLAGS */
485                 {errno = EINVAL; return -1;}
486 #endif /* ndef _CS_POSIX_V6_LP64_OFF64_CFLAGS */
487         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_LP64_OFF64_LDFLAGS)
488 #ifdef _CS_POSIX_V6_LP64_OFF64_LDFLAGS
489                 {*r = _CS_POSIX_V6_LP64_OFF64_LDFLAGS; return 0;}
490 #else /* def _CS_POSIX_V6_LP64_OFF64_LDFLAGS */
491                 {errno = EINVAL; return -1;}
492 #endif /* ndef _CS_POSIX_V6_LP64_OFF64_LDFLAGS */
493         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_LP64_OFF64_LIBS)
494 #ifdef _CS_POSIX_V6_LP64_OFF64_LIBS
495                 {*r = _CS_POSIX_V6_LP64_OFF64_LIBS; return 0;}
496 #else /* def _CS_POSIX_V6_LP64_OFF64_LIBS */
497                 {errno = EINVAL; return -1;}
498 #endif /* ndef _CS_POSIX_V6_LP64_OFF64_LIBS */
499         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_LP64_OFF64_LINTFLAGS)
500 #ifdef _CS_POSIX_V6_LP64_OFF64_LINTFLAGS
501                 {*r = _CS_POSIX_V6_LP64_OFF64_LINTFLAGS; return 0;}
502 #else /* def _CS_POSIX_V6_LP64_OFF64_LINTFLAGS */
503                 {errno = EINVAL; return -1;}
504 #endif /* ndef _CS_POSIX_V6_LP64_OFF64_LINTFLAGS */
505         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS)
506 #ifdef _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
507                 {*r = _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS; return 0;}
508 #else /* def _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS */
509                 {errno = EINVAL; return -1;}
510 #endif /* ndef _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS */
511         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS)
512 #ifdef _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
513                 {*r = _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS; return 0;}
514 #else /* def _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS */
515                 {errno = EINVAL; return -1;}
516 #endif /* ndef _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS */
517         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_LPBIG_OFFBIG_LIBS)
518 #ifdef _CS_POSIX_V6_LPBIG_OFFBIG_LIBS
519                 {*r = _CS_POSIX_V6_LPBIG_OFFBIG_LIBS; return 0;}
520 #else /* def _CS_POSIX_V6_LPBIG_OFFBIG_LIBS */
521                 {errno = EINVAL; return -1;}
522 #endif /* ndef _CS_POSIX_V6_LPBIG_OFFBIG_LIBS */
523         if (x == Mono_Posix_ConfstrName__CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS)
524 #ifdef _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
525                 {*r = _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS; return 0;}
526 #else /* def _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS */
527                 {errno = EINVAL; return -1;}
528 #endif /* ndef _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS */
529         if (x == Mono_Posix_ConfstrName__CS_V6_WIDTH_RESTRICTED_ENVS)
530 #ifdef _CS_V6_WIDTH_RESTRICTED_ENVS
531                 {*r = _CS_V6_WIDTH_RESTRICTED_ENVS; return 0;}
532 #else /* def _CS_V6_WIDTH_RESTRICTED_ENVS */
533                 {errno = EINVAL; return -1;}
534 #endif /* ndef _CS_V6_WIDTH_RESTRICTED_ENVS */
535         if (x == Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFF32_CFLAGS)
536 #ifdef _CS_XBS5_ILP32_OFF32_CFLAGS
537                 {*r = _CS_XBS5_ILP32_OFF32_CFLAGS; return 0;}
538 #else /* def _CS_XBS5_ILP32_OFF32_CFLAGS */
539                 {errno = EINVAL; return -1;}
540 #endif /* ndef _CS_XBS5_ILP32_OFF32_CFLAGS */
541         if (x == Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFF32_LDFLAGS)
542 #ifdef _CS_XBS5_ILP32_OFF32_LDFLAGS
543                 {*r = _CS_XBS5_ILP32_OFF32_LDFLAGS; return 0;}
544 #else /* def _CS_XBS5_ILP32_OFF32_LDFLAGS */
545                 {errno = EINVAL; return -1;}
546 #endif /* ndef _CS_XBS5_ILP32_OFF32_LDFLAGS */
547         if (x == Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFF32_LIBS)
548 #ifdef _CS_XBS5_ILP32_OFF32_LIBS
549                 {*r = _CS_XBS5_ILP32_OFF32_LIBS; return 0;}
550 #else /* def _CS_XBS5_ILP32_OFF32_LIBS */
551                 {errno = EINVAL; return -1;}
552 #endif /* ndef _CS_XBS5_ILP32_OFF32_LIBS */
553         if (x == Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFF32_LINTFLAGS)
554 #ifdef _CS_XBS5_ILP32_OFF32_LINTFLAGS
555                 {*r = _CS_XBS5_ILP32_OFF32_LINTFLAGS; return 0;}
556 #else /* def _CS_XBS5_ILP32_OFF32_LINTFLAGS */
557                 {errno = EINVAL; return -1;}
558 #endif /* ndef _CS_XBS5_ILP32_OFF32_LINTFLAGS */
559         if (x == Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFFBIG_CFLAGS)
560 #ifdef _CS_XBS5_ILP32_OFFBIG_CFLAGS
561                 {*r = _CS_XBS5_ILP32_OFFBIG_CFLAGS; return 0;}
562 #else /* def _CS_XBS5_ILP32_OFFBIG_CFLAGS */
563                 {errno = EINVAL; return -1;}
564 #endif /* ndef _CS_XBS5_ILP32_OFFBIG_CFLAGS */
565         if (x == Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFFBIG_LDFLAGS)
566 #ifdef _CS_XBS5_ILP32_OFFBIG_LDFLAGS
567                 {*r = _CS_XBS5_ILP32_OFFBIG_LDFLAGS; return 0;}
568 #else /* def _CS_XBS5_ILP32_OFFBIG_LDFLAGS */
569                 {errno = EINVAL; return -1;}
570 #endif /* ndef _CS_XBS5_ILP32_OFFBIG_LDFLAGS */
571         if (x == Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFFBIG_LIBS)
572 #ifdef _CS_XBS5_ILP32_OFFBIG_LIBS
573                 {*r = _CS_XBS5_ILP32_OFFBIG_LIBS; return 0;}
574 #else /* def _CS_XBS5_ILP32_OFFBIG_LIBS */
575                 {errno = EINVAL; return -1;}
576 #endif /* ndef _CS_XBS5_ILP32_OFFBIG_LIBS */
577         if (x == Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFFBIG_LINTFLAGS)
578 #ifdef _CS_XBS5_ILP32_OFFBIG_LINTFLAGS
579                 {*r = _CS_XBS5_ILP32_OFFBIG_LINTFLAGS; return 0;}
580 #else /* def _CS_XBS5_ILP32_OFFBIG_LINTFLAGS */
581                 {errno = EINVAL; return -1;}
582 #endif /* ndef _CS_XBS5_ILP32_OFFBIG_LINTFLAGS */
583         if (x == Mono_Posix_ConfstrName__CS_XBS5_LP64_OFF64_CFLAGS)
584 #ifdef _CS_XBS5_LP64_OFF64_CFLAGS
585                 {*r = _CS_XBS5_LP64_OFF64_CFLAGS; return 0;}
586 #else /* def _CS_XBS5_LP64_OFF64_CFLAGS */
587                 {errno = EINVAL; return -1;}
588 #endif /* ndef _CS_XBS5_LP64_OFF64_CFLAGS */
589         if (x == Mono_Posix_ConfstrName__CS_XBS5_LP64_OFF64_LDFLAGS)
590 #ifdef _CS_XBS5_LP64_OFF64_LDFLAGS
591                 {*r = _CS_XBS5_LP64_OFF64_LDFLAGS; return 0;}
592 #else /* def _CS_XBS5_LP64_OFF64_LDFLAGS */
593                 {errno = EINVAL; return -1;}
594 #endif /* ndef _CS_XBS5_LP64_OFF64_LDFLAGS */
595         if (x == Mono_Posix_ConfstrName__CS_XBS5_LP64_OFF64_LIBS)
596 #ifdef _CS_XBS5_LP64_OFF64_LIBS
597                 {*r = _CS_XBS5_LP64_OFF64_LIBS; return 0;}
598 #else /* def _CS_XBS5_LP64_OFF64_LIBS */
599                 {errno = EINVAL; return -1;}
600 #endif /* ndef _CS_XBS5_LP64_OFF64_LIBS */
601         if (x == Mono_Posix_ConfstrName__CS_XBS5_LP64_OFF64_LINTFLAGS)
602 #ifdef _CS_XBS5_LP64_OFF64_LINTFLAGS
603                 {*r = _CS_XBS5_LP64_OFF64_LINTFLAGS; return 0;}
604 #else /* def _CS_XBS5_LP64_OFF64_LINTFLAGS */
605                 {errno = EINVAL; return -1;}
606 #endif /* ndef _CS_XBS5_LP64_OFF64_LINTFLAGS */
607         if (x == Mono_Posix_ConfstrName__CS_XBS5_LPBIG_OFFBIG_CFLAGS)
608 #ifdef _CS_XBS5_LPBIG_OFFBIG_CFLAGS
609                 {*r = _CS_XBS5_LPBIG_OFFBIG_CFLAGS; return 0;}
610 #else /* def _CS_XBS5_LPBIG_OFFBIG_CFLAGS */
611                 {errno = EINVAL; return -1;}
612 #endif /* ndef _CS_XBS5_LPBIG_OFFBIG_CFLAGS */
613         if (x == Mono_Posix_ConfstrName__CS_XBS5_LPBIG_OFFBIG_LDFLAGS)
614 #ifdef _CS_XBS5_LPBIG_OFFBIG_LDFLAGS
615                 {*r = _CS_XBS5_LPBIG_OFFBIG_LDFLAGS; return 0;}
616 #else /* def _CS_XBS5_LPBIG_OFFBIG_LDFLAGS */
617                 {errno = EINVAL; return -1;}
618 #endif /* ndef _CS_XBS5_LPBIG_OFFBIG_LDFLAGS */
619         if (x == Mono_Posix_ConfstrName__CS_XBS5_LPBIG_OFFBIG_LIBS)
620 #ifdef _CS_XBS5_LPBIG_OFFBIG_LIBS
621                 {*r = _CS_XBS5_LPBIG_OFFBIG_LIBS; return 0;}
622 #else /* def _CS_XBS5_LPBIG_OFFBIG_LIBS */
623                 {errno = EINVAL; return -1;}
624 #endif /* ndef _CS_XBS5_LPBIG_OFFBIG_LIBS */
625         if (x == Mono_Posix_ConfstrName__CS_XBS5_LPBIG_OFFBIG_LINTFLAGS)
626 #ifdef _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS
627                 {*r = _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS; return 0;}
628 #else /* def _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS */
629                 {errno = EINVAL; return -1;}
630 #endif /* ndef _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS */
631         if (x == 0)
632                 return 0;
633         errno = EINVAL; return -1;
634 }
635
636 int Mono_Posix_ToConfstrName (int x, int *r)
637 {
638         *r = 0;
639         if (x == 0)
640                 return 0;
641 #ifdef _CS_GNU_LIBC_VERSION
642         if (x == _CS_GNU_LIBC_VERSION)
643                 {*r = Mono_Posix_ConfstrName__CS_GNU_LIBC_VERSION; return 0;}
644 #endif /* ndef _CS_GNU_LIBC_VERSION */
645 #ifdef _CS_GNU_LIBPTHREAD_VERSION
646         if (x == _CS_GNU_LIBPTHREAD_VERSION)
647                 {*r = Mono_Posix_ConfstrName__CS_GNU_LIBPTHREAD_VERSION; return 0;}
648 #endif /* ndef _CS_GNU_LIBPTHREAD_VERSION */
649 #ifdef _CS_LFS64_CFLAGS
650         if (x == _CS_LFS64_CFLAGS)
651                 {*r = Mono_Posix_ConfstrName__CS_LFS64_CFLAGS; return 0;}
652 #endif /* ndef _CS_LFS64_CFLAGS */
653 #ifdef _CS_LFS64_LDFLAGS
654         if (x == _CS_LFS64_LDFLAGS)
655                 {*r = Mono_Posix_ConfstrName__CS_LFS64_LDFLAGS; return 0;}
656 #endif /* ndef _CS_LFS64_LDFLAGS */
657 #ifdef _CS_LFS64_LIBS
658         if (x == _CS_LFS64_LIBS)
659                 {*r = Mono_Posix_ConfstrName__CS_LFS64_LIBS; return 0;}
660 #endif /* ndef _CS_LFS64_LIBS */
661 #ifdef _CS_LFS64_LINTFLAGS
662         if (x == _CS_LFS64_LINTFLAGS)
663                 {*r = Mono_Posix_ConfstrName__CS_LFS64_LINTFLAGS; return 0;}
664 #endif /* ndef _CS_LFS64_LINTFLAGS */
665 #ifdef _CS_LFS_CFLAGS
666         if (x == _CS_LFS_CFLAGS)
667                 {*r = Mono_Posix_ConfstrName__CS_LFS_CFLAGS; return 0;}
668 #endif /* ndef _CS_LFS_CFLAGS */
669 #ifdef _CS_LFS_LDFLAGS
670         if (x == _CS_LFS_LDFLAGS)
671                 {*r = Mono_Posix_ConfstrName__CS_LFS_LDFLAGS; return 0;}
672 #endif /* ndef _CS_LFS_LDFLAGS */
673 #ifdef _CS_LFS_LIBS
674         if (x == _CS_LFS_LIBS)
675                 {*r = Mono_Posix_ConfstrName__CS_LFS_LIBS; return 0;}
676 #endif /* ndef _CS_LFS_LIBS */
677 #ifdef _CS_LFS_LINTFLAGS
678         if (x == _CS_LFS_LINTFLAGS)
679                 {*r = Mono_Posix_ConfstrName__CS_LFS_LINTFLAGS; return 0;}
680 #endif /* ndef _CS_LFS_LINTFLAGS */
681 #ifdef _CS_PATH
682         if (x == _CS_PATH)
683                 {*r = Mono_Posix_ConfstrName__CS_PATH; return 0;}
684 #endif /* ndef _CS_PATH */
685 #ifdef _CS_POSIX_V6_ILP32_OFF32_CFLAGS
686         if (x == _CS_POSIX_V6_ILP32_OFF32_CFLAGS)
687                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFF32_CFLAGS; return 0;}
688 #endif /* ndef _CS_POSIX_V6_ILP32_OFF32_CFLAGS */
689 #ifdef _CS_POSIX_V6_ILP32_OFF32_LDFLAGS
690         if (x == _CS_POSIX_V6_ILP32_OFF32_LDFLAGS)
691                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFF32_LDFLAGS; return 0;}
692 #endif /* ndef _CS_POSIX_V6_ILP32_OFF32_LDFLAGS */
693 #ifdef _CS_POSIX_V6_ILP32_OFF32_LIBS
694         if (x == _CS_POSIX_V6_ILP32_OFF32_LIBS)
695                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFF32_LIBS; return 0;}
696 #endif /* ndef _CS_POSIX_V6_ILP32_OFF32_LIBS */
697 #ifdef _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS
698         if (x == _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS)
699                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFF32_LINTFLAGS; return 0;}
700 #endif /* ndef _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS */
701 #ifdef _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
702         if (x == _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS)
703                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFFBIG_CFLAGS; return 0;}
704 #endif /* ndef _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS */
705 #ifdef _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
706         if (x == _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS)
707                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS; return 0;}
708 #endif /* ndef _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS */
709 #ifdef _CS_POSIX_V6_ILP32_OFFBIG_LIBS
710         if (x == _CS_POSIX_V6_ILP32_OFFBIG_LIBS)
711                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFFBIG_LIBS; return 0;}
712 #endif /* ndef _CS_POSIX_V6_ILP32_OFFBIG_LIBS */
713 #ifdef _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS
714         if (x == _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS)
715                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS; return 0;}
716 #endif /* ndef _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS */
717 #ifdef _CS_POSIX_V6_LP64_OFF64_CFLAGS
718         if (x == _CS_POSIX_V6_LP64_OFF64_CFLAGS)
719                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_LP64_OFF64_CFLAGS; return 0;}
720 #endif /* ndef _CS_POSIX_V6_LP64_OFF64_CFLAGS */
721 #ifdef _CS_POSIX_V6_LP64_OFF64_LDFLAGS
722         if (x == _CS_POSIX_V6_LP64_OFF64_LDFLAGS)
723                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_LP64_OFF64_LDFLAGS; return 0;}
724 #endif /* ndef _CS_POSIX_V6_LP64_OFF64_LDFLAGS */
725 #ifdef _CS_POSIX_V6_LP64_OFF64_LIBS
726         if (x == _CS_POSIX_V6_LP64_OFF64_LIBS)
727                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_LP64_OFF64_LIBS; return 0;}
728 #endif /* ndef _CS_POSIX_V6_LP64_OFF64_LIBS */
729 #ifdef _CS_POSIX_V6_LP64_OFF64_LINTFLAGS
730         if (x == _CS_POSIX_V6_LP64_OFF64_LINTFLAGS)
731                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_LP64_OFF64_LINTFLAGS; return 0;}
732 #endif /* ndef _CS_POSIX_V6_LP64_OFF64_LINTFLAGS */
733 #ifdef _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
734         if (x == _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS)
735                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS; return 0;}
736 #endif /* ndef _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS */
737 #ifdef _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
738         if (x == _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS)
739                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS; return 0;}
740 #endif /* ndef _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS */
741 #ifdef _CS_POSIX_V6_LPBIG_OFFBIG_LIBS
742         if (x == _CS_POSIX_V6_LPBIG_OFFBIG_LIBS)
743                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_LPBIG_OFFBIG_LIBS; return 0;}
744 #endif /* ndef _CS_POSIX_V6_LPBIG_OFFBIG_LIBS */
745 #ifdef _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
746         if (x == _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS)
747                 {*r = Mono_Posix_ConfstrName__CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS; return 0;}
748 #endif /* ndef _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS */
749 #ifdef _CS_V6_WIDTH_RESTRICTED_ENVS
750         if (x == _CS_V6_WIDTH_RESTRICTED_ENVS)
751                 {*r = Mono_Posix_ConfstrName__CS_V6_WIDTH_RESTRICTED_ENVS; return 0;}
752 #endif /* ndef _CS_V6_WIDTH_RESTRICTED_ENVS */
753 #ifdef _CS_XBS5_ILP32_OFF32_CFLAGS
754         if (x == _CS_XBS5_ILP32_OFF32_CFLAGS)
755                 {*r = Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFF32_CFLAGS; return 0;}
756 #endif /* ndef _CS_XBS5_ILP32_OFF32_CFLAGS */
757 #ifdef _CS_XBS5_ILP32_OFF32_LDFLAGS
758         if (x == _CS_XBS5_ILP32_OFF32_LDFLAGS)
759                 {*r = Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFF32_LDFLAGS; return 0;}
760 #endif /* ndef _CS_XBS5_ILP32_OFF32_LDFLAGS */
761 #ifdef _CS_XBS5_ILP32_OFF32_LIBS
762         if (x == _CS_XBS5_ILP32_OFF32_LIBS)
763                 {*r = Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFF32_LIBS; return 0;}
764 #endif /* ndef _CS_XBS5_ILP32_OFF32_LIBS */
765 #ifdef _CS_XBS5_ILP32_OFF32_LINTFLAGS
766         if (x == _CS_XBS5_ILP32_OFF32_LINTFLAGS)
767                 {*r = Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFF32_LINTFLAGS; return 0;}
768 #endif /* ndef _CS_XBS5_ILP32_OFF32_LINTFLAGS */
769 #ifdef _CS_XBS5_ILP32_OFFBIG_CFLAGS
770         if (x == _CS_XBS5_ILP32_OFFBIG_CFLAGS)
771                 {*r = Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFFBIG_CFLAGS; return 0;}
772 #endif /* ndef _CS_XBS5_ILP32_OFFBIG_CFLAGS */
773 #ifdef _CS_XBS5_ILP32_OFFBIG_LDFLAGS
774         if (x == _CS_XBS5_ILP32_OFFBIG_LDFLAGS)
775                 {*r = Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFFBIG_LDFLAGS; return 0;}
776 #endif /* ndef _CS_XBS5_ILP32_OFFBIG_LDFLAGS */
777 #ifdef _CS_XBS5_ILP32_OFFBIG_LIBS
778         if (x == _CS_XBS5_ILP32_OFFBIG_LIBS)
779                 {*r = Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFFBIG_LIBS; return 0;}
780 #endif /* ndef _CS_XBS5_ILP32_OFFBIG_LIBS */
781 #ifdef _CS_XBS5_ILP32_OFFBIG_LINTFLAGS
782         if (x == _CS_XBS5_ILP32_OFFBIG_LINTFLAGS)
783                 {*r = Mono_Posix_ConfstrName__CS_XBS5_ILP32_OFFBIG_LINTFLAGS; return 0;}
784 #endif /* ndef _CS_XBS5_ILP32_OFFBIG_LINTFLAGS */
785 #ifdef _CS_XBS5_LP64_OFF64_CFLAGS
786         if (x == _CS_XBS5_LP64_OFF64_CFLAGS)
787                 {*r = Mono_Posix_ConfstrName__CS_XBS5_LP64_OFF64_CFLAGS; return 0;}
788 #endif /* ndef _CS_XBS5_LP64_OFF64_CFLAGS */
789 #ifdef _CS_XBS5_LP64_OFF64_LDFLAGS
790         if (x == _CS_XBS5_LP64_OFF64_LDFLAGS)
791                 {*r = Mono_Posix_ConfstrName__CS_XBS5_LP64_OFF64_LDFLAGS; return 0;}
792 #endif /* ndef _CS_XBS5_LP64_OFF64_LDFLAGS */
793 #ifdef _CS_XBS5_LP64_OFF64_LIBS
794         if (x == _CS_XBS5_LP64_OFF64_LIBS)
795                 {*r = Mono_Posix_ConfstrName__CS_XBS5_LP64_OFF64_LIBS; return 0;}
796 #endif /* ndef _CS_XBS5_LP64_OFF64_LIBS */
797 #ifdef _CS_XBS5_LP64_OFF64_LINTFLAGS
798         if (x == _CS_XBS5_LP64_OFF64_LINTFLAGS)
799                 {*r = Mono_Posix_ConfstrName__CS_XBS5_LP64_OFF64_LINTFLAGS; return 0;}
800 #endif /* ndef _CS_XBS5_LP64_OFF64_LINTFLAGS */
801 #ifdef _CS_XBS5_LPBIG_OFFBIG_CFLAGS
802         if (x == _CS_XBS5_LPBIG_OFFBIG_CFLAGS)
803                 {*r = Mono_Posix_ConfstrName__CS_XBS5_LPBIG_OFFBIG_CFLAGS; return 0;}
804 #endif /* ndef _CS_XBS5_LPBIG_OFFBIG_CFLAGS */
805 #ifdef _CS_XBS5_LPBIG_OFFBIG_LDFLAGS
806         if (x == _CS_XBS5_LPBIG_OFFBIG_LDFLAGS)
807                 {*r = Mono_Posix_ConfstrName__CS_XBS5_LPBIG_OFFBIG_LDFLAGS; return 0;}
808 #endif /* ndef _CS_XBS5_LPBIG_OFFBIG_LDFLAGS */
809 #ifdef _CS_XBS5_LPBIG_OFFBIG_LIBS
810         if (x == _CS_XBS5_LPBIG_OFFBIG_LIBS)
811                 {*r = Mono_Posix_ConfstrName__CS_XBS5_LPBIG_OFFBIG_LIBS; return 0;}
812 #endif /* ndef _CS_XBS5_LPBIG_OFFBIG_LIBS */
813 #ifdef _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS
814         if (x == _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS)
815                 {*r = Mono_Posix_ConfstrName__CS_XBS5_LPBIG_OFFBIG_LINTFLAGS; return 0;}
816 #endif /* ndef _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS */
817         errno = EINVAL; return -1;
818 }
819
820 int Mono_Posix_FromDirectoryNotifyFlags (int x, int *r)
821 {
822         *r = 0;
823         if ((x & Mono_Posix_DirectoryNotifyFlags_DN_ACCESS) == Mono_Posix_DirectoryNotifyFlags_DN_ACCESS)
824 #ifdef DN_ACCESS
825                 *r |= DN_ACCESS;
826 #else /* def DN_ACCESS */
827                 {errno = EINVAL; return -1;}
828 #endif /* ndef DN_ACCESS */
829         if ((x & Mono_Posix_DirectoryNotifyFlags_DN_ATTRIB) == Mono_Posix_DirectoryNotifyFlags_DN_ATTRIB)
830 #ifdef DN_ATTRIB
831                 *r |= DN_ATTRIB;
832 #else /* def DN_ATTRIB */
833                 {errno = EINVAL; return -1;}
834 #endif /* ndef DN_ATTRIB */
835         if ((x & Mono_Posix_DirectoryNotifyFlags_DN_CREATE) == Mono_Posix_DirectoryNotifyFlags_DN_CREATE)
836 #ifdef DN_CREATE
837                 *r |= DN_CREATE;
838 #else /* def DN_CREATE */
839                 {errno = EINVAL; return -1;}
840 #endif /* ndef DN_CREATE */
841         if ((x & Mono_Posix_DirectoryNotifyFlags_DN_DELETE) == Mono_Posix_DirectoryNotifyFlags_DN_DELETE)
842 #ifdef DN_DELETE
843                 *r |= DN_DELETE;
844 #else /* def DN_DELETE */
845                 {errno = EINVAL; return -1;}
846 #endif /* ndef DN_DELETE */
847         if ((x & Mono_Posix_DirectoryNotifyFlags_DN_MODIFY) == Mono_Posix_DirectoryNotifyFlags_DN_MODIFY)
848 #ifdef DN_MODIFY
849                 *r |= DN_MODIFY;
850 #else /* def DN_MODIFY */
851                 {errno = EINVAL; return -1;}
852 #endif /* ndef DN_MODIFY */
853         if ((x & Mono_Posix_DirectoryNotifyFlags_DN_MULTISHOT) == Mono_Posix_DirectoryNotifyFlags_DN_MULTISHOT)
854 #ifdef DN_MULTISHOT
855                 *r |= DN_MULTISHOT;
856 #else /* def DN_MULTISHOT */
857                 {errno = EINVAL; return -1;}
858 #endif /* ndef DN_MULTISHOT */
859         if ((x & Mono_Posix_DirectoryNotifyFlags_DN_RENAME) == Mono_Posix_DirectoryNotifyFlags_DN_RENAME)
860 #ifdef DN_RENAME
861                 *r |= DN_RENAME;
862 #else /* def DN_RENAME */
863                 {errno = EINVAL; return -1;}
864 #endif /* ndef DN_RENAME */
865         if (x == 0)
866                 return 0;
867         return 0;
868 }
869
870 int Mono_Posix_ToDirectoryNotifyFlags (int x, int *r)
871 {
872         *r = 0;
873         if (x == 0)
874                 return 0;
875 #ifdef DN_ACCESS
876         if ((x & DN_ACCESS) == DN_ACCESS)
877                 *r |= Mono_Posix_DirectoryNotifyFlags_DN_ACCESS;
878 #endif /* ndef DN_ACCESS */
879 #ifdef DN_ATTRIB
880         if ((x & DN_ATTRIB) == DN_ATTRIB)
881                 *r |= Mono_Posix_DirectoryNotifyFlags_DN_ATTRIB;
882 #endif /* ndef DN_ATTRIB */
883 #ifdef DN_CREATE
884         if ((x & DN_CREATE) == DN_CREATE)
885                 *r |= Mono_Posix_DirectoryNotifyFlags_DN_CREATE;
886 #endif /* ndef DN_CREATE */
887 #ifdef DN_DELETE
888         if ((x & DN_DELETE) == DN_DELETE)
889                 *r |= Mono_Posix_DirectoryNotifyFlags_DN_DELETE;
890 #endif /* ndef DN_DELETE */
891 #ifdef DN_MODIFY
892         if ((x & DN_MODIFY) == DN_MODIFY)
893                 *r |= Mono_Posix_DirectoryNotifyFlags_DN_MODIFY;
894 #endif /* ndef DN_MODIFY */
895 #ifdef DN_MULTISHOT
896         if ((x & DN_MULTISHOT) == DN_MULTISHOT)
897                 *r |= Mono_Posix_DirectoryNotifyFlags_DN_MULTISHOT;
898 #endif /* ndef DN_MULTISHOT */
899 #ifdef DN_RENAME
900         if ((x & DN_RENAME) == DN_RENAME)
901                 *r |= Mono_Posix_DirectoryNotifyFlags_DN_RENAME;
902 #endif /* ndef DN_RENAME */
903         return 0;
904 }
905
906 int Mono_Posix_FromEpollEvents (unsigned int x, unsigned int *r)
907 {
908         *r = 0;
909         if ((x & Mono_Posix_EpollEvents_EPOLLERR) == Mono_Posix_EpollEvents_EPOLLERR)
910 #ifdef EPOLLERR
911                 *r |= EPOLLERR;
912 #else /* def EPOLLERR */
913                 {errno = EINVAL; return -1;}
914 #endif /* ndef EPOLLERR */
915         if ((x & Mono_Posix_EpollEvents_EPOLLET) == Mono_Posix_EpollEvents_EPOLLET)
916 #ifdef EPOLLET
917                 *r |= EPOLLET;
918 #else /* def EPOLLET */
919                 {errno = EINVAL; return -1;}
920 #endif /* ndef EPOLLET */
921         if ((x & Mono_Posix_EpollEvents_EPOLLHUP) == Mono_Posix_EpollEvents_EPOLLHUP)
922 #ifdef EPOLLHUP
923                 *r |= EPOLLHUP;
924 #else /* def EPOLLHUP */
925                 {errno = EINVAL; return -1;}
926 #endif /* ndef EPOLLHUP */
927         if ((x & Mono_Posix_EpollEvents_EPOLLIN) == Mono_Posix_EpollEvents_EPOLLIN)
928 #ifdef EPOLLIN
929                 *r |= EPOLLIN;
930 #else /* def EPOLLIN */
931                 {errno = EINVAL; return -1;}
932 #endif /* ndef EPOLLIN */
933         if ((x & Mono_Posix_EpollEvents_EPOLLMSG) == Mono_Posix_EpollEvents_EPOLLMSG)
934 #ifdef EPOLLMSG
935                 *r |= EPOLLMSG;
936 #else /* def EPOLLMSG */
937                 {errno = EINVAL; return -1;}
938 #endif /* ndef EPOLLMSG */
939         if ((x & Mono_Posix_EpollEvents_EPOLLONESHOT) == Mono_Posix_EpollEvents_EPOLLONESHOT)
940 #ifdef EPOLLONESHOT
941                 *r |= EPOLLONESHOT;
942 #else /* def EPOLLONESHOT */
943                 {errno = EINVAL; return -1;}
944 #endif /* ndef EPOLLONESHOT */
945         if ((x & Mono_Posix_EpollEvents_EPOLLOUT) == Mono_Posix_EpollEvents_EPOLLOUT)
946 #ifdef EPOLLOUT
947                 *r |= EPOLLOUT;
948 #else /* def EPOLLOUT */
949                 {errno = EINVAL; return -1;}
950 #endif /* ndef EPOLLOUT */
951         if ((x & Mono_Posix_EpollEvents_EPOLLPRI) == Mono_Posix_EpollEvents_EPOLLPRI)
952 #ifdef EPOLLPRI
953                 *r |= EPOLLPRI;
954 #else /* def EPOLLPRI */
955                 {errno = EINVAL; return -1;}
956 #endif /* ndef EPOLLPRI */
957         if ((x & Mono_Posix_EpollEvents_EPOLLRDBAND) == Mono_Posix_EpollEvents_EPOLLRDBAND)
958 #ifdef EPOLLRDBAND
959                 *r |= EPOLLRDBAND;
960 #else /* def EPOLLRDBAND */
961                 {errno = EINVAL; return -1;}
962 #endif /* ndef EPOLLRDBAND */
963         if ((x & Mono_Posix_EpollEvents_EPOLLRDHUP) == Mono_Posix_EpollEvents_EPOLLRDHUP)
964 #ifdef EPOLLRDHUP
965                 *r |= EPOLLRDHUP;
966 #else /* def EPOLLRDHUP */
967                 {errno = EINVAL; return -1;}
968 #endif /* ndef EPOLLRDHUP */
969         if ((x & Mono_Posix_EpollEvents_EPOLLRDNORM) == Mono_Posix_EpollEvents_EPOLLRDNORM)
970 #ifdef EPOLLRDNORM
971                 *r |= EPOLLRDNORM;
972 #else /* def EPOLLRDNORM */
973                 {errno = EINVAL; return -1;}
974 #endif /* ndef EPOLLRDNORM */
975         if ((x & Mono_Posix_EpollEvents_EPOLLWRBAND) == Mono_Posix_EpollEvents_EPOLLWRBAND)
976 #ifdef EPOLLWRBAND
977                 *r |= EPOLLWRBAND;
978 #else /* def EPOLLWRBAND */
979                 {errno = EINVAL; return -1;}
980 #endif /* ndef EPOLLWRBAND */
981         if ((x & Mono_Posix_EpollEvents_EPOLLWRNORM) == Mono_Posix_EpollEvents_EPOLLWRNORM)
982 #ifdef EPOLLWRNORM
983                 *r |= EPOLLWRNORM;
984 #else /* def EPOLLWRNORM */
985                 {errno = EINVAL; return -1;}
986 #endif /* ndef EPOLLWRNORM */
987         if (x == 0)
988                 return 0;
989         return 0;
990 }
991
992 int Mono_Posix_ToEpollEvents (unsigned int x, unsigned int *r)
993 {
994         *r = 0;
995         if (x == 0)
996                 return 0;
997 #ifdef EPOLLERR
998         if ((x & EPOLLERR) == EPOLLERR)
999                 *r |= Mono_Posix_EpollEvents_EPOLLERR;
1000 #endif /* ndef EPOLLERR */
1001 #ifdef EPOLLET
1002         if ((x & EPOLLET) == EPOLLET)
1003                 *r |= Mono_Posix_EpollEvents_EPOLLET;
1004 #endif /* ndef EPOLLET */
1005 #ifdef EPOLLHUP
1006         if ((x & EPOLLHUP) == EPOLLHUP)
1007                 *r |= Mono_Posix_EpollEvents_EPOLLHUP;
1008 #endif /* ndef EPOLLHUP */
1009 #ifdef EPOLLIN
1010         if ((x & EPOLLIN) == EPOLLIN)
1011                 *r |= Mono_Posix_EpollEvents_EPOLLIN;
1012 #endif /* ndef EPOLLIN */
1013 #ifdef EPOLLMSG
1014         if ((x & EPOLLMSG) == EPOLLMSG)
1015                 *r |= Mono_Posix_EpollEvents_EPOLLMSG;
1016 #endif /* ndef EPOLLMSG */
1017 #ifdef EPOLLONESHOT
1018         if ((x & EPOLLONESHOT) == EPOLLONESHOT)
1019                 *r |= Mono_Posix_EpollEvents_EPOLLONESHOT;
1020 #endif /* ndef EPOLLONESHOT */
1021 #ifdef EPOLLOUT
1022         if ((x & EPOLLOUT) == EPOLLOUT)
1023                 *r |= Mono_Posix_EpollEvents_EPOLLOUT;
1024 #endif /* ndef EPOLLOUT */
1025 #ifdef EPOLLPRI
1026         if ((x & EPOLLPRI) == EPOLLPRI)
1027                 *r |= Mono_Posix_EpollEvents_EPOLLPRI;
1028 #endif /* ndef EPOLLPRI */
1029 #ifdef EPOLLRDBAND
1030         if ((x & EPOLLRDBAND) == EPOLLRDBAND)
1031                 *r |= Mono_Posix_EpollEvents_EPOLLRDBAND;
1032 #endif /* ndef EPOLLRDBAND */
1033 #ifdef EPOLLRDHUP
1034         if ((x & EPOLLRDHUP) == EPOLLRDHUP)
1035                 *r |= Mono_Posix_EpollEvents_EPOLLRDHUP;
1036 #endif /* ndef EPOLLRDHUP */
1037 #ifdef EPOLLRDNORM
1038         if ((x & EPOLLRDNORM) == EPOLLRDNORM)
1039                 *r |= Mono_Posix_EpollEvents_EPOLLRDNORM;
1040 #endif /* ndef EPOLLRDNORM */
1041 #ifdef EPOLLWRBAND
1042         if ((x & EPOLLWRBAND) == EPOLLWRBAND)
1043                 *r |= Mono_Posix_EpollEvents_EPOLLWRBAND;
1044 #endif /* ndef EPOLLWRBAND */
1045 #ifdef EPOLLWRNORM
1046         if ((x & EPOLLWRNORM) == EPOLLWRNORM)
1047                 *r |= Mono_Posix_EpollEvents_EPOLLWRNORM;
1048 #endif /* ndef EPOLLWRNORM */
1049         return 0;
1050 }
1051
1052 int Mono_Posix_FromEpollFlags (int x, int *r)
1053 {
1054         *r = 0;
1055         if ((x & Mono_Posix_EpollFlags_EPOLL_CLOEXEC) == Mono_Posix_EpollFlags_EPOLL_CLOEXEC)
1056 #ifdef EPOLL_CLOEXEC
1057                 *r |= EPOLL_CLOEXEC;
1058 #else /* def EPOLL_CLOEXEC */
1059                 {errno = EINVAL; return -1;}
1060 #endif /* ndef EPOLL_CLOEXEC */
1061         if ((x & Mono_Posix_EpollFlags_EPOLL_NONBLOCK) == Mono_Posix_EpollFlags_EPOLL_NONBLOCK)
1062 #ifdef EPOLL_NONBLOCK
1063                 *r |= EPOLL_NONBLOCK;
1064 #else /* def EPOLL_NONBLOCK */
1065                 {errno = EINVAL; return -1;}
1066 #endif /* ndef EPOLL_NONBLOCK */
1067         if (x == 0)
1068                 return 0;
1069         return 0;
1070 }
1071
1072 int Mono_Posix_ToEpollFlags (int x, int *r)
1073 {
1074         *r = 0;
1075         if (x == 0)
1076                 return 0;
1077 #ifdef EPOLL_CLOEXEC
1078         if ((x & EPOLL_CLOEXEC) == EPOLL_CLOEXEC)
1079                 *r |= Mono_Posix_EpollFlags_EPOLL_CLOEXEC;
1080 #endif /* ndef EPOLL_CLOEXEC */
1081 #ifdef EPOLL_NONBLOCK
1082         if ((x & EPOLL_NONBLOCK) == EPOLL_NONBLOCK)
1083                 *r |= Mono_Posix_EpollFlags_EPOLL_NONBLOCK;
1084 #endif /* ndef EPOLL_NONBLOCK */
1085         return 0;
1086 }
1087
1088 int Mono_Posix_FromErrno (int x, int *r)
1089 {
1090         *r = 0;
1091         if (x == Mono_Posix_Errno_E2BIG)
1092 #ifdef E2BIG
1093                 {*r = E2BIG; return 0;}
1094 #else /* def E2BIG */
1095                 {errno = EINVAL; return -1;}
1096 #endif /* ndef E2BIG */
1097         if (x == Mono_Posix_Errno_EACCES)
1098 #ifdef EACCES
1099                 {*r = EACCES; return 0;}
1100 #else /* def EACCES */
1101                 {errno = EINVAL; return -1;}
1102 #endif /* ndef EACCES */
1103         if (x == Mono_Posix_Errno_EADDRINUSE)
1104 #ifdef EADDRINUSE
1105                 {*r = EADDRINUSE; return 0;}
1106 #else /* def EADDRINUSE */
1107                 {errno = EINVAL; return -1;}
1108 #endif /* ndef EADDRINUSE */
1109         if (x == Mono_Posix_Errno_EADDRNOTAVAIL)
1110 #ifdef EADDRNOTAVAIL
1111                 {*r = EADDRNOTAVAIL; return 0;}
1112 #else /* def EADDRNOTAVAIL */
1113                 {errno = EINVAL; return -1;}
1114 #endif /* ndef EADDRNOTAVAIL */
1115         if (x == Mono_Posix_Errno_EADV)
1116 #ifdef EADV
1117                 {*r = EADV; return 0;}
1118 #else /* def EADV */
1119                 {errno = EINVAL; return -1;}
1120 #endif /* ndef EADV */
1121         if (x == Mono_Posix_Errno_EAFNOSUPPORT)
1122 #ifdef EAFNOSUPPORT
1123                 {*r = EAFNOSUPPORT; return 0;}
1124 #else /* def EAFNOSUPPORT */
1125                 {errno = EINVAL; return -1;}
1126 #endif /* ndef EAFNOSUPPORT */
1127         if (x == Mono_Posix_Errno_EAGAIN)
1128 #ifdef EAGAIN
1129                 {*r = EAGAIN; return 0;}
1130 #else /* def EAGAIN */
1131                 {errno = EINVAL; return -1;}
1132 #endif /* ndef EAGAIN */
1133         if (x == Mono_Posix_Errno_EALREADY)
1134 #ifdef EALREADY
1135                 {*r = EALREADY; return 0;}
1136 #else /* def EALREADY */
1137                 {errno = EINVAL; return -1;}
1138 #endif /* ndef EALREADY */
1139         if (x == Mono_Posix_Errno_EBADE)
1140 #ifdef EBADE
1141                 {*r = EBADE; return 0;}
1142 #else /* def EBADE */
1143                 {errno = EINVAL; return -1;}
1144 #endif /* ndef EBADE */
1145         if (x == Mono_Posix_Errno_EBADF)
1146 #ifdef EBADF
1147                 {*r = EBADF; return 0;}
1148 #else /* def EBADF */
1149                 {errno = EINVAL; return -1;}
1150 #endif /* ndef EBADF */
1151         if (x == Mono_Posix_Errno_EBADFD)
1152 #ifdef EBADFD
1153                 {*r = EBADFD; return 0;}
1154 #else /* def EBADFD */
1155                 {errno = EINVAL; return -1;}
1156 #endif /* ndef EBADFD */
1157         if (x == Mono_Posix_Errno_EBADMSG)
1158 #ifdef EBADMSG
1159                 {*r = EBADMSG; return 0;}
1160 #else /* def EBADMSG */
1161                 {errno = EINVAL; return -1;}
1162 #endif /* ndef EBADMSG */
1163         if (x == Mono_Posix_Errno_EBADR)
1164 #ifdef EBADR
1165                 {*r = EBADR; return 0;}
1166 #else /* def EBADR */
1167                 {errno = EINVAL; return -1;}
1168 #endif /* ndef EBADR */
1169         if (x == Mono_Posix_Errno_EBADRQC)
1170 #ifdef EBADRQC
1171                 {*r = EBADRQC; return 0;}
1172 #else /* def EBADRQC */
1173                 {errno = EINVAL; return -1;}
1174 #endif /* ndef EBADRQC */
1175         if (x == Mono_Posix_Errno_EBADSLT)
1176 #ifdef EBADSLT
1177                 {*r = EBADSLT; return 0;}
1178 #else /* def EBADSLT */
1179                 {errno = EINVAL; return -1;}
1180 #endif /* ndef EBADSLT */
1181         if (x == Mono_Posix_Errno_EBFONT)
1182 #ifdef EBFONT
1183                 {*r = EBFONT; return 0;}
1184 #else /* def EBFONT */
1185                 {errno = EINVAL; return -1;}
1186 #endif /* ndef EBFONT */
1187         if (x == Mono_Posix_Errno_EBUSY)
1188 #ifdef EBUSY
1189                 {*r = EBUSY; return 0;}
1190 #else /* def EBUSY */
1191                 {errno = EINVAL; return -1;}
1192 #endif /* ndef EBUSY */
1193         if (x == Mono_Posix_Errno_ECHILD)
1194 #ifdef ECHILD
1195                 {*r = ECHILD; return 0;}
1196 #else /* def ECHILD */
1197                 {errno = EINVAL; return -1;}
1198 #endif /* ndef ECHILD */
1199         if (x == Mono_Posix_Errno_ECHRNG)
1200 #ifdef ECHRNG
1201                 {*r = ECHRNG; return 0;}
1202 #else /* def ECHRNG */
1203                 {errno = EINVAL; return -1;}
1204 #endif /* ndef ECHRNG */
1205         if (x == Mono_Posix_Errno_ECOMM)
1206 #ifdef ECOMM
1207                 {*r = ECOMM; return 0;}
1208 #else /* def ECOMM */
1209                 {errno = EINVAL; return -1;}
1210 #endif /* ndef ECOMM */
1211         if (x == Mono_Posix_Errno_ECONNABORTED)
1212 #ifdef ECONNABORTED
1213                 {*r = ECONNABORTED; return 0;}
1214 #else /* def ECONNABORTED */
1215                 {errno = EINVAL; return -1;}
1216 #endif /* ndef ECONNABORTED */
1217         if (x == Mono_Posix_Errno_ECONNREFUSED)
1218 #ifdef ECONNREFUSED
1219                 {*r = ECONNREFUSED; return 0;}
1220 #else /* def ECONNREFUSED */
1221                 {errno = EINVAL; return -1;}
1222 #endif /* ndef ECONNREFUSED */
1223         if (x == Mono_Posix_Errno_ECONNRESET)
1224 #ifdef ECONNRESET
1225                 {*r = ECONNRESET; return 0;}
1226 #else /* def ECONNRESET */
1227                 {errno = EINVAL; return -1;}
1228 #endif /* ndef ECONNRESET */
1229         if (x == Mono_Posix_Errno_EDEADLK)
1230 #ifdef EDEADLK
1231                 {*r = EDEADLK; return 0;}
1232 #else /* def EDEADLK */
1233                 {errno = EINVAL; return -1;}
1234 #endif /* ndef EDEADLK */
1235         if (x == Mono_Posix_Errno_EDEADLOCK)
1236 #ifdef EDEADLOCK
1237                 {*r = EDEADLOCK; return 0;}
1238 #else /* def EDEADLOCK */
1239                 {errno = EINVAL; return -1;}
1240 #endif /* ndef EDEADLOCK */
1241         if (x == Mono_Posix_Errno_EDESTADDRREQ)
1242 #ifdef EDESTADDRREQ
1243                 {*r = EDESTADDRREQ; return 0;}
1244 #else /* def EDESTADDRREQ */
1245                 {errno = EINVAL; return -1;}
1246 #endif /* ndef EDESTADDRREQ */
1247         if (x == Mono_Posix_Errno_EDOM)
1248 #ifdef EDOM
1249                 {*r = EDOM; return 0;}
1250 #else /* def EDOM */
1251                 {errno = EINVAL; return -1;}
1252 #endif /* ndef EDOM */
1253         if (x == Mono_Posix_Errno_EDOTDOT)
1254 #ifdef EDOTDOT
1255                 {*r = EDOTDOT; return 0;}
1256 #else /* def EDOTDOT */
1257                 {errno = EINVAL; return -1;}
1258 #endif /* ndef EDOTDOT */
1259         if (x == Mono_Posix_Errno_EDQUOT)
1260 #ifdef EDQUOT
1261                 {*r = EDQUOT; return 0;}
1262 #else /* def EDQUOT */
1263                 {errno = EINVAL; return -1;}
1264 #endif /* ndef EDQUOT */
1265         if (x == Mono_Posix_Errno_EEXIST)
1266 #ifdef EEXIST
1267                 {*r = EEXIST; return 0;}
1268 #else /* def EEXIST */
1269                 {errno = EINVAL; return -1;}
1270 #endif /* ndef EEXIST */
1271         if (x == Mono_Posix_Errno_EFAULT)
1272 #ifdef EFAULT
1273                 {*r = EFAULT; return 0;}
1274 #else /* def EFAULT */
1275                 {errno = EINVAL; return -1;}
1276 #endif /* ndef EFAULT */
1277         if (x == Mono_Posix_Errno_EFBIG)
1278 #ifdef EFBIG
1279                 {*r = EFBIG; return 0;}
1280 #else /* def EFBIG */
1281                 {errno = EINVAL; return -1;}
1282 #endif /* ndef EFBIG */
1283         if (x == Mono_Posix_Errno_EHOSTDOWN)
1284 #ifdef EHOSTDOWN
1285                 {*r = EHOSTDOWN; return 0;}
1286 #else /* def EHOSTDOWN */
1287                 {errno = EINVAL; return -1;}
1288 #endif /* ndef EHOSTDOWN */
1289         if (x == Mono_Posix_Errno_EHOSTUNREACH)
1290 #ifdef EHOSTUNREACH
1291                 {*r = EHOSTUNREACH; return 0;}
1292 #else /* def EHOSTUNREACH */
1293                 {errno = EINVAL; return -1;}
1294 #endif /* ndef EHOSTUNREACH */
1295         if (x == Mono_Posix_Errno_EIDRM)
1296 #ifdef EIDRM
1297                 {*r = EIDRM; return 0;}
1298 #else /* def EIDRM */
1299                 {errno = EINVAL; return -1;}
1300 #endif /* ndef EIDRM */
1301         if (x == Mono_Posix_Errno_EILSEQ)
1302 #ifdef EILSEQ
1303                 {*r = EILSEQ; return 0;}
1304 #else /* def EILSEQ */
1305                 {errno = EINVAL; return -1;}
1306 #endif /* ndef EILSEQ */
1307         if (x == Mono_Posix_Errno_EINPROGRESS)
1308 #ifdef EINPROGRESS
1309                 {*r = EINPROGRESS; return 0;}
1310 #else /* def EINPROGRESS */
1311                 {errno = EINVAL; return -1;}
1312 #endif /* ndef EINPROGRESS */
1313         if (x == Mono_Posix_Errno_EINTR)
1314 #ifdef EINTR
1315                 {*r = EINTR; return 0;}
1316 #else /* def EINTR */
1317                 {errno = EINVAL; return -1;}
1318 #endif /* ndef EINTR */
1319         if (x == Mono_Posix_Errno_EINVAL)
1320 #ifdef EINVAL
1321                 {*r = EINVAL; return 0;}
1322 #else /* def EINVAL */
1323                 {errno = EINVAL; return -1;}
1324 #endif /* ndef EINVAL */
1325         if (x == Mono_Posix_Errno_EIO)
1326 #ifdef EIO
1327                 {*r = EIO; return 0;}
1328 #else /* def EIO */
1329                 {errno = EINVAL; return -1;}
1330 #endif /* ndef EIO */
1331         if (x == Mono_Posix_Errno_EISCONN)
1332 #ifdef EISCONN
1333                 {*r = EISCONN; return 0;}
1334 #else /* def EISCONN */
1335                 {errno = EINVAL; return -1;}
1336 #endif /* ndef EISCONN */
1337         if (x == Mono_Posix_Errno_EISDIR)
1338 #ifdef EISDIR
1339                 {*r = EISDIR; return 0;}
1340 #else /* def EISDIR */
1341                 {errno = EINVAL; return -1;}
1342 #endif /* ndef EISDIR */
1343         if (x == Mono_Posix_Errno_EISNAM)
1344 #ifdef EISNAM
1345                 {*r = EISNAM; return 0;}
1346 #else /* def EISNAM */
1347                 {errno = EINVAL; return -1;}
1348 #endif /* ndef EISNAM */
1349         if (x == Mono_Posix_Errno_EL2HLT)
1350 #ifdef EL2HLT
1351                 {*r = EL2HLT; return 0;}
1352 #else /* def EL2HLT */
1353                 {errno = EINVAL; return -1;}
1354 #endif /* ndef EL2HLT */
1355         if (x == Mono_Posix_Errno_EL2NSYNC)
1356 #ifdef EL2NSYNC
1357                 {*r = EL2NSYNC; return 0;}
1358 #else /* def EL2NSYNC */
1359                 {errno = EINVAL; return -1;}
1360 #endif /* ndef EL2NSYNC */
1361         if (x == Mono_Posix_Errno_EL3HLT)
1362 #ifdef EL3HLT
1363                 {*r = EL3HLT; return 0;}
1364 #else /* def EL3HLT */
1365                 {errno = EINVAL; return -1;}
1366 #endif /* ndef EL3HLT */
1367         if (x == Mono_Posix_Errno_EL3RST)
1368 #ifdef EL3RST
1369                 {*r = EL3RST; return 0;}
1370 #else /* def EL3RST */
1371                 {errno = EINVAL; return -1;}
1372 #endif /* ndef EL3RST */
1373         if (x == Mono_Posix_Errno_ELIBACC)
1374 #ifdef ELIBACC
1375                 {*r = ELIBACC; return 0;}
1376 #else /* def ELIBACC */
1377                 {errno = EINVAL; return -1;}
1378 #endif /* ndef ELIBACC */
1379         if (x == Mono_Posix_Errno_ELIBBAD)
1380 #ifdef ELIBBAD
1381                 {*r = ELIBBAD; return 0;}
1382 #else /* def ELIBBAD */
1383                 {errno = EINVAL; return -1;}
1384 #endif /* ndef ELIBBAD */
1385         if (x == Mono_Posix_Errno_ELIBEXEC)
1386 #ifdef ELIBEXEC
1387                 {*r = ELIBEXEC; return 0;}
1388 #else /* def ELIBEXEC */
1389                 {errno = EINVAL; return -1;}
1390 #endif /* ndef ELIBEXEC */
1391         if (x == Mono_Posix_Errno_ELIBMAX)
1392 #ifdef ELIBMAX
1393                 {*r = ELIBMAX; return 0;}
1394 #else /* def ELIBMAX */
1395                 {errno = EINVAL; return -1;}
1396 #endif /* ndef ELIBMAX */
1397         if (x == Mono_Posix_Errno_ELIBSCN)
1398 #ifdef ELIBSCN
1399                 {*r = ELIBSCN; return 0;}
1400 #else /* def ELIBSCN */
1401                 {errno = EINVAL; return -1;}
1402 #endif /* ndef ELIBSCN */
1403         if (x == Mono_Posix_Errno_ELNRNG)
1404 #ifdef ELNRNG
1405                 {*r = ELNRNG; return 0;}
1406 #else /* def ELNRNG */
1407                 {errno = EINVAL; return -1;}
1408 #endif /* ndef ELNRNG */
1409         if (x == Mono_Posix_Errno_ELOOP)
1410 #ifdef ELOOP
1411                 {*r = ELOOP; return 0;}
1412 #else /* def ELOOP */
1413                 {errno = EINVAL; return -1;}
1414 #endif /* ndef ELOOP */
1415         if (x == Mono_Posix_Errno_EMEDIUMTYPE)
1416 #ifdef EMEDIUMTYPE
1417                 {*r = EMEDIUMTYPE; return 0;}
1418 #else /* def EMEDIUMTYPE */
1419                 {errno = EINVAL; return -1;}
1420 #endif /* ndef EMEDIUMTYPE */
1421         if (x == Mono_Posix_Errno_EMFILE)
1422 #ifdef EMFILE
1423                 {*r = EMFILE; return 0;}
1424 #else /* def EMFILE */
1425                 {errno = EINVAL; return -1;}
1426 #endif /* ndef EMFILE */
1427         if (x == Mono_Posix_Errno_EMLINK)
1428 #ifdef EMLINK
1429                 {*r = EMLINK; return 0;}
1430 #else /* def EMLINK */
1431                 {errno = EINVAL; return -1;}
1432 #endif /* ndef EMLINK */
1433         if (x == Mono_Posix_Errno_EMSGSIZE)
1434 #ifdef EMSGSIZE
1435                 {*r = EMSGSIZE; return 0;}
1436 #else /* def EMSGSIZE */
1437                 {errno = EINVAL; return -1;}
1438 #endif /* ndef EMSGSIZE */
1439         if (x == Mono_Posix_Errno_EMULTIHOP)
1440 #ifdef EMULTIHOP
1441                 {*r = EMULTIHOP; return 0;}
1442 #else /* def EMULTIHOP */
1443                 {errno = EINVAL; return -1;}
1444 #endif /* ndef EMULTIHOP */
1445         if (x == Mono_Posix_Errno_ENAMETOOLONG)
1446 #ifdef ENAMETOOLONG
1447                 {*r = ENAMETOOLONG; return 0;}
1448 #else /* def ENAMETOOLONG */
1449                 {errno = EINVAL; return -1;}
1450 #endif /* ndef ENAMETOOLONG */
1451         if (x == Mono_Posix_Errno_ENAVAIL)
1452 #ifdef ENAVAIL
1453                 {*r = ENAVAIL; return 0;}
1454 #else /* def ENAVAIL */
1455                 {errno = EINVAL; return -1;}
1456 #endif /* ndef ENAVAIL */
1457         if (x == Mono_Posix_Errno_ENETDOWN)
1458 #ifdef ENETDOWN
1459                 {*r = ENETDOWN; return 0;}
1460 #else /* def ENETDOWN */
1461                 {errno = EINVAL; return -1;}
1462 #endif /* ndef ENETDOWN */
1463         if (x == Mono_Posix_Errno_ENETRESET)
1464 #ifdef ENETRESET
1465                 {*r = ENETRESET; return 0;}
1466 #else /* def ENETRESET */
1467                 {errno = EINVAL; return -1;}
1468 #endif /* ndef ENETRESET */
1469         if (x == Mono_Posix_Errno_ENETUNREACH)
1470 #ifdef ENETUNREACH
1471                 {*r = ENETUNREACH; return 0;}
1472 #else /* def ENETUNREACH */
1473                 {errno = EINVAL; return -1;}
1474 #endif /* ndef ENETUNREACH */
1475         if (x == Mono_Posix_Errno_ENFILE)
1476 #ifdef ENFILE
1477                 {*r = ENFILE; return 0;}
1478 #else /* def ENFILE */
1479                 {errno = EINVAL; return -1;}
1480 #endif /* ndef ENFILE */
1481         if (x == Mono_Posix_Errno_ENOANO)
1482 #ifdef ENOANO
1483                 {*r = ENOANO; return 0;}
1484 #else /* def ENOANO */
1485                 {errno = EINVAL; return -1;}
1486 #endif /* ndef ENOANO */
1487         if (x == Mono_Posix_Errno_ENOBUFS)
1488 #ifdef ENOBUFS
1489                 {*r = ENOBUFS; return 0;}
1490 #else /* def ENOBUFS */
1491                 {errno = EINVAL; return -1;}
1492 #endif /* ndef ENOBUFS */
1493         if (x == Mono_Posix_Errno_ENOCSI)
1494 #ifdef ENOCSI
1495                 {*r = ENOCSI; return 0;}
1496 #else /* def ENOCSI */
1497                 {errno = EINVAL; return -1;}
1498 #endif /* ndef ENOCSI */
1499         if (x == Mono_Posix_Errno_ENODATA)
1500 #ifdef ENODATA
1501                 {*r = ENODATA; return 0;}
1502 #else /* def ENODATA */
1503                 {errno = EINVAL; return -1;}
1504 #endif /* ndef ENODATA */
1505         if (x == Mono_Posix_Errno_ENODEV)
1506 #ifdef ENODEV
1507                 {*r = ENODEV; return 0;}
1508 #else /* def ENODEV */
1509                 {errno = EINVAL; return -1;}
1510 #endif /* ndef ENODEV */
1511         if (x == Mono_Posix_Errno_ENOENT)
1512 #ifdef ENOENT
1513                 {*r = ENOENT; return 0;}
1514 #else /* def ENOENT */
1515                 {errno = EINVAL; return -1;}
1516 #endif /* ndef ENOENT */
1517         if (x == Mono_Posix_Errno_ENOEXEC)
1518 #ifdef ENOEXEC
1519                 {*r = ENOEXEC; return 0;}
1520 #else /* def ENOEXEC */
1521                 {errno = EINVAL; return -1;}
1522 #endif /* ndef ENOEXEC */
1523         if (x == Mono_Posix_Errno_ENOLCK)
1524 #ifdef ENOLCK
1525                 {*r = ENOLCK; return 0;}
1526 #else /* def ENOLCK */
1527                 {errno = EINVAL; return -1;}
1528 #endif /* ndef ENOLCK */
1529         if (x == Mono_Posix_Errno_ENOLINK)
1530 #ifdef ENOLINK
1531                 {*r = ENOLINK; return 0;}
1532 #else /* def ENOLINK */
1533                 {errno = EINVAL; return -1;}
1534 #endif /* ndef ENOLINK */
1535         if (x == Mono_Posix_Errno_ENOMEDIUM)
1536 #ifdef ENOMEDIUM
1537                 {*r = ENOMEDIUM; return 0;}
1538 #else /* def ENOMEDIUM */
1539                 {errno = EINVAL; return -1;}
1540 #endif /* ndef ENOMEDIUM */
1541         if (x == Mono_Posix_Errno_ENOMEM)
1542 #ifdef ENOMEM
1543                 {*r = ENOMEM; return 0;}
1544 #else /* def ENOMEM */
1545                 {errno = EINVAL; return -1;}
1546 #endif /* ndef ENOMEM */
1547         if (x == Mono_Posix_Errno_ENOMSG)
1548 #ifdef ENOMSG
1549                 {*r = ENOMSG; return 0;}
1550 #else /* def ENOMSG */
1551                 {errno = EINVAL; return -1;}
1552 #endif /* ndef ENOMSG */
1553         if (x == Mono_Posix_Errno_ENONET)
1554 #ifdef ENONET
1555                 {*r = ENONET; return 0;}
1556 #else /* def ENONET */
1557                 {errno = EINVAL; return -1;}
1558 #endif /* ndef ENONET */
1559         if (x == Mono_Posix_Errno_ENOPKG)
1560 #ifdef ENOPKG
1561                 {*r = ENOPKG; return 0;}
1562 #else /* def ENOPKG */
1563                 {errno = EINVAL; return -1;}
1564 #endif /* ndef ENOPKG */
1565         if (x == Mono_Posix_Errno_ENOPROTOOPT)
1566 #ifdef ENOPROTOOPT
1567                 {*r = ENOPROTOOPT; return 0;}
1568 #else /* def ENOPROTOOPT */
1569                 {errno = EINVAL; return -1;}
1570 #endif /* ndef ENOPROTOOPT */
1571         if (x == Mono_Posix_Errno_ENOSPC)
1572 #ifdef ENOSPC
1573                 {*r = ENOSPC; return 0;}
1574 #else /* def ENOSPC */
1575                 {errno = EINVAL; return -1;}
1576 #endif /* ndef ENOSPC */
1577         if (x == Mono_Posix_Errno_ENOSR)
1578 #ifdef ENOSR
1579                 {*r = ENOSR; return 0;}
1580 #else /* def ENOSR */
1581                 {errno = EINVAL; return -1;}
1582 #endif /* ndef ENOSR */
1583         if (x == Mono_Posix_Errno_ENOSTR)
1584 #ifdef ENOSTR
1585                 {*r = ENOSTR; return 0;}
1586 #else /* def ENOSTR */
1587                 {errno = EINVAL; return -1;}
1588 #endif /* ndef ENOSTR */
1589         if (x == Mono_Posix_Errno_ENOSYS)
1590 #ifdef ENOSYS
1591                 {*r = ENOSYS; return 0;}
1592 #else /* def ENOSYS */
1593                 {errno = EINVAL; return -1;}
1594 #endif /* ndef ENOSYS */
1595         if (x == Mono_Posix_Errno_ENOTBLK)
1596 #ifdef ENOTBLK
1597                 {*r = ENOTBLK; return 0;}
1598 #else /* def ENOTBLK */
1599                 {errno = EINVAL; return -1;}
1600 #endif /* ndef ENOTBLK */
1601         if (x == Mono_Posix_Errno_ENOTCONN)
1602 #ifdef ENOTCONN
1603                 {*r = ENOTCONN; return 0;}
1604 #else /* def ENOTCONN */
1605                 {errno = EINVAL; return -1;}
1606 #endif /* ndef ENOTCONN */
1607         if (x == Mono_Posix_Errno_ENOTDIR)
1608 #ifdef ENOTDIR
1609                 {*r = ENOTDIR; return 0;}
1610 #else /* def ENOTDIR */
1611                 {errno = EINVAL; return -1;}
1612 #endif /* ndef ENOTDIR */
1613         if (x == Mono_Posix_Errno_ENOTEMPTY)
1614 #ifdef ENOTEMPTY
1615                 {*r = ENOTEMPTY; return 0;}
1616 #else /* def ENOTEMPTY */
1617                 {errno = EINVAL; return -1;}
1618 #endif /* ndef ENOTEMPTY */
1619         if (x == Mono_Posix_Errno_ENOTNAM)
1620 #ifdef ENOTNAM
1621                 {*r = ENOTNAM; return 0;}
1622 #else /* def ENOTNAM */
1623                 {errno = EINVAL; return -1;}
1624 #endif /* ndef ENOTNAM */
1625         if (x == Mono_Posix_Errno_ENOTSOCK)
1626 #ifdef ENOTSOCK
1627                 {*r = ENOTSOCK; return 0;}
1628 #else /* def ENOTSOCK */
1629                 {errno = EINVAL; return -1;}
1630 #endif /* ndef ENOTSOCK */
1631         if (x == Mono_Posix_Errno_ENOTTY)
1632 #ifdef ENOTTY
1633                 {*r = ENOTTY; return 0;}
1634 #else /* def ENOTTY */
1635                 {errno = EINVAL; return -1;}
1636 #endif /* ndef ENOTTY */
1637         if (x == Mono_Posix_Errno_ENOTUNIQ)
1638 #ifdef ENOTUNIQ
1639                 {*r = ENOTUNIQ; return 0;}
1640 #else /* def ENOTUNIQ */
1641                 {errno = EINVAL; return -1;}
1642 #endif /* ndef ENOTUNIQ */
1643         if (x == Mono_Posix_Errno_ENXIO)
1644 #ifdef ENXIO
1645                 {*r = ENXIO; return 0;}
1646 #else /* def ENXIO */
1647                 {errno = EINVAL; return -1;}
1648 #endif /* ndef ENXIO */
1649         if (x == Mono_Posix_Errno_EOPNOTSUPP)
1650 #ifdef EOPNOTSUPP
1651                 {*r = EOPNOTSUPP; return 0;}
1652 #else /* def EOPNOTSUPP */
1653                 {errno = EINVAL; return -1;}
1654 #endif /* ndef EOPNOTSUPP */
1655         if (x == Mono_Posix_Errno_EOVERFLOW)
1656 #ifdef EOVERFLOW
1657                 {*r = EOVERFLOW; return 0;}
1658 #else /* def EOVERFLOW */
1659                 {errno = EINVAL; return -1;}
1660 #endif /* ndef EOVERFLOW */
1661         if (x == Mono_Posix_Errno_EPERM)
1662 #ifdef EPERM
1663                 {*r = EPERM; return 0;}
1664 #else /* def EPERM */
1665                 {errno = EINVAL; return -1;}
1666 #endif /* ndef EPERM */
1667         if (x == Mono_Posix_Errno_EPFNOSUPPORT)
1668 #ifdef EPFNOSUPPORT
1669                 {*r = EPFNOSUPPORT; return 0;}
1670 #else /* def EPFNOSUPPORT */
1671                 {errno = EINVAL; return -1;}
1672 #endif /* ndef EPFNOSUPPORT */
1673         if (x == Mono_Posix_Errno_EPIPE)
1674 #ifdef EPIPE
1675                 {*r = EPIPE; return 0;}
1676 #else /* def EPIPE */
1677                 {errno = EINVAL; return -1;}
1678 #endif /* ndef EPIPE */
1679         if (x == Mono_Posix_Errno_EPROTO)
1680 #ifdef EPROTO
1681                 {*r = EPROTO; return 0;}
1682 #else /* def EPROTO */
1683                 {errno = EINVAL; return -1;}
1684 #endif /* ndef EPROTO */
1685         if (x == Mono_Posix_Errno_EPROTONOSUPPORT)
1686 #ifdef EPROTONOSUPPORT
1687                 {*r = EPROTONOSUPPORT; return 0;}
1688 #else /* def EPROTONOSUPPORT */
1689                 {errno = EINVAL; return -1;}
1690 #endif /* ndef EPROTONOSUPPORT */
1691         if (x == Mono_Posix_Errno_EPROTOTYPE)
1692 #ifdef EPROTOTYPE
1693                 {*r = EPROTOTYPE; return 0;}
1694 #else /* def EPROTOTYPE */
1695                 {errno = EINVAL; return -1;}
1696 #endif /* ndef EPROTOTYPE */
1697         if (x == Mono_Posix_Errno_ERANGE)
1698 #ifdef ERANGE
1699                 {*r = ERANGE; return 0;}
1700 #else /* def ERANGE */
1701                 {errno = EINVAL; return -1;}
1702 #endif /* ndef ERANGE */
1703         if (x == Mono_Posix_Errno_EREMCHG)
1704 #ifdef EREMCHG
1705                 {*r = EREMCHG; return 0;}
1706 #else /* def EREMCHG */
1707                 {errno = EINVAL; return -1;}
1708 #endif /* ndef EREMCHG */
1709         if (x == Mono_Posix_Errno_EREMOTE)
1710 #ifdef EREMOTE
1711                 {*r = EREMOTE; return 0;}
1712 #else /* def EREMOTE */
1713                 {errno = EINVAL; return -1;}
1714 #endif /* ndef EREMOTE */
1715         if (x == Mono_Posix_Errno_EREMOTEIO)
1716 #ifdef EREMOTEIO
1717                 {*r = EREMOTEIO; return 0;}
1718 #else /* def EREMOTEIO */
1719                 {errno = EINVAL; return -1;}
1720 #endif /* ndef EREMOTEIO */
1721         if (x == Mono_Posix_Errno_ERESTART)
1722 #ifdef ERESTART
1723                 {*r = ERESTART; return 0;}
1724 #else /* def ERESTART */
1725                 {errno = EINVAL; return -1;}
1726 #endif /* ndef ERESTART */
1727         if (x == Mono_Posix_Errno_EROFS)
1728 #ifdef EROFS
1729                 {*r = EROFS; return 0;}
1730 #else /* def EROFS */
1731                 {errno = EINVAL; return -1;}
1732 #endif /* ndef EROFS */
1733         if (x == Mono_Posix_Errno_ESHUTDOWN)
1734 #ifdef ESHUTDOWN
1735                 {*r = ESHUTDOWN; return 0;}
1736 #else /* def ESHUTDOWN */
1737                 {errno = EINVAL; return -1;}
1738 #endif /* ndef ESHUTDOWN */
1739         if (x == Mono_Posix_Errno_ESOCKTNOSUPPORT)
1740 #ifdef ESOCKTNOSUPPORT
1741                 {*r = ESOCKTNOSUPPORT; return 0;}
1742 #else /* def ESOCKTNOSUPPORT */
1743                 {errno = EINVAL; return -1;}
1744 #endif /* ndef ESOCKTNOSUPPORT */
1745         if (x == Mono_Posix_Errno_ESPIPE)
1746 #ifdef ESPIPE
1747                 {*r = ESPIPE; return 0;}
1748 #else /* def ESPIPE */
1749                 {errno = EINVAL; return -1;}
1750 #endif /* ndef ESPIPE */
1751         if (x == Mono_Posix_Errno_ESRCH)
1752 #ifdef ESRCH
1753                 {*r = ESRCH; return 0;}
1754 #else /* def ESRCH */
1755                 {errno = EINVAL; return -1;}
1756 #endif /* ndef ESRCH */
1757         if (x == Mono_Posix_Errno_ESRMNT)
1758 #ifdef ESRMNT
1759                 {*r = ESRMNT; return 0;}
1760 #else /* def ESRMNT */
1761                 {errno = EINVAL; return -1;}
1762 #endif /* ndef ESRMNT */
1763         if (x == Mono_Posix_Errno_ESTALE)
1764 #ifdef ESTALE
1765                 {*r = ESTALE; return 0;}
1766 #else /* def ESTALE */
1767                 {errno = EINVAL; return -1;}
1768 #endif /* ndef ESTALE */
1769         if (x == Mono_Posix_Errno_ESTRPIPE)
1770 #ifdef ESTRPIPE
1771                 {*r = ESTRPIPE; return 0;}
1772 #else /* def ESTRPIPE */
1773                 {errno = EINVAL; return -1;}
1774 #endif /* ndef ESTRPIPE */
1775         if (x == Mono_Posix_Errno_ETIME)
1776 #ifdef ETIME
1777                 {*r = ETIME; return 0;}
1778 #else /* def ETIME */
1779                 {errno = EINVAL; return -1;}
1780 #endif /* ndef ETIME */
1781         if (x == Mono_Posix_Errno_ETIMEDOUT)
1782 #ifdef ETIMEDOUT
1783                 {*r = ETIMEDOUT; return 0;}
1784 #else /* def ETIMEDOUT */
1785                 {errno = EINVAL; return -1;}
1786 #endif /* ndef ETIMEDOUT */
1787         if (x == Mono_Posix_Errno_ETOOMANYREFS)
1788 #ifdef ETOOMANYREFS
1789                 {*r = ETOOMANYREFS; return 0;}
1790 #else /* def ETOOMANYREFS */
1791                 {errno = EINVAL; return -1;}
1792 #endif /* ndef ETOOMANYREFS */
1793         if (x == Mono_Posix_Errno_ETXTBSY)
1794 #ifdef ETXTBSY
1795                 {*r = ETXTBSY; return 0;}
1796 #else /* def ETXTBSY */
1797                 {errno = EINVAL; return -1;}
1798 #endif /* ndef ETXTBSY */
1799         if (x == Mono_Posix_Errno_EUCLEAN)
1800 #ifdef EUCLEAN
1801                 {*r = EUCLEAN; return 0;}
1802 #else /* def EUCLEAN */
1803                 {errno = EINVAL; return -1;}
1804 #endif /* ndef EUCLEAN */
1805         if (x == Mono_Posix_Errno_EUNATCH)
1806 #ifdef EUNATCH
1807                 {*r = EUNATCH; return 0;}
1808 #else /* def EUNATCH */
1809                 {errno = EINVAL; return -1;}
1810 #endif /* ndef EUNATCH */
1811         if (x == Mono_Posix_Errno_EUSERS)
1812 #ifdef EUSERS
1813                 {*r = EUSERS; return 0;}
1814 #else /* def EUSERS */
1815                 {errno = EINVAL; return -1;}
1816 #endif /* ndef EUSERS */
1817         if (x == Mono_Posix_Errno_EWOULDBLOCK)
1818 #ifdef EWOULDBLOCK
1819                 {*r = EWOULDBLOCK; return 0;}
1820 #else /* def EWOULDBLOCK */
1821                 {errno = EINVAL; return -1;}
1822 #endif /* ndef EWOULDBLOCK */
1823         if (x == Mono_Posix_Errno_EXDEV)
1824 #ifdef EXDEV
1825                 {*r = EXDEV; return 0;}
1826 #else /* def EXDEV */
1827                 {errno = EINVAL; return -1;}
1828 #endif /* ndef EXDEV */
1829         if (x == Mono_Posix_Errno_EXFULL)
1830 #ifdef EXFULL
1831                 {*r = EXFULL; return 0;}
1832 #else /* def EXFULL */
1833                 {errno = EINVAL; return -1;}
1834 #endif /* ndef EXFULL */
1835         if (x == 0)
1836                 return 0;
1837         errno = EINVAL; return -1;
1838 }
1839
1840 int Mono_Posix_ToErrno (int x, int *r)
1841 {
1842         *r = 0;
1843         if (x == 0)
1844                 return 0;
1845 #ifdef E2BIG
1846         if (x == E2BIG)
1847                 {*r = Mono_Posix_Errno_E2BIG; return 0;}
1848 #endif /* ndef E2BIG */
1849 #ifdef EACCES
1850         if (x == EACCES)
1851                 {*r = Mono_Posix_Errno_EACCES; return 0;}
1852 #endif /* ndef EACCES */
1853 #ifdef EADDRINUSE
1854         if (x == EADDRINUSE)
1855                 {*r = Mono_Posix_Errno_EADDRINUSE; return 0;}
1856 #endif /* ndef EADDRINUSE */
1857 #ifdef EADDRNOTAVAIL
1858         if (x == EADDRNOTAVAIL)
1859                 {*r = Mono_Posix_Errno_EADDRNOTAVAIL; return 0;}
1860 #endif /* ndef EADDRNOTAVAIL */
1861 #ifdef EADV
1862         if (x == EADV)
1863                 {*r = Mono_Posix_Errno_EADV; return 0;}
1864 #endif /* ndef EADV */
1865 #ifdef EAFNOSUPPORT
1866         if (x == EAFNOSUPPORT)
1867                 {*r = Mono_Posix_Errno_EAFNOSUPPORT; return 0;}
1868 #endif /* ndef EAFNOSUPPORT */
1869 #ifdef EAGAIN
1870         if (x == EAGAIN)
1871                 {*r = Mono_Posix_Errno_EAGAIN; return 0;}
1872 #endif /* ndef EAGAIN */
1873 #ifdef EALREADY
1874         if (x == EALREADY)
1875                 {*r = Mono_Posix_Errno_EALREADY; return 0;}
1876 #endif /* ndef EALREADY */
1877 #ifdef EBADE
1878         if (x == EBADE)
1879                 {*r = Mono_Posix_Errno_EBADE; return 0;}
1880 #endif /* ndef EBADE */
1881 #ifdef EBADF
1882         if (x == EBADF)
1883                 {*r = Mono_Posix_Errno_EBADF; return 0;}
1884 #endif /* ndef EBADF */
1885 #ifdef EBADFD
1886         if (x == EBADFD)
1887                 {*r = Mono_Posix_Errno_EBADFD; return 0;}
1888 #endif /* ndef EBADFD */
1889 #ifdef EBADMSG
1890         if (x == EBADMSG)
1891                 {*r = Mono_Posix_Errno_EBADMSG; return 0;}
1892 #endif /* ndef EBADMSG */
1893 #ifdef EBADR
1894         if (x == EBADR)
1895                 {*r = Mono_Posix_Errno_EBADR; return 0;}
1896 #endif /* ndef EBADR */
1897 #ifdef EBADRQC
1898         if (x == EBADRQC)
1899                 {*r = Mono_Posix_Errno_EBADRQC; return 0;}
1900 #endif /* ndef EBADRQC */
1901 #ifdef EBADSLT
1902         if (x == EBADSLT)
1903                 {*r = Mono_Posix_Errno_EBADSLT; return 0;}
1904 #endif /* ndef EBADSLT */
1905 #ifdef EBFONT
1906         if (x == EBFONT)
1907                 {*r = Mono_Posix_Errno_EBFONT; return 0;}
1908 #endif /* ndef EBFONT */
1909 #ifdef EBUSY
1910         if (x == EBUSY)
1911                 {*r = Mono_Posix_Errno_EBUSY; return 0;}
1912 #endif /* ndef EBUSY */
1913 #ifdef ECHILD
1914         if (x == ECHILD)
1915                 {*r = Mono_Posix_Errno_ECHILD; return 0;}
1916 #endif /* ndef ECHILD */
1917 #ifdef ECHRNG
1918         if (x == ECHRNG)
1919                 {*r = Mono_Posix_Errno_ECHRNG; return 0;}
1920 #endif /* ndef ECHRNG */
1921 #ifdef ECOMM
1922         if (x == ECOMM)
1923                 {*r = Mono_Posix_Errno_ECOMM; return 0;}
1924 #endif /* ndef ECOMM */
1925 #ifdef ECONNABORTED
1926         if (x == ECONNABORTED)
1927                 {*r = Mono_Posix_Errno_ECONNABORTED; return 0;}
1928 #endif /* ndef ECONNABORTED */
1929 #ifdef ECONNREFUSED
1930         if (x == ECONNREFUSED)
1931                 {*r = Mono_Posix_Errno_ECONNREFUSED; return 0;}
1932 #endif /* ndef ECONNREFUSED */
1933 #ifdef ECONNRESET
1934         if (x == ECONNRESET)
1935                 {*r = Mono_Posix_Errno_ECONNRESET; return 0;}
1936 #endif /* ndef ECONNRESET */
1937 #ifdef EDEADLK
1938         if (x == EDEADLK)
1939                 {*r = Mono_Posix_Errno_EDEADLK; return 0;}
1940 #endif /* ndef EDEADLK */
1941 #ifdef EDEADLOCK
1942         if (x == EDEADLOCK)
1943                 {*r = Mono_Posix_Errno_EDEADLOCK; return 0;}
1944 #endif /* ndef EDEADLOCK */
1945 #ifdef EDESTADDRREQ
1946         if (x == EDESTADDRREQ)
1947                 {*r = Mono_Posix_Errno_EDESTADDRREQ; return 0;}
1948 #endif /* ndef EDESTADDRREQ */
1949 #ifdef EDOM
1950         if (x == EDOM)
1951                 {*r = Mono_Posix_Errno_EDOM; return 0;}
1952 #endif /* ndef EDOM */
1953 #ifdef EDOTDOT
1954         if (x == EDOTDOT)
1955                 {*r = Mono_Posix_Errno_EDOTDOT; return 0;}
1956 #endif /* ndef EDOTDOT */
1957 #ifdef EDQUOT
1958         if (x == EDQUOT)
1959                 {*r = Mono_Posix_Errno_EDQUOT; return 0;}
1960 #endif /* ndef EDQUOT */
1961 #ifdef EEXIST
1962         if (x == EEXIST)
1963                 {*r = Mono_Posix_Errno_EEXIST; return 0;}
1964 #endif /* ndef EEXIST */
1965 #ifdef EFAULT
1966         if (x == EFAULT)
1967                 {*r = Mono_Posix_Errno_EFAULT; return 0;}
1968 #endif /* ndef EFAULT */
1969 #ifdef EFBIG
1970         if (x == EFBIG)
1971                 {*r = Mono_Posix_Errno_EFBIG; return 0;}
1972 #endif /* ndef EFBIG */
1973 #ifdef EHOSTDOWN
1974         if (x == EHOSTDOWN)
1975                 {*r = Mono_Posix_Errno_EHOSTDOWN; return 0;}
1976 #endif /* ndef EHOSTDOWN */
1977 #ifdef EHOSTUNREACH
1978         if (x == EHOSTUNREACH)
1979                 {*r = Mono_Posix_Errno_EHOSTUNREACH; return 0;}
1980 #endif /* ndef EHOSTUNREACH */
1981 #ifdef EIDRM
1982         if (x == EIDRM)
1983                 {*r = Mono_Posix_Errno_EIDRM; return 0;}
1984 #endif /* ndef EIDRM */
1985 #ifdef EILSEQ
1986         if (x == EILSEQ)
1987                 {*r = Mono_Posix_Errno_EILSEQ; return 0;}
1988 #endif /* ndef EILSEQ */
1989 #ifdef EINPROGRESS
1990         if (x == EINPROGRESS)
1991                 {*r = Mono_Posix_Errno_EINPROGRESS; return 0;}
1992 #endif /* ndef EINPROGRESS */
1993 #ifdef EINTR
1994         if (x == EINTR)
1995                 {*r = Mono_Posix_Errno_EINTR; return 0;}
1996 #endif /* ndef EINTR */
1997 #ifdef EINVAL
1998         if (x == EINVAL)
1999                 {*r = Mono_Posix_Errno_EINVAL; return 0;}
2000 #endif /* ndef EINVAL */
2001 #ifdef EIO
2002         if (x == EIO)
2003                 {*r = Mono_Posix_Errno_EIO; return 0;}
2004 #endif /* ndef EIO */
2005 #ifdef EISCONN
2006         if (x == EISCONN)
2007                 {*r = Mono_Posix_Errno_EISCONN; return 0;}
2008 #endif /* ndef EISCONN */
2009 #ifdef EISDIR
2010         if (x == EISDIR)
2011                 {*r = Mono_Posix_Errno_EISDIR; return 0;}
2012 #endif /* ndef EISDIR */
2013 #ifdef EISNAM
2014         if (x == EISNAM)
2015                 {*r = Mono_Posix_Errno_EISNAM; return 0;}
2016 #endif /* ndef EISNAM */
2017 #ifdef EL2HLT
2018         if (x == EL2HLT)
2019                 {*r = Mono_Posix_Errno_EL2HLT; return 0;}
2020 #endif /* ndef EL2HLT */
2021 #ifdef EL2NSYNC
2022         if (x == EL2NSYNC)
2023                 {*r = Mono_Posix_Errno_EL2NSYNC; return 0;}
2024 #endif /* ndef EL2NSYNC */
2025 #ifdef EL3HLT
2026         if (x == EL3HLT)
2027                 {*r = Mono_Posix_Errno_EL3HLT; return 0;}
2028 #endif /* ndef EL3HLT */
2029 #ifdef EL3RST
2030         if (x == EL3RST)
2031                 {*r = Mono_Posix_Errno_EL3RST; return 0;}
2032 #endif /* ndef EL3RST */
2033 #ifdef ELIBACC
2034         if (x == ELIBACC)
2035                 {*r = Mono_Posix_Errno_ELIBACC; return 0;}
2036 #endif /* ndef ELIBACC */
2037 #ifdef ELIBBAD
2038         if (x == ELIBBAD)
2039                 {*r = Mono_Posix_Errno_ELIBBAD; return 0;}
2040 #endif /* ndef ELIBBAD */
2041 #ifdef ELIBEXEC
2042         if (x == ELIBEXEC)
2043                 {*r = Mono_Posix_Errno_ELIBEXEC; return 0;}
2044 #endif /* ndef ELIBEXEC */
2045 #ifdef ELIBMAX
2046         if (x == ELIBMAX)
2047                 {*r = Mono_Posix_Errno_ELIBMAX; return 0;}
2048 #endif /* ndef ELIBMAX */
2049 #ifdef ELIBSCN
2050         if (x == ELIBSCN)
2051                 {*r = Mono_Posix_Errno_ELIBSCN; return 0;}
2052 #endif /* ndef ELIBSCN */
2053 #ifdef ELNRNG
2054         if (x == ELNRNG)
2055                 {*r = Mono_Posix_Errno_ELNRNG; return 0;}
2056 #endif /* ndef ELNRNG */
2057 #ifdef ELOOP
2058         if (x == ELOOP)
2059                 {*r = Mono_Posix_Errno_ELOOP; return 0;}
2060 #endif /* ndef ELOOP */
2061 #ifdef EMEDIUMTYPE
2062         if (x == EMEDIUMTYPE)
2063                 {*r = Mono_Posix_Errno_EMEDIUMTYPE; return 0;}
2064 #endif /* ndef EMEDIUMTYPE */
2065 #ifdef EMFILE
2066         if (x == EMFILE)
2067                 {*r = Mono_Posix_Errno_EMFILE; return 0;}
2068 #endif /* ndef EMFILE */
2069 #ifdef EMLINK
2070         if (x == EMLINK)
2071                 {*r = Mono_Posix_Errno_EMLINK; return 0;}
2072 #endif /* ndef EMLINK */
2073 #ifdef EMSGSIZE
2074         if (x == EMSGSIZE)
2075                 {*r = Mono_Posix_Errno_EMSGSIZE; return 0;}
2076 #endif /* ndef EMSGSIZE */
2077 #ifdef EMULTIHOP
2078         if (x == EMULTIHOP)
2079                 {*r = Mono_Posix_Errno_EMULTIHOP; return 0;}
2080 #endif /* ndef EMULTIHOP */
2081 #ifdef ENAMETOOLONG
2082         if (x == ENAMETOOLONG)
2083                 {*r = Mono_Posix_Errno_ENAMETOOLONG; return 0;}
2084 #endif /* ndef ENAMETOOLONG */
2085 #ifdef ENAVAIL
2086         if (x == ENAVAIL)
2087                 {*r = Mono_Posix_Errno_ENAVAIL; return 0;}
2088 #endif /* ndef ENAVAIL */
2089 #ifdef ENETDOWN
2090         if (x == ENETDOWN)
2091                 {*r = Mono_Posix_Errno_ENETDOWN; return 0;}
2092 #endif /* ndef ENETDOWN */
2093 #ifdef ENETRESET
2094         if (x == ENETRESET)
2095                 {*r = Mono_Posix_Errno_ENETRESET; return 0;}
2096 #endif /* ndef ENETRESET */
2097 #ifdef ENETUNREACH
2098         if (x == ENETUNREACH)
2099                 {*r = Mono_Posix_Errno_ENETUNREACH; return 0;}
2100 #endif /* ndef ENETUNREACH */
2101 #ifdef ENFILE
2102         if (x == ENFILE)
2103                 {*r = Mono_Posix_Errno_ENFILE; return 0;}
2104 #endif /* ndef ENFILE */
2105 #ifdef ENOANO
2106         if (x == ENOANO)
2107                 {*r = Mono_Posix_Errno_ENOANO; return 0;}
2108 #endif /* ndef ENOANO */
2109 #ifdef ENOBUFS
2110         if (x == ENOBUFS)
2111                 {*r = Mono_Posix_Errno_ENOBUFS; return 0;}
2112 #endif /* ndef ENOBUFS */
2113 #ifdef ENOCSI
2114         if (x == ENOCSI)
2115                 {*r = Mono_Posix_Errno_ENOCSI; return 0;}
2116 #endif /* ndef ENOCSI */
2117 #ifdef ENODATA
2118         if (x == ENODATA)
2119                 {*r = Mono_Posix_Errno_ENODATA; return 0;}
2120 #endif /* ndef ENODATA */
2121 #ifdef ENODEV
2122         if (x == ENODEV)
2123                 {*r = Mono_Posix_Errno_ENODEV; return 0;}
2124 #endif /* ndef ENODEV */
2125 #ifdef ENOENT
2126         if (x == ENOENT)
2127                 {*r = Mono_Posix_Errno_ENOENT; return 0;}
2128 #endif /* ndef ENOENT */
2129 #ifdef ENOEXEC
2130         if (x == ENOEXEC)
2131                 {*r = Mono_Posix_Errno_ENOEXEC; return 0;}
2132 #endif /* ndef ENOEXEC */
2133 #ifdef ENOLCK
2134         if (x == ENOLCK)
2135                 {*r = Mono_Posix_Errno_ENOLCK; return 0;}
2136 #endif /* ndef ENOLCK */
2137 #ifdef ENOLINK
2138         if (x == ENOLINK)
2139                 {*r = Mono_Posix_Errno_ENOLINK; return 0;}
2140 #endif /* ndef ENOLINK */
2141 #ifdef ENOMEDIUM
2142         if (x == ENOMEDIUM)
2143                 {*r = Mono_Posix_Errno_ENOMEDIUM; return 0;}
2144 #endif /* ndef ENOMEDIUM */
2145 #ifdef ENOMEM
2146         if (x == ENOMEM)
2147                 {*r = Mono_Posix_Errno_ENOMEM; return 0;}
2148 #endif /* ndef ENOMEM */
2149 #ifdef ENOMSG
2150         if (x == ENOMSG)
2151                 {*r = Mono_Posix_Errno_ENOMSG; return 0;}
2152 #endif /* ndef ENOMSG */
2153 #ifdef ENONET
2154         if (x == ENONET)
2155                 {*r = Mono_Posix_Errno_ENONET; return 0;}
2156 #endif /* ndef ENONET */
2157 #ifdef ENOPKG
2158         if (x == ENOPKG)
2159                 {*r = Mono_Posix_Errno_ENOPKG; return 0;}
2160 #endif /* ndef ENOPKG */
2161 #ifdef ENOPROTOOPT
2162         if (x == ENOPROTOOPT)
2163                 {*r = Mono_Posix_Errno_ENOPROTOOPT; return 0;}
2164 #endif /* ndef ENOPROTOOPT */
2165 #ifdef ENOSPC
2166         if (x == ENOSPC)
2167                 {*r = Mono_Posix_Errno_ENOSPC; return 0;}
2168 #endif /* ndef ENOSPC */
2169 #ifdef ENOSR
2170         if (x == ENOSR)
2171                 {*r = Mono_Posix_Errno_ENOSR; return 0;}
2172 #endif /* ndef ENOSR */
2173 #ifdef ENOSTR
2174         if (x == ENOSTR)
2175                 {*r = Mono_Posix_Errno_ENOSTR; return 0;}
2176 #endif /* ndef ENOSTR */
2177 #ifdef ENOSYS
2178         if (x == ENOSYS)
2179                 {*r = Mono_Posix_Errno_ENOSYS; return 0;}
2180 #endif /* ndef ENOSYS */
2181 #ifdef ENOTBLK
2182         if (x == ENOTBLK)
2183                 {*r = Mono_Posix_Errno_ENOTBLK; return 0;}
2184 #endif /* ndef ENOTBLK */
2185 #ifdef ENOTCONN
2186         if (x == ENOTCONN)
2187                 {*r = Mono_Posix_Errno_ENOTCONN; return 0;}
2188 #endif /* ndef ENOTCONN */
2189 #ifdef ENOTDIR
2190         if (x == ENOTDIR)
2191                 {*r = Mono_Posix_Errno_ENOTDIR; return 0;}
2192 #endif /* ndef ENOTDIR */
2193 #ifdef ENOTEMPTY
2194         if (x == ENOTEMPTY)
2195                 {*r = Mono_Posix_Errno_ENOTEMPTY; return 0;}
2196 #endif /* ndef ENOTEMPTY */
2197 #ifdef ENOTNAM
2198         if (x == ENOTNAM)
2199                 {*r = Mono_Posix_Errno_ENOTNAM; return 0;}
2200 #endif /* ndef ENOTNAM */
2201 #ifdef ENOTSOCK
2202         if (x == ENOTSOCK)
2203                 {*r = Mono_Posix_Errno_ENOTSOCK; return 0;}
2204 #endif /* ndef ENOTSOCK */
2205 #ifdef ENOTTY
2206         if (x == ENOTTY)
2207                 {*r = Mono_Posix_Errno_ENOTTY; return 0;}
2208 #endif /* ndef ENOTTY */
2209 #ifdef ENOTUNIQ
2210         if (x == ENOTUNIQ)
2211                 {*r = Mono_Posix_Errno_ENOTUNIQ; return 0;}
2212 #endif /* ndef ENOTUNIQ */
2213 #ifdef ENXIO
2214         if (x == ENXIO)
2215                 {*r = Mono_Posix_Errno_ENXIO; return 0;}
2216 #endif /* ndef ENXIO */
2217 #ifdef EOPNOTSUPP
2218         if (x == EOPNOTSUPP)
2219                 {*r = Mono_Posix_Errno_EOPNOTSUPP; return 0;}
2220 #endif /* ndef EOPNOTSUPP */
2221 #ifdef EOVERFLOW
2222         if (x == EOVERFLOW)
2223                 {*r = Mono_Posix_Errno_EOVERFLOW; return 0;}
2224 #endif /* ndef EOVERFLOW */
2225 #ifdef EPERM
2226         if (x == EPERM)
2227                 {*r = Mono_Posix_Errno_EPERM; return 0;}
2228 #endif /* ndef EPERM */
2229 #ifdef EPFNOSUPPORT
2230         if (x == EPFNOSUPPORT)
2231                 {*r = Mono_Posix_Errno_EPFNOSUPPORT; return 0;}
2232 #endif /* ndef EPFNOSUPPORT */
2233 #ifdef EPIPE
2234         if (x == EPIPE)
2235                 {*r = Mono_Posix_Errno_EPIPE; return 0;}
2236 #endif /* ndef EPIPE */
2237 #ifdef EPROTO
2238         if (x == EPROTO)
2239                 {*r = Mono_Posix_Errno_EPROTO; return 0;}
2240 #endif /* ndef EPROTO */
2241 #ifdef EPROTONOSUPPORT
2242         if (x == EPROTONOSUPPORT)
2243                 {*r = Mono_Posix_Errno_EPROTONOSUPPORT; return 0;}
2244 #endif /* ndef EPROTONOSUPPORT */
2245 #ifdef EPROTOTYPE
2246         if (x == EPROTOTYPE)
2247                 {*r = Mono_Posix_Errno_EPROTOTYPE; return 0;}
2248 #endif /* ndef EPROTOTYPE */
2249 #ifdef ERANGE
2250         if (x == ERANGE)
2251                 {*r = Mono_Posix_Errno_ERANGE; return 0;}
2252 #endif /* ndef ERANGE */
2253 #ifdef EREMCHG
2254         if (x == EREMCHG)
2255                 {*r = Mono_Posix_Errno_EREMCHG; return 0;}
2256 #endif /* ndef EREMCHG */
2257 #ifdef EREMOTE
2258         if (x == EREMOTE)
2259                 {*r = Mono_Posix_Errno_EREMOTE; return 0;}
2260 #endif /* ndef EREMOTE */
2261 #ifdef EREMOTEIO
2262         if (x == EREMOTEIO)
2263                 {*r = Mono_Posix_Errno_EREMOTEIO; return 0;}
2264 #endif /* ndef EREMOTEIO */
2265 #ifdef ERESTART
2266         if (x == ERESTART)
2267                 {*r = Mono_Posix_Errno_ERESTART; return 0;}
2268 #endif /* ndef ERESTART */
2269 #ifdef EROFS
2270         if (x == EROFS)
2271                 {*r = Mono_Posix_Errno_EROFS; return 0;}
2272 #endif /* ndef EROFS */
2273 #ifdef ESHUTDOWN
2274         if (x == ESHUTDOWN)
2275                 {*r = Mono_Posix_Errno_ESHUTDOWN; return 0;}
2276 #endif /* ndef ESHUTDOWN */
2277 #ifdef ESOCKTNOSUPPORT
2278         if (x == ESOCKTNOSUPPORT)
2279                 {*r = Mono_Posix_Errno_ESOCKTNOSUPPORT; return 0;}
2280 #endif /* ndef ESOCKTNOSUPPORT */
2281 #ifdef ESPIPE
2282         if (x == ESPIPE)
2283                 {*r = Mono_Posix_Errno_ESPIPE; return 0;}
2284 #endif /* ndef ESPIPE */
2285 #ifdef ESRCH
2286         if (x == ESRCH)
2287                 {*r = Mono_Posix_Errno_ESRCH; return 0;}
2288 #endif /* ndef ESRCH */
2289 #ifdef ESRMNT
2290         if (x == ESRMNT)
2291                 {*r = Mono_Posix_Errno_ESRMNT; return 0;}
2292 #endif /* ndef ESRMNT */
2293 #ifdef ESTALE
2294         if (x == ESTALE)
2295                 {*r = Mono_Posix_Errno_ESTALE; return 0;}
2296 #endif /* ndef ESTALE */
2297 #ifdef ESTRPIPE
2298         if (x == ESTRPIPE)
2299                 {*r = Mono_Posix_Errno_ESTRPIPE; return 0;}
2300 #endif /* ndef ESTRPIPE */
2301 #ifdef ETIME
2302         if (x == ETIME)
2303                 {*r = Mono_Posix_Errno_ETIME; return 0;}
2304 #endif /* ndef ETIME */
2305 #ifdef ETIMEDOUT
2306         if (x == ETIMEDOUT)
2307                 {*r = Mono_Posix_Errno_ETIMEDOUT; return 0;}
2308 #endif /* ndef ETIMEDOUT */
2309 #ifdef ETOOMANYREFS
2310         if (x == ETOOMANYREFS)
2311                 {*r = Mono_Posix_Errno_ETOOMANYREFS; return 0;}
2312 #endif /* ndef ETOOMANYREFS */
2313 #ifdef ETXTBSY
2314         if (x == ETXTBSY)
2315                 {*r = Mono_Posix_Errno_ETXTBSY; return 0;}
2316 #endif /* ndef ETXTBSY */
2317 #ifdef EUCLEAN
2318         if (x == EUCLEAN)
2319                 {*r = Mono_Posix_Errno_EUCLEAN; return 0;}
2320 #endif /* ndef EUCLEAN */
2321 #ifdef EUNATCH
2322         if (x == EUNATCH)
2323                 {*r = Mono_Posix_Errno_EUNATCH; return 0;}
2324 #endif /* ndef EUNATCH */
2325 #ifdef EUSERS
2326         if (x == EUSERS)
2327                 {*r = Mono_Posix_Errno_EUSERS; return 0;}
2328 #endif /* ndef EUSERS */
2329 #ifdef EWOULDBLOCK
2330         if (x == EWOULDBLOCK)
2331                 {*r = Mono_Posix_Errno_EWOULDBLOCK; return 0;}
2332 #endif /* ndef EWOULDBLOCK */
2333 #ifdef EXDEV
2334         if (x == EXDEV)
2335                 {*r = Mono_Posix_Errno_EXDEV; return 0;}
2336 #endif /* ndef EXDEV */
2337 #ifdef EXFULL
2338         if (x == EXFULL)
2339                 {*r = Mono_Posix_Errno_EXFULL; return 0;}
2340 #endif /* ndef EXFULL */
2341         errno = EINVAL; return -1;
2342 }
2343
2344 int Mono_Posix_FromFcntlCommand (int x, int *r)
2345 {
2346         *r = 0;
2347         if (x == Mono_Posix_FcntlCommand_F_DUPFD)
2348 #ifdef F_DUPFD
2349                 {*r = F_DUPFD; return 0;}
2350 #else /* def F_DUPFD */
2351                 {errno = EINVAL; return -1;}
2352 #endif /* ndef F_DUPFD */
2353         if (x == Mono_Posix_FcntlCommand_F_GETFD)
2354 #ifdef F_GETFD
2355                 {*r = F_GETFD; return 0;}
2356 #else /* def F_GETFD */
2357                 {errno = EINVAL; return -1;}
2358 #endif /* ndef F_GETFD */
2359         if (x == Mono_Posix_FcntlCommand_F_GETFL)
2360 #ifdef F_GETFL
2361                 {*r = F_GETFL; return 0;}
2362 #else /* def F_GETFL */
2363                 {errno = EINVAL; return -1;}
2364 #endif /* ndef F_GETFL */
2365         if (x == Mono_Posix_FcntlCommand_F_GETLEASE)
2366 #ifdef F_GETLEASE
2367                 {*r = F_GETLEASE; return 0;}
2368 #else /* def F_GETLEASE */
2369                 {errno = EINVAL; return -1;}
2370 #endif /* ndef F_GETLEASE */
2371         if (x == Mono_Posix_FcntlCommand_F_GETLK)
2372 #ifdef F_GETLK
2373                 {*r = F_GETLK; return 0;}
2374 #else /* def F_GETLK */
2375                 {errno = EINVAL; return -1;}
2376 #endif /* ndef F_GETLK */
2377         if (x == Mono_Posix_FcntlCommand_F_GETOWN)
2378 #ifdef F_GETOWN
2379                 {*r = F_GETOWN; return 0;}
2380 #else /* def F_GETOWN */
2381                 {errno = EINVAL; return -1;}
2382 #endif /* ndef F_GETOWN */
2383         if (x == Mono_Posix_FcntlCommand_F_GETSIG)
2384 #ifdef F_GETSIG
2385                 {*r = F_GETSIG; return 0;}
2386 #else /* def F_GETSIG */
2387                 {errno = EINVAL; return -1;}
2388 #endif /* ndef F_GETSIG */
2389         if (x == Mono_Posix_FcntlCommand_F_NOTIFY)
2390 #ifdef F_NOTIFY
2391                 {*r = F_NOTIFY; return 0;}
2392 #else /* def F_NOTIFY */
2393                 {errno = EINVAL; return -1;}
2394 #endif /* ndef F_NOTIFY */
2395         if (x == Mono_Posix_FcntlCommand_F_SETFD)
2396 #ifdef F_SETFD
2397                 {*r = F_SETFD; return 0;}
2398 #else /* def F_SETFD */
2399                 {errno = EINVAL; return -1;}
2400 #endif /* ndef F_SETFD */
2401         if (x == Mono_Posix_FcntlCommand_F_SETFL)
2402 #ifdef F_SETFL
2403                 {*r = F_SETFL; return 0;}
2404 #else /* def F_SETFL */
2405                 {errno = EINVAL; return -1;}
2406 #endif /* ndef F_SETFL */
2407         if (x == Mono_Posix_FcntlCommand_F_SETLEASE)
2408 #ifdef F_SETLEASE
2409                 {*r = F_SETLEASE; return 0;}
2410 #else /* def F_SETLEASE */
2411                 {errno = EINVAL; return -1;}
2412 #endif /* ndef F_SETLEASE */
2413         if (x == Mono_Posix_FcntlCommand_F_SETLK)
2414 #ifdef F_SETLK
2415                 {*r = F_SETLK; return 0;}
2416 #else /* def F_SETLK */
2417                 {errno = EINVAL; return -1;}
2418 #endif /* ndef F_SETLK */
2419         if (x == Mono_Posix_FcntlCommand_F_SETLKW)
2420 #ifdef F_SETLKW
2421                 {*r = F_SETLKW; return 0;}
2422 #else /* def F_SETLKW */
2423                 {errno = EINVAL; return -1;}
2424 #endif /* ndef F_SETLKW */
2425         if (x == Mono_Posix_FcntlCommand_F_SETOWN)
2426 #ifdef F_SETOWN
2427                 {*r = F_SETOWN; return 0;}
2428 #else /* def F_SETOWN */
2429                 {errno = EINVAL; return -1;}
2430 #endif /* ndef F_SETOWN */
2431         if (x == Mono_Posix_FcntlCommand_F_SETSIG)
2432 #ifdef F_SETSIG
2433                 {*r = F_SETSIG; return 0;}
2434 #else /* def F_SETSIG */
2435                 {errno = EINVAL; return -1;}
2436 #endif /* ndef F_SETSIG */
2437         if (x == 0)
2438                 return 0;
2439         errno = EINVAL; return -1;
2440 }
2441
2442 int Mono_Posix_ToFcntlCommand (int x, int *r)
2443 {
2444         *r = 0;
2445         if (x == 0)
2446                 return 0;
2447 #ifdef F_DUPFD
2448         if (x == F_DUPFD)
2449                 {*r = Mono_Posix_FcntlCommand_F_DUPFD; return 0;}
2450 #endif /* ndef F_DUPFD */
2451 #ifdef F_GETFD
2452         if (x == F_GETFD)
2453                 {*r = Mono_Posix_FcntlCommand_F_GETFD; return 0;}
2454 #endif /* ndef F_GETFD */
2455 #ifdef F_GETFL
2456         if (x == F_GETFL)
2457                 {*r = Mono_Posix_FcntlCommand_F_GETFL; return 0;}
2458 #endif /* ndef F_GETFL */
2459 #ifdef F_GETLEASE
2460         if (x == F_GETLEASE)
2461                 {*r = Mono_Posix_FcntlCommand_F_GETLEASE; return 0;}
2462 #endif /* ndef F_GETLEASE */
2463 #ifdef F_GETLK
2464         if (x == F_GETLK)
2465                 {*r = Mono_Posix_FcntlCommand_F_GETLK; return 0;}
2466 #endif /* ndef F_GETLK */
2467 #ifdef F_GETOWN
2468         if (x == F_GETOWN)
2469                 {*r = Mono_Posix_FcntlCommand_F_GETOWN; return 0;}
2470 #endif /* ndef F_GETOWN */
2471 #ifdef F_GETSIG
2472         if (x == F_GETSIG)
2473                 {*r = Mono_Posix_FcntlCommand_F_GETSIG; return 0;}
2474 #endif /* ndef F_GETSIG */
2475 #ifdef F_NOTIFY
2476         if (x == F_NOTIFY)
2477                 {*r = Mono_Posix_FcntlCommand_F_NOTIFY; return 0;}
2478 #endif /* ndef F_NOTIFY */
2479 #ifdef F_SETFD
2480         if (x == F_SETFD)
2481                 {*r = Mono_Posix_FcntlCommand_F_SETFD; return 0;}
2482 #endif /* ndef F_SETFD */
2483 #ifdef F_SETFL
2484         if (x == F_SETFL)
2485                 {*r = Mono_Posix_FcntlCommand_F_SETFL; return 0;}
2486 #endif /* ndef F_SETFL */
2487 #ifdef F_SETLEASE
2488         if (x == F_SETLEASE)
2489                 {*r = Mono_Posix_FcntlCommand_F_SETLEASE; return 0;}
2490 #endif /* ndef F_SETLEASE */
2491 #ifdef F_SETLK
2492         if (x == F_SETLK)
2493                 {*r = Mono_Posix_FcntlCommand_F_SETLK; return 0;}
2494 #endif /* ndef F_SETLK */
2495 #ifdef F_SETLKW
2496         if (x == F_SETLKW)
2497                 {*r = Mono_Posix_FcntlCommand_F_SETLKW; return 0;}
2498 #endif /* ndef F_SETLKW */
2499 #ifdef F_SETOWN
2500         if (x == F_SETOWN)
2501                 {*r = Mono_Posix_FcntlCommand_F_SETOWN; return 0;}
2502 #endif /* ndef F_SETOWN */
2503 #ifdef F_SETSIG
2504         if (x == F_SETSIG)
2505                 {*r = Mono_Posix_FcntlCommand_F_SETSIG; return 0;}
2506 #endif /* ndef F_SETSIG */
2507         errno = EINVAL; return -1;
2508 }
2509
2510 int Mono_Posix_FromFilePermissions (unsigned int x, unsigned int *r)
2511 {
2512         *r = 0;
2513         if ((x & Mono_Posix_FilePermissions_ACCESSPERMS) == Mono_Posix_FilePermissions_ACCESSPERMS)
2514 #ifdef ACCESSPERMS
2515                 *r |= ACCESSPERMS;
2516 #else /* def ACCESSPERMS */
2517                 {/* Ignoring Mono_Posix_FilePermissions_ACCESSPERMS, as it is constructed from other values */}
2518 #endif /* ndef ACCESSPERMS */
2519         if ((x & Mono_Posix_FilePermissions_ALLPERMS) == Mono_Posix_FilePermissions_ALLPERMS)
2520 #ifdef ALLPERMS
2521                 *r |= ALLPERMS;
2522 #else /* def ALLPERMS */
2523                 {/* Ignoring Mono_Posix_FilePermissions_ALLPERMS, as it is constructed from other values */}
2524 #endif /* ndef ALLPERMS */
2525         if ((x & Mono_Posix_FilePermissions_DEFFILEMODE) == Mono_Posix_FilePermissions_DEFFILEMODE)
2526 #ifdef DEFFILEMODE
2527                 *r |= DEFFILEMODE;
2528 #else /* def DEFFILEMODE */
2529                 {/* Ignoring Mono_Posix_FilePermissions_DEFFILEMODE, as it is constructed from other values */}
2530 #endif /* ndef DEFFILEMODE */
2531         if ((x & Mono_Posix_FilePermissions_S_IFMT) == Mono_Posix_FilePermissions_S_IFBLK)
2532 #ifdef S_IFBLK
2533                 *r |= S_IFBLK;
2534 #else /* def S_IFBLK */
2535                 {errno = EINVAL; return -1;}
2536 #endif /* ndef S_IFBLK */
2537         if ((x & Mono_Posix_FilePermissions_S_IFMT) == Mono_Posix_FilePermissions_S_IFCHR)
2538 #ifdef S_IFCHR
2539                 *r |= S_IFCHR;
2540 #else /* def S_IFCHR */
2541                 {errno = EINVAL; return -1;}
2542 #endif /* ndef S_IFCHR */
2543         if ((x & Mono_Posix_FilePermissions_S_IFMT) == Mono_Posix_FilePermissions_S_IFDIR)
2544 #ifdef S_IFDIR
2545                 *r |= S_IFDIR;
2546 #else /* def S_IFDIR */
2547                 {errno = EINVAL; return -1;}
2548 #endif /* ndef S_IFDIR */
2549         if ((x & Mono_Posix_FilePermissions_S_IFMT) == Mono_Posix_FilePermissions_S_IFIFO)
2550 #ifdef S_IFIFO
2551                 *r |= S_IFIFO;
2552 #else /* def S_IFIFO */
2553                 {errno = EINVAL; return -1;}
2554 #endif /* ndef S_IFIFO */
2555         if ((x & Mono_Posix_FilePermissions_S_IFMT) == Mono_Posix_FilePermissions_S_IFLNK)
2556 #ifdef S_IFLNK
2557                 *r |= S_IFLNK;
2558 #else /* def S_IFLNK */
2559                 {errno = EINVAL; return -1;}
2560 #endif /* ndef S_IFLNK */
2561         if ((x & Mono_Posix_FilePermissions_S_IFMT) == Mono_Posix_FilePermissions_S_IFMT)
2562 #ifdef S_IFMT
2563                 *r |= S_IFMT;
2564 #else /* def S_IFMT */
2565                 {/* Ignoring Mono_Posix_FilePermissions_S_IFMT, as it is constructed from other values */}
2566 #endif /* ndef S_IFMT */
2567         if ((x & Mono_Posix_FilePermissions_S_IFMT) == Mono_Posix_FilePermissions_S_IFREG)
2568 #ifdef S_IFREG
2569                 *r |= S_IFREG;
2570 #else /* def S_IFREG */
2571                 {errno = EINVAL; return -1;}
2572 #endif /* ndef S_IFREG */
2573         if ((x & Mono_Posix_FilePermissions_S_IFMT) == Mono_Posix_FilePermissions_S_IFSOCK)
2574 #ifdef S_IFSOCK
2575                 *r |= S_IFSOCK;
2576 #else /* def S_IFSOCK */
2577                 {errno = EINVAL; return -1;}
2578 #endif /* ndef S_IFSOCK */
2579         if ((x & Mono_Posix_FilePermissions_S_IRGRP) == Mono_Posix_FilePermissions_S_IRGRP)
2580 #ifdef S_IRGRP
2581                 *r |= S_IRGRP;
2582 #else /* def S_IRGRP */
2583                 {errno = EINVAL; return -1;}
2584 #endif /* ndef S_IRGRP */
2585         if ((x & Mono_Posix_FilePermissions_S_IROTH) == Mono_Posix_FilePermissions_S_IROTH)
2586 #ifdef S_IROTH
2587                 *r |= S_IROTH;
2588 #else /* def S_IROTH */
2589                 {errno = EINVAL; return -1;}
2590 #endif /* ndef S_IROTH */
2591         if ((x & Mono_Posix_FilePermissions_S_IRUSR) == Mono_Posix_FilePermissions_S_IRUSR)
2592 #ifdef S_IRUSR
2593                 *r |= S_IRUSR;
2594 #else /* def S_IRUSR */
2595                 {errno = EINVAL; return -1;}
2596 #endif /* ndef S_IRUSR */
2597         if ((x & Mono_Posix_FilePermissions_S_IRWXG) == Mono_Posix_FilePermissions_S_IRWXG)
2598 #ifdef S_IRWXG
2599                 *r |= S_IRWXG;
2600 #else /* def S_IRWXG */
2601                 {/* Ignoring Mono_Posix_FilePermissions_S_IRWXG, as it is constructed from other values */}
2602 #endif /* ndef S_IRWXG */
2603         if ((x & Mono_Posix_FilePermissions_S_IRWXO) == Mono_Posix_FilePermissions_S_IRWXO)
2604 #ifdef S_IRWXO
2605                 *r |= S_IRWXO;
2606 #else /* def S_IRWXO */
2607                 {/* Ignoring Mono_Posix_FilePermissions_S_IRWXO, as it is constructed from other values */}
2608 #endif /* ndef S_IRWXO */
2609         if ((x & Mono_Posix_FilePermissions_S_IRWXU) == Mono_Posix_FilePermissions_S_IRWXU)
2610 #ifdef S_IRWXU
2611                 *r |= S_IRWXU;
2612 #else /* def S_IRWXU */
2613                 {/* Ignoring Mono_Posix_FilePermissions_S_IRWXU, as it is constructed from other values */}
2614 #endif /* ndef S_IRWXU */
2615         if ((x & Mono_Posix_FilePermissions_S_ISGID) == Mono_Posix_FilePermissions_S_ISGID)
2616 #ifdef S_ISGID
2617                 *r |= S_ISGID;
2618 #else /* def S_ISGID */
2619                 {errno = EINVAL; return -1;}
2620 #endif /* ndef S_ISGID */
2621         if ((x & Mono_Posix_FilePermissions_S_ISUID) == Mono_Posix_FilePermissions_S_ISUID)
2622 #ifdef S_ISUID
2623                 *r |= S_ISUID;
2624 #else /* def S_ISUID */
2625                 {errno = EINVAL; return -1;}
2626 #endif /* ndef S_ISUID */
2627         if ((x & Mono_Posix_FilePermissions_S_ISVTX) == Mono_Posix_FilePermissions_S_ISVTX)
2628 #ifdef S_ISVTX
2629                 *r |= S_ISVTX;
2630 #else /* def S_ISVTX */
2631                 {errno = EINVAL; return -1;}
2632 #endif /* ndef S_ISVTX */
2633         if ((x & Mono_Posix_FilePermissions_S_IWGRP) == Mono_Posix_FilePermissions_S_IWGRP)
2634 #ifdef S_IWGRP
2635                 *r |= S_IWGRP;
2636 #else /* def S_IWGRP */
2637                 {errno = EINVAL; return -1;}
2638 #endif /* ndef S_IWGRP */
2639         if ((x & Mono_Posix_FilePermissions_S_IWOTH) == Mono_Posix_FilePermissions_S_IWOTH)
2640 #ifdef S_IWOTH
2641                 *r |= S_IWOTH;
2642 #else /* def S_IWOTH */
2643                 {errno = EINVAL; return -1;}
2644 #endif /* ndef S_IWOTH */
2645         if ((x & Mono_Posix_FilePermissions_S_IWUSR) == Mono_Posix_FilePermissions_S_IWUSR)
2646 #ifdef S_IWUSR
2647                 *r |= S_IWUSR;
2648 #else /* def S_IWUSR */
2649                 {errno = EINVAL; return -1;}
2650 #endif /* ndef S_IWUSR */
2651         if ((x & Mono_Posix_FilePermissions_S_IXGRP) == Mono_Posix_FilePermissions_S_IXGRP)
2652 #ifdef S_IXGRP
2653                 *r |= S_IXGRP;
2654 #else /* def S_IXGRP */
2655                 {errno = EINVAL; return -1;}
2656 #endif /* ndef S_IXGRP */
2657         if ((x & Mono_Posix_FilePermissions_S_IXOTH) == Mono_Posix_FilePermissions_S_IXOTH)
2658 #ifdef S_IXOTH
2659                 *r |= S_IXOTH;
2660 #else /* def S_IXOTH */
2661                 {errno = EINVAL; return -1;}
2662 #endif /* ndef S_IXOTH */
2663         if ((x & Mono_Posix_FilePermissions_S_IXUSR) == Mono_Posix_FilePermissions_S_IXUSR)
2664 #ifdef S_IXUSR
2665                 *r |= S_IXUSR;
2666 #else /* def S_IXUSR */
2667                 {errno = EINVAL; return -1;}
2668 #endif /* ndef S_IXUSR */
2669         if (x == 0)
2670                 return 0;
2671         return 0;
2672 }
2673
2674 int Mono_Posix_ToFilePermissions (unsigned int x, unsigned int *r)
2675 {
2676         *r = 0;
2677         if (x == 0)
2678                 return 0;
2679 #ifdef ACCESSPERMS
2680         if ((x & ACCESSPERMS) == ACCESSPERMS)
2681                 *r |= Mono_Posix_FilePermissions_ACCESSPERMS;
2682 #endif /* ndef ACCESSPERMS */
2683 #ifdef ALLPERMS
2684         if ((x & ALLPERMS) == ALLPERMS)
2685                 *r |= Mono_Posix_FilePermissions_ALLPERMS;
2686 #endif /* ndef ALLPERMS */
2687 #ifdef DEFFILEMODE
2688         if ((x & DEFFILEMODE) == DEFFILEMODE)
2689                 *r |= Mono_Posix_FilePermissions_DEFFILEMODE;
2690 #endif /* ndef DEFFILEMODE */
2691 #ifdef S_IFBLK
2692         if ((x & S_IFMT) == S_IFBLK)
2693                 *r |= Mono_Posix_FilePermissions_S_IFBLK;
2694 #endif /* ndef S_IFBLK */
2695 #ifdef S_IFCHR
2696         if ((x & S_IFMT) == S_IFCHR)
2697                 *r |= Mono_Posix_FilePermissions_S_IFCHR;
2698 #endif /* ndef S_IFCHR */
2699 #ifdef S_IFDIR
2700         if ((x & S_IFMT) == S_IFDIR)
2701                 *r |= Mono_Posix_FilePermissions_S_IFDIR;
2702 #endif /* ndef S_IFDIR */
2703 #ifdef S_IFIFO
2704         if ((x & S_IFMT) == S_IFIFO)
2705                 *r |= Mono_Posix_FilePermissions_S_IFIFO;
2706 #endif /* ndef S_IFIFO */
2707 #ifdef S_IFLNK
2708         if ((x & S_IFMT) == S_IFLNK)
2709                 *r |= Mono_Posix_FilePermissions_S_IFLNK;
2710 #endif /* ndef S_IFLNK */
2711 #ifdef S_IFMT
2712         if ((x & S_IFMT) == S_IFMT)
2713                 *r |= Mono_Posix_FilePermissions_S_IFMT;
2714 #endif /* ndef S_IFMT */
2715 #ifdef S_IFREG
2716         if ((x & S_IFMT) == S_IFREG)
2717                 *r |= Mono_Posix_FilePermissions_S_IFREG;
2718 #endif /* ndef S_IFREG */
2719 #ifdef S_IFSOCK
2720         if ((x & S_IFMT) == S_IFSOCK)
2721                 *r |= Mono_Posix_FilePermissions_S_IFSOCK;
2722 #endif /* ndef S_IFSOCK */
2723 #ifdef S_IRGRP
2724         if ((x & S_IRGRP) == S_IRGRP)
2725                 *r |= Mono_Posix_FilePermissions_S_IRGRP;
2726 #endif /* ndef S_IRGRP */
2727 #ifdef S_IROTH
2728         if ((x & S_IROTH) == S_IROTH)
2729                 *r |= Mono_Posix_FilePermissions_S_IROTH;
2730 #endif /* ndef S_IROTH */
2731 #ifdef S_IRUSR
2732         if ((x & S_IRUSR) == S_IRUSR)
2733                 *r |= Mono_Posix_FilePermissions_S_IRUSR;
2734 #endif /* ndef S_IRUSR */
2735 #ifdef S_IRWXG
2736         if ((x & S_IRWXG) == S_IRWXG)
2737                 *r |= Mono_Posix_FilePermissions_S_IRWXG;
2738 #endif /* ndef S_IRWXG */
2739 #ifdef S_IRWXO
2740         if ((x & S_IRWXO) == S_IRWXO)
2741                 *r |= Mono_Posix_FilePermissions_S_IRWXO;
2742 #endif /* ndef S_IRWXO */
2743 #ifdef S_IRWXU
2744         if ((x & S_IRWXU) == S_IRWXU)
2745                 *r |= Mono_Posix_FilePermissions_S_IRWXU;
2746 #endif /* ndef S_IRWXU */
2747 #ifdef S_ISGID
2748         if ((x & S_ISGID) == S_ISGID)
2749                 *r |= Mono_Posix_FilePermissions_S_ISGID;
2750 #endif /* ndef S_ISGID */
2751 #ifdef S_ISUID
2752         if ((x & S_ISUID) == S_ISUID)
2753                 *r |= Mono_Posix_FilePermissions_S_ISUID;
2754 #endif /* ndef S_ISUID */
2755 #ifdef S_ISVTX
2756         if ((x & S_ISVTX) == S_ISVTX)
2757                 *r |= Mono_Posix_FilePermissions_S_ISVTX;
2758 #endif /* ndef S_ISVTX */
2759 #ifdef S_IWGRP
2760         if ((x & S_IWGRP) == S_IWGRP)
2761                 *r |= Mono_Posix_FilePermissions_S_IWGRP;
2762 #endif /* ndef S_IWGRP */
2763 #ifdef S_IWOTH
2764         if ((x & S_IWOTH) == S_IWOTH)
2765                 *r |= Mono_Posix_FilePermissions_S_IWOTH;
2766 #endif /* ndef S_IWOTH */
2767 #ifdef S_IWUSR
2768         if ((x & S_IWUSR) == S_IWUSR)
2769                 *r |= Mono_Posix_FilePermissions_S_IWUSR;
2770 #endif /* ndef S_IWUSR */
2771 #ifdef S_IXGRP
2772         if ((x & S_IXGRP) == S_IXGRP)
2773                 *r |= Mono_Posix_FilePermissions_S_IXGRP;
2774 #endif /* ndef S_IXGRP */
2775 #ifdef S_IXOTH
2776         if ((x & S_IXOTH) == S_IXOTH)
2777                 *r |= Mono_Posix_FilePermissions_S_IXOTH;
2778 #endif /* ndef S_IXOTH */
2779 #ifdef S_IXUSR
2780         if ((x & S_IXUSR) == S_IXUSR)
2781                 *r |= Mono_Posix_FilePermissions_S_IXUSR;
2782 #endif /* ndef S_IXUSR */
2783         return 0;
2784 }
2785
2786 #ifdef HAVE_STRUCT_FLOCK
2787 int
2788 Mono_Posix_FromFlock (struct Mono_Posix_Flock *from, struct flock *to)
2789 {
2790         _cnm_return_val_if_overflow (off_t, from->l_start, -1);
2791         _cnm_return_val_if_overflow (off_t, from->l_len, -1);
2792         _cnm_return_val_if_overflow (pid_t, from->l_pid, -1);
2793
2794         memset (to, 0, sizeof(*to));
2795
2796         if (Mono_Posix_FromLockType (from->l_type, &to->l_type) != 0) {
2797                 return -1;
2798         }
2799         if (Mono_Posix_FromSeekFlags (from->l_whence, &to->l_whence) != 0) {
2800                 return -1;
2801         }
2802         to->l_start  = from->l_start;
2803         to->l_len    = from->l_len;
2804         to->l_pid    = from->l_pid;
2805
2806         return 0;
2807 }
2808 #endif /* ndef HAVE_STRUCT_FLOCK */
2809
2810
2811 #ifdef HAVE_STRUCT_FLOCK
2812 int
2813 Mono_Posix_ToFlock (struct flock *from, struct Mono_Posix_Flock *to)
2814 {
2815         _cnm_return_val_if_overflow (gint64, from->l_start, -1);
2816         _cnm_return_val_if_overflow (gint64, from->l_len, -1);
2817         _cnm_return_val_if_overflow (int, from->l_pid, -1);
2818
2819         memset (to, 0, sizeof(*to));
2820
2821         if (Mono_Posix_ToLockType (from->l_type, &to->l_type) != 0) {
2822                 return -1;
2823         }
2824         if (Mono_Posix_ToSeekFlags (from->l_whence, &to->l_whence) != 0) {
2825                 return -1;
2826         }
2827         to->l_start  = from->l_start;
2828         to->l_len    = from->l_len;
2829         to->l_pid    = from->l_pid;
2830
2831         return 0;
2832 }
2833 #endif /* ndef HAVE_STRUCT_FLOCK */
2834
2835
2836 #ifdef HAVE_STRUCT_IOVEC
2837 int
2838 Mono_Posix_FromIovec (struct Mono_Posix_Iovec *from, struct iovec *to)
2839 {
2840         _cnm_return_val_if_overflow (guint64, from->iov_len, -1);
2841
2842         memset (to, 0, sizeof(*to));
2843
2844         to->iov_base = from->iov_base;
2845         to->iov_len  = from->iov_len;
2846
2847         return 0;
2848 }
2849 #endif /* ndef HAVE_STRUCT_IOVEC */
2850
2851
2852 #ifdef HAVE_STRUCT_IOVEC
2853 int
2854 Mono_Posix_ToIovec (struct iovec *from, struct Mono_Posix_Iovec *to)
2855 {
2856         _cnm_return_val_if_overflow (guint64, from->iov_len, -1);
2857
2858         memset (to, 0, sizeof(*to));
2859
2860         to->iov_base = from->iov_base;
2861         to->iov_len  = from->iov_len;
2862
2863         return 0;
2864 }
2865 #endif /* ndef HAVE_STRUCT_IOVEC */
2866
2867
2868 int Mono_Posix_FromLockType (short x, short *r)
2869 {
2870         *r = 0;
2871         if (x == Mono_Posix_LockType_F_RDLCK)
2872 #ifdef F_RDLCK
2873                 {*r = F_RDLCK; return 0;}
2874 #else /* def F_RDLCK */
2875                 {errno = EINVAL; return -1;}
2876 #endif /* ndef F_RDLCK */
2877         if (x == Mono_Posix_LockType_F_UNLCK)
2878 #ifdef F_UNLCK
2879                 {*r = F_UNLCK; return 0;}
2880 #else /* def F_UNLCK */
2881                 {errno = EINVAL; return -1;}
2882 #endif /* ndef F_UNLCK */
2883         if (x == Mono_Posix_LockType_F_WRLCK)
2884 #ifdef F_WRLCK
2885                 {*r = F_WRLCK; return 0;}
2886 #else /* def F_WRLCK */
2887                 {errno = EINVAL; return -1;}
2888 #endif /* ndef F_WRLCK */
2889         if (x == 0)
2890                 return 0;
2891         errno = EINVAL; return -1;
2892 }
2893
2894 int Mono_Posix_ToLockType (short x, short *r)
2895 {
2896         *r = 0;
2897         if (x == 0)
2898                 return 0;
2899 #ifdef F_RDLCK
2900         if (x == F_RDLCK)
2901                 {*r = Mono_Posix_LockType_F_RDLCK; return 0;}
2902 #endif /* ndef F_RDLCK */
2903 #ifdef F_UNLCK
2904         if (x == F_UNLCK)
2905                 {*r = Mono_Posix_LockType_F_UNLCK; return 0;}
2906 #endif /* ndef F_UNLCK */
2907 #ifdef F_WRLCK
2908         if (x == F_WRLCK)
2909                 {*r = Mono_Posix_LockType_F_WRLCK; return 0;}
2910 #endif /* ndef F_WRLCK */
2911         errno = EINVAL; return -1;
2912 }
2913
2914 int Mono_Posix_FromLockfCommand (int x, int *r)
2915 {
2916         *r = 0;
2917         if (x == Mono_Posix_LockfCommand_F_LOCK)
2918 #ifdef F_LOCK
2919                 {*r = F_LOCK; return 0;}
2920 #else /* def F_LOCK */
2921                 {errno = EINVAL; return -1;}
2922 #endif /* ndef F_LOCK */
2923         if (x == Mono_Posix_LockfCommand_F_TEST)
2924 #ifdef F_TEST
2925                 {*r = F_TEST; return 0;}
2926 #else /* def F_TEST */
2927                 {errno = EINVAL; return -1;}
2928 #endif /* ndef F_TEST */
2929         if (x == Mono_Posix_LockfCommand_F_TLOCK)
2930 #ifdef F_TLOCK
2931                 {*r = F_TLOCK; return 0;}
2932 #else /* def F_TLOCK */
2933                 {errno = EINVAL; return -1;}
2934 #endif /* ndef F_TLOCK */
2935         if (x == Mono_Posix_LockfCommand_F_ULOCK)
2936 #ifdef F_ULOCK
2937                 {*r = F_ULOCK; return 0;}
2938 #else /* def F_ULOCK */
2939                 {errno = EINVAL; return -1;}
2940 #endif /* ndef F_ULOCK */
2941         if (x == 0)
2942                 return 0;
2943         errno = EINVAL; return -1;
2944 }
2945
2946 int Mono_Posix_ToLockfCommand (int x, int *r)
2947 {
2948         *r = 0;
2949         if (x == 0)
2950                 return 0;
2951 #ifdef F_LOCK
2952         if (x == F_LOCK)
2953                 {*r = Mono_Posix_LockfCommand_F_LOCK; return 0;}
2954 #endif /* ndef F_LOCK */
2955 #ifdef F_TEST
2956         if (x == F_TEST)
2957                 {*r = Mono_Posix_LockfCommand_F_TEST; return 0;}
2958 #endif /* ndef F_TEST */
2959 #ifdef F_TLOCK
2960         if (x == F_TLOCK)
2961                 {*r = Mono_Posix_LockfCommand_F_TLOCK; return 0;}
2962 #endif /* ndef F_TLOCK */
2963 #ifdef F_ULOCK
2964         if (x == F_ULOCK)
2965                 {*r = Mono_Posix_LockfCommand_F_ULOCK; return 0;}
2966 #endif /* ndef F_ULOCK */
2967         errno = EINVAL; return -1;
2968 }
2969
2970 int Mono_Posix_FromMlockallFlags (int x, int *r)
2971 {
2972         *r = 0;
2973         if ((x & Mono_Posix_MlockallFlags_MCL_CURRENT) == Mono_Posix_MlockallFlags_MCL_CURRENT)
2974 #ifdef MCL_CURRENT
2975                 *r |= MCL_CURRENT;
2976 #else /* def MCL_CURRENT */
2977                 {errno = EINVAL; return -1;}
2978 #endif /* ndef MCL_CURRENT */
2979         if ((x & Mono_Posix_MlockallFlags_MCL_FUTURE) == Mono_Posix_MlockallFlags_MCL_FUTURE)
2980 #ifdef MCL_FUTURE
2981                 *r |= MCL_FUTURE;
2982 #else /* def MCL_FUTURE */
2983                 {errno = EINVAL; return -1;}
2984 #endif /* ndef MCL_FUTURE */
2985         if (x == 0)
2986                 return 0;
2987         return 0;
2988 }
2989
2990 int Mono_Posix_ToMlockallFlags (int x, int *r)
2991 {
2992         *r = 0;
2993         if (x == 0)
2994                 return 0;
2995 #ifdef MCL_CURRENT
2996         if ((x & MCL_CURRENT) == MCL_CURRENT)
2997                 *r |= Mono_Posix_MlockallFlags_MCL_CURRENT;
2998 #endif /* ndef MCL_CURRENT */
2999 #ifdef MCL_FUTURE
3000         if ((x & MCL_FUTURE) == MCL_FUTURE)
3001                 *r |= Mono_Posix_MlockallFlags_MCL_FUTURE;
3002 #endif /* ndef MCL_FUTURE */
3003         return 0;
3004 }
3005
3006 int Mono_Posix_FromMmapFlags (int x, int *r)
3007 {
3008         *r = 0;
3009         if ((x & Mono_Posix_MmapFlags_MAP_ANON) == Mono_Posix_MmapFlags_MAP_ANON)
3010 #ifdef MAP_ANON
3011                 *r |= MAP_ANON;
3012 #else /* def MAP_ANON */
3013                 {errno = EINVAL; return -1;}
3014 #endif /* ndef MAP_ANON */
3015         if ((x & Mono_Posix_MmapFlags_MAP_ANONYMOUS) == Mono_Posix_MmapFlags_MAP_ANONYMOUS)
3016 #ifdef MAP_ANONYMOUS
3017                 *r |= MAP_ANONYMOUS;
3018 #else /* def MAP_ANONYMOUS */
3019                 {errno = EINVAL; return -1;}
3020 #endif /* ndef MAP_ANONYMOUS */
3021         if ((x & Mono_Posix_MmapFlags_MAP_DENYWRITE) == Mono_Posix_MmapFlags_MAP_DENYWRITE)
3022 #ifdef MAP_DENYWRITE
3023                 *r |= MAP_DENYWRITE;
3024 #else /* def MAP_DENYWRITE */
3025                 {errno = EINVAL; return -1;}
3026 #endif /* ndef MAP_DENYWRITE */
3027         if ((x & Mono_Posix_MmapFlags_MAP_EXECUTABLE) == Mono_Posix_MmapFlags_MAP_EXECUTABLE)
3028 #ifdef MAP_EXECUTABLE
3029                 *r |= MAP_EXECUTABLE;
3030 #else /* def MAP_EXECUTABLE */
3031                 {errno = EINVAL; return -1;}
3032 #endif /* ndef MAP_EXECUTABLE */
3033         if ((x & Mono_Posix_MmapFlags_MAP_FILE) == Mono_Posix_MmapFlags_MAP_FILE)
3034 #ifdef MAP_FILE
3035                 *r |= MAP_FILE;
3036 #else /* def MAP_FILE */
3037                 {errno = EINVAL; return -1;}
3038 #endif /* ndef MAP_FILE */
3039         if ((x & Mono_Posix_MmapFlags_MAP_FIXED) == Mono_Posix_MmapFlags_MAP_FIXED)
3040 #ifdef MAP_FIXED
3041                 *r |= MAP_FIXED;
3042 #else /* def MAP_FIXED */
3043                 {errno = EINVAL; return -1;}
3044 #endif /* ndef MAP_FIXED */
3045         if ((x & Mono_Posix_MmapFlags_MAP_GROWSDOWN) == Mono_Posix_MmapFlags_MAP_GROWSDOWN)
3046 #ifdef MAP_GROWSDOWN
3047                 *r |= MAP_GROWSDOWN;
3048 #else /* def MAP_GROWSDOWN */
3049                 {errno = EINVAL; return -1;}
3050 #endif /* ndef MAP_GROWSDOWN */
3051         if ((x & Mono_Posix_MmapFlags_MAP_LOCKED) == Mono_Posix_MmapFlags_MAP_LOCKED)
3052 #ifdef MAP_LOCKED
3053                 *r |= MAP_LOCKED;
3054 #else /* def MAP_LOCKED */
3055                 {errno = EINVAL; return -1;}
3056 #endif /* ndef MAP_LOCKED */
3057         if ((x & Mono_Posix_MmapFlags_MAP_NONBLOCK) == Mono_Posix_MmapFlags_MAP_NONBLOCK)
3058 #ifdef MAP_NONBLOCK
3059                 *r |= MAP_NONBLOCK;
3060 #else /* def MAP_NONBLOCK */
3061                 {errno = EINVAL; return -1;}
3062 #endif /* ndef MAP_NONBLOCK */
3063         if ((x & Mono_Posix_MmapFlags_MAP_NORESERVE) == Mono_Posix_MmapFlags_MAP_NORESERVE)
3064 #ifdef MAP_NORESERVE
3065                 *r |= MAP_NORESERVE;
3066 #else /* def MAP_NORESERVE */
3067                 {errno = EINVAL; return -1;}
3068 #endif /* ndef MAP_NORESERVE */
3069         if ((x & Mono_Posix_MmapFlags_MAP_POPULATE) == Mono_Posix_MmapFlags_MAP_POPULATE)
3070 #ifdef MAP_POPULATE
3071                 *r |= MAP_POPULATE;
3072 #else /* def MAP_POPULATE */
3073                 {errno = EINVAL; return -1;}
3074 #endif /* ndef MAP_POPULATE */
3075         if ((x & Mono_Posix_MmapFlags_MAP_PRIVATE) == Mono_Posix_MmapFlags_MAP_PRIVATE)
3076 #ifdef MAP_PRIVATE
3077                 *r |= MAP_PRIVATE;
3078 #else /* def MAP_PRIVATE */
3079                 {errno = EINVAL; return -1;}
3080 #endif /* ndef MAP_PRIVATE */
3081         if ((x & Mono_Posix_MmapFlags_MAP_SHARED) == Mono_Posix_MmapFlags_MAP_SHARED)
3082 #ifdef MAP_SHARED
3083                 *r |= MAP_SHARED;
3084 #else /* def MAP_SHARED */
3085                 {errno = EINVAL; return -1;}
3086 #endif /* ndef MAP_SHARED */
3087         if ((x & Mono_Posix_MmapFlags_MAP_TYPE) == Mono_Posix_MmapFlags_MAP_TYPE)
3088 #ifdef MAP_TYPE
3089                 *r |= MAP_TYPE;
3090 #else /* def MAP_TYPE */
3091                 {errno = EINVAL; return -1;}
3092 #endif /* ndef MAP_TYPE */
3093         if (x == 0)
3094                 return 0;
3095         return 0;
3096 }
3097
3098 int Mono_Posix_ToMmapFlags (int x, int *r)
3099 {
3100         *r = 0;
3101         if (x == 0)
3102                 return 0;
3103 #ifdef MAP_ANON
3104         if ((x & MAP_ANON) == MAP_ANON)
3105                 *r |= Mono_Posix_MmapFlags_MAP_ANON;
3106 #endif /* ndef MAP_ANON */
3107 #ifdef MAP_ANONYMOUS
3108         if ((x & MAP_ANONYMOUS) == MAP_ANONYMOUS)
3109                 *r |= Mono_Posix_MmapFlags_MAP_ANONYMOUS;
3110 #endif /* ndef MAP_ANONYMOUS */
3111 #ifdef MAP_DENYWRITE
3112         if ((x & MAP_DENYWRITE) == MAP_DENYWRITE)
3113                 *r |= Mono_Posix_MmapFlags_MAP_DENYWRITE;
3114 #endif /* ndef MAP_DENYWRITE */
3115 #ifdef MAP_EXECUTABLE
3116         if ((x & MAP_EXECUTABLE) == MAP_EXECUTABLE)
3117                 *r |= Mono_Posix_MmapFlags_MAP_EXECUTABLE;
3118 #endif /* ndef MAP_EXECUTABLE */
3119 #ifdef MAP_FILE
3120         if ((x & MAP_FILE) == MAP_FILE)
3121                 *r |= Mono_Posix_MmapFlags_MAP_FILE;
3122 #endif /* ndef MAP_FILE */
3123 #ifdef MAP_FIXED
3124         if ((x & MAP_FIXED) == MAP_FIXED)
3125                 *r |= Mono_Posix_MmapFlags_MAP_FIXED;
3126 #endif /* ndef MAP_FIXED */
3127 #ifdef MAP_GROWSDOWN
3128         if ((x & MAP_GROWSDOWN) == MAP_GROWSDOWN)
3129                 *r |= Mono_Posix_MmapFlags_MAP_GROWSDOWN;
3130 #endif /* ndef MAP_GROWSDOWN */
3131 #ifdef MAP_LOCKED
3132         if ((x & MAP_LOCKED) == MAP_LOCKED)
3133                 *r |= Mono_Posix_MmapFlags_MAP_LOCKED;
3134 #endif /* ndef MAP_LOCKED */
3135 #ifdef MAP_NONBLOCK
3136         if ((x & MAP_NONBLOCK) == MAP_NONBLOCK)
3137                 *r |= Mono_Posix_MmapFlags_MAP_NONBLOCK;
3138 #endif /* ndef MAP_NONBLOCK */
3139 #ifdef MAP_NORESERVE
3140         if ((x & MAP_NORESERVE) == MAP_NORESERVE)
3141                 *r |= Mono_Posix_MmapFlags_MAP_NORESERVE;
3142 #endif /* ndef MAP_NORESERVE */
3143 #ifdef MAP_POPULATE
3144         if ((x & MAP_POPULATE) == MAP_POPULATE)
3145                 *r |= Mono_Posix_MmapFlags_MAP_POPULATE;
3146 #endif /* ndef MAP_POPULATE */
3147 #ifdef MAP_PRIVATE
3148         if ((x & MAP_PRIVATE) == MAP_PRIVATE)
3149                 *r |= Mono_Posix_MmapFlags_MAP_PRIVATE;
3150 #endif /* ndef MAP_PRIVATE */
3151 #ifdef MAP_SHARED
3152         if ((x & MAP_SHARED) == MAP_SHARED)
3153                 *r |= Mono_Posix_MmapFlags_MAP_SHARED;
3154 #endif /* ndef MAP_SHARED */
3155 #ifdef MAP_TYPE
3156         if ((x & MAP_TYPE) == MAP_TYPE)
3157                 *r |= Mono_Posix_MmapFlags_MAP_TYPE;
3158 #endif /* ndef MAP_TYPE */
3159         return 0;
3160 }
3161
3162 int Mono_Posix_FromMmapProts (int x, int *r)
3163 {
3164         *r = 0;
3165         if ((x & Mono_Posix_MmapProts_PROT_EXEC) == Mono_Posix_MmapProts_PROT_EXEC)
3166 #ifdef PROT_EXEC
3167                 *r |= PROT_EXEC;
3168 #else /* def PROT_EXEC */
3169                 {errno = EINVAL; return -1;}
3170 #endif /* ndef PROT_EXEC */
3171         if ((x & Mono_Posix_MmapProts_PROT_GROWSDOWN) == Mono_Posix_MmapProts_PROT_GROWSDOWN)
3172 #ifdef PROT_GROWSDOWN
3173                 *r |= PROT_GROWSDOWN;
3174 #else /* def PROT_GROWSDOWN */
3175                 {errno = EINVAL; return -1;}
3176 #endif /* ndef PROT_GROWSDOWN */
3177         if ((x & Mono_Posix_MmapProts_PROT_GROWSUP) == Mono_Posix_MmapProts_PROT_GROWSUP)
3178 #ifdef PROT_GROWSUP
3179                 *r |= PROT_GROWSUP;
3180 #else /* def PROT_GROWSUP */
3181                 {errno = EINVAL; return -1;}
3182 #endif /* ndef PROT_GROWSUP */
3183         if ((x & Mono_Posix_MmapProts_PROT_NONE) == Mono_Posix_MmapProts_PROT_NONE)
3184 #ifdef PROT_NONE
3185                 *r |= PROT_NONE;
3186 #else /* def PROT_NONE */
3187                 {errno = EINVAL; return -1;}
3188 #endif /* ndef PROT_NONE */
3189         if ((x & Mono_Posix_MmapProts_PROT_READ) == Mono_Posix_MmapProts_PROT_READ)
3190 #ifdef PROT_READ
3191                 *r |= PROT_READ;
3192 #else /* def PROT_READ */
3193                 {errno = EINVAL; return -1;}
3194 #endif /* ndef PROT_READ */
3195         if ((x & Mono_Posix_MmapProts_PROT_WRITE) == Mono_Posix_MmapProts_PROT_WRITE)
3196 #ifdef PROT_WRITE
3197                 *r |= PROT_WRITE;
3198 #else /* def PROT_WRITE */
3199                 {errno = EINVAL; return -1;}
3200 #endif /* ndef PROT_WRITE */
3201         if (x == 0)
3202                 return 0;
3203         return 0;
3204 }
3205
3206 int Mono_Posix_ToMmapProts (int x, int *r)
3207 {
3208         *r = 0;
3209         if (x == 0)
3210                 return 0;
3211 #ifdef PROT_EXEC
3212         if ((x & PROT_EXEC) == PROT_EXEC)
3213                 *r |= Mono_Posix_MmapProts_PROT_EXEC;
3214 #endif /* ndef PROT_EXEC */
3215 #ifdef PROT_GROWSDOWN
3216         if ((x & PROT_GROWSDOWN) == PROT_GROWSDOWN)
3217                 *r |= Mono_Posix_MmapProts_PROT_GROWSDOWN;
3218 #endif /* ndef PROT_GROWSDOWN */
3219 #ifdef PROT_GROWSUP
3220         if ((x & PROT_GROWSUP) == PROT_GROWSUP)
3221                 *r |= Mono_Posix_MmapProts_PROT_GROWSUP;
3222 #endif /* ndef PROT_GROWSUP */
3223 #ifdef PROT_NONE
3224         if ((x & PROT_NONE) == PROT_NONE)
3225                 *r |= Mono_Posix_MmapProts_PROT_NONE;
3226 #endif /* ndef PROT_NONE */
3227 #ifdef PROT_READ
3228         if ((x & PROT_READ) == PROT_READ)
3229                 *r |= Mono_Posix_MmapProts_PROT_READ;
3230 #endif /* ndef PROT_READ */
3231 #ifdef PROT_WRITE
3232         if ((x & PROT_WRITE) == PROT_WRITE)
3233                 *r |= Mono_Posix_MmapProts_PROT_WRITE;
3234 #endif /* ndef PROT_WRITE */
3235         return 0;
3236 }
3237
3238 int Mono_Posix_FromMountFlags (guint64 x, guint64 *r)
3239 {
3240         *r = 0;
3241         if ((x & Mono_Posix_MountFlags_ST_APPEND) == Mono_Posix_MountFlags_ST_APPEND)
3242 #ifdef ST_APPEND
3243                 *r |= ST_APPEND;
3244 #else /* def ST_APPEND */
3245                 {errno = EINVAL; return -1;}
3246 #endif /* ndef ST_APPEND */
3247         if ((x & Mono_Posix_MountFlags_ST_BIND) == Mono_Posix_MountFlags_ST_BIND)
3248 #ifdef ST_BIND
3249                 *r |= ST_BIND;
3250 #else /* def ST_BIND */
3251                 {errno = EINVAL; return -1;}
3252 #endif /* ndef ST_BIND */
3253         if ((x & Mono_Posix_MountFlags_ST_IMMUTABLE) == Mono_Posix_MountFlags_ST_IMMUTABLE)
3254 #ifdef ST_IMMUTABLE
3255                 *r |= ST_IMMUTABLE;
3256 #else /* def ST_IMMUTABLE */
3257                 {errno = EINVAL; return -1;}
3258 #endif /* ndef ST_IMMUTABLE */
3259         if ((x & Mono_Posix_MountFlags_ST_MANDLOCK) == Mono_Posix_MountFlags_ST_MANDLOCK)
3260 #ifdef ST_MANDLOCK
3261                 *r |= ST_MANDLOCK;
3262 #else /* def ST_MANDLOCK */
3263                 {errno = EINVAL; return -1;}
3264 #endif /* ndef ST_MANDLOCK */
3265         if ((x & Mono_Posix_MountFlags_ST_NOATIME) == Mono_Posix_MountFlags_ST_NOATIME)
3266 #ifdef ST_NOATIME
3267                 *r |= ST_NOATIME;
3268 #else /* def ST_NOATIME */
3269                 {errno = EINVAL; return -1;}
3270 #endif /* ndef ST_NOATIME */
3271         if ((x & Mono_Posix_MountFlags_ST_NODEV) == Mono_Posix_MountFlags_ST_NODEV)
3272 #ifdef ST_NODEV
3273                 *r |= ST_NODEV;
3274 #else /* def ST_NODEV */
3275                 {errno = EINVAL; return -1;}
3276 #endif /* ndef ST_NODEV */
3277         if ((x & Mono_Posix_MountFlags_ST_NODIRATIME) == Mono_Posix_MountFlags_ST_NODIRATIME)
3278 #ifdef ST_NODIRATIME
3279                 *r |= ST_NODIRATIME;
3280 #else /* def ST_NODIRATIME */
3281                 {errno = EINVAL; return -1;}
3282 #endif /* ndef ST_NODIRATIME */
3283         if ((x & Mono_Posix_MountFlags_ST_NOEXEC) == Mono_Posix_MountFlags_ST_NOEXEC)
3284 #ifdef ST_NOEXEC
3285                 *r |= ST_NOEXEC;
3286 #else /* def ST_NOEXEC */
3287                 {errno = EINVAL; return -1;}
3288 #endif /* ndef ST_NOEXEC */
3289         if ((x & Mono_Posix_MountFlags_ST_NOSUID) == Mono_Posix_MountFlags_ST_NOSUID)
3290 #ifdef ST_NOSUID
3291                 *r |= ST_NOSUID;
3292 #else /* def ST_NOSUID */
3293                 {errno = EINVAL; return -1;}
3294 #endif /* ndef ST_NOSUID */
3295         if ((x & Mono_Posix_MountFlags_ST_RDONLY) == Mono_Posix_MountFlags_ST_RDONLY)
3296 #ifdef ST_RDONLY
3297                 *r |= ST_RDONLY;
3298 #else /* def ST_RDONLY */
3299                 {errno = EINVAL; return -1;}
3300 #endif /* ndef ST_RDONLY */
3301         if ((x & Mono_Posix_MountFlags_ST_REMOUNT) == Mono_Posix_MountFlags_ST_REMOUNT)
3302 #ifdef ST_REMOUNT
3303                 *r |= ST_REMOUNT;
3304 #else /* def ST_REMOUNT */
3305                 {errno = EINVAL; return -1;}
3306 #endif /* ndef ST_REMOUNT */
3307         if ((x & Mono_Posix_MountFlags_ST_SYNCHRONOUS) == Mono_Posix_MountFlags_ST_SYNCHRONOUS)
3308 #ifdef ST_SYNCHRONOUS
3309                 *r |= ST_SYNCHRONOUS;
3310 #else /* def ST_SYNCHRONOUS */
3311                 {errno = EINVAL; return -1;}
3312 #endif /* ndef ST_SYNCHRONOUS */
3313         if ((x & Mono_Posix_MountFlags_ST_WRITE) == Mono_Posix_MountFlags_ST_WRITE)
3314 #ifdef ST_WRITE
3315                 *r |= ST_WRITE;
3316 #else /* def ST_WRITE */
3317                 {errno = EINVAL; return -1;}
3318 #endif /* ndef ST_WRITE */
3319         if (x == 0)
3320                 return 0;
3321         return 0;
3322 }
3323
3324 int Mono_Posix_ToMountFlags (guint64 x, guint64 *r)
3325 {
3326         *r = 0;
3327         if (x == 0)
3328                 return 0;
3329 #ifdef ST_APPEND
3330         if ((x & ST_APPEND) == ST_APPEND)
3331                 *r |= Mono_Posix_MountFlags_ST_APPEND;
3332 #endif /* ndef ST_APPEND */
3333 #ifdef ST_BIND
3334         if ((x & ST_BIND) == ST_BIND)
3335                 *r |= Mono_Posix_MountFlags_ST_BIND;
3336 #endif /* ndef ST_BIND */
3337 #ifdef ST_IMMUTABLE
3338         if ((x & ST_IMMUTABLE) == ST_IMMUTABLE)
3339                 *r |= Mono_Posix_MountFlags_ST_IMMUTABLE;
3340 #endif /* ndef ST_IMMUTABLE */
3341 #ifdef ST_MANDLOCK
3342         if ((x & ST_MANDLOCK) == ST_MANDLOCK)
3343                 *r |= Mono_Posix_MountFlags_ST_MANDLOCK;
3344 #endif /* ndef ST_MANDLOCK */
3345 #ifdef ST_NOATIME
3346         if ((x & ST_NOATIME) == ST_NOATIME)
3347                 *r |= Mono_Posix_MountFlags_ST_NOATIME;
3348 #endif /* ndef ST_NOATIME */
3349 #ifdef ST_NODEV
3350         if ((x & ST_NODEV) == ST_NODEV)
3351                 *r |= Mono_Posix_MountFlags_ST_NODEV;
3352 #endif /* ndef ST_NODEV */
3353 #ifdef ST_NODIRATIME
3354         if ((x & ST_NODIRATIME) == ST_NODIRATIME)
3355                 *r |= Mono_Posix_MountFlags_ST_NODIRATIME;
3356 #endif /* ndef ST_NODIRATIME */
3357 #ifdef ST_NOEXEC
3358         if ((x & ST_NOEXEC) == ST_NOEXEC)
3359                 *r |= Mono_Posix_MountFlags_ST_NOEXEC;
3360 #endif /* ndef ST_NOEXEC */
3361 #ifdef ST_NOSUID
3362         if ((x & ST_NOSUID) == ST_NOSUID)
3363                 *r |= Mono_Posix_MountFlags_ST_NOSUID;
3364 #endif /* ndef ST_NOSUID */
3365 #ifdef ST_RDONLY
3366         if ((x & ST_RDONLY) == ST_RDONLY)
3367                 *r |= Mono_Posix_MountFlags_ST_RDONLY;
3368 #endif /* ndef ST_RDONLY */
3369 #ifdef ST_REMOUNT
3370         if ((x & ST_REMOUNT) == ST_REMOUNT)
3371                 *r |= Mono_Posix_MountFlags_ST_REMOUNT;
3372 #endif /* ndef ST_REMOUNT */
3373 #ifdef ST_SYNCHRONOUS
3374         if ((x & ST_SYNCHRONOUS) == ST_SYNCHRONOUS)
3375                 *r |= Mono_Posix_MountFlags_ST_SYNCHRONOUS;
3376 #endif /* ndef ST_SYNCHRONOUS */
3377 #ifdef ST_WRITE
3378         if ((x & ST_WRITE) == ST_WRITE)
3379                 *r |= Mono_Posix_MountFlags_ST_WRITE;
3380 #endif /* ndef ST_WRITE */
3381         return 0;
3382 }
3383
3384 int Mono_Posix_FromMremapFlags (guint64 x, guint64 *r)
3385 {
3386         *r = 0;
3387         if ((x & Mono_Posix_MremapFlags_MREMAP_MAYMOVE) == Mono_Posix_MremapFlags_MREMAP_MAYMOVE)
3388 #ifdef MREMAP_MAYMOVE
3389                 *r |= MREMAP_MAYMOVE;
3390 #else /* def MREMAP_MAYMOVE */
3391                 {errno = EINVAL; return -1;}
3392 #endif /* ndef MREMAP_MAYMOVE */
3393         if (x == 0)
3394                 return 0;
3395         return 0;
3396 }
3397
3398 int Mono_Posix_ToMremapFlags (guint64 x, guint64 *r)
3399 {
3400         *r = 0;
3401         if (x == 0)
3402                 return 0;
3403 #ifdef MREMAP_MAYMOVE
3404         if ((x & MREMAP_MAYMOVE) == MREMAP_MAYMOVE)
3405                 *r |= Mono_Posix_MremapFlags_MREMAP_MAYMOVE;
3406 #endif /* ndef MREMAP_MAYMOVE */
3407         return 0;
3408 }
3409
3410 int Mono_Posix_FromMsyncFlags (int x, int *r)
3411 {
3412         *r = 0;
3413         if ((x & Mono_Posix_MsyncFlags_MS_ASYNC) == Mono_Posix_MsyncFlags_MS_ASYNC)
3414 #ifdef MS_ASYNC
3415                 *r |= MS_ASYNC;
3416 #else /* def MS_ASYNC */
3417                 {errno = EINVAL; return -1;}
3418 #endif /* ndef MS_ASYNC */
3419         if ((x & Mono_Posix_MsyncFlags_MS_INVALIDATE) == Mono_Posix_MsyncFlags_MS_INVALIDATE)
3420 #ifdef MS_INVALIDATE
3421                 *r |= MS_INVALIDATE;
3422 #else /* def MS_INVALIDATE */
3423                 {errno = EINVAL; return -1;}
3424 #endif /* ndef MS_INVALIDATE */
3425         if ((x & Mono_Posix_MsyncFlags_MS_SYNC) == Mono_Posix_MsyncFlags_MS_SYNC)
3426 #ifdef MS_SYNC
3427                 *r |= MS_SYNC;
3428 #else /* def MS_SYNC */
3429                 {errno = EINVAL; return -1;}
3430 #endif /* ndef MS_SYNC */
3431         if (x == 0)
3432                 return 0;
3433         return 0;
3434 }
3435
3436 int Mono_Posix_ToMsyncFlags (int x, int *r)
3437 {
3438         *r = 0;
3439         if (x == 0)
3440                 return 0;
3441 #ifdef MS_ASYNC
3442         if ((x & MS_ASYNC) == MS_ASYNC)
3443                 *r |= Mono_Posix_MsyncFlags_MS_ASYNC;
3444 #endif /* ndef MS_ASYNC */
3445 #ifdef MS_INVALIDATE
3446         if ((x & MS_INVALIDATE) == MS_INVALIDATE)
3447                 *r |= Mono_Posix_MsyncFlags_MS_INVALIDATE;
3448 #endif /* ndef MS_INVALIDATE */
3449 #ifdef MS_SYNC
3450         if ((x & MS_SYNC) == MS_SYNC)
3451                 *r |= Mono_Posix_MsyncFlags_MS_SYNC;
3452 #endif /* ndef MS_SYNC */
3453         return 0;
3454 }
3455
3456 int Mono_Posix_FromOpenFlags (int x, int *r)
3457 {
3458         *r = 0;
3459         if ((x & Mono_Posix_OpenFlags_O_APPEND) == Mono_Posix_OpenFlags_O_APPEND)
3460 #ifdef O_APPEND
3461                 *r |= O_APPEND;
3462 #else /* def O_APPEND */
3463                 {errno = EINVAL; return -1;}
3464 #endif /* ndef O_APPEND */
3465         if ((x & Mono_Posix_OpenFlags_O_ASYNC) == Mono_Posix_OpenFlags_O_ASYNC)
3466 #ifdef O_ASYNC
3467                 *r |= O_ASYNC;
3468 #else /* def O_ASYNC */
3469                 {errno = EINVAL; return -1;}
3470 #endif /* ndef O_ASYNC */
3471         if ((x & Mono_Posix_OpenFlags_O_CLOEXEC) == Mono_Posix_OpenFlags_O_CLOEXEC)
3472 #ifdef O_CLOEXEC
3473                 *r |= O_CLOEXEC;
3474 #else /* def O_CLOEXEC */
3475                 {errno = EINVAL; return -1;}
3476 #endif /* ndef O_CLOEXEC */
3477         if ((x & Mono_Posix_OpenFlags_O_CREAT) == Mono_Posix_OpenFlags_O_CREAT)
3478 #ifdef O_CREAT
3479                 *r |= O_CREAT;
3480 #else /* def O_CREAT */
3481                 {errno = EINVAL; return -1;}
3482 #endif /* ndef O_CREAT */
3483         if ((x & Mono_Posix_OpenFlags_O_DIRECT) == Mono_Posix_OpenFlags_O_DIRECT)
3484 #ifdef O_DIRECT
3485                 *r |= O_DIRECT;
3486 #else /* def O_DIRECT */
3487                 {errno = EINVAL; return -1;}
3488 #endif /* ndef O_DIRECT */
3489         if ((x & Mono_Posix_OpenFlags_O_DIRECTORY) == Mono_Posix_OpenFlags_O_DIRECTORY)
3490 #ifdef O_DIRECTORY
3491                 *r |= O_DIRECTORY;
3492 #else /* def O_DIRECTORY */
3493                 {errno = EINVAL; return -1;}
3494 #endif /* ndef O_DIRECTORY */
3495         if ((x & Mono_Posix_OpenFlags_O_EXCL) == Mono_Posix_OpenFlags_O_EXCL)
3496 #ifdef O_EXCL
3497                 *r |= O_EXCL;
3498 #else /* def O_EXCL */
3499                 {errno = EINVAL; return -1;}
3500 #endif /* ndef O_EXCL */
3501         if ((x & Mono_Posix_OpenFlags_O_LARGEFILE) == Mono_Posix_OpenFlags_O_LARGEFILE)
3502 #ifdef O_LARGEFILE
3503                 *r |= O_LARGEFILE;
3504 #else /* def O_LARGEFILE */
3505                 {errno = EINVAL; return -1;}
3506 #endif /* ndef O_LARGEFILE */
3507         if ((x & Mono_Posix_OpenFlags_O_NOCTTY) == Mono_Posix_OpenFlags_O_NOCTTY)
3508 #ifdef O_NOCTTY
3509                 *r |= O_NOCTTY;
3510 #else /* def O_NOCTTY */
3511                 {errno = EINVAL; return -1;}
3512 #endif /* ndef O_NOCTTY */
3513         if ((x & Mono_Posix_OpenFlags_O_NOFOLLOW) == Mono_Posix_OpenFlags_O_NOFOLLOW)
3514 #ifdef O_NOFOLLOW
3515                 *r |= O_NOFOLLOW;
3516 #else /* def O_NOFOLLOW */
3517                 {errno = EINVAL; return -1;}
3518 #endif /* ndef O_NOFOLLOW */
3519         if ((x & Mono_Posix_OpenFlags_O_NONBLOCK) == Mono_Posix_OpenFlags_O_NONBLOCK)
3520 #ifdef O_NONBLOCK
3521                 *r |= O_NONBLOCK;
3522 #else /* def O_NONBLOCK */
3523                 {errno = EINVAL; return -1;}
3524 #endif /* ndef O_NONBLOCK */
3525         if ((x & Mono_Posix_OpenFlags_O_PATH) == Mono_Posix_OpenFlags_O_PATH)
3526 #ifdef O_PATH
3527                 *r |= O_PATH;
3528 #else /* def O_PATH */
3529                 {errno = EINVAL; return -1;}
3530 #endif /* ndef O_PATH */
3531         if ((x & Mono_Posix_OpenFlags_O_RDONLY) == Mono_Posix_OpenFlags_O_RDONLY)
3532 #ifdef O_RDONLY
3533                 *r |= O_RDONLY;
3534 #else /* def O_RDONLY */
3535                 {errno = EINVAL; return -1;}
3536 #endif /* ndef O_RDONLY */
3537         if ((x & Mono_Posix_OpenFlags_O_RDWR) == Mono_Posix_OpenFlags_O_RDWR)
3538 #ifdef O_RDWR
3539                 *r |= O_RDWR;
3540 #else /* def O_RDWR */
3541                 {errno = EINVAL; return -1;}
3542 #endif /* ndef O_RDWR */
3543         if ((x & Mono_Posix_OpenFlags_O_SYNC) == Mono_Posix_OpenFlags_O_SYNC)
3544 #ifdef O_SYNC
3545                 *r |= O_SYNC;
3546 #else /* def O_SYNC */
3547                 {errno = EINVAL; return -1;}
3548 #endif /* ndef O_SYNC */
3549         if ((x & Mono_Posix_OpenFlags_O_TRUNC) == Mono_Posix_OpenFlags_O_TRUNC)
3550 #ifdef O_TRUNC
3551                 *r |= O_TRUNC;
3552 #else /* def O_TRUNC */
3553                 {errno = EINVAL; return -1;}
3554 #endif /* ndef O_TRUNC */
3555         if ((x & Mono_Posix_OpenFlags_O_WRONLY) == Mono_Posix_OpenFlags_O_WRONLY)
3556 #ifdef O_WRONLY
3557                 *r |= O_WRONLY;
3558 #else /* def O_WRONLY */
3559                 {errno = EINVAL; return -1;}
3560 #endif /* ndef O_WRONLY */
3561         if (x == 0)
3562                 return 0;
3563         return 0;
3564 }
3565
3566 int Mono_Posix_ToOpenFlags (int x, int *r)
3567 {
3568         *r = 0;
3569         if (x == 0)
3570                 return 0;
3571 #ifdef O_APPEND
3572         if ((x & O_APPEND) == O_APPEND)
3573                 *r |= Mono_Posix_OpenFlags_O_APPEND;
3574 #endif /* ndef O_APPEND */
3575 #ifdef O_ASYNC
3576         if ((x & O_ASYNC) == O_ASYNC)
3577                 *r |= Mono_Posix_OpenFlags_O_ASYNC;
3578 #endif /* ndef O_ASYNC */
3579 #ifdef O_CLOEXEC
3580         if ((x & O_CLOEXEC) == O_CLOEXEC)
3581                 *r |= Mono_Posix_OpenFlags_O_CLOEXEC;
3582 #endif /* ndef O_CLOEXEC */
3583 #ifdef O_CREAT
3584         if ((x & O_CREAT) == O_CREAT)
3585                 *r |= Mono_Posix_OpenFlags_O_CREAT;
3586 #endif /* ndef O_CREAT */
3587 #ifdef O_DIRECT
3588         if ((x & O_DIRECT) == O_DIRECT)
3589                 *r |= Mono_Posix_OpenFlags_O_DIRECT;
3590 #endif /* ndef O_DIRECT */
3591 #ifdef O_DIRECTORY
3592         if ((x & O_DIRECTORY) == O_DIRECTORY)
3593                 *r |= Mono_Posix_OpenFlags_O_DIRECTORY;
3594 #endif /* ndef O_DIRECTORY */
3595 #ifdef O_EXCL
3596         if ((x & O_EXCL) == O_EXCL)
3597                 *r |= Mono_Posix_OpenFlags_O_EXCL;
3598 #endif /* ndef O_EXCL */
3599 #ifdef O_LARGEFILE
3600         if ((x & O_LARGEFILE) == O_LARGEFILE)
3601                 *r |= Mono_Posix_OpenFlags_O_LARGEFILE;
3602 #endif /* ndef O_LARGEFILE */
3603 #ifdef O_NOCTTY
3604         if ((x & O_NOCTTY) == O_NOCTTY)
3605                 *r |= Mono_Posix_OpenFlags_O_NOCTTY;
3606 #endif /* ndef O_NOCTTY */
3607 #ifdef O_NOFOLLOW
3608         if ((x & O_NOFOLLOW) == O_NOFOLLOW)
3609                 *r |= Mono_Posix_OpenFlags_O_NOFOLLOW;
3610 #endif /* ndef O_NOFOLLOW */
3611 #ifdef O_NONBLOCK
3612         if ((x & O_NONBLOCK) == O_NONBLOCK)
3613                 *r |= Mono_Posix_OpenFlags_O_NONBLOCK;
3614 #endif /* ndef O_NONBLOCK */
3615 #ifdef O_PATH
3616         if ((x & O_PATH) == O_PATH)
3617                 *r |= Mono_Posix_OpenFlags_O_PATH;
3618 #endif /* ndef O_PATH */
3619 #ifdef O_RDONLY
3620         if ((x & O_RDONLY) == O_RDONLY)
3621                 *r |= Mono_Posix_OpenFlags_O_RDONLY;
3622 #endif /* ndef O_RDONLY */
3623 #ifdef O_RDWR
3624         if ((x & O_RDWR) == O_RDWR)
3625                 *r |= Mono_Posix_OpenFlags_O_RDWR;
3626 #endif /* ndef O_RDWR */
3627 #ifdef O_SYNC
3628         if ((x & O_SYNC) == O_SYNC)
3629                 *r |= Mono_Posix_OpenFlags_O_SYNC;
3630 #endif /* ndef O_SYNC */
3631 #ifdef O_TRUNC
3632         if ((x & O_TRUNC) == O_TRUNC)
3633                 *r |= Mono_Posix_OpenFlags_O_TRUNC;
3634 #endif /* ndef O_TRUNC */
3635 #ifdef O_WRONLY
3636         if ((x & O_WRONLY) == O_WRONLY)
3637                 *r |= Mono_Posix_OpenFlags_O_WRONLY;
3638 #endif /* ndef O_WRONLY */
3639         return 0;
3640 }
3641
3642 int Mono_Posix_FromPathconfName (int x, int *r)
3643 {
3644         *r = 0;
3645         if (x == Mono_Posix_PathconfName__PC_2_SYMLINKS)
3646 #ifdef _PC_2_SYMLINKS
3647                 {*r = _PC_2_SYMLINKS; return 0;}
3648 #else /* def _PC_2_SYMLINKS */
3649                 {errno = EINVAL; return -1;}
3650 #endif /* ndef _PC_2_SYMLINKS */
3651         if (x == Mono_Posix_PathconfName__PC_ALLOC_SIZE_MIN)
3652 #ifdef _PC_ALLOC_SIZE_MIN
3653                 {*r = _PC_ALLOC_SIZE_MIN; return 0;}
3654 #else /* def _PC_ALLOC_SIZE_MIN */
3655                 {errno = EINVAL; return -1;}
3656 #endif /* ndef _PC_ALLOC_SIZE_MIN */
3657         if (x == Mono_Posix_PathconfName__PC_ASYNC_IO)
3658 #ifdef _PC_ASYNC_IO
3659                 {*r = _PC_ASYNC_IO; return 0;}
3660 #else /* def _PC_ASYNC_IO */
3661                 {errno = EINVAL; return -1;}
3662 #endif /* ndef _PC_ASYNC_IO */
3663         if (x == Mono_Posix_PathconfName__PC_CHOWN_RESTRICTED)
3664 #ifdef _PC_CHOWN_RESTRICTED
3665                 {*r = _PC_CHOWN_RESTRICTED; return 0;}
3666 #else /* def _PC_CHOWN_RESTRICTED */
3667                 {errno = EINVAL; return -1;}
3668 #endif /* ndef _PC_CHOWN_RESTRICTED */
3669         if (x == Mono_Posix_PathconfName__PC_FILESIZEBITS)
3670 #ifdef _PC_FILESIZEBITS
3671                 {*r = _PC_FILESIZEBITS; return 0;}
3672 #else /* def _PC_FILESIZEBITS */
3673                 {errno = EINVAL; return -1;}
3674 #endif /* ndef _PC_FILESIZEBITS */
3675         if (x == Mono_Posix_PathconfName__PC_LINK_MAX)
3676 #ifdef _PC_LINK_MAX
3677                 {*r = _PC_LINK_MAX; return 0;}
3678 #else /* def _PC_LINK_MAX */
3679                 {errno = EINVAL; return -1;}
3680 #endif /* ndef _PC_LINK_MAX */
3681         if (x == Mono_Posix_PathconfName__PC_MAX_CANON)
3682 #ifdef _PC_MAX_CANON
3683                 {*r = _PC_MAX_CANON; return 0;}
3684 #else /* def _PC_MAX_CANON */
3685                 {errno = EINVAL; return -1;}
3686 #endif /* ndef _PC_MAX_CANON */
3687         if (x == Mono_Posix_PathconfName__PC_MAX_INPUT)
3688 #ifdef _PC_MAX_INPUT
3689                 {*r = _PC_MAX_INPUT; return 0;}
3690 #else /* def _PC_MAX_INPUT */
3691                 {errno = EINVAL; return -1;}
3692 #endif /* ndef _PC_MAX_INPUT */
3693         if (x == Mono_Posix_PathconfName__PC_NAME_MAX)
3694 #ifdef _PC_NAME_MAX
3695                 {*r = _PC_NAME_MAX; return 0;}
3696 #else /* def _PC_NAME_MAX */
3697                 {errno = EINVAL; return -1;}
3698 #endif /* ndef _PC_NAME_MAX */
3699         if (x == Mono_Posix_PathconfName__PC_NO_TRUNC)
3700 #ifdef _PC_NO_TRUNC
3701                 {*r = _PC_NO_TRUNC; return 0;}
3702 #else /* def _PC_NO_TRUNC */
3703                 {errno = EINVAL; return -1;}
3704 #endif /* ndef _PC_NO_TRUNC */
3705         if (x == Mono_Posix_PathconfName__PC_PATH_MAX)
3706 #ifdef _PC_PATH_MAX
3707                 {*r = _PC_PATH_MAX; return 0;}
3708 #else /* def _PC_PATH_MAX */
3709                 {errno = EINVAL; return -1;}
3710 #endif /* ndef _PC_PATH_MAX */
3711         if (x == Mono_Posix_PathconfName__PC_PIPE_BUF)
3712 #ifdef _PC_PIPE_BUF
3713                 {*r = _PC_PIPE_BUF; return 0;}
3714 #else /* def _PC_PIPE_BUF */
3715                 {errno = EINVAL; return -1;}
3716 #endif /* ndef _PC_PIPE_BUF */
3717         if (x == Mono_Posix_PathconfName__PC_PRIO_IO)
3718 #ifdef _PC_PRIO_IO
3719                 {*r = _PC_PRIO_IO; return 0;}
3720 #else /* def _PC_PRIO_IO */
3721                 {errno = EINVAL; return -1;}
3722 #endif /* ndef _PC_PRIO_IO */
3723         if (x == Mono_Posix_PathconfName__PC_REC_INCR_XFER_SIZE)
3724 #ifdef _PC_REC_INCR_XFER_SIZE
3725                 {*r = _PC_REC_INCR_XFER_SIZE; return 0;}
3726 #else /* def _PC_REC_INCR_XFER_SIZE */
3727                 {errno = EINVAL; return -1;}
3728 #endif /* ndef _PC_REC_INCR_XFER_SIZE */
3729         if (x == Mono_Posix_PathconfName__PC_REC_MAX_XFER_SIZE)
3730 #ifdef _PC_REC_MAX_XFER_SIZE
3731                 {*r = _PC_REC_MAX_XFER_SIZE; return 0;}
3732 #else /* def _PC_REC_MAX_XFER_SIZE */
3733                 {errno = EINVAL; return -1;}
3734 #endif /* ndef _PC_REC_MAX_XFER_SIZE */
3735         if (x == Mono_Posix_PathconfName__PC_REC_MIN_XFER_SIZE)
3736 #ifdef _PC_REC_MIN_XFER_SIZE
3737                 {*r = _PC_REC_MIN_XFER_SIZE; return 0;}
3738 #else /* def _PC_REC_MIN_XFER_SIZE */
3739                 {errno = EINVAL; return -1;}
3740 #endif /* ndef _PC_REC_MIN_XFER_SIZE */
3741         if (x == Mono_Posix_PathconfName__PC_REC_XFER_ALIGN)
3742 #ifdef _PC_REC_XFER_ALIGN
3743                 {*r = _PC_REC_XFER_ALIGN; return 0;}
3744 #else /* def _PC_REC_XFER_ALIGN */
3745                 {errno = EINVAL; return -1;}
3746 #endif /* ndef _PC_REC_XFER_ALIGN */
3747         if (x == Mono_Posix_PathconfName__PC_SOCK_MAXBUF)
3748 #ifdef _PC_SOCK_MAXBUF
3749                 {*r = _PC_SOCK_MAXBUF; return 0;}
3750 #else /* def _PC_SOCK_MAXBUF */
3751                 {errno = EINVAL; return -1;}
3752 #endif /* ndef _PC_SOCK_MAXBUF */
3753         if (x == Mono_Posix_PathconfName__PC_SYMLINK_MAX)
3754 #ifdef _PC_SYMLINK_MAX
3755                 {*r = _PC_SYMLINK_MAX; return 0;}
3756 #else /* def _PC_SYMLINK_MAX */
3757                 {errno = EINVAL; return -1;}
3758 #endif /* ndef _PC_SYMLINK_MAX */
3759         if (x == Mono_Posix_PathconfName__PC_SYNC_IO)
3760 #ifdef _PC_SYNC_IO
3761                 {*r = _PC_SYNC_IO; return 0;}
3762 #else /* def _PC_SYNC_IO */
3763                 {errno = EINVAL; return -1;}
3764 #endif /* ndef _PC_SYNC_IO */
3765         if (x == Mono_Posix_PathconfName__PC_VDISABLE)
3766 #ifdef _PC_VDISABLE
3767                 {*r = _PC_VDISABLE; return 0;}
3768 #else /* def _PC_VDISABLE */
3769                 {errno = EINVAL; return -1;}
3770 #endif /* ndef _PC_VDISABLE */
3771         if (x == 0)
3772                 return 0;
3773         errno = EINVAL; return -1;
3774 }
3775
3776 int Mono_Posix_ToPathconfName (int x, int *r)
3777 {
3778         *r = 0;
3779         if (x == 0)
3780                 return 0;
3781 #ifdef _PC_2_SYMLINKS
3782         if (x == _PC_2_SYMLINKS)
3783                 {*r = Mono_Posix_PathconfName__PC_2_SYMLINKS; return 0;}
3784 #endif /* ndef _PC_2_SYMLINKS */
3785 #ifdef _PC_ALLOC_SIZE_MIN
3786         if (x == _PC_ALLOC_SIZE_MIN)
3787                 {*r = Mono_Posix_PathconfName__PC_ALLOC_SIZE_MIN; return 0;}
3788 #endif /* ndef _PC_ALLOC_SIZE_MIN */
3789 #ifdef _PC_ASYNC_IO
3790         if (x == _PC_ASYNC_IO)
3791                 {*r = Mono_Posix_PathconfName__PC_ASYNC_IO; return 0;}
3792 #endif /* ndef _PC_ASYNC_IO */
3793 #ifdef _PC_CHOWN_RESTRICTED
3794         if (x == _PC_CHOWN_RESTRICTED)
3795                 {*r = Mono_Posix_PathconfName__PC_CHOWN_RESTRICTED; return 0;}
3796 #endif /* ndef _PC_CHOWN_RESTRICTED */
3797 #ifdef _PC_FILESIZEBITS
3798         if (x == _PC_FILESIZEBITS)
3799                 {*r = Mono_Posix_PathconfName__PC_FILESIZEBITS; return 0;}
3800 #endif /* ndef _PC_FILESIZEBITS */
3801 #ifdef _PC_LINK_MAX
3802         if (x == _PC_LINK_MAX)
3803                 {*r = Mono_Posix_PathconfName__PC_LINK_MAX; return 0;}
3804 #endif /* ndef _PC_LINK_MAX */
3805 #ifdef _PC_MAX_CANON
3806         if (x == _PC_MAX_CANON)
3807                 {*r = Mono_Posix_PathconfName__PC_MAX_CANON; return 0;}
3808 #endif /* ndef _PC_MAX_CANON */
3809 #ifdef _PC_MAX_INPUT
3810         if (x == _PC_MAX_INPUT)
3811                 {*r = Mono_Posix_PathconfName__PC_MAX_INPUT; return 0;}
3812 #endif /* ndef _PC_MAX_INPUT */
3813 #ifdef _PC_NAME_MAX
3814         if (x == _PC_NAME_MAX)
3815                 {*r = Mono_Posix_PathconfName__PC_NAME_MAX; return 0;}
3816 #endif /* ndef _PC_NAME_MAX */
3817 #ifdef _PC_NO_TRUNC
3818         if (x == _PC_NO_TRUNC)
3819                 {*r = Mono_Posix_PathconfName__PC_NO_TRUNC; return 0;}
3820 #endif /* ndef _PC_NO_TRUNC */
3821 #ifdef _PC_PATH_MAX
3822         if (x == _PC_PATH_MAX)
3823                 {*r = Mono_Posix_PathconfName__PC_PATH_MAX; return 0;}
3824 #endif /* ndef _PC_PATH_MAX */
3825 #ifdef _PC_PIPE_BUF
3826         if (x == _PC_PIPE_BUF)
3827                 {*r = Mono_Posix_PathconfName__PC_PIPE_BUF; return 0;}
3828 #endif /* ndef _PC_PIPE_BUF */
3829 #ifdef _PC_PRIO_IO
3830         if (x == _PC_PRIO_IO)
3831                 {*r = Mono_Posix_PathconfName__PC_PRIO_IO; return 0;}
3832 #endif /* ndef _PC_PRIO_IO */
3833 #ifdef _PC_REC_INCR_XFER_SIZE
3834         if (x == _PC_REC_INCR_XFER_SIZE)
3835                 {*r = Mono_Posix_PathconfName__PC_REC_INCR_XFER_SIZE; return 0;}
3836 #endif /* ndef _PC_REC_INCR_XFER_SIZE */
3837 #ifdef _PC_REC_MAX_XFER_SIZE
3838         if (x == _PC_REC_MAX_XFER_SIZE)
3839                 {*r = Mono_Posix_PathconfName__PC_REC_MAX_XFER_SIZE; return 0;}
3840 #endif /* ndef _PC_REC_MAX_XFER_SIZE */
3841 #ifdef _PC_REC_MIN_XFER_SIZE
3842         if (x == _PC_REC_MIN_XFER_SIZE)
3843                 {*r = Mono_Posix_PathconfName__PC_REC_MIN_XFER_SIZE; return 0;}
3844 #endif /* ndef _PC_REC_MIN_XFER_SIZE */
3845 #ifdef _PC_REC_XFER_ALIGN
3846         if (x == _PC_REC_XFER_ALIGN)
3847                 {*r = Mono_Posix_PathconfName__PC_REC_XFER_ALIGN; return 0;}
3848 #endif /* ndef _PC_REC_XFER_ALIGN */
3849 #ifdef _PC_SOCK_MAXBUF
3850         if (x == _PC_SOCK_MAXBUF)
3851                 {*r = Mono_Posix_PathconfName__PC_SOCK_MAXBUF; return 0;}
3852 #endif /* ndef _PC_SOCK_MAXBUF */
3853 #ifdef _PC_SYMLINK_MAX
3854         if (x == _PC_SYMLINK_MAX)
3855                 {*r = Mono_Posix_PathconfName__PC_SYMLINK_MAX; return 0;}
3856 #endif /* ndef _PC_SYMLINK_MAX */
3857 #ifdef _PC_SYNC_IO
3858         if (x == _PC_SYNC_IO)
3859                 {*r = Mono_Posix_PathconfName__PC_SYNC_IO; return 0;}
3860 #endif /* ndef _PC_SYNC_IO */
3861 #ifdef _PC_VDISABLE
3862         if (x == _PC_VDISABLE)
3863                 {*r = Mono_Posix_PathconfName__PC_VDISABLE; return 0;}
3864 #endif /* ndef _PC_VDISABLE */
3865         errno = EINVAL; return -1;
3866 }
3867
3868 int Mono_Posix_FromPollEvents (short x, short *r)
3869 {
3870         *r = 0;
3871         if ((x & Mono_Posix_PollEvents_POLLERR) == Mono_Posix_PollEvents_POLLERR)
3872 #ifdef POLLERR
3873                 *r |= POLLERR;
3874 #else /* def POLLERR */
3875                 {errno = EINVAL; return -1;}
3876 #endif /* ndef POLLERR */
3877         if ((x & Mono_Posix_PollEvents_POLLHUP) == Mono_Posix_PollEvents_POLLHUP)
3878 #ifdef POLLHUP
3879                 *r |= POLLHUP;
3880 #else /* def POLLHUP */
3881                 {errno = EINVAL; return -1;}
3882 #endif /* ndef POLLHUP */
3883         if ((x & Mono_Posix_PollEvents_POLLIN) == Mono_Posix_PollEvents_POLLIN)
3884 #ifdef POLLIN
3885                 *r |= POLLIN;
3886 #else /* def POLLIN */
3887                 {errno = EINVAL; return -1;}
3888 #endif /* ndef POLLIN */
3889         if ((x & Mono_Posix_PollEvents_POLLNVAL) == Mono_Posix_PollEvents_POLLNVAL)
3890 #ifdef POLLNVAL
3891                 *r |= POLLNVAL;
3892 #else /* def POLLNVAL */
3893                 {errno = EINVAL; return -1;}
3894 #endif /* ndef POLLNVAL */
3895         if ((x & Mono_Posix_PollEvents_POLLOUT) == Mono_Posix_PollEvents_POLLOUT)
3896 #ifdef POLLOUT
3897                 *r |= POLLOUT;
3898 #else /* def POLLOUT */
3899                 {errno = EINVAL; return -1;}
3900 #endif /* ndef POLLOUT */
3901         if ((x & Mono_Posix_PollEvents_POLLPRI) == Mono_Posix_PollEvents_POLLPRI)
3902 #ifdef POLLPRI
3903                 *r |= POLLPRI;
3904 #else /* def POLLPRI */
3905                 {errno = EINVAL; return -1;}
3906 #endif /* ndef POLLPRI */
3907         if ((x & Mono_Posix_PollEvents_POLLRDBAND) == Mono_Posix_PollEvents_POLLRDBAND)
3908 #ifdef POLLRDBAND
3909                 *r |= POLLRDBAND;
3910 #else /* def POLLRDBAND */
3911                 {errno = EINVAL; return -1;}
3912 #endif /* ndef POLLRDBAND */
3913         if ((x & Mono_Posix_PollEvents_POLLRDNORM) == Mono_Posix_PollEvents_POLLRDNORM)
3914 #ifdef POLLRDNORM
3915                 *r |= POLLRDNORM;
3916 #else /* def POLLRDNORM */
3917                 {errno = EINVAL; return -1;}
3918 #endif /* ndef POLLRDNORM */
3919         if ((x & Mono_Posix_PollEvents_POLLWRBAND) == Mono_Posix_PollEvents_POLLWRBAND)
3920 #ifdef POLLWRBAND
3921                 *r |= POLLWRBAND;
3922 #else /* def POLLWRBAND */
3923                 {errno = EINVAL; return -1;}
3924 #endif /* ndef POLLWRBAND */
3925         if ((x & Mono_Posix_PollEvents_POLLWRNORM) == Mono_Posix_PollEvents_POLLWRNORM)
3926 #ifdef POLLWRNORM
3927                 *r |= POLLWRNORM;
3928 #else /* def POLLWRNORM */
3929                 {errno = EINVAL; return -1;}
3930 #endif /* ndef POLLWRNORM */
3931         if (x == 0)
3932                 return 0;
3933         return 0;
3934 }
3935
3936 int Mono_Posix_ToPollEvents (short x, short *r)
3937 {
3938         *r = 0;
3939         if (x == 0)
3940                 return 0;
3941 #ifdef POLLERR
3942         if ((x & POLLERR) == POLLERR)
3943                 *r |= Mono_Posix_PollEvents_POLLERR;
3944 #endif /* ndef POLLERR */
3945 #ifdef POLLHUP
3946         if ((x & POLLHUP) == POLLHUP)
3947                 *r |= Mono_Posix_PollEvents_POLLHUP;
3948 #endif /* ndef POLLHUP */
3949 #ifdef POLLIN
3950         if ((x & POLLIN) == POLLIN)
3951                 *r |= Mono_Posix_PollEvents_POLLIN;
3952 #endif /* ndef POLLIN */
3953 #ifdef POLLNVAL
3954         if ((x & POLLNVAL) == POLLNVAL)
3955                 *r |= Mono_Posix_PollEvents_POLLNVAL;
3956 #endif /* ndef POLLNVAL */
3957 #ifdef POLLOUT
3958         if ((x & POLLOUT) == POLLOUT)
3959                 *r |= Mono_Posix_PollEvents_POLLOUT;
3960 #endif /* ndef POLLOUT */
3961 #ifdef POLLPRI
3962         if ((x & POLLPRI) == POLLPRI)
3963                 *r |= Mono_Posix_PollEvents_POLLPRI;
3964 #endif /* ndef POLLPRI */
3965 #ifdef POLLRDBAND
3966         if ((x & POLLRDBAND) == POLLRDBAND)
3967                 *r |= Mono_Posix_PollEvents_POLLRDBAND;
3968 #endif /* ndef POLLRDBAND */
3969 #ifdef POLLRDNORM
3970         if ((x & POLLRDNORM) == POLLRDNORM)
3971                 *r |= Mono_Posix_PollEvents_POLLRDNORM;
3972 #endif /* ndef POLLRDNORM */
3973 #ifdef POLLWRBAND
3974         if ((x & POLLWRBAND) == POLLWRBAND)
3975                 *r |= Mono_Posix_PollEvents_POLLWRBAND;
3976 #endif /* ndef POLLWRBAND */
3977 #ifdef POLLWRNORM
3978         if ((x & POLLWRNORM) == POLLWRNORM)
3979                 *r |= Mono_Posix_PollEvents_POLLWRNORM;
3980 #endif /* ndef POLLWRNORM */
3981         return 0;
3982 }
3983
3984 #ifdef HAVE_STRUCT_POLLFD
3985 int
3986 Mono_Posix_FromPollfd (struct Mono_Posix_Pollfd *from, struct pollfd *to)
3987 {
3988         _cnm_return_val_if_overflow (int, from->fd, -1);
3989
3990         memset (to, 0, sizeof(*to));
3991
3992         to->fd      = from->fd;
3993         if (Mono_Posix_FromPollEvents (from->events, &to->events) != 0) {
3994                 return -1;
3995         }
3996         if (Mono_Posix_FromPollEvents (from->revents, &to->revents) != 0) {
3997                 return -1;
3998         }
3999
4000         return 0;
4001 }
4002 #endif /* ndef HAVE_STRUCT_POLLFD */
4003
4004
4005 #ifdef HAVE_STRUCT_POLLFD
4006 int
4007 Mono_Posix_ToPollfd (struct pollfd *from, struct Mono_Posix_Pollfd *to)
4008 {
4009         _cnm_return_val_if_overflow (int, from->fd, -1);
4010
4011         memset (to, 0, sizeof(*to));
4012
4013         to->fd      = from->fd;
4014         if (Mono_Posix_ToPollEvents (from->events, &to->events) != 0) {
4015                 return -1;
4016         }
4017         if (Mono_Posix_ToPollEvents (from->revents, &to->revents) != 0) {
4018                 return -1;
4019         }
4020
4021         return 0;
4022 }
4023 #endif /* ndef HAVE_STRUCT_POLLFD */
4024
4025
4026 int Mono_Posix_FromPosixFadviseAdvice (int x, int *r)
4027 {
4028         *r = 0;
4029         if (x == Mono_Posix_PosixFadviseAdvice_POSIX_FADV_DONTNEED)
4030 #ifdef POSIX_FADV_DONTNEED
4031                 {*r = POSIX_FADV_DONTNEED; return 0;}
4032 #else /* def POSIX_FADV_DONTNEED */
4033                 {errno = EINVAL; return -1;}
4034 #endif /* ndef POSIX_FADV_DONTNEED */
4035         if (x == Mono_Posix_PosixFadviseAdvice_POSIX_FADV_NOREUSE)
4036 #ifdef POSIX_FADV_NOREUSE
4037                 {*r = POSIX_FADV_NOREUSE; return 0;}
4038 #else /* def POSIX_FADV_NOREUSE */
4039                 {errno = EINVAL; return -1;}
4040 #endif /* ndef POSIX_FADV_NOREUSE */
4041         if (x == Mono_Posix_PosixFadviseAdvice_POSIX_FADV_NORMAL)
4042 #ifdef POSIX_FADV_NORMAL
4043                 {*r = POSIX_FADV_NORMAL; return 0;}
4044 #else /* def POSIX_FADV_NORMAL */
4045                 {errno = EINVAL; return -1;}
4046 #endif /* ndef POSIX_FADV_NORMAL */
4047         if (x == Mono_Posix_PosixFadviseAdvice_POSIX_FADV_RANDOM)
4048 #ifdef POSIX_FADV_RANDOM
4049                 {*r = POSIX_FADV_RANDOM; return 0;}
4050 #else /* def POSIX_FADV_RANDOM */
4051                 {errno = EINVAL; return -1;}
4052 #endif /* ndef POSIX_FADV_RANDOM */
4053         if (x == Mono_Posix_PosixFadviseAdvice_POSIX_FADV_SEQUENTIAL)
4054 #ifdef POSIX_FADV_SEQUENTIAL
4055                 {*r = POSIX_FADV_SEQUENTIAL; return 0;}
4056 #else /* def POSIX_FADV_SEQUENTIAL */
4057                 {errno = EINVAL; return -1;}
4058 #endif /* ndef POSIX_FADV_SEQUENTIAL */
4059         if (x == Mono_Posix_PosixFadviseAdvice_POSIX_FADV_WILLNEED)
4060 #ifdef POSIX_FADV_WILLNEED
4061                 {*r = POSIX_FADV_WILLNEED; return 0;}
4062 #else /* def POSIX_FADV_WILLNEED */
4063                 {errno = EINVAL; return -1;}
4064 #endif /* ndef POSIX_FADV_WILLNEED */
4065         if (x == 0)
4066                 return 0;
4067         errno = EINVAL; return -1;
4068 }
4069
4070 int Mono_Posix_ToPosixFadviseAdvice (int x, int *r)
4071 {
4072         *r = 0;
4073         if (x == 0)
4074                 return 0;
4075 #ifdef POSIX_FADV_DONTNEED
4076         if (x == POSIX_FADV_DONTNEED)
4077                 {*r = Mono_Posix_PosixFadviseAdvice_POSIX_FADV_DONTNEED; return 0;}
4078 #endif /* ndef POSIX_FADV_DONTNEED */
4079 #ifdef POSIX_FADV_NOREUSE
4080         if (x == POSIX_FADV_NOREUSE)
4081                 {*r = Mono_Posix_PosixFadviseAdvice_POSIX_FADV_NOREUSE; return 0;}
4082 #endif /* ndef POSIX_FADV_NOREUSE */
4083 #ifdef POSIX_FADV_NORMAL
4084         if (x == POSIX_FADV_NORMAL)
4085                 {*r = Mono_Posix_PosixFadviseAdvice_POSIX_FADV_NORMAL; return 0;}
4086 #endif /* ndef POSIX_FADV_NORMAL */
4087 #ifdef POSIX_FADV_RANDOM
4088         if (x == POSIX_FADV_RANDOM)
4089                 {*r = Mono_Posix_PosixFadviseAdvice_POSIX_FADV_RANDOM; return 0;}
4090 #endif /* ndef POSIX_FADV_RANDOM */
4091 #ifdef POSIX_FADV_SEQUENTIAL
4092         if (x == POSIX_FADV_SEQUENTIAL)
4093                 {*r = Mono_Posix_PosixFadviseAdvice_POSIX_FADV_SEQUENTIAL; return 0;}
4094 #endif /* ndef POSIX_FADV_SEQUENTIAL */
4095 #ifdef POSIX_FADV_WILLNEED
4096         if (x == POSIX_FADV_WILLNEED)
4097                 {*r = Mono_Posix_PosixFadviseAdvice_POSIX_FADV_WILLNEED; return 0;}
4098 #endif /* ndef POSIX_FADV_WILLNEED */
4099         errno = EINVAL; return -1;
4100 }
4101
4102 int Mono_Posix_FromPosixMadviseAdvice (int x, int *r)
4103 {
4104         *r = 0;
4105         if (x == Mono_Posix_PosixMadviseAdvice_POSIX_MADV_DONTNEED)
4106 #ifdef POSIX_MADV_DONTNEED
4107                 {*r = POSIX_MADV_DONTNEED; return 0;}
4108 #else /* def POSIX_MADV_DONTNEED */
4109                 {errno = EINVAL; return -1;}
4110 #endif /* ndef POSIX_MADV_DONTNEED */
4111         if (x == Mono_Posix_PosixMadviseAdvice_POSIX_MADV_NORMAL)
4112 #ifdef POSIX_MADV_NORMAL
4113                 {*r = POSIX_MADV_NORMAL; return 0;}
4114 #else /* def POSIX_MADV_NORMAL */
4115                 {errno = EINVAL; return -1;}
4116 #endif /* ndef POSIX_MADV_NORMAL */
4117         if (x == Mono_Posix_PosixMadviseAdvice_POSIX_MADV_RANDOM)
4118 #ifdef POSIX_MADV_RANDOM
4119                 {*r = POSIX_MADV_RANDOM; return 0;}
4120 #else /* def POSIX_MADV_RANDOM */
4121                 {errno = EINVAL; return -1;}
4122 #endif /* ndef POSIX_MADV_RANDOM */
4123         if (x == Mono_Posix_PosixMadviseAdvice_POSIX_MADV_SEQUENTIAL)
4124 #ifdef POSIX_MADV_SEQUENTIAL
4125                 {*r = POSIX_MADV_SEQUENTIAL; return 0;}
4126 #else /* def POSIX_MADV_SEQUENTIAL */
4127                 {errno = EINVAL; return -1;}
4128 #endif /* ndef POSIX_MADV_SEQUENTIAL */
4129         if (x == Mono_Posix_PosixMadviseAdvice_POSIX_MADV_WILLNEED)
4130 #ifdef POSIX_MADV_WILLNEED
4131                 {*r = POSIX_MADV_WILLNEED; return 0;}
4132 #else /* def POSIX_MADV_WILLNEED */
4133                 {errno = EINVAL; return -1;}
4134 #endif /* ndef POSIX_MADV_WILLNEED */
4135         if (x == 0)
4136                 return 0;
4137         errno = EINVAL; return -1;
4138 }
4139
4140 int Mono_Posix_ToPosixMadviseAdvice (int x, int *r)
4141 {
4142         *r = 0;
4143         if (x == 0)
4144                 return 0;
4145 #ifdef POSIX_MADV_DONTNEED
4146         if (x == POSIX_MADV_DONTNEED)
4147                 {*r = Mono_Posix_PosixMadviseAdvice_POSIX_MADV_DONTNEED; return 0;}
4148 #endif /* ndef POSIX_MADV_DONTNEED */
4149 #ifdef POSIX_MADV_NORMAL
4150         if (x == POSIX_MADV_NORMAL)
4151                 {*r = Mono_Posix_PosixMadviseAdvice_POSIX_MADV_NORMAL; return 0;}
4152 #endif /* ndef POSIX_MADV_NORMAL */
4153 #ifdef POSIX_MADV_RANDOM
4154         if (x == POSIX_MADV_RANDOM)
4155                 {*r = Mono_Posix_PosixMadviseAdvice_POSIX_MADV_RANDOM; return 0;}
4156 #endif /* ndef POSIX_MADV_RANDOM */
4157 #ifdef POSIX_MADV_SEQUENTIAL
4158         if (x == POSIX_MADV_SEQUENTIAL)
4159                 {*r = Mono_Posix_PosixMadviseAdvice_POSIX_MADV_SEQUENTIAL; return 0;}
4160 #endif /* ndef POSIX_MADV_SEQUENTIAL */
4161 #ifdef POSIX_MADV_WILLNEED
4162         if (x == POSIX_MADV_WILLNEED)
4163                 {*r = Mono_Posix_PosixMadviseAdvice_POSIX_MADV_WILLNEED; return 0;}
4164 #endif /* ndef POSIX_MADV_WILLNEED */
4165         errno = EINVAL; return -1;
4166 }
4167
4168 int Mono_Posix_FromSeekFlags (short x, short *r)
4169 {
4170         *r = 0;
4171         if (x == Mono_Posix_SeekFlags_L_INCR)
4172 #ifdef L_INCR
4173                 {*r = L_INCR; return 0;}
4174 #else /* def L_INCR */
4175                 {errno = EINVAL; return -1;}
4176 #endif /* ndef L_INCR */
4177         if (x == Mono_Posix_SeekFlags_L_SET)
4178 #ifdef L_SET
4179                 {*r = L_SET; return 0;}
4180 #else /* def L_SET */
4181                 {errno = EINVAL; return -1;}
4182 #endif /* ndef L_SET */
4183         if (x == Mono_Posix_SeekFlags_L_XTND)
4184 #ifdef L_XTND
4185                 {*r = L_XTND; return 0;}
4186 #else /* def L_XTND */
4187                 {errno = EINVAL; return -1;}
4188 #endif /* ndef L_XTND */
4189         if (x == Mono_Posix_SeekFlags_SEEK_CUR)
4190 #ifdef SEEK_CUR
4191                 {*r = SEEK_CUR; return 0;}
4192 #else /* def SEEK_CUR */
4193                 {errno = EINVAL; return -1;}
4194 #endif /* ndef SEEK_CUR */
4195         if (x == Mono_Posix_SeekFlags_SEEK_END)
4196 #ifdef SEEK_END
4197                 {*r = SEEK_END; return 0;}
4198 #else /* def SEEK_END */
4199                 {errno = EINVAL; return -1;}
4200 #endif /* ndef SEEK_END */
4201         if (x == Mono_Posix_SeekFlags_SEEK_SET)
4202 #ifdef SEEK_SET
4203                 {*r = SEEK_SET; return 0;}
4204 #else /* def SEEK_SET */
4205                 {errno = EINVAL; return -1;}
4206 #endif /* ndef SEEK_SET */
4207         if (x == 0)
4208                 return 0;
4209         errno = EINVAL; return -1;
4210 }
4211
4212 int Mono_Posix_ToSeekFlags (short x, short *r)
4213 {
4214         *r = 0;
4215         if (x == 0)
4216                 return 0;
4217 #ifdef L_INCR
4218         if (x == L_INCR)
4219                 {*r = Mono_Posix_SeekFlags_L_INCR; return 0;}
4220 #endif /* ndef L_INCR */
4221 #ifdef L_SET
4222         if (x == L_SET)
4223                 {*r = Mono_Posix_SeekFlags_L_SET; return 0;}
4224 #endif /* ndef L_SET */
4225 #ifdef L_XTND
4226         if (x == L_XTND)
4227                 {*r = Mono_Posix_SeekFlags_L_XTND; return 0;}
4228 #endif /* ndef L_XTND */
4229 #ifdef SEEK_CUR
4230         if (x == SEEK_CUR)
4231                 {*r = Mono_Posix_SeekFlags_SEEK_CUR; return 0;}
4232 #endif /* ndef SEEK_CUR */
4233 #ifdef SEEK_END
4234         if (x == SEEK_END)
4235                 {*r = Mono_Posix_SeekFlags_SEEK_END; return 0;}
4236 #endif /* ndef SEEK_END */
4237 #ifdef SEEK_SET
4238         if (x == SEEK_SET)
4239                 {*r = Mono_Posix_SeekFlags_SEEK_SET; return 0;}
4240 #endif /* ndef SEEK_SET */
4241         errno = EINVAL; return -1;
4242 }
4243
4244 int Mono_Posix_FromSignum (int x, int *r)
4245 {
4246         *r = 0;
4247         if (x == Mono_Posix_Signum_SIGABRT)
4248 #ifdef SIGABRT
4249                 {*r = SIGABRT; return 0;}
4250 #else /* def SIGABRT */
4251                 {errno = EINVAL; return -1;}
4252 #endif /* ndef SIGABRT */
4253         if (x == Mono_Posix_Signum_SIGALRM)
4254 #ifdef SIGALRM
4255                 {*r = SIGALRM; return 0;}
4256 #else /* def SIGALRM */
4257                 {errno = EINVAL; return -1;}
4258 #endif /* ndef SIGALRM */
4259         if (x == Mono_Posix_Signum_SIGBUS)
4260 #ifdef SIGBUS
4261                 {*r = SIGBUS; return 0;}
4262 #else /* def SIGBUS */
4263                 {errno = EINVAL; return -1;}
4264 #endif /* ndef SIGBUS */
4265         if (x == Mono_Posix_Signum_SIGCHLD)
4266 #ifdef SIGCHLD
4267                 {*r = SIGCHLD; return 0;}
4268 #else /* def SIGCHLD */
4269                 {errno = EINVAL; return -1;}
4270 #endif /* ndef SIGCHLD */
4271         if (x == Mono_Posix_Signum_SIGCLD)
4272 #ifdef SIGCLD
4273                 {*r = SIGCLD; return 0;}
4274 #else /* def SIGCLD */
4275                 {errno = EINVAL; return -1;}
4276 #endif /* ndef SIGCLD */
4277         if (x == Mono_Posix_Signum_SIGCONT)
4278 #ifdef SIGCONT
4279                 {*r = SIGCONT; return 0;}
4280 #else /* def SIGCONT */
4281                 {errno = EINVAL; return -1;}
4282 #endif /* ndef SIGCONT */
4283         if (x == Mono_Posix_Signum_SIGFPE)
4284 #ifdef SIGFPE
4285                 {*r = SIGFPE; return 0;}
4286 #else /* def SIGFPE */
4287                 {errno = EINVAL; return -1;}
4288 #endif /* ndef SIGFPE */
4289         if (x == Mono_Posix_Signum_SIGHUP)
4290 #ifdef SIGHUP
4291                 {*r = SIGHUP; return 0;}
4292 #else /* def SIGHUP */
4293                 {errno = EINVAL; return -1;}
4294 #endif /* ndef SIGHUP */
4295         if (x == Mono_Posix_Signum_SIGILL)
4296 #ifdef SIGILL
4297                 {*r = SIGILL; return 0;}
4298 #else /* def SIGILL */
4299                 {errno = EINVAL; return -1;}
4300 #endif /* ndef SIGILL */
4301         if (x == Mono_Posix_Signum_SIGINT)
4302 #ifdef SIGINT
4303                 {*r = SIGINT; return 0;}
4304 #else /* def SIGINT */
4305                 {errno = EINVAL; return -1;}
4306 #endif /* ndef SIGINT */
4307         if (x == Mono_Posix_Signum_SIGIO)
4308 #ifdef SIGIO
4309                 {*r = SIGIO; return 0;}
4310 #else /* def SIGIO */
4311                 {errno = EINVAL; return -1;}
4312 #endif /* ndef SIGIO */
4313         if (x == Mono_Posix_Signum_SIGIOT)
4314 #ifdef SIGIOT
4315                 {*r = SIGIOT; return 0;}
4316 #else /* def SIGIOT */
4317                 {errno = EINVAL; return -1;}
4318 #endif /* ndef SIGIOT */
4319         if (x == Mono_Posix_Signum_SIGKILL)
4320 #ifdef SIGKILL
4321                 {*r = SIGKILL; return 0;}
4322 #else /* def SIGKILL */
4323                 {errno = EINVAL; return -1;}
4324 #endif /* ndef SIGKILL */
4325         if (x == Mono_Posix_Signum_SIGPIPE)
4326 #ifdef SIGPIPE
4327                 {*r = SIGPIPE; return 0;}
4328 #else /* def SIGPIPE */
4329                 {errno = EINVAL; return -1;}
4330 #endif /* ndef SIGPIPE */
4331         if (x == Mono_Posix_Signum_SIGPOLL)
4332 #ifdef SIGPOLL
4333                 {*r = SIGPOLL; return 0;}
4334 #else /* def SIGPOLL */
4335                 {errno = EINVAL; return -1;}
4336 #endif /* ndef SIGPOLL */
4337         if (x == Mono_Posix_Signum_SIGPROF)
4338 #ifdef SIGPROF
4339                 {*r = SIGPROF; return 0;}
4340 #else /* def SIGPROF */
4341                 {errno = EINVAL; return -1;}
4342 #endif /* ndef SIGPROF */
4343         if (x == Mono_Posix_Signum_SIGPWR)
4344 #ifdef SIGPWR
4345                 {*r = SIGPWR; return 0;}
4346 #else /* def SIGPWR */
4347                 {errno = EINVAL; return -1;}
4348 #endif /* ndef SIGPWR */
4349         if (x == Mono_Posix_Signum_SIGQUIT)
4350 #ifdef SIGQUIT
4351                 {*r = SIGQUIT; return 0;}
4352 #else /* def SIGQUIT */
4353                 {errno = EINVAL; return -1;}
4354 #endif /* ndef SIGQUIT */
4355         if (x == Mono_Posix_Signum_SIGSEGV)
4356 #ifdef SIGSEGV
4357                 {*r = SIGSEGV; return 0;}
4358 #else /* def SIGSEGV */
4359                 {errno = EINVAL; return -1;}
4360 #endif /* ndef SIGSEGV */
4361         if (x == Mono_Posix_Signum_SIGSTKFLT)
4362 #ifdef SIGSTKFLT
4363                 {*r = SIGSTKFLT; return 0;}
4364 #else /* def SIGSTKFLT */
4365                 {errno = EINVAL; return -1;}
4366 #endif /* ndef SIGSTKFLT */
4367         if (x == Mono_Posix_Signum_SIGSTOP)
4368 #ifdef SIGSTOP
4369                 {*r = SIGSTOP; return 0;}
4370 #else /* def SIGSTOP */
4371                 {errno = EINVAL; return -1;}
4372 #endif /* ndef SIGSTOP */
4373         if (x == Mono_Posix_Signum_SIGSYS)
4374 #ifdef SIGSYS
4375                 {*r = SIGSYS; return 0;}
4376 #else /* def SIGSYS */
4377                 {errno = EINVAL; return -1;}
4378 #endif /* ndef SIGSYS */
4379         if (x == Mono_Posix_Signum_SIGTERM)
4380 #ifdef SIGTERM
4381                 {*r = SIGTERM; return 0;}
4382 #else /* def SIGTERM */
4383                 {errno = EINVAL; return -1;}
4384 #endif /* ndef SIGTERM */
4385         if (x == Mono_Posix_Signum_SIGTRAP)
4386 #ifdef SIGTRAP
4387                 {*r = SIGTRAP; return 0;}
4388 #else /* def SIGTRAP */
4389                 {errno = EINVAL; return -1;}
4390 #endif /* ndef SIGTRAP */
4391         if (x == Mono_Posix_Signum_SIGTSTP)
4392 #ifdef SIGTSTP
4393                 {*r = SIGTSTP; return 0;}
4394 #else /* def SIGTSTP */
4395                 {errno = EINVAL; return -1;}
4396 #endif /* ndef SIGTSTP */
4397         if (x == Mono_Posix_Signum_SIGTTIN)
4398 #ifdef SIGTTIN
4399                 {*r = SIGTTIN; return 0;}
4400 #else /* def SIGTTIN */
4401                 {errno = EINVAL; return -1;}
4402 #endif /* ndef SIGTTIN */
4403         if (x == Mono_Posix_Signum_SIGTTOU)
4404 #ifdef SIGTTOU
4405                 {*r = SIGTTOU; return 0;}
4406 #else /* def SIGTTOU */
4407                 {errno = EINVAL; return -1;}
4408 #endif /* ndef SIGTTOU */
4409         if (x == Mono_Posix_Signum_SIGUNUSED)
4410 #ifdef SIGUNUSED
4411                 {*r = SIGUNUSED; return 0;}
4412 #else /* def SIGUNUSED */
4413                 {errno = EINVAL; return -1;}
4414 #endif /* ndef SIGUNUSED */
4415         if (x == Mono_Posix_Signum_SIGURG)
4416 #ifdef SIGURG
4417                 {*r = SIGURG; return 0;}
4418 #else /* def SIGURG */
4419                 {errno = EINVAL; return -1;}
4420 #endif /* ndef SIGURG */
4421         if (x == Mono_Posix_Signum_SIGUSR1)
4422 #ifdef SIGUSR1
4423                 {*r = SIGUSR1; return 0;}
4424 #else /* def SIGUSR1 */
4425                 {errno = EINVAL; return -1;}
4426 #endif /* ndef SIGUSR1 */
4427         if (x == Mono_Posix_Signum_SIGUSR2)
4428 #ifdef SIGUSR2
4429                 {*r = SIGUSR2; return 0;}
4430 #else /* def SIGUSR2 */
4431                 {errno = EINVAL; return -1;}
4432 #endif /* ndef SIGUSR2 */
4433         if (x == Mono_Posix_Signum_SIGVTALRM)
4434 #ifdef SIGVTALRM
4435                 {*r = SIGVTALRM; return 0;}
4436 #else /* def SIGVTALRM */
4437                 {errno = EINVAL; return -1;}
4438 #endif /* ndef SIGVTALRM */
4439         if (x == Mono_Posix_Signum_SIGWINCH)
4440 #ifdef SIGWINCH
4441                 {*r = SIGWINCH; return 0;}
4442 #else /* def SIGWINCH */
4443                 {errno = EINVAL; return -1;}
4444 #endif /* ndef SIGWINCH */
4445         if (x == Mono_Posix_Signum_SIGXCPU)
4446 #ifdef SIGXCPU
4447                 {*r = SIGXCPU; return 0;}
4448 #else /* def SIGXCPU */
4449                 {errno = EINVAL; return -1;}
4450 #endif /* ndef SIGXCPU */
4451         if (x == Mono_Posix_Signum_SIGXFSZ)
4452 #ifdef SIGXFSZ
4453                 {*r = SIGXFSZ; return 0;}
4454 #else /* def SIGXFSZ */
4455                 {errno = EINVAL; return -1;}
4456 #endif /* ndef SIGXFSZ */
4457         if (x == 0)
4458                 return 0;
4459         errno = EINVAL; return -1;
4460 }
4461
4462 int Mono_Posix_ToSignum (int x, int *r)
4463 {
4464         *r = 0;
4465         if (x == 0)
4466                 return 0;
4467 #ifdef SIGABRT
4468         if (x == SIGABRT)
4469                 {*r = Mono_Posix_Signum_SIGABRT; return 0;}
4470 #endif /* ndef SIGABRT */
4471 #ifdef SIGALRM
4472         if (x == SIGALRM)
4473                 {*r = Mono_Posix_Signum_SIGALRM; return 0;}
4474 #endif /* ndef SIGALRM */
4475 #ifdef SIGBUS
4476         if (x == SIGBUS)
4477                 {*r = Mono_Posix_Signum_SIGBUS; return 0;}
4478 #endif /* ndef SIGBUS */
4479 #ifdef SIGCHLD
4480         if (x == SIGCHLD)
4481                 {*r = Mono_Posix_Signum_SIGCHLD; return 0;}
4482 #endif /* ndef SIGCHLD */
4483 #ifdef SIGCLD
4484         if (x == SIGCLD)
4485                 {*r = Mono_Posix_Signum_SIGCLD; return 0;}
4486 #endif /* ndef SIGCLD */
4487 #ifdef SIGCONT
4488         if (x == SIGCONT)
4489                 {*r = Mono_Posix_Signum_SIGCONT; return 0;}
4490 #endif /* ndef SIGCONT */
4491 #ifdef SIGFPE
4492         if (x == SIGFPE)
4493                 {*r = Mono_Posix_Signum_SIGFPE; return 0;}
4494 #endif /* ndef SIGFPE */
4495 #ifdef SIGHUP
4496         if (x == SIGHUP)
4497                 {*r = Mono_Posix_Signum_SIGHUP; return 0;}
4498 #endif /* ndef SIGHUP */
4499 #ifdef SIGILL
4500         if (x == SIGILL)
4501                 {*r = Mono_Posix_Signum_SIGILL; return 0;}
4502 #endif /* ndef SIGILL */
4503 #ifdef SIGINT
4504         if (x == SIGINT)
4505                 {*r = Mono_Posix_Signum_SIGINT; return 0;}
4506 #endif /* ndef SIGINT */
4507 #ifdef SIGIO
4508         if (x == SIGIO)
4509                 {*r = Mono_Posix_Signum_SIGIO; return 0;}
4510 #endif /* ndef SIGIO */
4511 #ifdef SIGIOT
4512         if (x == SIGIOT)
4513                 {*r = Mono_Posix_Signum_SIGIOT; return 0;}
4514 #endif /* ndef SIGIOT */
4515 #ifdef SIGKILL
4516         if (x == SIGKILL)
4517                 {*r = Mono_Posix_Signum_SIGKILL; return 0;}
4518 #endif /* ndef SIGKILL */
4519 #ifdef SIGPIPE
4520         if (x == SIGPIPE)
4521                 {*r = Mono_Posix_Signum_SIGPIPE; return 0;}
4522 #endif /* ndef SIGPIPE */
4523 #ifdef SIGPOLL
4524         if (x == SIGPOLL)
4525                 {*r = Mono_Posix_Signum_SIGPOLL; return 0;}
4526 #endif /* ndef SIGPOLL */
4527 #ifdef SIGPROF
4528         if (x == SIGPROF)
4529                 {*r = Mono_Posix_Signum_SIGPROF; return 0;}
4530 #endif /* ndef SIGPROF */
4531 #ifdef SIGPWR
4532         if (x == SIGPWR)
4533                 {*r = Mono_Posix_Signum_SIGPWR; return 0;}
4534 #endif /* ndef SIGPWR */
4535 #ifdef SIGQUIT
4536         if (x == SIGQUIT)
4537                 {*r = Mono_Posix_Signum_SIGQUIT; return 0;}
4538 #endif /* ndef SIGQUIT */
4539 #ifdef SIGSEGV
4540         if (x == SIGSEGV)
4541                 {*r = Mono_Posix_Signum_SIGSEGV; return 0;}
4542 #endif /* ndef SIGSEGV */
4543 #ifdef SIGSTKFLT
4544         if (x == SIGSTKFLT)
4545                 {*r = Mono_Posix_Signum_SIGSTKFLT; return 0;}
4546 #endif /* ndef SIGSTKFLT */
4547 #ifdef SIGSTOP
4548         if (x == SIGSTOP)
4549                 {*r = Mono_Posix_Signum_SIGSTOP; return 0;}
4550 #endif /* ndef SIGSTOP */
4551 #ifdef SIGSYS
4552         if (x == SIGSYS)
4553                 {*r = Mono_Posix_Signum_SIGSYS; return 0;}
4554 #endif /* ndef SIGSYS */
4555 #ifdef SIGTERM
4556         if (x == SIGTERM)
4557                 {*r = Mono_Posix_Signum_SIGTERM; return 0;}
4558 #endif /* ndef SIGTERM */
4559 #ifdef SIGTRAP
4560         if (x == SIGTRAP)
4561                 {*r = Mono_Posix_Signum_SIGTRAP; return 0;}
4562 #endif /* ndef SIGTRAP */
4563 #ifdef SIGTSTP
4564         if (x == SIGTSTP)
4565                 {*r = Mono_Posix_Signum_SIGTSTP; return 0;}
4566 #endif /* ndef SIGTSTP */
4567 #ifdef SIGTTIN
4568         if (x == SIGTTIN)
4569                 {*r = Mono_Posix_Signum_SIGTTIN; return 0;}
4570 #endif /* ndef SIGTTIN */
4571 #ifdef SIGTTOU
4572         if (x == SIGTTOU)
4573                 {*r = Mono_Posix_Signum_SIGTTOU; return 0;}
4574 #endif /* ndef SIGTTOU */
4575 #ifdef SIGUNUSED
4576         if (x == SIGUNUSED)
4577                 {*r = Mono_Posix_Signum_SIGUNUSED; return 0;}
4578 #endif /* ndef SIGUNUSED */
4579 #ifdef SIGURG
4580         if (x == SIGURG)
4581                 {*r = Mono_Posix_Signum_SIGURG; return 0;}
4582 #endif /* ndef SIGURG */
4583 #ifdef SIGUSR1
4584         if (x == SIGUSR1)
4585                 {*r = Mono_Posix_Signum_SIGUSR1; return 0;}
4586 #endif /* ndef SIGUSR1 */
4587 #ifdef SIGUSR2
4588         if (x == SIGUSR2)
4589                 {*r = Mono_Posix_Signum_SIGUSR2; return 0;}
4590 #endif /* ndef SIGUSR2 */
4591 #ifdef SIGVTALRM
4592         if (x == SIGVTALRM)
4593                 {*r = Mono_Posix_Signum_SIGVTALRM; return 0;}
4594 #endif /* ndef SIGVTALRM */
4595 #ifdef SIGWINCH
4596         if (x == SIGWINCH)
4597                 {*r = Mono_Posix_Signum_SIGWINCH; return 0;}
4598 #endif /* ndef SIGWINCH */
4599 #ifdef SIGXCPU
4600         if (x == SIGXCPU)
4601                 {*r = Mono_Posix_Signum_SIGXCPU; return 0;}
4602 #endif /* ndef SIGXCPU */
4603 #ifdef SIGXFSZ
4604         if (x == SIGXFSZ)
4605                 {*r = Mono_Posix_Signum_SIGXFSZ; return 0;}
4606 #endif /* ndef SIGXFSZ */
4607         errno = EINVAL; return -1;
4608 }
4609
4610 int Mono_Posix_FromSysconfName (int x, int *r)
4611 {
4612         *r = 0;
4613         if (x == Mono_Posix_SysconfName__SC_2_CHAR_TERM)
4614 #ifdef _SC_2_CHAR_TERM
4615                 {*r = _SC_2_CHAR_TERM; return 0;}
4616 #else /* def _SC_2_CHAR_TERM */
4617                 {errno = EINVAL; return -1;}
4618 #endif /* ndef _SC_2_CHAR_TERM */
4619         if (x == Mono_Posix_SysconfName__SC_2_C_BIND)
4620 #ifdef _SC_2_C_BIND
4621                 {*r = _SC_2_C_BIND; return 0;}
4622 #else /* def _SC_2_C_BIND */
4623                 {errno = EINVAL; return -1;}
4624 #endif /* ndef _SC_2_C_BIND */
4625         if (x == Mono_Posix_SysconfName__SC_2_C_DEV)
4626 #ifdef _SC_2_C_DEV
4627                 {*r = _SC_2_C_DEV; return 0;}
4628 #else /* def _SC_2_C_DEV */
4629                 {errno = EINVAL; return -1;}
4630 #endif /* ndef _SC_2_C_DEV */
4631         if (x == Mono_Posix_SysconfName__SC_2_C_VERSION)
4632 #ifdef _SC_2_C_VERSION
4633                 {*r = _SC_2_C_VERSION; return 0;}
4634 #else /* def _SC_2_C_VERSION */
4635                 {errno = EINVAL; return -1;}
4636 #endif /* ndef _SC_2_C_VERSION */
4637         if (x == Mono_Posix_SysconfName__SC_2_FORT_DEV)
4638 #ifdef _SC_2_FORT_DEV
4639                 {*r = _SC_2_FORT_DEV; return 0;}
4640 #else /* def _SC_2_FORT_DEV */
4641                 {errno = EINVAL; return -1;}
4642 #endif /* ndef _SC_2_FORT_DEV */
4643         if (x == Mono_Posix_SysconfName__SC_2_FORT_RUN)
4644 #ifdef _SC_2_FORT_RUN
4645                 {*r = _SC_2_FORT_RUN; return 0;}
4646 #else /* def _SC_2_FORT_RUN */
4647                 {errno = EINVAL; return -1;}
4648 #endif /* ndef _SC_2_FORT_RUN */
4649         if (x == Mono_Posix_SysconfName__SC_2_LOCALEDEF)
4650 #ifdef _SC_2_LOCALEDEF
4651                 {*r = _SC_2_LOCALEDEF; return 0;}
4652 #else /* def _SC_2_LOCALEDEF */
4653                 {errno = EINVAL; return -1;}
4654 #endif /* ndef _SC_2_LOCALEDEF */
4655         if (x == Mono_Posix_SysconfName__SC_2_PBS)
4656 #ifdef _SC_2_PBS
4657                 {*r = _SC_2_PBS; return 0;}
4658 #else /* def _SC_2_PBS */
4659                 {errno = EINVAL; return -1;}
4660 #endif /* ndef _SC_2_PBS */
4661         if (x == Mono_Posix_SysconfName__SC_2_PBS_ACCOUNTING)
4662 #ifdef _SC_2_PBS_ACCOUNTING
4663                 {*r = _SC_2_PBS_ACCOUNTING; return 0;}
4664 #else /* def _SC_2_PBS_ACCOUNTING */
4665                 {errno = EINVAL; return -1;}
4666 #endif /* ndef _SC_2_PBS_ACCOUNTING */
4667         if (x == Mono_Posix_SysconfName__SC_2_PBS_CHECKPOINT)
4668 #ifdef _SC_2_PBS_CHECKPOINT
4669                 {*r = _SC_2_PBS_CHECKPOINT; return 0;}
4670 #else /* def _SC_2_PBS_CHECKPOINT */
4671                 {errno = EINVAL; return -1;}
4672 #endif /* ndef _SC_2_PBS_CHECKPOINT */
4673         if (x == Mono_Posix_SysconfName__SC_2_PBS_LOCATE)
4674 #ifdef _SC_2_PBS_LOCATE
4675                 {*r = _SC_2_PBS_LOCATE; return 0;}
4676 #else /* def _SC_2_PBS_LOCATE */
4677                 {errno = EINVAL; return -1;}
4678 #endif /* ndef _SC_2_PBS_LOCATE */
4679         if (x == Mono_Posix_SysconfName__SC_2_PBS_MESSAGE)
4680 #ifdef _SC_2_PBS_MESSAGE
4681                 {*r = _SC_2_PBS_MESSAGE; return 0;}
4682 #else /* def _SC_2_PBS_MESSAGE */
4683                 {errno = EINVAL; return -1;}
4684 #endif /* ndef _SC_2_PBS_MESSAGE */
4685         if (x == Mono_Posix_SysconfName__SC_2_PBS_TRACK)
4686 #ifdef _SC_2_PBS_TRACK
4687                 {*r = _SC_2_PBS_TRACK; return 0;}
4688 #else /* def _SC_2_PBS_TRACK */
4689                 {errno = EINVAL; return -1;}
4690 #endif /* ndef _SC_2_PBS_TRACK */
4691         if (x == Mono_Posix_SysconfName__SC_2_SW_DEV)
4692 #ifdef _SC_2_SW_DEV
4693                 {*r = _SC_2_SW_DEV; return 0;}
4694 #else /* def _SC_2_SW_DEV */
4695                 {errno = EINVAL; return -1;}
4696 #endif /* ndef _SC_2_SW_DEV */
4697         if (x == Mono_Posix_SysconfName__SC_2_UPE)
4698 #ifdef _SC_2_UPE
4699                 {*r = _SC_2_UPE; return 0;}
4700 #else /* def _SC_2_UPE */
4701                 {errno = EINVAL; return -1;}
4702 #endif /* ndef _SC_2_UPE */
4703         if (x == Mono_Posix_SysconfName__SC_2_VERSION)
4704 #ifdef _SC_2_VERSION
4705                 {*r = _SC_2_VERSION; return 0;}
4706 #else /* def _SC_2_VERSION */
4707                 {errno = EINVAL; return -1;}
4708 #endif /* ndef _SC_2_VERSION */
4709         if (x == Mono_Posix_SysconfName__SC_ADVISORY_INFO)
4710 #ifdef _SC_ADVISORY_INFO
4711                 {*r = _SC_ADVISORY_INFO; return 0;}
4712 #else /* def _SC_ADVISORY_INFO */
4713                 {errno = EINVAL; return -1;}
4714 #endif /* ndef _SC_ADVISORY_INFO */
4715         if (x == Mono_Posix_SysconfName__SC_AIO_LISTIO_MAX)
4716 #ifdef _SC_AIO_LISTIO_MAX
4717                 {*r = _SC_AIO_LISTIO_MAX; return 0;}
4718 #else /* def _SC_AIO_LISTIO_MAX */
4719                 {errno = EINVAL; return -1;}
4720 #endif /* ndef _SC_AIO_LISTIO_MAX */
4721         if (x == Mono_Posix_SysconfName__SC_AIO_MAX)
4722 #ifdef _SC_AIO_MAX
4723                 {*r = _SC_AIO_MAX; return 0;}
4724 #else /* def _SC_AIO_MAX */
4725                 {errno = EINVAL; return -1;}
4726 #endif /* ndef _SC_AIO_MAX */
4727         if (x == Mono_Posix_SysconfName__SC_AIO_PRIO_DELTA_MAX)
4728 #ifdef _SC_AIO_PRIO_DELTA_MAX
4729                 {*r = _SC_AIO_PRIO_DELTA_MAX; return 0;}
4730 #else /* def _SC_AIO_PRIO_DELTA_MAX */
4731                 {errno = EINVAL; return -1;}
4732 #endif /* ndef _SC_AIO_PRIO_DELTA_MAX */
4733         if (x == Mono_Posix_SysconfName__SC_ARG_MAX)
4734 #ifdef _SC_ARG_MAX
4735                 {*r = _SC_ARG_MAX; return 0;}
4736 #else /* def _SC_ARG_MAX */
4737                 {errno = EINVAL; return -1;}
4738 #endif /* ndef _SC_ARG_MAX */
4739         if (x == Mono_Posix_SysconfName__SC_ASYNCHRONOUS_IO)
4740 #ifdef _SC_ASYNCHRONOUS_IO
4741                 {*r = _SC_ASYNCHRONOUS_IO; return 0;}
4742 #else /* def _SC_ASYNCHRONOUS_IO */
4743                 {errno = EINVAL; return -1;}
4744 #endif /* ndef _SC_ASYNCHRONOUS_IO */
4745         if (x == Mono_Posix_SysconfName__SC_ATEXIT_MAX)
4746 #ifdef _SC_ATEXIT_MAX
4747                 {*r = _SC_ATEXIT_MAX; return 0;}
4748 #else /* def _SC_ATEXIT_MAX */
4749                 {errno = EINVAL; return -1;}
4750 #endif /* ndef _SC_ATEXIT_MAX */
4751         if (x == Mono_Posix_SysconfName__SC_AVPHYS_PAGES)
4752 #ifdef _SC_AVPHYS_PAGES
4753                 {*r = _SC_AVPHYS_PAGES; return 0;}
4754 #else /* def _SC_AVPHYS_PAGES */
4755                 {errno = EINVAL; return -1;}
4756 #endif /* ndef _SC_AVPHYS_PAGES */
4757         if (x == Mono_Posix_SysconfName__SC_BARRIERS)
4758 #ifdef _SC_BARRIERS
4759                 {*r = _SC_BARRIERS; return 0;}
4760 #else /* def _SC_BARRIERS */
4761                 {errno = EINVAL; return -1;}
4762 #endif /* ndef _SC_BARRIERS */
4763         if (x == Mono_Posix_SysconfName__SC_BASE)
4764 #ifdef _SC_BASE
4765                 {*r = _SC_BASE; return 0;}
4766 #else /* def _SC_BASE */
4767                 {errno = EINVAL; return -1;}
4768 #endif /* ndef _SC_BASE */
4769         if (x == Mono_Posix_SysconfName__SC_BC_BASE_MAX)
4770 #ifdef _SC_BC_BASE_MAX
4771                 {*r = _SC_BC_BASE_MAX; return 0;}
4772 #else /* def _SC_BC_BASE_MAX */
4773                 {errno = EINVAL; return -1;}
4774 #endif /* ndef _SC_BC_BASE_MAX */
4775         if (x == Mono_Posix_SysconfName__SC_BC_DIM_MAX)
4776 #ifdef _SC_BC_DIM_MAX
4777                 {*r = _SC_BC_DIM_MAX; return 0;}
4778 #else /* def _SC_BC_DIM_MAX */
4779                 {errno = EINVAL; return -1;}
4780 #endif /* ndef _SC_BC_DIM_MAX */
4781         if (x == Mono_Posix_SysconfName__SC_BC_SCALE_MAX)
4782 #ifdef _SC_BC_SCALE_MAX
4783                 {*r = _SC_BC_SCALE_MAX; return 0;}
4784 #else /* def _SC_BC_SCALE_MAX */
4785                 {errno = EINVAL; return -1;}
4786 #endif /* ndef _SC_BC_SCALE_MAX */
4787         if (x == Mono_Posix_SysconfName__SC_BC_STRING_MAX)
4788 #ifdef _SC_BC_STRING_MAX
4789                 {*r = _SC_BC_STRING_MAX; return 0;}
4790 #else /* def _SC_BC_STRING_MAX */
4791                 {errno = EINVAL; return -1;}
4792 #endif /* ndef _SC_BC_STRING_MAX */
4793         if (x == Mono_Posix_SysconfName__SC_CHARCLASS_NAME_MAX)
4794 #ifdef _SC_CHARCLASS_NAME_MAX
4795                 {*r = _SC_CHARCLASS_NAME_MAX; return 0;}
4796 #else /* def _SC_CHARCLASS_NAME_MAX */
4797                 {errno = EINVAL; return -1;}
4798 #endif /* ndef _SC_CHARCLASS_NAME_MAX */
4799         if (x == Mono_Posix_SysconfName__SC_CHAR_BIT)
4800 #ifdef _SC_CHAR_BIT
4801                 {*r = _SC_CHAR_BIT; return 0;}
4802 #else /* def _SC_CHAR_BIT */
4803                 {errno = EINVAL; return -1;}
4804 #endif /* ndef _SC_CHAR_BIT */
4805         if (x == Mono_Posix_SysconfName__SC_CHAR_MAX)
4806 #ifdef _SC_CHAR_MAX
4807                 {*r = _SC_CHAR_MAX; return 0;}
4808 #else /* def _SC_CHAR_MAX */
4809                 {errno = EINVAL; return -1;}
4810 #endif /* ndef _SC_CHAR_MAX */
4811         if (x == Mono_Posix_SysconfName__SC_CHAR_MIN)
4812 #ifdef _SC_CHAR_MIN
4813                 {*r = _SC_CHAR_MIN; return 0;}
4814 #else /* def _SC_CHAR_MIN */
4815                 {errno = EINVAL; return -1;}
4816 #endif /* ndef _SC_CHAR_MIN */
4817         if (x == Mono_Posix_SysconfName__SC_CHILD_MAX)
4818 #ifdef _SC_CHILD_MAX
4819                 {*r = _SC_CHILD_MAX; return 0;}
4820 #else /* def _SC_CHILD_MAX */
4821                 {errno = EINVAL; return -1;}
4822 #endif /* ndef _SC_CHILD_MAX */
4823         if (x == Mono_Posix_SysconfName__SC_CLK_TCK)
4824 #ifdef _SC_CLK_TCK
4825                 {*r = _SC_CLK_TCK; return 0;}
4826 #else /* def _SC_CLK_TCK */
4827                 {errno = EINVAL; return -1;}
4828 #endif /* ndef _SC_CLK_TCK */
4829         if (x == Mono_Posix_SysconfName__SC_CLOCK_SELECTION)
4830 #ifdef _SC_CLOCK_SELECTION
4831                 {*r = _SC_CLOCK_SELECTION; return 0;}
4832 #else /* def _SC_CLOCK_SELECTION */
4833                 {errno = EINVAL; return -1;}
4834 #endif /* ndef _SC_CLOCK_SELECTION */
4835         if (x == Mono_Posix_SysconfName__SC_COLL_WEIGHTS_MAX)
4836 #ifdef _SC_COLL_WEIGHTS_MAX
4837                 {*r = _SC_COLL_WEIGHTS_MAX; return 0;}
4838 #else /* def _SC_COLL_WEIGHTS_MAX */
4839                 {errno = EINVAL; return -1;}
4840 #endif /* ndef _SC_COLL_WEIGHTS_MAX */
4841         if (x == Mono_Posix_SysconfName__SC_CPUTIME)
4842 #ifdef _SC_CPUTIME
4843                 {*r = _SC_CPUTIME; return 0;}
4844 #else /* def _SC_CPUTIME */
4845                 {errno = EINVAL; return -1;}
4846 #endif /* ndef _SC_CPUTIME */
4847         if (x == Mono_Posix_SysconfName__SC_C_LANG_SUPPORT)
4848 #ifdef _SC_C_LANG_SUPPORT
4849                 {*r = _SC_C_LANG_SUPPORT; return 0;}
4850 #else /* def _SC_C_LANG_SUPPORT */
4851                 {errno = EINVAL; return -1;}
4852 #endif /* ndef _SC_C_LANG_SUPPORT */
4853         if (x == Mono_Posix_SysconfName__SC_C_LANG_SUPPORT_R)
4854 #ifdef _SC_C_LANG_SUPPORT_R
4855                 {*r = _SC_C_LANG_SUPPORT_R; return 0;}
4856 #else /* def _SC_C_LANG_SUPPORT_R */
4857                 {errno = EINVAL; return -1;}
4858 #endif /* ndef _SC_C_LANG_SUPPORT_R */
4859         if (x == Mono_Posix_SysconfName__SC_DELAYTIMER_MAX)
4860 #ifdef _SC_DELAYTIMER_MAX
4861                 {*r = _SC_DELAYTIMER_MAX; return 0;}
4862 #else /* def _SC_DELAYTIMER_MAX */
4863                 {errno = EINVAL; return -1;}
4864 #endif /* ndef _SC_DELAYTIMER_MAX */
4865         if (x == Mono_Posix_SysconfName__SC_DEVICE_IO)
4866 #ifdef _SC_DEVICE_IO
4867                 {*r = _SC_DEVICE_IO; return 0;}
4868 #else /* def _SC_DEVICE_IO */
4869                 {errno = EINVAL; return -1;}
4870 #endif /* ndef _SC_DEVICE_IO */
4871         if (x == Mono_Posix_SysconfName__SC_DEVICE_SPECIFIC)
4872 #ifdef _SC_DEVICE_SPECIFIC
4873                 {*r = _SC_DEVICE_SPECIFIC; return 0;}
4874 #else /* def _SC_DEVICE_SPECIFIC */
4875                 {errno = EINVAL; return -1;}
4876 #endif /* ndef _SC_DEVICE_SPECIFIC */
4877         if (x == Mono_Posix_SysconfName__SC_DEVICE_SPECIFIC_R)
4878 #ifdef _SC_DEVICE_SPECIFIC_R
4879                 {*r = _SC_DEVICE_SPECIFIC_R; return 0;}
4880 #else /* def _SC_DEVICE_SPECIFIC_R */
4881                 {errno = EINVAL; return -1;}
4882 #endif /* ndef _SC_DEVICE_SPECIFIC_R */
4883         if (x == Mono_Posix_SysconfName__SC_EQUIV_CLASS_MAX)
4884 #ifdef _SC_EQUIV_CLASS_MAX
4885                 {*r = _SC_EQUIV_CLASS_MAX; return 0;}
4886 #else /* def _SC_EQUIV_CLASS_MAX */
4887                 {errno = EINVAL; return -1;}
4888 #endif /* ndef _SC_EQUIV_CLASS_MAX */
4889         if (x == Mono_Posix_SysconfName__SC_EXPR_NEST_MAX)
4890 #ifdef _SC_EXPR_NEST_MAX
4891                 {*r = _SC_EXPR_NEST_MAX; return 0;}
4892 #else /* def _SC_EXPR_NEST_MAX */
4893                 {errno = EINVAL; return -1;}
4894 #endif /* ndef _SC_EXPR_NEST_MAX */
4895         if (x == Mono_Posix_SysconfName__SC_FD_MGMT)
4896 #ifdef _SC_FD_MGMT
4897                 {*r = _SC_FD_MGMT; return 0;}
4898 #else /* def _SC_FD_MGMT */
4899                 {errno = EINVAL; return -1;}
4900 #endif /* ndef _SC_FD_MGMT */
4901         if (x == Mono_Posix_SysconfName__SC_FIFO)
4902 #ifdef _SC_FIFO
4903                 {*r = _SC_FIFO; return 0;}
4904 #else /* def _SC_FIFO */
4905                 {errno = EINVAL; return -1;}
4906 #endif /* ndef _SC_FIFO */
4907         if (x == Mono_Posix_SysconfName__SC_FILE_ATTRIBUTES)
4908 #ifdef _SC_FILE_ATTRIBUTES
4909                 {*r = _SC_FILE_ATTRIBUTES; return 0;}
4910 #else /* def _SC_FILE_ATTRIBUTES */
4911                 {errno = EINVAL; return -1;}
4912 #endif /* ndef _SC_FILE_ATTRIBUTES */
4913         if (x == Mono_Posix_SysconfName__SC_FILE_LOCKING)
4914 #ifdef _SC_FILE_LOCKING
4915                 {*r = _SC_FILE_LOCKING; return 0;}
4916 #else /* def _SC_FILE_LOCKING */
4917                 {errno = EINVAL; return -1;}
4918 #endif /* ndef _SC_FILE_LOCKING */
4919         if (x == Mono_Posix_SysconfName__SC_FILE_SYSTEM)
4920 #ifdef _SC_FILE_SYSTEM
4921                 {*r = _SC_FILE_SYSTEM; return 0;}
4922 #else /* def _SC_FILE_SYSTEM */
4923                 {errno = EINVAL; return -1;}
4924 #endif /* ndef _SC_FILE_SYSTEM */
4925         if (x == Mono_Posix_SysconfName__SC_FSYNC)
4926 #ifdef _SC_FSYNC
4927                 {*r = _SC_FSYNC; return 0;}
4928 #else /* def _SC_FSYNC */
4929                 {errno = EINVAL; return -1;}
4930 #endif /* ndef _SC_FSYNC */
4931         if (x == Mono_Posix_SysconfName__SC_GETGR_R_SIZE_MAX)
4932 #ifdef _SC_GETGR_R_SIZE_MAX
4933                 {*r = _SC_GETGR_R_SIZE_MAX; return 0;}
4934 #else /* def _SC_GETGR_R_SIZE_MAX */
4935                 {errno = EINVAL; return -1;}
4936 #endif /* ndef _SC_GETGR_R_SIZE_MAX */
4937         if (x == Mono_Posix_SysconfName__SC_GETPW_R_SIZE_MAX)
4938 #ifdef _SC_GETPW_R_SIZE_MAX
4939                 {*r = _SC_GETPW_R_SIZE_MAX; return 0;}
4940 #else /* def _SC_GETPW_R_SIZE_MAX */
4941                 {errno = EINVAL; return -1;}
4942 #endif /* ndef _SC_GETPW_R_SIZE_MAX */
4943         if (x == Mono_Posix_SysconfName__SC_HOST_NAME_MAX)
4944 #ifdef _SC_HOST_NAME_MAX
4945                 {*r = _SC_HOST_NAME_MAX; return 0;}
4946 #else /* def _SC_HOST_NAME_MAX */
4947                 {errno = EINVAL; return -1;}
4948 #endif /* ndef _SC_HOST_NAME_MAX */
4949         if (x == Mono_Posix_SysconfName__SC_INT_MAX)
4950 #ifdef _SC_INT_MAX
4951                 {*r = _SC_INT_MAX; return 0;}
4952 #else /* def _SC_INT_MAX */
4953                 {errno = EINVAL; return -1;}
4954 #endif /* ndef _SC_INT_MAX */
4955         if (x == Mono_Posix_SysconfName__SC_INT_MIN)
4956 #ifdef _SC_INT_MIN
4957                 {*r = _SC_INT_MIN; return 0;}
4958 #else /* def _SC_INT_MIN */
4959                 {errno = EINVAL; return -1;}
4960 #endif /* ndef _SC_INT_MIN */
4961         if (x == Mono_Posix_SysconfName__SC_IOV_MAX)
4962 #ifdef _SC_IOV_MAX
4963                 {*r = _SC_IOV_MAX; return 0;}
4964 #else /* def _SC_IOV_MAX */
4965                 {errno = EINVAL; return -1;}
4966 #endif /* ndef _SC_IOV_MAX */
4967         if (x == Mono_Posix_SysconfName__SC_JOB_CONTROL)
4968 #ifdef _SC_JOB_CONTROL
4969                 {*r = _SC_JOB_CONTROL; return 0;}
4970 #else /* def _SC_JOB_CONTROL */
4971                 {errno = EINVAL; return -1;}
4972 #endif /* ndef _SC_JOB_CONTROL */
4973         if (x == Mono_Posix_SysconfName__SC_LEVEL1_DCACHE_ASSOC)
4974 #ifdef _SC_LEVEL1_DCACHE_ASSOC
4975                 {*r = _SC_LEVEL1_DCACHE_ASSOC; return 0;}
4976 #else /* def _SC_LEVEL1_DCACHE_ASSOC */
4977                 {errno = EINVAL; return -1;}
4978 #endif /* ndef _SC_LEVEL1_DCACHE_ASSOC */
4979         if (x == Mono_Posix_SysconfName__SC_LEVEL1_DCACHE_LINESIZE)
4980 #ifdef _SC_LEVEL1_DCACHE_LINESIZE
4981                 {*r = _SC_LEVEL1_DCACHE_LINESIZE; return 0;}
4982 #else /* def _SC_LEVEL1_DCACHE_LINESIZE */
4983                 {errno = EINVAL; return -1;}
4984 #endif /* ndef _SC_LEVEL1_DCACHE_LINESIZE */
4985         if (x == Mono_Posix_SysconfName__SC_LEVEL1_DCACHE_SIZE)
4986 #ifdef _SC_LEVEL1_DCACHE_SIZE
4987                 {*r = _SC_LEVEL1_DCACHE_SIZE; return 0;}
4988 #else /* def _SC_LEVEL1_DCACHE_SIZE */
4989                 {errno = EINVAL; return -1;}
4990 #endif /* ndef _SC_LEVEL1_DCACHE_SIZE */
4991         if (x == Mono_Posix_SysconfName__SC_LEVEL1_ICACHE_ASSOC)
4992 #ifdef _SC_LEVEL1_ICACHE_ASSOC
4993                 {*r = _SC_LEVEL1_ICACHE_ASSOC; return 0;}
4994 #else /* def _SC_LEVEL1_ICACHE_ASSOC */
4995                 {errno = EINVAL; return -1;}
4996 #endif /* ndef _SC_LEVEL1_ICACHE_ASSOC */
4997         if (x == Mono_Posix_SysconfName__SC_LEVEL1_ICACHE_LINESIZE)
4998 #ifdef _SC_LEVEL1_ICACHE_LINESIZE
4999                 {*r = _SC_LEVEL1_ICACHE_LINESIZE; return 0;}
5000 #else /* def _SC_LEVEL1_ICACHE_LINESIZE */
5001                 {errno = EINVAL; return -1;}
5002 #endif /* ndef _SC_LEVEL1_ICACHE_LINESIZE */
5003         if (x == Mono_Posix_SysconfName__SC_LEVEL1_ICACHE_SIZE)
5004 #ifdef _SC_LEVEL1_ICACHE_SIZE
5005                 {*r = _SC_LEVEL1_ICACHE_SIZE; return 0;}
5006 #else /* def _SC_LEVEL1_ICACHE_SIZE */
5007                 {errno = EINVAL; return -1;}
5008 #endif /* ndef _SC_LEVEL1_ICACHE_SIZE */
5009         if (x == Mono_Posix_SysconfName__SC_LEVEL2_CACHE_ASSOC)
5010 #ifdef _SC_LEVEL2_CACHE_ASSOC
5011                 {*r = _SC_LEVEL2_CACHE_ASSOC; return 0;}
5012 #else /* def _SC_LEVEL2_CACHE_ASSOC */
5013                 {errno = EINVAL; return -1;}
5014 #endif /* ndef _SC_LEVEL2_CACHE_ASSOC */
5015         if (x == Mono_Posix_SysconfName__SC_LEVEL2_CACHE_LINESIZE)
5016 #ifdef _SC_LEVEL2_CACHE_LINESIZE
5017                 {*r = _SC_LEVEL2_CACHE_LINESIZE; return 0;}
5018 #else /* def _SC_LEVEL2_CACHE_LINESIZE */
5019                 {errno = EINVAL; return -1;}
5020 #endif /* ndef _SC_LEVEL2_CACHE_LINESIZE */
5021         if (x == Mono_Posix_SysconfName__SC_LEVEL2_CACHE_SIZE)
5022 #ifdef _SC_LEVEL2_CACHE_SIZE
5023                 {*r = _SC_LEVEL2_CACHE_SIZE; return 0;}
5024 #else /* def _SC_LEVEL2_CACHE_SIZE */
5025                 {errno = EINVAL; return -1;}
5026 #endif /* ndef _SC_LEVEL2_CACHE_SIZE */
5027         if (x == Mono_Posix_SysconfName__SC_LEVEL3_CACHE_ASSOC)
5028 #ifdef _SC_LEVEL3_CACHE_ASSOC
5029                 {*r = _SC_LEVEL3_CACHE_ASSOC; return 0;}
5030 #else /* def _SC_LEVEL3_CACHE_ASSOC */
5031                 {errno = EINVAL; return -1;}
5032 #endif /* ndef _SC_LEVEL3_CACHE_ASSOC */
5033         if (x == Mono_Posix_SysconfName__SC_LEVEL3_CACHE_LINESIZE)
5034 #ifdef _SC_LEVEL3_CACHE_LINESIZE
5035                 {*r = _SC_LEVEL3_CACHE_LINESIZE; return 0;}
5036 #else /* def _SC_LEVEL3_CACHE_LINESIZE */
5037                 {errno = EINVAL; return -1;}
5038 #endif /* ndef _SC_LEVEL3_CACHE_LINESIZE */
5039         if (x == Mono_Posix_SysconfName__SC_LEVEL3_CACHE_SIZE)
5040 #ifdef _SC_LEVEL3_CACHE_SIZE
5041                 {*r = _SC_LEVEL3_CACHE_SIZE; return 0;}
5042 #else /* def _SC_LEVEL3_CACHE_SIZE */
5043                 {errno = EINVAL; return -1;}
5044 #endif /* ndef _SC_LEVEL3_CACHE_SIZE */
5045         if (x == Mono_Posix_SysconfName__SC_LEVEL4_CACHE_ASSOC)
5046 #ifdef _SC_LEVEL4_CACHE_ASSOC
5047                 {*r = _SC_LEVEL4_CACHE_ASSOC; return 0;}
5048 #else /* def _SC_LEVEL4_CACHE_ASSOC */
5049                 {errno = EINVAL; return -1;}
5050 #endif /* ndef _SC_LEVEL4_CACHE_ASSOC */
5051         if (x == Mono_Posix_SysconfName__SC_LEVEL4_CACHE_LINESIZE)
5052 #ifdef _SC_LEVEL4_CACHE_LINESIZE
5053                 {*r = _SC_LEVEL4_CACHE_LINESIZE; return 0;}
5054 #else /* def _SC_LEVEL4_CACHE_LINESIZE */
5055                 {errno = EINVAL; return -1;}
5056 #endif /* ndef _SC_LEVEL4_CACHE_LINESIZE */
5057         if (x == Mono_Posix_SysconfName__SC_LEVEL4_CACHE_SIZE)
5058 #ifdef _SC_LEVEL4_CACHE_SIZE
5059                 {*r = _SC_LEVEL4_CACHE_SIZE; return 0;}
5060 #else /* def _SC_LEVEL4_CACHE_SIZE */
5061                 {errno = EINVAL; return -1;}
5062 #endif /* ndef _SC_LEVEL4_CACHE_SIZE */
5063         if (x == Mono_Posix_SysconfName__SC_LINE_MAX)
5064 #ifdef _SC_LINE_MAX
5065                 {*r = _SC_LINE_MAX; return 0;}
5066 #else /* def _SC_LINE_MAX */
5067                 {errno = EINVAL; return -1;}
5068 #endif /* ndef _SC_LINE_MAX */
5069         if (x == Mono_Posix_SysconfName__SC_LOGIN_NAME_MAX)
5070 #ifdef _SC_LOGIN_NAME_MAX
5071                 {*r = _SC_LOGIN_NAME_MAX; return 0;}
5072 #else /* def _SC_LOGIN_NAME_MAX */
5073                 {errno = EINVAL; return -1;}
5074 #endif /* ndef _SC_LOGIN_NAME_MAX */
5075         if (x == Mono_Posix_SysconfName__SC_LONG_BIT)
5076 #ifdef _SC_LONG_BIT
5077                 {*r = _SC_LONG_BIT; return 0;}
5078 #else /* def _SC_LONG_BIT */
5079                 {errno = EINVAL; return -1;}
5080 #endif /* ndef _SC_LONG_BIT */
5081         if (x == Mono_Posix_SysconfName__SC_MAPPED_FILES)
5082 #ifdef _SC_MAPPED_FILES
5083                 {*r = _SC_MAPPED_FILES; return 0;}
5084 #else /* def _SC_MAPPED_FILES */
5085                 {errno = EINVAL; return -1;}
5086 #endif /* ndef _SC_MAPPED_FILES */
5087         if (x == Mono_Posix_SysconfName__SC_MB_LEN_MAX)
5088 #ifdef _SC_MB_LEN_MAX
5089                 {*r = _SC_MB_LEN_MAX; return 0;}
5090 #else /* def _SC_MB_LEN_MAX */
5091                 {errno = EINVAL; return -1;}
5092 #endif /* ndef _SC_MB_LEN_MAX */
5093         if (x == Mono_Posix_SysconfName__SC_MEMLOCK)
5094 #ifdef _SC_MEMLOCK
5095                 {*r = _SC_MEMLOCK; return 0;}
5096 #else /* def _SC_MEMLOCK */
5097                 {errno = EINVAL; return -1;}
5098 #endif /* ndef _SC_MEMLOCK */
5099         if (x == Mono_Posix_SysconfName__SC_MEMLOCK_RANGE)
5100 #ifdef _SC_MEMLOCK_RANGE
5101                 {*r = _SC_MEMLOCK_RANGE; return 0;}
5102 #else /* def _SC_MEMLOCK_RANGE */
5103                 {errno = EINVAL; return -1;}
5104 #endif /* ndef _SC_MEMLOCK_RANGE */
5105         if (x == Mono_Posix_SysconfName__SC_MEMORY_PROTECTION)
5106 #ifdef _SC_MEMORY_PROTECTION
5107                 {*r = _SC_MEMORY_PROTECTION; return 0;}
5108 #else /* def _SC_MEMORY_PROTECTION */
5109                 {errno = EINVAL; return -1;}
5110 #endif /* ndef _SC_MEMORY_PROTECTION */
5111         if (x == Mono_Posix_SysconfName__SC_MESSAGE_PASSING)
5112 #ifdef _SC_MESSAGE_PASSING
5113                 {*r = _SC_MESSAGE_PASSING; return 0;}
5114 #else /* def _SC_MESSAGE_PASSING */
5115                 {errno = EINVAL; return -1;}
5116 #endif /* ndef _SC_MESSAGE_PASSING */
5117         if (x == Mono_Posix_SysconfName__SC_MONOTONIC_CLOCK)
5118 #ifdef _SC_MONOTONIC_CLOCK
5119                 {*r = _SC_MONOTONIC_CLOCK; return 0;}
5120 #else /* def _SC_MONOTONIC_CLOCK */
5121                 {errno = EINVAL; return -1;}
5122 #endif /* ndef _SC_MONOTONIC_CLOCK */
5123         if (x == Mono_Posix_SysconfName__SC_MQ_OPEN_MAX)
5124 #ifdef _SC_MQ_OPEN_MAX
5125                 {*r = _SC_MQ_OPEN_MAX; return 0;}
5126 #else /* def _SC_MQ_OPEN_MAX */
5127                 {errno = EINVAL; return -1;}
5128 #endif /* ndef _SC_MQ_OPEN_MAX */
5129         if (x == Mono_Posix_SysconfName__SC_MQ_PRIO_MAX)
5130 #ifdef _SC_MQ_PRIO_MAX
5131                 {*r = _SC_MQ_PRIO_MAX; return 0;}
5132 #else /* def _SC_MQ_PRIO_MAX */
5133                 {errno = EINVAL; return -1;}
5134 #endif /* ndef _SC_MQ_PRIO_MAX */
5135         if (x == Mono_Posix_SysconfName__SC_MULTI_PROCESS)
5136 #ifdef _SC_MULTI_PROCESS
5137                 {*r = _SC_MULTI_PROCESS; return 0;}
5138 #else /* def _SC_MULTI_PROCESS */
5139                 {errno = EINVAL; return -1;}
5140 #endif /* ndef _SC_MULTI_PROCESS */
5141         if (x == Mono_Posix_SysconfName__SC_NETWORKING)
5142 #ifdef _SC_NETWORKING
5143                 {*r = _SC_NETWORKING; return 0;}
5144 #else /* def _SC_NETWORKING */
5145                 {errno = EINVAL; return -1;}
5146 #endif /* ndef _SC_NETWORKING */
5147         if (x == Mono_Posix_SysconfName__SC_NGROUPS_MAX)
5148 #ifdef _SC_NGROUPS_MAX
5149                 {*r = _SC_NGROUPS_MAX; return 0;}
5150 #else /* def _SC_NGROUPS_MAX */
5151                 {errno = EINVAL; return -1;}
5152 #endif /* ndef _SC_NGROUPS_MAX */
5153         if (x == Mono_Posix_SysconfName__SC_NL_ARGMAX)
5154 #ifdef _SC_NL_ARGMAX
5155                 {*r = _SC_NL_ARGMAX; return 0;}
5156 #else /* def _SC_NL_ARGMAX */
5157                 {errno = EINVAL; return -1;}
5158 #endif /* ndef _SC_NL_ARGMAX */
5159         if (x == Mono_Posix_SysconfName__SC_NL_LANGMAX)
5160 #ifdef _SC_NL_LANGMAX
5161                 {*r = _SC_NL_LANGMAX; return 0;}
5162 #else /* def _SC_NL_LANGMAX */
5163                 {errno = EINVAL; return -1;}
5164 #endif /* ndef _SC_NL_LANGMAX */
5165         if (x == Mono_Posix_SysconfName__SC_NL_MSGMAX)
5166 #ifdef _SC_NL_MSGMAX
5167                 {*r = _SC_NL_MSGMAX; return 0;}
5168 #else /* def _SC_NL_MSGMAX */
5169                 {errno = EINVAL; return -1;}
5170 #endif /* ndef _SC_NL_MSGMAX */
5171         if (x == Mono_Posix_SysconfName__SC_NL_NMAX)
5172 #ifdef _SC_NL_NMAX
5173                 {*r = _SC_NL_NMAX; return 0;}
5174 #else /* def _SC_NL_NMAX */
5175                 {errno = EINVAL; return -1;}
5176 #endif /* ndef _SC_NL_NMAX */
5177         if (x == Mono_Posix_SysconfName__SC_NL_SETMAX)
5178 #ifdef _SC_NL_SETMAX
5179                 {*r = _SC_NL_SETMAX; return 0;}
5180 #else /* def _SC_NL_SETMAX */
5181                 {errno = EINVAL; return -1;}
5182 #endif /* ndef _SC_NL_SETMAX */
5183         if (x == Mono_Posix_SysconfName__SC_NL_TEXTMAX)
5184 #ifdef _SC_NL_TEXTMAX
5185                 {*r = _SC_NL_TEXTMAX; return 0;}
5186 #else /* def _SC_NL_TEXTMAX */
5187                 {errno = EINVAL; return -1;}
5188 #endif /* ndef _SC_NL_TEXTMAX */
5189         if (x == Mono_Posix_SysconfName__SC_NPROCESSORS_CONF)
5190 #ifdef _SC_NPROCESSORS_CONF
5191                 {*r = _SC_NPROCESSORS_CONF; return 0;}
5192 #else /* def _SC_NPROCESSORS_CONF */
5193                 {errno = EINVAL; return -1;}
5194 #endif /* ndef _SC_NPROCESSORS_CONF */
5195         if (x == Mono_Posix_SysconfName__SC_NPROCESSORS_ONLN)
5196 #ifdef _SC_NPROCESSORS_ONLN
5197                 {*r = _SC_NPROCESSORS_ONLN; return 0;}
5198 #else /* def _SC_NPROCESSORS_ONLN */
5199                 {errno = EINVAL; return -1;}
5200 #endif /* ndef _SC_NPROCESSORS_ONLN */
5201         if (x == Mono_Posix_SysconfName__SC_NZERO)
5202 #ifdef _SC_NZERO
5203                 {*r = _SC_NZERO; return 0;}
5204 #else /* def _SC_NZERO */
5205                 {errno = EINVAL; return -1;}
5206 #endif /* ndef _SC_NZERO */
5207         if (x == Mono_Posix_SysconfName__SC_OPEN_MAX)
5208 #ifdef _SC_OPEN_MAX
5209                 {*r = _SC_OPEN_MAX; return 0;}
5210 #else /* def _SC_OPEN_MAX */
5211                 {errno = EINVAL; return -1;}
5212 #endif /* ndef _SC_OPEN_MAX */
5213         if (x == Mono_Posix_SysconfName__SC_PAGESIZE)
5214 #ifdef _SC_PAGESIZE
5215                 {*r = _SC_PAGESIZE; return 0;}
5216 #else /* def _SC_PAGESIZE */
5217                 {errno = EINVAL; return -1;}
5218 #endif /* ndef _SC_PAGESIZE */
5219         if (x == Mono_Posix_SysconfName__SC_PASS_MAX)
5220 #ifdef _SC_PASS_MAX
5221                 {*r = _SC_PASS_MAX; return 0;}
5222 #else /* def _SC_PASS_MAX */
5223                 {errno = EINVAL; return -1;}
5224 #endif /* ndef _SC_PASS_MAX */
5225         if (x == Mono_Posix_SysconfName__SC_PHYS_PAGES)
5226 #ifdef _SC_PHYS_PAGES
5227                 {*r = _SC_PHYS_PAGES; return 0;}
5228 #else /* def _SC_PHYS_PAGES */
5229                 {errno = EINVAL; return -1;}
5230 #endif /* ndef _SC_PHYS_PAGES */
5231         if (x == Mono_Posix_SysconfName__SC_PII)
5232 #ifdef _SC_PII
5233                 {*r = _SC_PII; return 0;}
5234 #else /* def _SC_PII */
5235                 {errno = EINVAL; return -1;}
5236 #endif /* ndef _SC_PII */
5237         if (x == Mono_Posix_SysconfName__SC_PII_INTERNET)
5238 #ifdef _SC_PII_INTERNET
5239                 {*r = _SC_PII_INTERNET; return 0;}
5240 #else /* def _SC_PII_INTERNET */
5241                 {errno = EINVAL; return -1;}
5242 #endif /* ndef _SC_PII_INTERNET */
5243         if (x == Mono_Posix_SysconfName__SC_PII_INTERNET_DGRAM)
5244 #ifdef _SC_PII_INTERNET_DGRAM
5245                 {*r = _SC_PII_INTERNET_DGRAM; return 0;}
5246 #else /* def _SC_PII_INTERNET_DGRAM */
5247                 {errno = EINVAL; return -1;}
5248 #endif /* ndef _SC_PII_INTERNET_DGRAM */
5249         if (x == Mono_Posix_SysconfName__SC_PII_INTERNET_STREAM)
5250 #ifdef _SC_PII_INTERNET_STREAM
5251                 {*r = _SC_PII_INTERNET_STREAM; return 0;}
5252 #else /* def _SC_PII_INTERNET_STREAM */
5253                 {errno = EINVAL; return -1;}
5254 #endif /* ndef _SC_PII_INTERNET_STREAM */
5255         if (x == Mono_Posix_SysconfName__SC_PII_OSI)
5256 #ifdef _SC_PII_OSI
5257                 {*r = _SC_PII_OSI; return 0;}
5258 #else /* def _SC_PII_OSI */
5259                 {errno = EINVAL; return -1;}
5260 #endif /* ndef _SC_PII_OSI */
5261         if (x == Mono_Posix_SysconfName__SC_PII_OSI_CLTS)
5262 #ifdef _SC_PII_OSI_CLTS
5263                 {*r = _SC_PII_OSI_CLTS; return 0;}
5264 #else /* def _SC_PII_OSI_CLTS */
5265                 {errno = EINVAL; return -1;}
5266 #endif /* ndef _SC_PII_OSI_CLTS */
5267         if (x == Mono_Posix_SysconfName__SC_PII_OSI_COTS)
5268 #ifdef _SC_PII_OSI_COTS
5269                 {*r = _SC_PII_OSI_COTS; return 0;}
5270 #else /* def _SC_PII_OSI_COTS */
5271                 {errno = EINVAL; return -1;}
5272 #endif /* ndef _SC_PII_OSI_COTS */
5273         if (x == Mono_Posix_SysconfName__SC_PII_OSI_M)
5274 #ifdef _SC_PII_OSI_M
5275                 {*r = _SC_PII_OSI_M; return 0;}
5276 #else /* def _SC_PII_OSI_M */
5277                 {errno = EINVAL; return -1;}
5278 #endif /* ndef _SC_PII_OSI_M */
5279         if (x == Mono_Posix_SysconfName__SC_PII_SOCKET)
5280 #ifdef _SC_PII_SOCKET
5281                 {*r = _SC_PII_SOCKET; return 0;}
5282 #else /* def _SC_PII_SOCKET */
5283                 {errno = EINVAL; return -1;}
5284 #endif /* ndef _SC_PII_SOCKET */
5285         if (x == Mono_Posix_SysconfName__SC_PII_XTI)
5286 #ifdef _SC_PII_XTI
5287                 {*r = _SC_PII_XTI; return 0;}
5288 #else /* def _SC_PII_XTI */
5289                 {errno = EINVAL; return -1;}
5290 #endif /* ndef _SC_PII_XTI */
5291         if (x == Mono_Posix_SysconfName__SC_PIPE)
5292 #ifdef _SC_PIPE
5293                 {*r = _SC_PIPE; return 0;}
5294 #else /* def _SC_PIPE */
5295                 {errno = EINVAL; return -1;}
5296 #endif /* ndef _SC_PIPE */
5297         if (x == Mono_Posix_SysconfName__SC_POLL)
5298 #ifdef _SC_POLL
5299                 {*r = _SC_POLL; return 0;}
5300 #else /* def _SC_POLL */
5301                 {errno = EINVAL; return -1;}
5302 #endif /* ndef _SC_POLL */
5303         if (x == Mono_Posix_SysconfName__SC_PRIORITIZED_IO)
5304 #ifdef _SC_PRIORITIZED_IO
5305                 {*r = _SC_PRIORITIZED_IO; return 0;}
5306 #else /* def _SC_PRIORITIZED_IO */
5307                 {errno = EINVAL; return -1;}
5308 #endif /* ndef _SC_PRIORITIZED_IO */
5309         if (x == Mono_Posix_SysconfName__SC_PRIORITY_SCHEDULING)
5310 #ifdef _SC_PRIORITY_SCHEDULING
5311                 {*r = _SC_PRIORITY_SCHEDULING; return 0;}
5312 #else /* def _SC_PRIORITY_SCHEDULING */
5313                 {errno = EINVAL; return -1;}
5314 #endif /* ndef _SC_PRIORITY_SCHEDULING */
5315         if (x == Mono_Posix_SysconfName__SC_READER_WRITER_LOCKS)
5316 #ifdef _SC_READER_WRITER_LOCKS
5317                 {*r = _SC_READER_WRITER_LOCKS; return 0;}
5318 #else /* def _SC_READER_WRITER_LOCKS */
5319                 {errno = EINVAL; return -1;}
5320 #endif /* ndef _SC_READER_WRITER_LOCKS */
5321         if (x == Mono_Posix_SysconfName__SC_REALTIME_SIGNALS)
5322 #ifdef _SC_REALTIME_SIGNALS
5323                 {*r = _SC_REALTIME_SIGNALS; return 0;}
5324 #else /* def _SC_REALTIME_SIGNALS */
5325                 {errno = EINVAL; return -1;}
5326 #endif /* ndef _SC_REALTIME_SIGNALS */
5327         if (x == Mono_Posix_SysconfName__SC_REGEXP)
5328 #ifdef _SC_REGEXP
5329                 {*r = _SC_REGEXP; return 0;}
5330 #else /* def _SC_REGEXP */
5331                 {errno = EINVAL; return -1;}
5332 #endif /* ndef _SC_REGEXP */
5333         if (x == Mono_Posix_SysconfName__SC_REGEX_VERSION)
5334 #ifdef _SC_REGEX_VERSION
5335                 {*r = _SC_REGEX_VERSION; return 0;}
5336 #else /* def _SC_REGEX_VERSION */
5337                 {errno = EINVAL; return -1;}
5338 #endif /* ndef _SC_REGEX_VERSION */
5339         if (x == Mono_Posix_SysconfName__SC_RE_DUP_MAX)
5340 #ifdef _SC_RE_DUP_MAX
5341                 {*r = _SC_RE_DUP_MAX; return 0;}
5342 #else /* def _SC_RE_DUP_MAX */
5343                 {errno = EINVAL; return -1;}
5344 #endif /* ndef _SC_RE_DUP_MAX */
5345         if (x == Mono_Posix_SysconfName__SC_RTSIG_MAX)
5346 #ifdef _SC_RTSIG_MAX
5347                 {*r = _SC_RTSIG_MAX; return 0;}
5348 #else /* def _SC_RTSIG_MAX */
5349                 {errno = EINVAL; return -1;}
5350 #endif /* ndef _SC_RTSIG_MAX */
5351         if (x == Mono_Posix_SysconfName__SC_SAVED_IDS)
5352 #ifdef _SC_SAVED_IDS
5353                 {*r = _SC_SAVED_IDS; return 0;}
5354 #else /* def _SC_SAVED_IDS */
5355                 {errno = EINVAL; return -1;}
5356 #endif /* ndef _SC_SAVED_IDS */
5357         if (x == Mono_Posix_SysconfName__SC_SCHAR_MAX)
5358 #ifdef _SC_SCHAR_MAX
5359                 {*r = _SC_SCHAR_MAX; return 0;}
5360 #else /* def _SC_SCHAR_MAX */
5361                 {errno = EINVAL; return -1;}
5362 #endif /* ndef _SC_SCHAR_MAX */
5363         if (x == Mono_Posix_SysconfName__SC_SCHAR_MIN)
5364 #ifdef _SC_SCHAR_MIN
5365                 {*r = _SC_SCHAR_MIN; return 0;}
5366 #else /* def _SC_SCHAR_MIN */
5367                 {errno = EINVAL; return -1;}
5368 #endif /* ndef _SC_SCHAR_MIN */
5369         if (x == Mono_Posix_SysconfName__SC_SELECT)
5370 #ifdef _SC_SELECT
5371                 {*r = _SC_SELECT; return 0;}
5372 #else /* def _SC_SELECT */
5373                 {errno = EINVAL; return -1;}
5374 #endif /* ndef _SC_SELECT */
5375         if (x == Mono_Posix_SysconfName__SC_SEMAPHORES)
5376 #ifdef _SC_SEMAPHORES
5377                 {*r = _SC_SEMAPHORES; return 0;}
5378 #else /* def _SC_SEMAPHORES */
5379                 {errno = EINVAL; return -1;}
5380 #endif /* ndef _SC_SEMAPHORES */
5381         if (x == Mono_Posix_SysconfName__SC_SEM_NSEMS_MAX)
5382 #ifdef _SC_SEM_NSEMS_MAX
5383                 {*r = _SC_SEM_NSEMS_MAX; return 0;}
5384 #else /* def _SC_SEM_NSEMS_MAX */
5385                 {errno = EINVAL; return -1;}
5386 #endif /* ndef _SC_SEM_NSEMS_MAX */
5387         if (x == Mono_Posix_SysconfName__SC_SEM_VALUE_MAX)
5388 #ifdef _SC_SEM_VALUE_MAX
5389                 {*r = _SC_SEM_VALUE_MAX; return 0;}
5390 #else /* def _SC_SEM_VALUE_MAX */
5391                 {errno = EINVAL; return -1;}
5392 #endif /* ndef _SC_SEM_VALUE_MAX */
5393         if (x == Mono_Posix_SysconfName__SC_SHARED_MEMORY_OBJECTS)
5394 #ifdef _SC_SHARED_MEMORY_OBJECTS
5395                 {*r = _SC_SHARED_MEMORY_OBJECTS; return 0;}
5396 #else /* def _SC_SHARED_MEMORY_OBJECTS */
5397                 {errno = EINVAL; return -1;}
5398 #endif /* ndef _SC_SHARED_MEMORY_OBJECTS */
5399         if (x == Mono_Posix_SysconfName__SC_SHELL)
5400 #ifdef _SC_SHELL
5401                 {*r = _SC_SHELL; return 0;}
5402 #else /* def _SC_SHELL */
5403                 {errno = EINVAL; return -1;}
5404 #endif /* ndef _SC_SHELL */
5405         if (x == Mono_Posix_SysconfName__SC_SHRT_MAX)
5406 #ifdef _SC_SHRT_MAX
5407                 {*r = _SC_SHRT_MAX; return 0;}
5408 #else /* def _SC_SHRT_MAX */
5409                 {errno = EINVAL; return -1;}
5410 #endif /* ndef _SC_SHRT_MAX */
5411         if (x == Mono_Posix_SysconfName__SC_SHRT_MIN)
5412 #ifdef _SC_SHRT_MIN
5413                 {*r = _SC_SHRT_MIN; return 0;}
5414 #else /* def _SC_SHRT_MIN */
5415                 {errno = EINVAL; return -1;}
5416 #endif /* ndef _SC_SHRT_MIN */
5417         if (x == Mono_Posix_SysconfName__SC_SIGNALS)
5418 #ifdef _SC_SIGNALS
5419                 {*r = _SC_SIGNALS; return 0;}
5420 #else /* def _SC_SIGNALS */
5421                 {errno = EINVAL; return -1;}
5422 #endif /* ndef _SC_SIGNALS */
5423         if (x == Mono_Posix_SysconfName__SC_SIGQUEUE_MAX)
5424 #ifdef _SC_SIGQUEUE_MAX
5425                 {*r = _SC_SIGQUEUE_MAX; return 0;}
5426 #else /* def _SC_SIGQUEUE_MAX */
5427                 {errno = EINVAL; return -1;}
5428 #endif /* ndef _SC_SIGQUEUE_MAX */
5429         if (x == Mono_Posix_SysconfName__SC_SINGLE_PROCESS)
5430 #ifdef _SC_SINGLE_PROCESS
5431                 {*r = _SC_SINGLE_PROCESS; return 0;}
5432 #else /* def _SC_SINGLE_PROCESS */
5433                 {errno = EINVAL; return -1;}
5434 #endif /* ndef _SC_SINGLE_PROCESS */
5435         if (x == Mono_Posix_SysconfName__SC_SPAWN)
5436 #ifdef _SC_SPAWN
5437                 {*r = _SC_SPAWN; return 0;}
5438 #else /* def _SC_SPAWN */
5439                 {errno = EINVAL; return -1;}
5440 #endif /* ndef _SC_SPAWN */
5441         if (x == Mono_Posix_SysconfName__SC_SPIN_LOCKS)
5442 #ifdef _SC_SPIN_LOCKS
5443                 {*r = _SC_SPIN_LOCKS; return 0;}
5444 #else /* def _SC_SPIN_LOCKS */
5445                 {errno = EINVAL; return -1;}
5446 #endif /* ndef _SC_SPIN_LOCKS */
5447         if (x == Mono_Posix_SysconfName__SC_SPORADIC_SERVER)
5448 #ifdef _SC_SPORADIC_SERVER
5449                 {*r = _SC_SPORADIC_SERVER; return 0;}
5450 #else /* def _SC_SPORADIC_SERVER */
5451                 {errno = EINVAL; return -1;}
5452 #endif /* ndef _SC_SPORADIC_SERVER */
5453         if (x == Mono_Posix_SysconfName__SC_SSIZE_MAX)
5454 #ifdef _SC_SSIZE_MAX
5455                 {*r = _SC_SSIZE_MAX; return 0;}
5456 #else /* def _SC_SSIZE_MAX */
5457                 {errno = EINVAL; return -1;}
5458 #endif /* ndef _SC_SSIZE_MAX */
5459         if (x == Mono_Posix_SysconfName__SC_STREAMS)
5460 #ifdef _SC_STREAMS
5461                 {*r = _SC_STREAMS; return 0;}
5462 #else /* def _SC_STREAMS */
5463                 {errno = EINVAL; return -1;}
5464 #endif /* ndef _SC_STREAMS */
5465         if (x == Mono_Posix_SysconfName__SC_STREAM_MAX)
5466 #ifdef _SC_STREAM_MAX
5467                 {*r = _SC_STREAM_MAX; return 0;}
5468 #else /* def _SC_STREAM_MAX */
5469                 {errno = EINVAL; return -1;}
5470 #endif /* ndef _SC_STREAM_MAX */
5471         if (x == Mono_Posix_SysconfName__SC_SYMLOOP_MAX)
5472 #ifdef _SC_SYMLOOP_MAX
5473                 {*r = _SC_SYMLOOP_MAX; return 0;}
5474 #else /* def _SC_SYMLOOP_MAX */
5475                 {errno = EINVAL; return -1;}
5476 #endif /* ndef _SC_SYMLOOP_MAX */
5477         if (x == Mono_Posix_SysconfName__SC_SYNCHRONIZED_IO)
5478 #ifdef _SC_SYNCHRONIZED_IO
5479                 {*r = _SC_SYNCHRONIZED_IO; return 0;}
5480 #else /* def _SC_SYNCHRONIZED_IO */
5481                 {errno = EINVAL; return -1;}
5482 #endif /* ndef _SC_SYNCHRONIZED_IO */
5483         if (x == Mono_Posix_SysconfName__SC_SYSTEM_DATABASE)
5484 #ifdef _SC_SYSTEM_DATABASE
5485                 {*r = _SC_SYSTEM_DATABASE; return 0;}
5486 #else /* def _SC_SYSTEM_DATABASE */
5487                 {errno = EINVAL; return -1;}
5488 #endif /* ndef _SC_SYSTEM_DATABASE */
5489         if (x == Mono_Posix_SysconfName__SC_SYSTEM_DATABASE_R)
5490 #ifdef _SC_SYSTEM_DATABASE_R
5491                 {*r = _SC_SYSTEM_DATABASE_R; return 0;}
5492 #else /* def _SC_SYSTEM_DATABASE_R */
5493                 {errno = EINVAL; return -1;}
5494 #endif /* ndef _SC_SYSTEM_DATABASE_R */
5495         if (x == Mono_Posix_SysconfName__SC_THREADS)
5496 #ifdef _SC_THREADS
5497                 {*r = _SC_THREADS; return 0;}
5498 #else /* def _SC_THREADS */
5499                 {errno = EINVAL; return -1;}
5500 #endif /* ndef _SC_THREADS */
5501         if (x == Mono_Posix_SysconfName__SC_THREAD_ATTR_STACKADDR)
5502 #ifdef _SC_THREAD_ATTR_STACKADDR
5503                 {*r = _SC_THREAD_ATTR_STACKADDR; return 0;}
5504 #else /* def _SC_THREAD_ATTR_STACKADDR */
5505                 {errno = EINVAL; return -1;}
5506 #endif /* ndef _SC_THREAD_ATTR_STACKADDR */
5507         if (x == Mono_Posix_SysconfName__SC_THREAD_ATTR_STACKSIZE)
5508 #ifdef _SC_THREAD_ATTR_STACKSIZE
5509                 {*r = _SC_THREAD_ATTR_STACKSIZE; return 0;}
5510 #else /* def _SC_THREAD_ATTR_STACKSIZE */
5511                 {errno = EINVAL; return -1;}
5512 #endif /* ndef _SC_THREAD_ATTR_STACKSIZE */
5513         if (x == Mono_Posix_SysconfName__SC_THREAD_CPUTIME)
5514 #ifdef _SC_THREAD_CPUTIME
5515                 {*r = _SC_THREAD_CPUTIME; return 0;}
5516 #else /* def _SC_THREAD_CPUTIME */
5517                 {errno = EINVAL; return -1;}
5518 #endif /* ndef _SC_THREAD_CPUTIME */
5519         if (x == Mono_Posix_SysconfName__SC_THREAD_DESTRUCTOR_ITERATIONS)
5520 #ifdef _SC_THREAD_DESTRUCTOR_ITERATIONS
5521                 {*r = _SC_THREAD_DESTRUCTOR_ITERATIONS; return 0;}
5522 #else /* def _SC_THREAD_DESTRUCTOR_ITERATIONS */
5523                 {errno = EINVAL; return -1;}
5524 #endif /* ndef _SC_THREAD_DESTRUCTOR_ITERATIONS */
5525         if (x == Mono_Posix_SysconfName__SC_THREAD_KEYS_MAX)
5526 #ifdef _SC_THREAD_KEYS_MAX
5527                 {*r = _SC_THREAD_KEYS_MAX; return 0;}
5528 #else /* def _SC_THREAD_KEYS_MAX */
5529                 {errno = EINVAL; return -1;}
5530 #endif /* ndef _SC_THREAD_KEYS_MAX */
5531         if (x == Mono_Posix_SysconfName__SC_THREAD_PRIORITY_SCHEDULING)
5532 #ifdef _SC_THREAD_PRIORITY_SCHEDULING
5533                 {*r = _SC_THREAD_PRIORITY_SCHEDULING; return 0;}
5534 #else /* def _SC_THREAD_PRIORITY_SCHEDULING */
5535                 {errno = EINVAL; return -1;}
5536 #endif /* ndef _SC_THREAD_PRIORITY_SCHEDULING */
5537         if (x == Mono_Posix_SysconfName__SC_THREAD_PRIO_INHERIT)
5538 #ifdef _SC_THREAD_PRIO_INHERIT
5539                 {*r = _SC_THREAD_PRIO_INHERIT; return 0;}
5540 #else /* def _SC_THREAD_PRIO_INHERIT */
5541                 {errno = EINVAL; return -1;}
5542 #endif /* ndef _SC_THREAD_PRIO_INHERIT */
5543         if (x == Mono_Posix_SysconfName__SC_THREAD_PRIO_PROTECT)
5544 #ifdef _SC_THREAD_PRIO_PROTECT
5545                 {*r = _SC_THREAD_PRIO_PROTECT; return 0;}
5546 #else /* def _SC_THREAD_PRIO_PROTECT */
5547                 {errno = EINVAL; return -1;}
5548 #endif /* ndef _SC_THREAD_PRIO_PROTECT */
5549         if (x == Mono_Posix_SysconfName__SC_THREAD_PROCESS_SHARED)
5550 #ifdef _SC_THREAD_PROCESS_SHARED
5551                 {*r = _SC_THREAD_PROCESS_SHARED; return 0;}
5552 #else /* def _SC_THREAD_PROCESS_SHARED */
5553                 {errno = EINVAL; return -1;}
5554 #endif /* ndef _SC_THREAD_PROCESS_SHARED */
5555         if (x == Mono_Posix_SysconfName__SC_THREAD_SAFE_FUNCTIONS)
5556 #ifdef _SC_THREAD_SAFE_FUNCTIONS
5557                 {*r = _SC_THREAD_SAFE_FUNCTIONS; return 0;}
5558 #else /* def _SC_THREAD_SAFE_FUNCTIONS */
5559                 {errno = EINVAL; return -1;}
5560 #endif /* ndef _SC_THREAD_SAFE_FUNCTIONS */
5561         if (x == Mono_Posix_SysconfName__SC_THREAD_SPORADIC_SERVER)
5562 #ifdef _SC_THREAD_SPORADIC_SERVER
5563                 {*r = _SC_THREAD_SPORADIC_SERVER; return 0;}
5564 #else /* def _SC_THREAD_SPORADIC_SERVER */
5565                 {errno = EINVAL; return -1;}
5566 #endif /* ndef _SC_THREAD_SPORADIC_SERVER */
5567         if (x == Mono_Posix_SysconfName__SC_THREAD_STACK_MIN)
5568 #ifdef _SC_THREAD_STACK_MIN
5569                 {*r = _SC_THREAD_STACK_MIN; return 0;}
5570 #else /* def _SC_THREAD_STACK_MIN */
5571                 {errno = EINVAL; return -1;}
5572 #endif /* ndef _SC_THREAD_STACK_MIN */
5573         if (x == Mono_Posix_SysconfName__SC_THREAD_THREADS_MAX)
5574 #ifdef _SC_THREAD_THREADS_MAX
5575                 {*r = _SC_THREAD_THREADS_MAX; return 0;}
5576 #else /* def _SC_THREAD_THREADS_MAX */
5577                 {errno = EINVAL; return -1;}
5578 #endif /* ndef _SC_THREAD_THREADS_MAX */
5579         if (x == Mono_Posix_SysconfName__SC_TIMEOUTS)
5580 #ifdef _SC_TIMEOUTS
5581                 {*r = _SC_TIMEOUTS; return 0;}
5582 #else /* def _SC_TIMEOUTS */
5583                 {errno = EINVAL; return -1;}
5584 #endif /* ndef _SC_TIMEOUTS */
5585         if (x == Mono_Posix_SysconfName__SC_TIMERS)
5586 #ifdef _SC_TIMERS
5587                 {*r = _SC_TIMERS; return 0;}
5588 #else /* def _SC_TIMERS */
5589                 {errno = EINVAL; return -1;}
5590 #endif /* ndef _SC_TIMERS */
5591         if (x == Mono_Posix_SysconfName__SC_TIMER_MAX)
5592 #ifdef _SC_TIMER_MAX
5593                 {*r = _SC_TIMER_MAX; return 0;}
5594 #else /* def _SC_TIMER_MAX */
5595                 {errno = EINVAL; return -1;}
5596 #endif /* ndef _SC_TIMER_MAX */
5597         if (x == Mono_Posix_SysconfName__SC_TRACE)
5598 #ifdef _SC_TRACE
5599                 {*r = _SC_TRACE; return 0;}
5600 #else /* def _SC_TRACE */
5601                 {errno = EINVAL; return -1;}
5602 #endif /* ndef _SC_TRACE */
5603         if (x == Mono_Posix_SysconfName__SC_TRACE_EVENT_FILTER)
5604 #ifdef _SC_TRACE_EVENT_FILTER
5605                 {*r = _SC_TRACE_EVENT_FILTER; return 0;}
5606 #else /* def _SC_TRACE_EVENT_FILTER */
5607                 {errno = EINVAL; return -1;}
5608 #endif /* ndef _SC_TRACE_EVENT_FILTER */
5609         if (x == Mono_Posix_SysconfName__SC_TRACE_INHERIT)
5610 #ifdef _SC_TRACE_INHERIT
5611                 {*r = _SC_TRACE_INHERIT; return 0;}
5612 #else /* def _SC_TRACE_INHERIT */
5613                 {errno = EINVAL; return -1;}
5614 #endif /* ndef _SC_TRACE_INHERIT */
5615         if (x == Mono_Posix_SysconfName__SC_TRACE_LOG)
5616 #ifdef _SC_TRACE_LOG
5617                 {*r = _SC_TRACE_LOG; return 0;}
5618 #else /* def _SC_TRACE_LOG */
5619                 {errno = EINVAL; return -1;}
5620 #endif /* ndef _SC_TRACE_LOG */
5621         if (x == Mono_Posix_SysconfName__SC_TTY_NAME_MAX)
5622 #ifdef _SC_TTY_NAME_MAX
5623                 {*r = _SC_TTY_NAME_MAX; return 0;}
5624 #else /* def _SC_TTY_NAME_MAX */
5625                 {errno = EINVAL; return -1;}
5626 #endif /* ndef _SC_TTY_NAME_MAX */
5627         if (x == Mono_Posix_SysconfName__SC_TYPED_MEMORY_OBJECTS)
5628 #ifdef _SC_TYPED_MEMORY_OBJECTS
5629                 {*r = _SC_TYPED_MEMORY_OBJECTS; return 0;}
5630 #else /* def _SC_TYPED_MEMORY_OBJECTS */
5631                 {errno = EINVAL; return -1;}
5632 #endif /* ndef _SC_TYPED_MEMORY_OBJECTS */
5633         if (x == Mono_Posix_SysconfName__SC_TZNAME_MAX)
5634 #ifdef _SC_TZNAME_MAX
5635                 {*r = _SC_TZNAME_MAX; return 0;}
5636 #else /* def _SC_TZNAME_MAX */
5637                 {errno = EINVAL; return -1;}
5638 #endif /* ndef _SC_TZNAME_MAX */
5639         if (x == Mono_Posix_SysconfName__SC_T_IOV_MAX)
5640 #ifdef _SC_T_IOV_MAX
5641                 {*r = _SC_T_IOV_MAX; return 0;}
5642 #else /* def _SC_T_IOV_MAX */
5643                 {errno = EINVAL; return -1;}
5644 #endif /* ndef _SC_T_IOV_MAX */
5645         if (x == Mono_Posix_SysconfName__SC_UCHAR_MAX)
5646 #ifdef _SC_UCHAR_MAX
5647                 {*r = _SC_UCHAR_MAX; return 0;}
5648 #else /* def _SC_UCHAR_MAX */
5649                 {errno = EINVAL; return -1;}
5650 #endif /* ndef _SC_UCHAR_MAX */
5651         if (x == Mono_Posix_SysconfName__SC_UINT_MAX)
5652 #ifdef _SC_UINT_MAX
5653                 {*r = _SC_UINT_MAX; return 0;}
5654 #else /* def _SC_UINT_MAX */
5655                 {errno = EINVAL; return -1;}
5656 #endif /* ndef _SC_UINT_MAX */
5657         if (x == Mono_Posix_SysconfName__SC_UIO_MAXIOV)
5658 #ifdef _SC_UIO_MAXIOV
5659                 {*r = _SC_UIO_MAXIOV; return 0;}
5660 #else /* def _SC_UIO_MAXIOV */
5661                 {errno = EINVAL; return -1;}
5662 #endif /* ndef _SC_UIO_MAXIOV */
5663         if (x == Mono_Posix_SysconfName__SC_ULONG_MAX)
5664 #ifdef _SC_ULONG_MAX
5665                 {*r = _SC_ULONG_MAX; return 0;}
5666 #else /* def _SC_ULONG_MAX */
5667                 {errno = EINVAL; return -1;}
5668 #endif /* ndef _SC_ULONG_MAX */
5669         if (x == Mono_Posix_SysconfName__SC_USER_GROUPS)
5670 #ifdef _SC_USER_GROUPS
5671                 {*r = _SC_USER_GROUPS; return 0;}
5672 #else /* def _SC_USER_GROUPS */
5673                 {errno = EINVAL; return -1;}
5674 #endif /* ndef _SC_USER_GROUPS */
5675         if (x == Mono_Posix_SysconfName__SC_USER_GROUPS_R)
5676 #ifdef _SC_USER_GROUPS_R
5677                 {*r = _SC_USER_GROUPS_R; return 0;}
5678 #else /* def _SC_USER_GROUPS_R */
5679                 {errno = EINVAL; return -1;}
5680 #endif /* ndef _SC_USER_GROUPS_R */
5681         if (x == Mono_Posix_SysconfName__SC_USHRT_MAX)
5682 #ifdef _SC_USHRT_MAX
5683                 {*r = _SC_USHRT_MAX; return 0;}
5684 #else /* def _SC_USHRT_MAX */
5685                 {errno = EINVAL; return -1;}
5686 #endif /* ndef _SC_USHRT_MAX */
5687         if (x == Mono_Posix_SysconfName__SC_V6_ILP32_OFF32)
5688 #ifdef _SC_V6_ILP32_OFF32
5689                 {*r = _SC_V6_ILP32_OFF32; return 0;}
5690 #else /* def _SC_V6_ILP32_OFF32 */
5691                 {errno = EINVAL; return -1;}
5692 #endif /* ndef _SC_V6_ILP32_OFF32 */
5693         if (x == Mono_Posix_SysconfName__SC_V6_ILP32_OFFBIG)
5694 #ifdef _SC_V6_ILP32_OFFBIG
5695                 {*r = _SC_V6_ILP32_OFFBIG; return 0;}
5696 #else /* def _SC_V6_ILP32_OFFBIG */
5697                 {errno = EINVAL; return -1;}
5698 #endif /* ndef _SC_V6_ILP32_OFFBIG */
5699         if (x == Mono_Posix_SysconfName__SC_V6_LP64_OFF64)
5700 #ifdef _SC_V6_LP64_OFF64
5701                 {*r = _SC_V6_LP64_OFF64; return 0;}
5702 #else /* def _SC_V6_LP64_OFF64 */
5703                 {errno = EINVAL; return -1;}
5704 #endif /* ndef _SC_V6_LP64_OFF64 */
5705         if (x == Mono_Posix_SysconfName__SC_V6_LPBIG_OFFBIG)
5706 #ifdef _SC_V6_LPBIG_OFFBIG
5707                 {*r = _SC_V6_LPBIG_OFFBIG; return 0;}
5708 #else /* def _SC_V6_LPBIG_OFFBIG */
5709                 {errno = EINVAL; return -1;}
5710 #endif /* ndef _SC_V6_LPBIG_OFFBIG */
5711         if (x == Mono_Posix_SysconfName__SC_VERSION)
5712 #ifdef _SC_VERSION
5713                 {*r = _SC_VERSION; return 0;}
5714 #else /* def _SC_VERSION */
5715                 {errno = EINVAL; return -1;}
5716 #endif /* ndef _SC_VERSION */
5717         if (x == Mono_Posix_SysconfName__SC_WORD_BIT)
5718 #ifdef _SC_WORD_BIT
5719                 {*r = _SC_WORD_BIT; return 0;}
5720 #else /* def _SC_WORD_BIT */
5721                 {errno = EINVAL; return -1;}
5722 #endif /* ndef _SC_WORD_BIT */
5723         if (x == Mono_Posix_SysconfName__SC_XBS5_ILP32_OFF32)
5724 #ifdef _SC_XBS5_ILP32_OFF32
5725                 {*r = _SC_XBS5_ILP32_OFF32; return 0;}
5726 #else /* def _SC_XBS5_ILP32_OFF32 */
5727                 {errno = EINVAL; return -1;}
5728 #endif /* ndef _SC_XBS5_ILP32_OFF32 */
5729         if (x == Mono_Posix_SysconfName__SC_XBS5_ILP32_OFFBIG)
5730 #ifdef _SC_XBS5_ILP32_OFFBIG
5731                 {*r = _SC_XBS5_ILP32_OFFBIG; return 0;}
5732 #else /* def _SC_XBS5_ILP32_OFFBIG */
5733                 {errno = EINVAL; return -1;}
5734 #endif /* ndef _SC_XBS5_ILP32_OFFBIG */
5735         if (x == Mono_Posix_SysconfName__SC_XBS5_LP64_OFF64)
5736 #ifdef _SC_XBS5_LP64_OFF64
5737                 {*r = _SC_XBS5_LP64_OFF64; return 0;}
5738 #else /* def _SC_XBS5_LP64_OFF64 */
5739                 {errno = EINVAL; return -1;}
5740 #endif /* ndef _SC_XBS5_LP64_OFF64 */
5741         if (x == Mono_Posix_SysconfName__SC_XBS5_LPBIG_OFFBIG)
5742 #ifdef _SC_XBS5_LPBIG_OFFBIG
5743                 {*r = _SC_XBS5_LPBIG_OFFBIG; return 0;}
5744 #else /* def _SC_XBS5_LPBIG_OFFBIG */
5745                 {errno = EINVAL; return -1;}
5746 #endif /* ndef _SC_XBS5_LPBIG_OFFBIG */
5747         if (x == Mono_Posix_SysconfName__SC_XOPEN_CRYPT)
5748 #ifdef _SC_XOPEN_CRYPT
5749                 {*r = _SC_XOPEN_CRYPT; return 0;}
5750 #else /* def _SC_XOPEN_CRYPT */
5751                 {errno = EINVAL; return -1;}
5752 #endif /* ndef _SC_XOPEN_CRYPT */
5753         if (x == Mono_Posix_SysconfName__SC_XOPEN_ENH_I18N)
5754 #ifdef _SC_XOPEN_ENH_I18N
5755                 {*r = _SC_XOPEN_ENH_I18N; return 0;}
5756 #else /* def _SC_XOPEN_ENH_I18N */
5757                 {errno = EINVAL; return -1;}
5758 #endif /* ndef _SC_XOPEN_ENH_I18N */
5759         if (x == Mono_Posix_SysconfName__SC_XOPEN_LEGACY)
5760 #ifdef _SC_XOPEN_LEGACY
5761                 {*r = _SC_XOPEN_LEGACY; return 0;}
5762 #else /* def _SC_XOPEN_LEGACY */
5763                 {errno = EINVAL; return -1;}
5764 #endif /* ndef _SC_XOPEN_LEGACY */
5765         if (x == Mono_Posix_SysconfName__SC_XOPEN_REALTIME)
5766 #ifdef _SC_XOPEN_REALTIME
5767                 {*r = _SC_XOPEN_REALTIME; return 0;}
5768 #else /* def _SC_XOPEN_REALTIME */
5769                 {errno = EINVAL; return -1;}
5770 #endif /* ndef _SC_XOPEN_REALTIME */
5771         if (x == Mono_Posix_SysconfName__SC_XOPEN_REALTIME_THREADS)
5772 #ifdef _SC_XOPEN_REALTIME_THREADS
5773                 {*r = _SC_XOPEN_REALTIME_THREADS; return 0;}
5774 #else /* def _SC_XOPEN_REALTIME_THREADS */
5775                 {errno = EINVAL; return -1;}
5776 #endif /* ndef _SC_XOPEN_REALTIME_THREADS */
5777         if (x == Mono_Posix_SysconfName__SC_XOPEN_SHM)
5778 #ifdef _SC_XOPEN_SHM
5779                 {*r = _SC_XOPEN_SHM; return 0;}
5780 #else /* def _SC_XOPEN_SHM */
5781                 {errno = EINVAL; return -1;}
5782 #endif /* ndef _SC_XOPEN_SHM */
5783         if (x == Mono_Posix_SysconfName__SC_XOPEN_UNIX)
5784 #ifdef _SC_XOPEN_UNIX
5785                 {*r = _SC_XOPEN_UNIX; return 0;}
5786 #else /* def _SC_XOPEN_UNIX */
5787                 {errno = EINVAL; return -1;}
5788 #endif /* ndef _SC_XOPEN_UNIX */
5789         if (x == Mono_Posix_SysconfName__SC_XOPEN_VERSION)
5790 #ifdef _SC_XOPEN_VERSION
5791                 {*r = _SC_XOPEN_VERSION; return 0;}
5792 #else /* def _SC_XOPEN_VERSION */
5793                 {errno = EINVAL; return -1;}
5794 #endif /* ndef _SC_XOPEN_VERSION */
5795         if (x == Mono_Posix_SysconfName__SC_XOPEN_XCU_VERSION)
5796 #ifdef _SC_XOPEN_XCU_VERSION
5797                 {*r = _SC_XOPEN_XCU_VERSION; return 0;}
5798 #else /* def _SC_XOPEN_XCU_VERSION */
5799                 {errno = EINVAL; return -1;}
5800 #endif /* ndef _SC_XOPEN_XCU_VERSION */
5801         if (x == Mono_Posix_SysconfName__SC_XOPEN_XPG2)
5802 #ifdef _SC_XOPEN_XPG2
5803                 {*r = _SC_XOPEN_XPG2; return 0;}
5804 #else /* def _SC_XOPEN_XPG2 */
5805                 {errno = EINVAL; return -1;}
5806 #endif /* ndef _SC_XOPEN_XPG2 */
5807         if (x == Mono_Posix_SysconfName__SC_XOPEN_XPG3)
5808 #ifdef _SC_XOPEN_XPG3
5809                 {*r = _SC_XOPEN_XPG3; return 0;}
5810 #else /* def _SC_XOPEN_XPG3 */
5811                 {errno = EINVAL; return -1;}
5812 #endif /* ndef _SC_XOPEN_XPG3 */
5813         if (x == Mono_Posix_SysconfName__SC_XOPEN_XPG4)
5814 #ifdef _SC_XOPEN_XPG4
5815                 {*r = _SC_XOPEN_XPG4; return 0;}
5816 #else /* def _SC_XOPEN_XPG4 */
5817                 {errno = EINVAL; return -1;}
5818 #endif /* ndef _SC_XOPEN_XPG4 */
5819         if (x == 0)
5820                 return 0;
5821         errno = EINVAL; return -1;
5822 }
5823
5824 int Mono_Posix_ToSysconfName (int x, int *r)
5825 {
5826         *r = 0;
5827         if (x == 0)
5828                 return 0;
5829 #ifdef _SC_2_CHAR_TERM
5830         if (x == _SC_2_CHAR_TERM)
5831                 {*r = Mono_Posix_SysconfName__SC_2_CHAR_TERM; return 0;}
5832 #endif /* ndef _SC_2_CHAR_TERM */
5833 #ifdef _SC_2_C_BIND
5834         if (x == _SC_2_C_BIND)
5835                 {*r = Mono_Posix_SysconfName__SC_2_C_BIND; return 0;}
5836 #endif /* ndef _SC_2_C_BIND */
5837 #ifdef _SC_2_C_DEV
5838         if (x == _SC_2_C_DEV)
5839                 {*r = Mono_Posix_SysconfName__SC_2_C_DEV; return 0;}
5840 #endif /* ndef _SC_2_C_DEV */
5841 #ifdef _SC_2_C_VERSION
5842         if (x == _SC_2_C_VERSION)
5843                 {*r = Mono_Posix_SysconfName__SC_2_C_VERSION; return 0;}
5844 #endif /* ndef _SC_2_C_VERSION */
5845 #ifdef _SC_2_FORT_DEV
5846         if (x == _SC_2_FORT_DEV)
5847                 {*r = Mono_Posix_SysconfName__SC_2_FORT_DEV; return 0;}
5848 #endif /* ndef _SC_2_FORT_DEV */
5849 #ifdef _SC_2_FORT_RUN
5850         if (x == _SC_2_FORT_RUN)
5851                 {*r = Mono_Posix_SysconfName__SC_2_FORT_RUN; return 0;}
5852 #endif /* ndef _SC_2_FORT_RUN */
5853 #ifdef _SC_2_LOCALEDEF
5854         if (x == _SC_2_LOCALEDEF)
5855                 {*r = Mono_Posix_SysconfName__SC_2_LOCALEDEF; return 0;}
5856 #endif /* ndef _SC_2_LOCALEDEF */
5857 #ifdef _SC_2_PBS
5858         if (x == _SC_2_PBS)
5859                 {*r = Mono_Posix_SysconfName__SC_2_PBS; return 0;}
5860 #endif /* ndef _SC_2_PBS */
5861 #ifdef _SC_2_PBS_ACCOUNTING
5862         if (x == _SC_2_PBS_ACCOUNTING)
5863                 {*r = Mono_Posix_SysconfName__SC_2_PBS_ACCOUNTING; return 0;}
5864 #endif /* ndef _SC_2_PBS_ACCOUNTING */
5865 #ifdef _SC_2_PBS_CHECKPOINT
5866         if (x == _SC_2_PBS_CHECKPOINT)
5867                 {*r = Mono_Posix_SysconfName__SC_2_PBS_CHECKPOINT; return 0;}
5868 #endif /* ndef _SC_2_PBS_CHECKPOINT */
5869 #ifdef _SC_2_PBS_LOCATE
5870         if (x == _SC_2_PBS_LOCATE)
5871                 {*r = Mono_Posix_SysconfName__SC_2_PBS_LOCATE; return 0;}
5872 #endif /* ndef _SC_2_PBS_LOCATE */
5873 #ifdef _SC_2_PBS_MESSAGE
5874         if (x == _SC_2_PBS_MESSAGE)
5875                 {*r = Mono_Posix_SysconfName__SC_2_PBS_MESSAGE; return 0;}
5876 #endif /* ndef _SC_2_PBS_MESSAGE */
5877 #ifdef _SC_2_PBS_TRACK
5878         if (x == _SC_2_PBS_TRACK)
5879                 {*r = Mono_Posix_SysconfName__SC_2_PBS_TRACK; return 0;}
5880 #endif /* ndef _SC_2_PBS_TRACK */
5881 #ifdef _SC_2_SW_DEV
5882         if (x == _SC_2_SW_DEV)
5883                 {*r = Mono_Posix_SysconfName__SC_2_SW_DEV; return 0;}
5884 #endif /* ndef _SC_2_SW_DEV */
5885 #ifdef _SC_2_UPE
5886         if (x == _SC_2_UPE)
5887                 {*r = Mono_Posix_SysconfName__SC_2_UPE; return 0;}
5888 #endif /* ndef _SC_2_UPE */
5889 #ifdef _SC_2_VERSION
5890         if (x == _SC_2_VERSION)
5891                 {*r = Mono_Posix_SysconfName__SC_2_VERSION; return 0;}
5892 #endif /* ndef _SC_2_VERSION */
5893 #ifdef _SC_ADVISORY_INFO
5894         if (x == _SC_ADVISORY_INFO)
5895                 {*r = Mono_Posix_SysconfName__SC_ADVISORY_INFO; return 0;}
5896 #endif /* ndef _SC_ADVISORY_INFO */
5897 #ifdef _SC_AIO_LISTIO_MAX
5898         if (x == _SC_AIO_LISTIO_MAX)
5899                 {*r = Mono_Posix_SysconfName__SC_AIO_LISTIO_MAX; return 0;}
5900 #endif /* ndef _SC_AIO_LISTIO_MAX */
5901 #ifdef _SC_AIO_MAX
5902         if (x == _SC_AIO_MAX)
5903                 {*r = Mono_Posix_SysconfName__SC_AIO_MAX; return 0;}
5904 #endif /* ndef _SC_AIO_MAX */
5905 #ifdef _SC_AIO_PRIO_DELTA_MAX
5906         if (x == _SC_AIO_PRIO_DELTA_MAX)
5907                 {*r = Mono_Posix_SysconfName__SC_AIO_PRIO_DELTA_MAX; return 0;}
5908 #endif /* ndef _SC_AIO_PRIO_DELTA_MAX */
5909 #ifdef _SC_ARG_MAX
5910         if (x == _SC_ARG_MAX)
5911                 {*r = Mono_Posix_SysconfName__SC_ARG_MAX; return 0;}
5912 #endif /* ndef _SC_ARG_MAX */
5913 #ifdef _SC_ASYNCHRONOUS_IO
5914         if (x == _SC_ASYNCHRONOUS_IO)
5915                 {*r = Mono_Posix_SysconfName__SC_ASYNCHRONOUS_IO; return 0;}
5916 #endif /* ndef _SC_ASYNCHRONOUS_IO */
5917 #ifdef _SC_ATEXIT_MAX
5918         if (x == _SC_ATEXIT_MAX)
5919                 {*r = Mono_Posix_SysconfName__SC_ATEXIT_MAX; return 0;}
5920 #endif /* ndef _SC_ATEXIT_MAX */
5921 #ifdef _SC_AVPHYS_PAGES
5922         if (x == _SC_AVPHYS_PAGES)
5923                 {*r = Mono_Posix_SysconfName__SC_AVPHYS_PAGES; return 0;}
5924 #endif /* ndef _SC_AVPHYS_PAGES */
5925 #ifdef _SC_BARRIERS
5926         if (x == _SC_BARRIERS)
5927                 {*r = Mono_Posix_SysconfName__SC_BARRIERS; return 0;}
5928 #endif /* ndef _SC_BARRIERS */
5929 #ifdef _SC_BASE
5930         if (x == _SC_BASE)
5931                 {*r = Mono_Posix_SysconfName__SC_BASE; return 0;}
5932 #endif /* ndef _SC_BASE */
5933 #ifdef _SC_BC_BASE_MAX
5934         if (x == _SC_BC_BASE_MAX)
5935                 {*r = Mono_Posix_SysconfName__SC_BC_BASE_MAX; return 0;}
5936 #endif /* ndef _SC_BC_BASE_MAX */
5937 #ifdef _SC_BC_DIM_MAX
5938         if (x == _SC_BC_DIM_MAX)
5939                 {*r = Mono_Posix_SysconfName__SC_BC_DIM_MAX; return 0;}
5940 #endif /* ndef _SC_BC_DIM_MAX */
5941 #ifdef _SC_BC_SCALE_MAX
5942         if (x == _SC_BC_SCALE_MAX)
5943                 {*r = Mono_Posix_SysconfName__SC_BC_SCALE_MAX; return 0;}
5944 #endif /* ndef _SC_BC_SCALE_MAX */
5945 #ifdef _SC_BC_STRING_MAX
5946         if (x == _SC_BC_STRING_MAX)
5947                 {*r = Mono_Posix_SysconfName__SC_BC_STRING_MAX; return 0;}
5948 #endif /* ndef _SC_BC_STRING_MAX */
5949 #ifdef _SC_CHARCLASS_NAME_MAX
5950         if (x == _SC_CHARCLASS_NAME_MAX)
5951                 {*r = Mono_Posix_SysconfName__SC_CHARCLASS_NAME_MAX; return 0;}
5952 #endif /* ndef _SC_CHARCLASS_NAME_MAX */
5953 #ifdef _SC_CHAR_BIT
5954         if (x == _SC_CHAR_BIT)
5955                 {*r = Mono_Posix_SysconfName__SC_CHAR_BIT; return 0;}
5956 #endif /* ndef _SC_CHAR_BIT */
5957 #ifdef _SC_CHAR_MAX
5958         if (x == _SC_CHAR_MAX)
5959                 {*r = Mono_Posix_SysconfName__SC_CHAR_MAX; return 0;}
5960 #endif /* ndef _SC_CHAR_MAX */
5961 #ifdef _SC_CHAR_MIN
5962         if (x == _SC_CHAR_MIN)
5963                 {*r = Mono_Posix_SysconfName__SC_CHAR_MIN; return 0;}
5964 #endif /* ndef _SC_CHAR_MIN */
5965 #ifdef _SC_CHILD_MAX
5966         if (x == _SC_CHILD_MAX)
5967                 {*r = Mono_Posix_SysconfName__SC_CHILD_MAX; return 0;}
5968 #endif /* ndef _SC_CHILD_MAX */
5969 #ifdef _SC_CLK_TCK
5970         if (x == _SC_CLK_TCK)
5971                 {*r = Mono_Posix_SysconfName__SC_CLK_TCK; return 0;}
5972 #endif /* ndef _SC_CLK_TCK */
5973 #ifdef _SC_CLOCK_SELECTION
5974         if (x == _SC_CLOCK_SELECTION)
5975                 {*r = Mono_Posix_SysconfName__SC_CLOCK_SELECTION; return 0;}
5976 #endif /* ndef _SC_CLOCK_SELECTION */
5977 #ifdef _SC_COLL_WEIGHTS_MAX
5978         if (x == _SC_COLL_WEIGHTS_MAX)
5979                 {*r = Mono_Posix_SysconfName__SC_COLL_WEIGHTS_MAX; return 0;}
5980 #endif /* ndef _SC_COLL_WEIGHTS_MAX */
5981 #ifdef _SC_CPUTIME
5982         if (x == _SC_CPUTIME)
5983                 {*r = Mono_Posix_SysconfName__SC_CPUTIME; return 0;}
5984 #endif /* ndef _SC_CPUTIME */
5985 #ifdef _SC_C_LANG_SUPPORT
5986         if (x == _SC_C_LANG_SUPPORT)
5987                 {*r = Mono_Posix_SysconfName__SC_C_LANG_SUPPORT; return 0;}
5988 #endif /* ndef _SC_C_LANG_SUPPORT */
5989 #ifdef _SC_C_LANG_SUPPORT_R
5990         if (x == _SC_C_LANG_SUPPORT_R)
5991                 {*r = Mono_Posix_SysconfName__SC_C_LANG_SUPPORT_R; return 0;}
5992 #endif /* ndef _SC_C_LANG_SUPPORT_R */
5993 #ifdef _SC_DELAYTIMER_MAX
5994         if (x == _SC_DELAYTIMER_MAX)
5995                 {*r = Mono_Posix_SysconfName__SC_DELAYTIMER_MAX; return 0;}
5996 #endif /* ndef _SC_DELAYTIMER_MAX */
5997 #ifdef _SC_DEVICE_IO
5998         if (x == _SC_DEVICE_IO)
5999                 {*r = Mono_Posix_SysconfName__SC_DEVICE_IO; return 0;}
6000 #endif /* ndef _SC_DEVICE_IO */
6001 #ifdef _SC_DEVICE_SPECIFIC
6002         if (x == _SC_DEVICE_SPECIFIC)
6003                 {*r = Mono_Posix_SysconfName__SC_DEVICE_SPECIFIC; return 0;}
6004 #endif /* ndef _SC_DEVICE_SPECIFIC */
6005 #ifdef _SC_DEVICE_SPECIFIC_R
6006         if (x == _SC_DEVICE_SPECIFIC_R)
6007                 {*r = Mono_Posix_SysconfName__SC_DEVICE_SPECIFIC_R; return 0;}
6008 #endif /* ndef _SC_DEVICE_SPECIFIC_R */
6009 #ifdef _SC_EQUIV_CLASS_MAX
6010         if (x == _SC_EQUIV_CLASS_MAX)
6011                 {*r = Mono_Posix_SysconfName__SC_EQUIV_CLASS_MAX; return 0;}
6012 #endif /* ndef _SC_EQUIV_CLASS_MAX */
6013 #ifdef _SC_EXPR_NEST_MAX
6014         if (x == _SC_EXPR_NEST_MAX)
6015                 {*r = Mono_Posix_SysconfName__SC_EXPR_NEST_MAX; return 0;}
6016 #endif /* ndef _SC_EXPR_NEST_MAX */
6017 #ifdef _SC_FD_MGMT
6018         if (x == _SC_FD_MGMT)
6019                 {*r = Mono_Posix_SysconfName__SC_FD_MGMT; return 0;}
6020 #endif /* ndef _SC_FD_MGMT */
6021 #ifdef _SC_FIFO
6022         if (x == _SC_FIFO)
6023                 {*r = Mono_Posix_SysconfName__SC_FIFO; return 0;}
6024 #endif /* ndef _SC_FIFO */
6025 #ifdef _SC_FILE_ATTRIBUTES
6026         if (x == _SC_FILE_ATTRIBUTES)
6027                 {*r = Mono_Posix_SysconfName__SC_FILE_ATTRIBUTES; return 0;}
6028 #endif /* ndef _SC_FILE_ATTRIBUTES */
6029 #ifdef _SC_FILE_LOCKING
6030         if (x == _SC_FILE_LOCKING)
6031                 {*r = Mono_Posix_SysconfName__SC_FILE_LOCKING; return 0;}
6032 #endif /* ndef _SC_FILE_LOCKING */
6033 #ifdef _SC_FILE_SYSTEM
6034         if (x == _SC_FILE_SYSTEM)
6035                 {*r = Mono_Posix_SysconfName__SC_FILE_SYSTEM; return 0;}
6036 #endif /* ndef _SC_FILE_SYSTEM */
6037 #ifdef _SC_FSYNC
6038         if (x == _SC_FSYNC)
6039                 {*r = Mono_Posix_SysconfName__SC_FSYNC; return 0;}
6040 #endif /* ndef _SC_FSYNC */
6041 #ifdef _SC_GETGR_R_SIZE_MAX
6042         if (x == _SC_GETGR_R_SIZE_MAX)
6043                 {*r = Mono_Posix_SysconfName__SC_GETGR_R_SIZE_MAX; return 0;}
6044 #endif /* ndef _SC_GETGR_R_SIZE_MAX */
6045 #ifdef _SC_GETPW_R_SIZE_MAX
6046         if (x == _SC_GETPW_R_SIZE_MAX)
6047                 {*r = Mono_Posix_SysconfName__SC_GETPW_R_SIZE_MAX; return 0;}
6048 #endif /* ndef _SC_GETPW_R_SIZE_MAX */
6049 #ifdef _SC_HOST_NAME_MAX
6050         if (x == _SC_HOST_NAME_MAX)
6051                 {*r = Mono_Posix_SysconfName__SC_HOST_NAME_MAX; return 0;}
6052 #endif /* ndef _SC_HOST_NAME_MAX */
6053 #ifdef _SC_INT_MAX
6054         if (x == _SC_INT_MAX)
6055                 {*r = Mono_Posix_SysconfName__SC_INT_MAX; return 0;}
6056 #endif /* ndef _SC_INT_MAX */
6057 #ifdef _SC_INT_MIN
6058         if (x == _SC_INT_MIN)
6059                 {*r = Mono_Posix_SysconfName__SC_INT_MIN; return 0;}
6060 #endif /* ndef _SC_INT_MIN */
6061 #ifdef _SC_IOV_MAX
6062         if (x == _SC_IOV_MAX)
6063                 {*r = Mono_Posix_SysconfName__SC_IOV_MAX; return 0;}
6064 #endif /* ndef _SC_IOV_MAX */
6065 #ifdef _SC_JOB_CONTROL
6066         if (x == _SC_JOB_CONTROL)
6067                 {*r = Mono_Posix_SysconfName__SC_JOB_CONTROL; return 0;}
6068 #endif /* ndef _SC_JOB_CONTROL */
6069 #ifdef _SC_LEVEL1_DCACHE_ASSOC
6070         if (x == _SC_LEVEL1_DCACHE_ASSOC)
6071                 {*r = Mono_Posix_SysconfName__SC_LEVEL1_DCACHE_ASSOC; return 0;}
6072 #endif /* ndef _SC_LEVEL1_DCACHE_ASSOC */
6073 #ifdef _SC_LEVEL1_DCACHE_LINESIZE
6074         if (x == _SC_LEVEL1_DCACHE_LINESIZE)
6075                 {*r = Mono_Posix_SysconfName__SC_LEVEL1_DCACHE_LINESIZE; return 0;}
6076 #endif /* ndef _SC_LEVEL1_DCACHE_LINESIZE */
6077 #ifdef _SC_LEVEL1_DCACHE_SIZE
6078         if (x == _SC_LEVEL1_DCACHE_SIZE)
6079                 {*r = Mono_Posix_SysconfName__SC_LEVEL1_DCACHE_SIZE; return 0;}
6080 #endif /* ndef _SC_LEVEL1_DCACHE_SIZE */
6081 #ifdef _SC_LEVEL1_ICACHE_ASSOC
6082         if (x == _SC_LEVEL1_ICACHE_ASSOC)
6083                 {*r = Mono_Posix_SysconfName__SC_LEVEL1_ICACHE_ASSOC; return 0;}
6084 #endif /* ndef _SC_LEVEL1_ICACHE_ASSOC */
6085 #ifdef _SC_LEVEL1_ICACHE_LINESIZE
6086         if (x == _SC_LEVEL1_ICACHE_LINESIZE)
6087                 {*r = Mono_Posix_SysconfName__SC_LEVEL1_ICACHE_LINESIZE; return 0;}
6088 #endif /* ndef _SC_LEVEL1_ICACHE_LINESIZE */
6089 #ifdef _SC_LEVEL1_ICACHE_SIZE
6090         if (x == _SC_LEVEL1_ICACHE_SIZE)
6091                 {*r = Mono_Posix_SysconfName__SC_LEVEL1_ICACHE_SIZE; return 0;}
6092 #endif /* ndef _SC_LEVEL1_ICACHE_SIZE */
6093 #ifdef _SC_LEVEL2_CACHE_ASSOC
6094         if (x == _SC_LEVEL2_CACHE_ASSOC)
6095                 {*r = Mono_Posix_SysconfName__SC_LEVEL2_CACHE_ASSOC; return 0;}
6096 #endif /* ndef _SC_LEVEL2_CACHE_ASSOC */
6097 #ifdef _SC_LEVEL2_CACHE_LINESIZE
6098         if (x == _SC_LEVEL2_CACHE_LINESIZE)
6099                 {*r = Mono_Posix_SysconfName__SC_LEVEL2_CACHE_LINESIZE; return 0;}
6100 #endif /* ndef _SC_LEVEL2_CACHE_LINESIZE */
6101 #ifdef _SC_LEVEL2_CACHE_SIZE
6102         if (x == _SC_LEVEL2_CACHE_SIZE)
6103                 {*r = Mono_Posix_SysconfName__SC_LEVEL2_CACHE_SIZE; return 0;}
6104 #endif /* ndef _SC_LEVEL2_CACHE_SIZE */
6105 #ifdef _SC_LEVEL3_CACHE_ASSOC
6106         if (x == _SC_LEVEL3_CACHE_ASSOC)
6107                 {*r = Mono_Posix_SysconfName__SC_LEVEL3_CACHE_ASSOC; return 0;}
6108 #endif /* ndef _SC_LEVEL3_CACHE_ASSOC */
6109 #ifdef _SC_LEVEL3_CACHE_LINESIZE
6110         if (x == _SC_LEVEL3_CACHE_LINESIZE)
6111                 {*r = Mono_Posix_SysconfName__SC_LEVEL3_CACHE_LINESIZE; return 0;}
6112 #endif /* ndef _SC_LEVEL3_CACHE_LINESIZE */
6113 #ifdef _SC_LEVEL3_CACHE_SIZE
6114         if (x == _SC_LEVEL3_CACHE_SIZE)
6115                 {*r = Mono_Posix_SysconfName__SC_LEVEL3_CACHE_SIZE; return 0;}
6116 #endif /* ndef _SC_LEVEL3_CACHE_SIZE */
6117 #ifdef _SC_LEVEL4_CACHE_ASSOC
6118         if (x == _SC_LEVEL4_CACHE_ASSOC)
6119                 {*r = Mono_Posix_SysconfName__SC_LEVEL4_CACHE_ASSOC; return 0;}
6120 #endif /* ndef _SC_LEVEL4_CACHE_ASSOC */
6121 #ifdef _SC_LEVEL4_CACHE_LINESIZE
6122         if (x == _SC_LEVEL4_CACHE_LINESIZE)
6123                 {*r = Mono_Posix_SysconfName__SC_LEVEL4_CACHE_LINESIZE; return 0;}
6124 #endif /* ndef _SC_LEVEL4_CACHE_LINESIZE */
6125 #ifdef _SC_LEVEL4_CACHE_SIZE
6126         if (x == _SC_LEVEL4_CACHE_SIZE)
6127                 {*r = Mono_Posix_SysconfName__SC_LEVEL4_CACHE_SIZE; return 0;}
6128 #endif /* ndef _SC_LEVEL4_CACHE_SIZE */
6129 #ifdef _SC_LINE_MAX
6130         if (x == _SC_LINE_MAX)
6131                 {*r = Mono_Posix_SysconfName__SC_LINE_MAX; return 0;}
6132 #endif /* ndef _SC_LINE_MAX */
6133 #ifdef _SC_LOGIN_NAME_MAX
6134         if (x == _SC_LOGIN_NAME_MAX)
6135                 {*r = Mono_Posix_SysconfName__SC_LOGIN_NAME_MAX; return 0;}
6136 #endif /* ndef _SC_LOGIN_NAME_MAX */
6137 #ifdef _SC_LONG_BIT
6138         if (x == _SC_LONG_BIT)
6139                 {*r = Mono_Posix_SysconfName__SC_LONG_BIT; return 0;}
6140 #endif /* ndef _SC_LONG_BIT */
6141 #ifdef _SC_MAPPED_FILES
6142         if (x == _SC_MAPPED_FILES)
6143                 {*r = Mono_Posix_SysconfName__SC_MAPPED_FILES; return 0;}
6144 #endif /* ndef _SC_MAPPED_FILES */
6145 #ifdef _SC_MB_LEN_MAX
6146         if (x == _SC_MB_LEN_MAX)
6147                 {*r = Mono_Posix_SysconfName__SC_MB_LEN_MAX; return 0;}
6148 #endif /* ndef _SC_MB_LEN_MAX */
6149 #ifdef _SC_MEMLOCK
6150         if (x == _SC_MEMLOCK)
6151                 {*r = Mono_Posix_SysconfName__SC_MEMLOCK; return 0;}
6152 #endif /* ndef _SC_MEMLOCK */
6153 #ifdef _SC_MEMLOCK_RANGE
6154         if (x == _SC_MEMLOCK_RANGE)
6155                 {*r = Mono_Posix_SysconfName__SC_MEMLOCK_RANGE; return 0;}
6156 #endif /* ndef _SC_MEMLOCK_RANGE */
6157 #ifdef _SC_MEMORY_PROTECTION
6158         if (x == _SC_MEMORY_PROTECTION)
6159                 {*r = Mono_Posix_SysconfName__SC_MEMORY_PROTECTION; return 0;}
6160 #endif /* ndef _SC_MEMORY_PROTECTION */
6161 #ifdef _SC_MESSAGE_PASSING
6162         if (x == _SC_MESSAGE_PASSING)
6163                 {*r = Mono_Posix_SysconfName__SC_MESSAGE_PASSING; return 0;}
6164 #endif /* ndef _SC_MESSAGE_PASSING */
6165 #ifdef _SC_MONOTONIC_CLOCK
6166         if (x == _SC_MONOTONIC_CLOCK)
6167                 {*r = Mono_Posix_SysconfName__SC_MONOTONIC_CLOCK; return 0;}
6168 #endif /* ndef _SC_MONOTONIC_CLOCK */
6169 #ifdef _SC_MQ_OPEN_MAX
6170         if (x == _SC_MQ_OPEN_MAX)
6171                 {*r = Mono_Posix_SysconfName__SC_MQ_OPEN_MAX; return 0;}
6172 #endif /* ndef _SC_MQ_OPEN_MAX */
6173 #ifdef _SC_MQ_PRIO_MAX
6174         if (x == _SC_MQ_PRIO_MAX)
6175                 {*r = Mono_Posix_SysconfName__SC_MQ_PRIO_MAX; return 0;}
6176 #endif /* ndef _SC_MQ_PRIO_MAX */
6177 #ifdef _SC_MULTI_PROCESS
6178         if (x == _SC_MULTI_PROCESS)
6179                 {*r = Mono_Posix_SysconfName__SC_MULTI_PROCESS; return 0;}
6180 #endif /* ndef _SC_MULTI_PROCESS */
6181 #ifdef _SC_NETWORKING
6182         if (x == _SC_NETWORKING)
6183                 {*r = Mono_Posix_SysconfName__SC_NETWORKING; return 0;}
6184 #endif /* ndef _SC_NETWORKING */
6185 #ifdef _SC_NGROUPS_MAX
6186         if (x == _SC_NGROUPS_MAX)
6187                 {*r = Mono_Posix_SysconfName__SC_NGROUPS_MAX; return 0;}
6188 #endif /* ndef _SC_NGROUPS_MAX */
6189 #ifdef _SC_NL_ARGMAX
6190         if (x == _SC_NL_ARGMAX)
6191                 {*r = Mono_Posix_SysconfName__SC_NL_ARGMAX; return 0;}
6192 #endif /* ndef _SC_NL_ARGMAX */
6193 #ifdef _SC_NL_LANGMAX
6194         if (x == _SC_NL_LANGMAX)
6195                 {*r = Mono_Posix_SysconfName__SC_NL_LANGMAX; return 0;}
6196 #endif /* ndef _SC_NL_LANGMAX */
6197 #ifdef _SC_NL_MSGMAX
6198         if (x == _SC_NL_MSGMAX)
6199                 {*r = Mono_Posix_SysconfName__SC_NL_MSGMAX; return 0;}
6200 #endif /* ndef _SC_NL_MSGMAX */
6201 #ifdef _SC_NL_NMAX
6202         if (x == _SC_NL_NMAX)
6203                 {*r = Mono_Posix_SysconfName__SC_NL_NMAX; return 0;}
6204 #endif /* ndef _SC_NL_NMAX */
6205 #ifdef _SC_NL_SETMAX
6206         if (x == _SC_NL_SETMAX)
6207                 {*r = Mono_Posix_SysconfName__SC_NL_SETMAX; return 0;}
6208 #endif /* ndef _SC_NL_SETMAX */
6209 #ifdef _SC_NL_TEXTMAX
6210         if (x == _SC_NL_TEXTMAX)
6211                 {*r = Mono_Posix_SysconfName__SC_NL_TEXTMAX; return 0;}
6212 #endif /* ndef _SC_NL_TEXTMAX */
6213 #ifdef _SC_NPROCESSORS_CONF
6214         if (x == _SC_NPROCESSORS_CONF)
6215                 {*r = Mono_Posix_SysconfName__SC_NPROCESSORS_CONF; return 0;}
6216 #endif /* ndef _SC_NPROCESSORS_CONF */
6217 #ifdef _SC_NPROCESSORS_ONLN
6218         if (x == _SC_NPROCESSORS_ONLN)
6219                 {*r = Mono_Posix_SysconfName__SC_NPROCESSORS_ONLN; return 0;}
6220 #endif /* ndef _SC_NPROCESSORS_ONLN */
6221 #ifdef _SC_NZERO
6222         if (x == _SC_NZERO)
6223                 {*r = Mono_Posix_SysconfName__SC_NZERO; return 0;}
6224 #endif /* ndef _SC_NZERO */
6225 #ifdef _SC_OPEN_MAX
6226         if (x == _SC_OPEN_MAX)
6227                 {*r = Mono_Posix_SysconfName__SC_OPEN_MAX; return 0;}
6228 #endif /* ndef _SC_OPEN_MAX */
6229 #ifdef _SC_PAGESIZE
6230         if (x == _SC_PAGESIZE)
6231                 {*r = Mono_Posix_SysconfName__SC_PAGESIZE; return 0;}
6232 #endif /* ndef _SC_PAGESIZE */
6233 #ifdef _SC_PASS_MAX
6234         if (x == _SC_PASS_MAX)
6235                 {*r = Mono_Posix_SysconfName__SC_PASS_MAX; return 0;}
6236 #endif /* ndef _SC_PASS_MAX */
6237 #ifdef _SC_PHYS_PAGES
6238         if (x == _SC_PHYS_PAGES)
6239                 {*r = Mono_Posix_SysconfName__SC_PHYS_PAGES; return 0;}
6240 #endif /* ndef _SC_PHYS_PAGES */
6241 #ifdef _SC_PII
6242         if (x == _SC_PII)
6243                 {*r = Mono_Posix_SysconfName__SC_PII; return 0;}
6244 #endif /* ndef _SC_PII */
6245 #ifdef _SC_PII_INTERNET
6246         if (x == _SC_PII_INTERNET)
6247                 {*r = Mono_Posix_SysconfName__SC_PII_INTERNET; return 0;}
6248 #endif /* ndef _SC_PII_INTERNET */
6249 #ifdef _SC_PII_INTERNET_DGRAM
6250         if (x == _SC_PII_INTERNET_DGRAM)
6251                 {*r = Mono_Posix_SysconfName__SC_PII_INTERNET_DGRAM; return 0;}
6252 #endif /* ndef _SC_PII_INTERNET_DGRAM */
6253 #ifdef _SC_PII_INTERNET_STREAM
6254         if (x == _SC_PII_INTERNET_STREAM)
6255                 {*r = Mono_Posix_SysconfName__SC_PII_INTERNET_STREAM; return 0;}
6256 #endif /* ndef _SC_PII_INTERNET_STREAM */
6257 #ifdef _SC_PII_OSI
6258         if (x == _SC_PII_OSI)
6259                 {*r = Mono_Posix_SysconfName__SC_PII_OSI; return 0;}
6260 #endif /* ndef _SC_PII_OSI */
6261 #ifdef _SC_PII_OSI_CLTS
6262         if (x == _SC_PII_OSI_CLTS)
6263                 {*r = Mono_Posix_SysconfName__SC_PII_OSI_CLTS; return 0;}
6264 #endif /* ndef _SC_PII_OSI_CLTS */
6265 #ifdef _SC_PII_OSI_COTS
6266         if (x == _SC_PII_OSI_COTS)
6267                 {*r = Mono_Posix_SysconfName__SC_PII_OSI_COTS; return 0;}
6268 #endif /* ndef _SC_PII_OSI_COTS */
6269 #ifdef _SC_PII_OSI_M
6270         if (x == _SC_PII_OSI_M)
6271                 {*r = Mono_Posix_SysconfName__SC_PII_OSI_M; return 0;}
6272 #endif /* ndef _SC_PII_OSI_M */
6273 #ifdef _SC_PII_SOCKET
6274         if (x == _SC_PII_SOCKET)
6275                 {*r = Mono_Posix_SysconfName__SC_PII_SOCKET; return 0;}
6276 #endif /* ndef _SC_PII_SOCKET */
6277 #ifdef _SC_PII_XTI
6278         if (x == _SC_PII_XTI)
6279                 {*r = Mono_Posix_SysconfName__SC_PII_XTI; return 0;}
6280 #endif /* ndef _SC_PII_XTI */
6281 #ifdef _SC_PIPE
6282         if (x == _SC_PIPE)
6283                 {*r = Mono_Posix_SysconfName__SC_PIPE; return 0;}
6284 #endif /* ndef _SC_PIPE */
6285 #ifdef _SC_POLL
6286         if (x == _SC_POLL)
6287                 {*r = Mono_Posix_SysconfName__SC_POLL; return 0;}
6288 #endif /* ndef _SC_POLL */
6289 #ifdef _SC_PRIORITIZED_IO
6290         if (x == _SC_PRIORITIZED_IO)
6291                 {*r = Mono_Posix_SysconfName__SC_PRIORITIZED_IO; return 0;}
6292 #endif /* ndef _SC_PRIORITIZED_IO */
6293 #ifdef _SC_PRIORITY_SCHEDULING
6294         if (x == _SC_PRIORITY_SCHEDULING)
6295                 {*r = Mono_Posix_SysconfName__SC_PRIORITY_SCHEDULING; return 0;}
6296 #endif /* ndef _SC_PRIORITY_SCHEDULING */
6297 #ifdef _SC_READER_WRITER_LOCKS
6298         if (x == _SC_READER_WRITER_LOCKS)
6299                 {*r = Mono_Posix_SysconfName__SC_READER_WRITER_LOCKS; return 0;}
6300 #endif /* ndef _SC_READER_WRITER_LOCKS */
6301 #ifdef _SC_REALTIME_SIGNALS
6302         if (x == _SC_REALTIME_SIGNALS)
6303                 {*r = Mono_Posix_SysconfName__SC_REALTIME_SIGNALS; return 0;}
6304 #endif /* ndef _SC_REALTIME_SIGNALS */
6305 #ifdef _SC_REGEXP
6306         if (x == _SC_REGEXP)
6307                 {*r = Mono_Posix_SysconfName__SC_REGEXP; return 0;}
6308 #endif /* ndef _SC_REGEXP */
6309 #ifdef _SC_REGEX_VERSION
6310         if (x == _SC_REGEX_VERSION)
6311                 {*r = Mono_Posix_SysconfName__SC_REGEX_VERSION; return 0;}
6312 #endif /* ndef _SC_REGEX_VERSION */
6313 #ifdef _SC_RE_DUP_MAX
6314         if (x == _SC_RE_DUP_MAX)
6315                 {*r = Mono_Posix_SysconfName__SC_RE_DUP_MAX; return 0;}
6316 #endif /* ndef _SC_RE_DUP_MAX */
6317 #ifdef _SC_RTSIG_MAX
6318         if (x == _SC_RTSIG_MAX)
6319                 {*r = Mono_Posix_SysconfName__SC_RTSIG_MAX; return 0;}
6320 #endif /* ndef _SC_RTSIG_MAX */
6321 #ifdef _SC_SAVED_IDS
6322         if (x == _SC_SAVED_IDS)
6323                 {*r = Mono_Posix_SysconfName__SC_SAVED_IDS; return 0;}
6324 #endif /* ndef _SC_SAVED_IDS */
6325 #ifdef _SC_SCHAR_MAX
6326         if (x == _SC_SCHAR_MAX)
6327                 {*r = Mono_Posix_SysconfName__SC_SCHAR_MAX; return 0;}
6328 #endif /* ndef _SC_SCHAR_MAX */
6329 #ifdef _SC_SCHAR_MIN
6330         if (x == _SC_SCHAR_MIN)
6331                 {*r = Mono_Posix_SysconfName__SC_SCHAR_MIN; return 0;}
6332 #endif /* ndef _SC_SCHAR_MIN */
6333 #ifdef _SC_SELECT
6334         if (x == _SC_SELECT)
6335                 {*r = Mono_Posix_SysconfName__SC_SELECT; return 0;}
6336 #endif /* ndef _SC_SELECT */
6337 #ifdef _SC_SEMAPHORES
6338         if (x == _SC_SEMAPHORES)
6339                 {*r = Mono_Posix_SysconfName__SC_SEMAPHORES; return 0;}
6340 #endif /* ndef _SC_SEMAPHORES */
6341 #ifdef _SC_SEM_NSEMS_MAX
6342         if (x == _SC_SEM_NSEMS_MAX)
6343                 {*r = Mono_Posix_SysconfName__SC_SEM_NSEMS_MAX; return 0;}
6344 #endif /* ndef _SC_SEM_NSEMS_MAX */
6345 #ifdef _SC_SEM_VALUE_MAX
6346         if (x == _SC_SEM_VALUE_MAX)
6347                 {*r = Mono_Posix_SysconfName__SC_SEM_VALUE_MAX; return 0;}
6348 #endif /* ndef _SC_SEM_VALUE_MAX */
6349 #ifdef _SC_SHARED_MEMORY_OBJECTS
6350         if (x == _SC_SHARED_MEMORY_OBJECTS)
6351                 {*r = Mono_Posix_SysconfName__SC_SHARED_MEMORY_OBJECTS; return 0;}
6352 #endif /* ndef _SC_SHARED_MEMORY_OBJECTS */
6353 #ifdef _SC_SHELL
6354         if (x == _SC_SHELL)
6355                 {*r = Mono_Posix_SysconfName__SC_SHELL; return 0;}
6356 #endif /* ndef _SC_SHELL */
6357 #ifdef _SC_SHRT_MAX
6358         if (x == _SC_SHRT_MAX)
6359                 {*r = Mono_Posix_SysconfName__SC_SHRT_MAX; return 0;}
6360 #endif /* ndef _SC_SHRT_MAX */
6361 #ifdef _SC_SHRT_MIN
6362         if (x == _SC_SHRT_MIN)
6363                 {*r = Mono_Posix_SysconfName__SC_SHRT_MIN; return 0;}
6364 #endif /* ndef _SC_SHRT_MIN */
6365 #ifdef _SC_SIGNALS
6366         if (x == _SC_SIGNALS)
6367                 {*r = Mono_Posix_SysconfName__SC_SIGNALS; return 0;}
6368 #endif /* ndef _SC_SIGNALS */
6369 #ifdef _SC_SIGQUEUE_MAX
6370         if (x == _SC_SIGQUEUE_MAX)
6371                 {*r = Mono_Posix_SysconfName__SC_SIGQUEUE_MAX; return 0;}
6372 #endif /* ndef _SC_SIGQUEUE_MAX */
6373 #ifdef _SC_SINGLE_PROCESS
6374         if (x == _SC_SINGLE_PROCESS)
6375                 {*r = Mono_Posix_SysconfName__SC_SINGLE_PROCESS; return 0;}
6376 #endif /* ndef _SC_SINGLE_PROCESS */
6377 #ifdef _SC_SPAWN
6378         if (x == _SC_SPAWN)
6379                 {*r = Mono_Posix_SysconfName__SC_SPAWN; return 0;}
6380 #endif /* ndef _SC_SPAWN */
6381 #ifdef _SC_SPIN_LOCKS
6382         if (x == _SC_SPIN_LOCKS)
6383                 {*r = Mono_Posix_SysconfName__SC_SPIN_LOCKS; return 0;}
6384 #endif /* ndef _SC_SPIN_LOCKS */
6385 #ifdef _SC_SPORADIC_SERVER
6386         if (x == _SC_SPORADIC_SERVER)
6387                 {*r = Mono_Posix_SysconfName__SC_SPORADIC_SERVER; return 0;}
6388 #endif /* ndef _SC_SPORADIC_SERVER */
6389 #ifdef _SC_SSIZE_MAX
6390         if (x == _SC_SSIZE_MAX)
6391                 {*r = Mono_Posix_SysconfName__SC_SSIZE_MAX; return 0;}
6392 #endif /* ndef _SC_SSIZE_MAX */
6393 #ifdef _SC_STREAMS
6394         if (x == _SC_STREAMS)
6395                 {*r = Mono_Posix_SysconfName__SC_STREAMS; return 0;}
6396 #endif /* ndef _SC_STREAMS */
6397 #ifdef _SC_STREAM_MAX
6398         if (x == _SC_STREAM_MAX)
6399                 {*r = Mono_Posix_SysconfName__SC_STREAM_MAX; return 0;}
6400 #endif /* ndef _SC_STREAM_MAX */
6401 #ifdef _SC_SYMLOOP_MAX
6402         if (x == _SC_SYMLOOP_MAX)
6403                 {*r = Mono_Posix_SysconfName__SC_SYMLOOP_MAX; return 0;}
6404 #endif /* ndef _SC_SYMLOOP_MAX */
6405 #ifdef _SC_SYNCHRONIZED_IO
6406         if (x == _SC_SYNCHRONIZED_IO)
6407                 {*r = Mono_Posix_SysconfName__SC_SYNCHRONIZED_IO; return 0;}
6408 #endif /* ndef _SC_SYNCHRONIZED_IO */
6409 #ifdef _SC_SYSTEM_DATABASE
6410         if (x == _SC_SYSTEM_DATABASE)
6411                 {*r = Mono_Posix_SysconfName__SC_SYSTEM_DATABASE; return 0;}
6412 #endif /* ndef _SC_SYSTEM_DATABASE */
6413 #ifdef _SC_SYSTEM_DATABASE_R
6414         if (x == _SC_SYSTEM_DATABASE_R)
6415                 {*r = Mono_Posix_SysconfName__SC_SYSTEM_DATABASE_R; return 0;}
6416 #endif /* ndef _SC_SYSTEM_DATABASE_R */
6417 #ifdef _SC_THREADS
6418         if (x == _SC_THREADS)
6419                 {*r = Mono_Posix_SysconfName__SC_THREADS; return 0;}
6420 #endif /* ndef _SC_THREADS */
6421 #ifdef _SC_THREAD_ATTR_STACKADDR
6422         if (x == _SC_THREAD_ATTR_STACKADDR)
6423                 {*r = Mono_Posix_SysconfName__SC_THREAD_ATTR_STACKADDR; return 0;}
6424 #endif /* ndef _SC_THREAD_ATTR_STACKADDR */
6425 #ifdef _SC_THREAD_ATTR_STACKSIZE
6426         if (x == _SC_THREAD_ATTR_STACKSIZE)
6427                 {*r = Mono_Posix_SysconfName__SC_THREAD_ATTR_STACKSIZE; return 0;}
6428 #endif /* ndef _SC_THREAD_ATTR_STACKSIZE */
6429 #ifdef _SC_THREAD_CPUTIME
6430         if (x == _SC_THREAD_CPUTIME)
6431                 {*r = Mono_Posix_SysconfName__SC_THREAD_CPUTIME; return 0;}
6432 #endif /* ndef _SC_THREAD_CPUTIME */
6433 #ifdef _SC_THREAD_DESTRUCTOR_ITERATIONS
6434         if (x == _SC_THREAD_DESTRUCTOR_ITERATIONS)
6435                 {*r = Mono_Posix_SysconfName__SC_THREAD_DESTRUCTOR_ITERATIONS; return 0;}
6436 #endif /* ndef _SC_THREAD_DESTRUCTOR_ITERATIONS */
6437 #ifdef _SC_THREAD_KEYS_MAX
6438         if (x == _SC_THREAD_KEYS_MAX)
6439                 {*r = Mono_Posix_SysconfName__SC_THREAD_KEYS_MAX; return 0;}
6440 #endif /* ndef _SC_THREAD_KEYS_MAX */
6441 #ifdef _SC_THREAD_PRIORITY_SCHEDULING
6442         if (x == _SC_THREAD_PRIORITY_SCHEDULING)
6443                 {*r = Mono_Posix_SysconfName__SC_THREAD_PRIORITY_SCHEDULING; return 0;}
6444 #endif /* ndef _SC_THREAD_PRIORITY_SCHEDULING */
6445 #ifdef _SC_THREAD_PRIO_INHERIT
6446         if (x == _SC_THREAD_PRIO_INHERIT)
6447                 {*r = Mono_Posix_SysconfName__SC_THREAD_PRIO_INHERIT; return 0;}
6448 #endif /* ndef _SC_THREAD_PRIO_INHERIT */
6449 #ifdef _SC_THREAD_PRIO_PROTECT
6450         if (x == _SC_THREAD_PRIO_PROTECT)
6451                 {*r = Mono_Posix_SysconfName__SC_THREAD_PRIO_PROTECT; return 0;}
6452 #endif /* ndef _SC_THREAD_PRIO_PROTECT */
6453 #ifdef _SC_THREAD_PROCESS_SHARED
6454         if (x == _SC_THREAD_PROCESS_SHARED)
6455                 {*r = Mono_Posix_SysconfName__SC_THREAD_PROCESS_SHARED; return 0;}
6456 #endif /* ndef _SC_THREAD_PROCESS_SHARED */
6457 #ifdef _SC_THREAD_SAFE_FUNCTIONS
6458         if (x == _SC_THREAD_SAFE_FUNCTIONS)
6459                 {*r = Mono_Posix_SysconfName__SC_THREAD_SAFE_FUNCTIONS; return 0;}
6460 #endif /* ndef _SC_THREAD_SAFE_FUNCTIONS */
6461 #ifdef _SC_THREAD_SPORADIC_SERVER
6462         if (x == _SC_THREAD_SPORADIC_SERVER)
6463                 {*r = Mono_Posix_SysconfName__SC_THREAD_SPORADIC_SERVER; return 0;}
6464 #endif /* ndef _SC_THREAD_SPORADIC_SERVER */
6465 #ifdef _SC_THREAD_STACK_MIN
6466         if (x == _SC_THREAD_STACK_MIN)
6467                 {*r = Mono_Posix_SysconfName__SC_THREAD_STACK_MIN; return 0;}
6468 #endif /* ndef _SC_THREAD_STACK_MIN */
6469 #ifdef _SC_THREAD_THREADS_MAX
6470         if (x == _SC_THREAD_THREADS_MAX)
6471                 {*r = Mono_Posix_SysconfName__SC_THREAD_THREADS_MAX; return 0;}
6472 #endif /* ndef _SC_THREAD_THREADS_MAX */
6473 #ifdef _SC_TIMEOUTS
6474         if (x == _SC_TIMEOUTS)
6475                 {*r = Mono_Posix_SysconfName__SC_TIMEOUTS; return 0;}
6476 #endif /* ndef _SC_TIMEOUTS */
6477 #ifdef _SC_TIMERS
6478         if (x == _SC_TIMERS)
6479                 {*r = Mono_Posix_SysconfName__SC_TIMERS; return 0;}
6480 #endif /* ndef _SC_TIMERS */
6481 #ifdef _SC_TIMER_MAX
6482         if (x == _SC_TIMER_MAX)
6483                 {*r = Mono_Posix_SysconfName__SC_TIMER_MAX; return 0;}
6484 #endif /* ndef _SC_TIMER_MAX */
6485 #ifdef _SC_TRACE
6486         if (x == _SC_TRACE)
6487                 {*r = Mono_Posix_SysconfName__SC_TRACE; return 0;}
6488 #endif /* ndef _SC_TRACE */
6489 #ifdef _SC_TRACE_EVENT_FILTER
6490         if (x == _SC_TRACE_EVENT_FILTER)
6491                 {*r = Mono_Posix_SysconfName__SC_TRACE_EVENT_FILTER; return 0;}
6492 #endif /* ndef _SC_TRACE_EVENT_FILTER */
6493 #ifdef _SC_TRACE_INHERIT
6494         if (x == _SC_TRACE_INHERIT)
6495                 {*r = Mono_Posix_SysconfName__SC_TRACE_INHERIT; return 0;}
6496 #endif /* ndef _SC_TRACE_INHERIT */
6497 #ifdef _SC_TRACE_LOG
6498         if (x == _SC_TRACE_LOG)
6499                 {*r = Mono_Posix_SysconfName__SC_TRACE_LOG; return 0;}
6500 #endif /* ndef _SC_TRACE_LOG */
6501 #ifdef _SC_TTY_NAME_MAX
6502         if (x == _SC_TTY_NAME_MAX)
6503                 {*r = Mono_Posix_SysconfName__SC_TTY_NAME_MAX; return 0;}
6504 #endif /* ndef _SC_TTY_NAME_MAX */
6505 #ifdef _SC_TYPED_MEMORY_OBJECTS
6506         if (x == _SC_TYPED_MEMORY_OBJECTS)
6507                 {*r = Mono_Posix_SysconfName__SC_TYPED_MEMORY_OBJECTS; return 0;}
6508 #endif /* ndef _SC_TYPED_MEMORY_OBJECTS */
6509 #ifdef _SC_TZNAME_MAX
6510         if (x == _SC_TZNAME_MAX)
6511                 {*r = Mono_Posix_SysconfName__SC_TZNAME_MAX; return 0;}
6512 #endif /* ndef _SC_TZNAME_MAX */
6513 #ifdef _SC_T_IOV_MAX
6514         if (x == _SC_T_IOV_MAX)
6515                 {*r = Mono_Posix_SysconfName__SC_T_IOV_MAX; return 0;}
6516 #endif /* ndef _SC_T_IOV_MAX */
6517 #ifdef _SC_UCHAR_MAX
6518         if (x == _SC_UCHAR_MAX)
6519                 {*r = Mono_Posix_SysconfName__SC_UCHAR_MAX; return 0;}
6520 #endif /* ndef _SC_UCHAR_MAX */
6521 #ifdef _SC_UINT_MAX
6522         if (x == _SC_UINT_MAX)
6523                 {*r = Mono_Posix_SysconfName__SC_UINT_MAX; return 0;}
6524 #endif /* ndef _SC_UINT_MAX */
6525 #ifdef _SC_UIO_MAXIOV
6526         if (x == _SC_UIO_MAXIOV)
6527                 {*r = Mono_Posix_SysconfName__SC_UIO_MAXIOV; return 0;}
6528 #endif /* ndef _SC_UIO_MAXIOV */
6529 #ifdef _SC_ULONG_MAX
6530         if (x == _SC_ULONG_MAX)
6531                 {*r = Mono_Posix_SysconfName__SC_ULONG_MAX; return 0;}
6532 #endif /* ndef _SC_ULONG_MAX */
6533 #ifdef _SC_USER_GROUPS
6534         if (x == _SC_USER_GROUPS)
6535                 {*r = Mono_Posix_SysconfName__SC_USER_GROUPS; return 0;}
6536 #endif /* ndef _SC_USER_GROUPS */
6537 #ifdef _SC_USER_GROUPS_R
6538         if (x == _SC_USER_GROUPS_R)
6539                 {*r = Mono_Posix_SysconfName__SC_USER_GROUPS_R; return 0;}
6540 #endif /* ndef _SC_USER_GROUPS_R */
6541 #ifdef _SC_USHRT_MAX
6542         if (x == _SC_USHRT_MAX)
6543                 {*r = Mono_Posix_SysconfName__SC_USHRT_MAX; return 0;}
6544 #endif /* ndef _SC_USHRT_MAX */
6545 #ifdef _SC_V6_ILP32_OFF32
6546         if (x == _SC_V6_ILP32_OFF32)
6547                 {*r = Mono_Posix_SysconfName__SC_V6_ILP32_OFF32; return 0;}
6548 #endif /* ndef _SC_V6_ILP32_OFF32 */
6549 #ifdef _SC_V6_ILP32_OFFBIG
6550         if (x == _SC_V6_ILP32_OFFBIG)
6551                 {*r = Mono_Posix_SysconfName__SC_V6_ILP32_OFFBIG; return 0;}
6552 #endif /* ndef _SC_V6_ILP32_OFFBIG */
6553 #ifdef _SC_V6_LP64_OFF64
6554         if (x == _SC_V6_LP64_OFF64)
6555                 {*r = Mono_Posix_SysconfName__SC_V6_LP64_OFF64; return 0;}
6556 #endif /* ndef _SC_V6_LP64_OFF64 */
6557 #ifdef _SC_V6_LPBIG_OFFBIG
6558         if (x == _SC_V6_LPBIG_OFFBIG)
6559                 {*r = Mono_Posix_SysconfName__SC_V6_LPBIG_OFFBIG; return 0;}
6560 #endif /* ndef _SC_V6_LPBIG_OFFBIG */
6561 #ifdef _SC_VERSION
6562         if (x == _SC_VERSION)
6563                 {*r = Mono_Posix_SysconfName__SC_VERSION; return 0;}
6564 #endif /* ndef _SC_VERSION */
6565 #ifdef _SC_WORD_BIT
6566         if (x == _SC_WORD_BIT)
6567                 {*r = Mono_Posix_SysconfName__SC_WORD_BIT; return 0;}
6568 #endif /* ndef _SC_WORD_BIT */
6569 #ifdef _SC_XBS5_ILP32_OFF32
6570         if (x == _SC_XBS5_ILP32_OFF32)
6571                 {*r = Mono_Posix_SysconfName__SC_XBS5_ILP32_OFF32; return 0;}
6572 #endif /* ndef _SC_XBS5_ILP32_OFF32 */
6573 #ifdef _SC_XBS5_ILP32_OFFBIG
6574         if (x == _SC_XBS5_ILP32_OFFBIG)
6575                 {*r = Mono_Posix_SysconfName__SC_XBS5_ILP32_OFFBIG; return 0;}
6576 #endif /* ndef _SC_XBS5_ILP32_OFFBIG */
6577 #ifdef _SC_XBS5_LP64_OFF64
6578         if (x == _SC_XBS5_LP64_OFF64)
6579                 {*r = Mono_Posix_SysconfName__SC_XBS5_LP64_OFF64; return 0;}
6580 #endif /* ndef _SC_XBS5_LP64_OFF64 */
6581 #ifdef _SC_XBS5_LPBIG_OFFBIG
6582         if (x == _SC_XBS5_LPBIG_OFFBIG)
6583                 {*r = Mono_Posix_SysconfName__SC_XBS5_LPBIG_OFFBIG; return 0;}
6584 #endif /* ndef _SC_XBS5_LPBIG_OFFBIG */
6585 #ifdef _SC_XOPEN_CRYPT
6586         if (x == _SC_XOPEN_CRYPT)
6587                 {*r = Mono_Posix_SysconfName__SC_XOPEN_CRYPT; return 0;}
6588 #endif /* ndef _SC_XOPEN_CRYPT */
6589 #ifdef _SC_XOPEN_ENH_I18N
6590         if (x == _SC_XOPEN_ENH_I18N)
6591                 {*r = Mono_Posix_SysconfName__SC_XOPEN_ENH_I18N; return 0;}
6592 #endif /* ndef _SC_XOPEN_ENH_I18N */
6593 #ifdef _SC_XOPEN_LEGACY
6594         if (x == _SC_XOPEN_LEGACY)
6595                 {*r = Mono_Posix_SysconfName__SC_XOPEN_LEGACY; return 0;}
6596 #endif /* ndef _SC_XOPEN_LEGACY */
6597 #ifdef _SC_XOPEN_REALTIME
6598         if (x == _SC_XOPEN_REALTIME)
6599                 {*r = Mono_Posix_SysconfName__SC_XOPEN_REALTIME; return 0;}
6600 #endif /* ndef _SC_XOPEN_REALTIME */
6601 #ifdef _SC_XOPEN_REALTIME_THREADS
6602         if (x == _SC_XOPEN_REALTIME_THREADS)
6603                 {*r = Mono_Posix_SysconfName__SC_XOPEN_REALTIME_THREADS; return 0;}
6604 #endif /* ndef _SC_XOPEN_REALTIME_THREADS */
6605 #ifdef _SC_XOPEN_SHM
6606         if (x == _SC_XOPEN_SHM)
6607                 {*r = Mono_Posix_SysconfName__SC_XOPEN_SHM; return 0;}
6608 #endif /* ndef _SC_XOPEN_SHM */
6609 #ifdef _SC_XOPEN_UNIX
6610         if (x == _SC_XOPEN_UNIX)
6611                 {*r = Mono_Posix_SysconfName__SC_XOPEN_UNIX; return 0;}
6612 #endif /* ndef _SC_XOPEN_UNIX */
6613 #ifdef _SC_XOPEN_VERSION
6614         if (x == _SC_XOPEN_VERSION)
6615                 {*r = Mono_Posix_SysconfName__SC_XOPEN_VERSION; return 0;}
6616 #endif /* ndef _SC_XOPEN_VERSION */
6617 #ifdef _SC_XOPEN_XCU_VERSION
6618         if (x == _SC_XOPEN_XCU_VERSION)
6619                 {*r = Mono_Posix_SysconfName__SC_XOPEN_XCU_VERSION; return 0;}
6620 #endif /* ndef _SC_XOPEN_XCU_VERSION */
6621 #ifdef _SC_XOPEN_XPG2
6622         if (x == _SC_XOPEN_XPG2)
6623                 {*r = Mono_Posix_SysconfName__SC_XOPEN_XPG2; return 0;}
6624 #endif /* ndef _SC_XOPEN_XPG2 */
6625 #ifdef _SC_XOPEN_XPG3
6626         if (x == _SC_XOPEN_XPG3)
6627                 {*r = Mono_Posix_SysconfName__SC_XOPEN_XPG3; return 0;}
6628 #endif /* ndef _SC_XOPEN_XPG3 */
6629 #ifdef _SC_XOPEN_XPG4
6630         if (x == _SC_XOPEN_XPG4)
6631                 {*r = Mono_Posix_SysconfName__SC_XOPEN_XPG4; return 0;}
6632 #endif /* ndef _SC_XOPEN_XPG4 */
6633         errno = EINVAL; return -1;
6634 }
6635
6636 int Mono_Posix_FromSyslogFacility (int x, int *r)
6637 {
6638         *r = 0;
6639         if (x == Mono_Posix_SyslogFacility_LOG_AUTH)
6640 #ifdef LOG_AUTH
6641                 {*r = LOG_AUTH; return 0;}
6642 #else /* def LOG_AUTH */
6643                 {errno = EINVAL; return -1;}
6644 #endif /* ndef LOG_AUTH */
6645         if (x == Mono_Posix_SyslogFacility_LOG_AUTHPRIV)
6646 #ifdef LOG_AUTHPRIV
6647                 {*r = LOG_AUTHPRIV; return 0;}
6648 #else /* def LOG_AUTHPRIV */
6649                 {errno = EINVAL; return -1;}
6650 #endif /* ndef LOG_AUTHPRIV */
6651         if (x == Mono_Posix_SyslogFacility_LOG_CRON)
6652 #ifdef LOG_CRON
6653                 {*r = LOG_CRON; return 0;}
6654 #else /* def LOG_CRON */
6655                 {errno = EINVAL; return -1;}
6656 #endif /* ndef LOG_CRON */
6657         if (x == Mono_Posix_SyslogFacility_LOG_DAEMON)
6658 #ifdef LOG_DAEMON
6659                 {*r = LOG_DAEMON; return 0;}
6660 #else /* def LOG_DAEMON */
6661                 {errno = EINVAL; return -1;}
6662 #endif /* ndef LOG_DAEMON */
6663         if (x == Mono_Posix_SyslogFacility_LOG_FTP)
6664 #ifdef LOG_FTP
6665                 {*r = LOG_FTP; return 0;}
6666 #else /* def LOG_FTP */
6667                 {errno = EINVAL; return -1;}
6668 #endif /* ndef LOG_FTP */
6669         if (x == Mono_Posix_SyslogFacility_LOG_KERN)
6670 #ifdef LOG_KERN
6671                 {*r = LOG_KERN; return 0;}
6672 #else /* def LOG_KERN */
6673                 {errno = EINVAL; return -1;}
6674 #endif /* ndef LOG_KERN */
6675         if (x == Mono_Posix_SyslogFacility_LOG_LOCAL0)
6676 #ifdef LOG_LOCAL0
6677                 {*r = LOG_LOCAL0; return 0;}
6678 #else /* def LOG_LOCAL0 */
6679                 {errno = EINVAL; return -1;}
6680 #endif /* ndef LOG_LOCAL0 */
6681         if (x == Mono_Posix_SyslogFacility_LOG_LOCAL1)
6682 #ifdef LOG_LOCAL1
6683                 {*r = LOG_LOCAL1; return 0;}
6684 #else /* def LOG_LOCAL1 */
6685                 {errno = EINVAL; return -1;}
6686 #endif /* ndef LOG_LOCAL1 */
6687         if (x == Mono_Posix_SyslogFacility_LOG_LOCAL2)
6688 #ifdef LOG_LOCAL2
6689                 {*r = LOG_LOCAL2; return 0;}
6690 #else /* def LOG_LOCAL2 */
6691                 {errno = EINVAL; return -1;}
6692 #endif /* ndef LOG_LOCAL2 */
6693         if (x == Mono_Posix_SyslogFacility_LOG_LOCAL3)
6694 #ifdef LOG_LOCAL3
6695                 {*r = LOG_LOCAL3; return 0;}
6696 #else /* def LOG_LOCAL3 */
6697                 {errno = EINVAL; return -1;}
6698 #endif /* ndef LOG_LOCAL3 */
6699         if (x == Mono_Posix_SyslogFacility_LOG_LOCAL4)
6700 #ifdef LOG_LOCAL4
6701                 {*r = LOG_LOCAL4; return 0;}
6702 #else /* def LOG_LOCAL4 */
6703                 {errno = EINVAL; return -1;}
6704 #endif /* ndef LOG_LOCAL4 */
6705         if (x == Mono_Posix_SyslogFacility_LOG_LOCAL5)
6706 #ifdef LOG_LOCAL5
6707                 {*r = LOG_LOCAL5; return 0;}
6708 #else /* def LOG_LOCAL5 */
6709                 {errno = EINVAL; return -1;}
6710 #endif /* ndef LOG_LOCAL5 */
6711         if (x == Mono_Posix_SyslogFacility_LOG_LOCAL6)
6712 #ifdef LOG_LOCAL6
6713                 {*r = LOG_LOCAL6; return 0;}
6714 #else /* def LOG_LOCAL6 */
6715                 {errno = EINVAL; return -1;}
6716 #endif /* ndef LOG_LOCAL6 */
6717         if (x == Mono_Posix_SyslogFacility_LOG_LOCAL7)
6718 #ifdef LOG_LOCAL7
6719                 {*r = LOG_LOCAL7; return 0;}
6720 #else /* def LOG_LOCAL7 */
6721                 {errno = EINVAL; return -1;}
6722 #endif /* ndef LOG_LOCAL7 */
6723         if (x == Mono_Posix_SyslogFacility_LOG_LPR)
6724 #ifdef LOG_LPR
6725                 {*r = LOG_LPR; return 0;}
6726 #else /* def LOG_LPR */
6727                 {errno = EINVAL; return -1;}
6728 #endif /* ndef LOG_LPR */
6729         if (x == Mono_Posix_SyslogFacility_LOG_MAIL)
6730 #ifdef LOG_MAIL
6731                 {*r = LOG_MAIL; return 0;}
6732 #else /* def LOG_MAIL */
6733                 {errno = EINVAL; return -1;}
6734 #endif /* ndef LOG_MAIL */
6735         if (x == Mono_Posix_SyslogFacility_LOG_NEWS)
6736 #ifdef LOG_NEWS
6737                 {*r = LOG_NEWS; return 0;}
6738 #else /* def LOG_NEWS */
6739                 {errno = EINVAL; return -1;}
6740 #endif /* ndef LOG_NEWS */
6741         if (x == Mono_Posix_SyslogFacility_LOG_SYSLOG)
6742 #ifdef LOG_SYSLOG
6743                 {*r = LOG_SYSLOG; return 0;}
6744 #else /* def LOG_SYSLOG */
6745                 {errno = EINVAL; return -1;}
6746 #endif /* ndef LOG_SYSLOG */
6747         if (x == Mono_Posix_SyslogFacility_LOG_USER)
6748 #ifdef LOG_USER
6749                 {*r = LOG_USER; return 0;}
6750 #else /* def LOG_USER */
6751                 {errno = EINVAL; return -1;}
6752 #endif /* ndef LOG_USER */
6753         if (x == Mono_Posix_SyslogFacility_LOG_UUCP)
6754 #ifdef LOG_UUCP
6755                 {*r = LOG_UUCP; return 0;}
6756 #else /* def LOG_UUCP */
6757                 {errno = EINVAL; return -1;}
6758 #endif /* ndef LOG_UUCP */
6759         if (x == 0)
6760                 return 0;
6761         errno = EINVAL; return -1;
6762 }
6763
6764 int Mono_Posix_ToSyslogFacility (int x, int *r)
6765 {
6766         *r = 0;
6767         if (x == 0)
6768                 return 0;
6769 #ifdef LOG_AUTH
6770         if (x == LOG_AUTH)
6771                 {*r = Mono_Posix_SyslogFacility_LOG_AUTH; return 0;}
6772 #endif /* ndef LOG_AUTH */
6773 #ifdef LOG_AUTHPRIV
6774         if (x == LOG_AUTHPRIV)
6775                 {*r = Mono_Posix_SyslogFacility_LOG_AUTHPRIV; return 0;}
6776 #endif /* ndef LOG_AUTHPRIV */
6777 #ifdef LOG_CRON
6778         if (x == LOG_CRON)
6779                 {*r = Mono_Posix_SyslogFacility_LOG_CRON; return 0;}
6780 #endif /* ndef LOG_CRON */
6781 #ifdef LOG_DAEMON
6782         if (x == LOG_DAEMON)
6783                 {*r = Mono_Posix_SyslogFacility_LOG_DAEMON; return 0;}
6784 #endif /* ndef LOG_DAEMON */
6785 #ifdef LOG_FTP
6786         if (x == LOG_FTP)
6787                 {*r = Mono_Posix_SyslogFacility_LOG_FTP; return 0;}
6788 #endif /* ndef LOG_FTP */
6789 #ifdef LOG_KERN
6790         if (x == LOG_KERN)
6791                 {*r = Mono_Posix_SyslogFacility_LOG_KERN; return 0;}
6792 #endif /* ndef LOG_KERN */
6793 #ifdef LOG_LOCAL0
6794         if (x == LOG_LOCAL0)
6795                 {*r = Mono_Posix_SyslogFacility_LOG_LOCAL0; return 0;}
6796 #endif /* ndef LOG_LOCAL0 */
6797 #ifdef LOG_LOCAL1
6798         if (x == LOG_LOCAL1)
6799                 {*r = Mono_Posix_SyslogFacility_LOG_LOCAL1; return 0;}
6800 #endif /* ndef LOG_LOCAL1 */
6801 #ifdef LOG_LOCAL2
6802         if (x == LOG_LOCAL2)
6803                 {*r = Mono_Posix_SyslogFacility_LOG_LOCAL2; return 0;}
6804 #endif /* ndef LOG_LOCAL2 */
6805 #ifdef LOG_LOCAL3
6806         if (x == LOG_LOCAL3)
6807                 {*r = Mono_Posix_SyslogFacility_LOG_LOCAL3; return 0;}
6808 #endif /* ndef LOG_LOCAL3 */
6809 #ifdef LOG_LOCAL4
6810         if (x == LOG_LOCAL4)
6811                 {*r = Mono_Posix_SyslogFacility_LOG_LOCAL4; return 0;}
6812 #endif /* ndef LOG_LOCAL4 */
6813 #ifdef LOG_LOCAL5
6814         if (x == LOG_LOCAL5)
6815                 {*r = Mono_Posix_SyslogFacility_LOG_LOCAL5; return 0;}
6816 #endif /* ndef LOG_LOCAL5 */
6817 #ifdef LOG_LOCAL6
6818         if (x == LOG_LOCAL6)
6819                 {*r = Mono_Posix_SyslogFacility_LOG_LOCAL6; return 0;}
6820 #endif /* ndef LOG_LOCAL6 */
6821 #ifdef LOG_LOCAL7
6822         if (x == LOG_LOCAL7)
6823                 {*r = Mono_Posix_SyslogFacility_LOG_LOCAL7; return 0;}
6824 #endif /* ndef LOG_LOCAL7 */
6825 #ifdef LOG_LPR
6826         if (x == LOG_LPR)
6827                 {*r = Mono_Posix_SyslogFacility_LOG_LPR; return 0;}
6828 #endif /* ndef LOG_LPR */
6829 #ifdef LOG_MAIL
6830         if (x == LOG_MAIL)
6831                 {*r = Mono_Posix_SyslogFacility_LOG_MAIL; return 0;}
6832 #endif /* ndef LOG_MAIL */
6833 #ifdef LOG_NEWS
6834         if (x == LOG_NEWS)
6835                 {*r = Mono_Posix_SyslogFacility_LOG_NEWS; return 0;}
6836 #endif /* ndef LOG_NEWS */
6837 #ifdef LOG_SYSLOG
6838         if (x == LOG_SYSLOG)
6839                 {*r = Mono_Posix_SyslogFacility_LOG_SYSLOG; return 0;}
6840 #endif /* ndef LOG_SYSLOG */
6841 #ifdef LOG_USER
6842         if (x == LOG_USER)
6843                 {*r = Mono_Posix_SyslogFacility_LOG_USER; return 0;}
6844 #endif /* ndef LOG_USER */
6845 #ifdef LOG_UUCP
6846         if (x == LOG_UUCP)
6847                 {*r = Mono_Posix_SyslogFacility_LOG_UUCP; return 0;}
6848 #endif /* ndef LOG_UUCP */
6849         errno = EINVAL; return -1;
6850 }
6851
6852 int Mono_Posix_FromSyslogLevel (int x, int *r)
6853 {
6854         *r = 0;
6855         if (x == Mono_Posix_SyslogLevel_LOG_ALERT)
6856 #ifdef LOG_ALERT
6857                 {*r = LOG_ALERT; return 0;}
6858 #else /* def LOG_ALERT */
6859                 {errno = EINVAL; return -1;}
6860 #endif /* ndef LOG_ALERT */
6861         if (x == Mono_Posix_SyslogLevel_LOG_CRIT)
6862 #ifdef LOG_CRIT
6863                 {*r = LOG_CRIT; return 0;}
6864 #else /* def LOG_CRIT */
6865                 {errno = EINVAL; return -1;}
6866 #endif /* ndef LOG_CRIT */
6867         if (x == Mono_Posix_SyslogLevel_LOG_DEBUG)
6868 #ifdef LOG_DEBUG
6869                 {*r = LOG_DEBUG; return 0;}
6870 #else /* def LOG_DEBUG */
6871                 {errno = EINVAL; return -1;}
6872 #endif /* ndef LOG_DEBUG */
6873         if (x == Mono_Posix_SyslogLevel_LOG_EMERG)
6874 #ifdef LOG_EMERG
6875                 {*r = LOG_EMERG; return 0;}
6876 #else /* def LOG_EMERG */
6877                 {errno = EINVAL; return -1;}
6878 #endif /* ndef LOG_EMERG */
6879         if (x == Mono_Posix_SyslogLevel_LOG_ERR)
6880 #ifdef LOG_ERR
6881                 {*r = LOG_ERR; return 0;}
6882 #else /* def LOG_ERR */
6883                 {errno = EINVAL; return -1;}
6884 #endif /* ndef LOG_ERR */
6885         if (x == Mono_Posix_SyslogLevel_LOG_INFO)
6886 #ifdef LOG_INFO
6887                 {*r = LOG_INFO; return 0;}
6888 #else /* def LOG_INFO */
6889                 {errno = EINVAL; return -1;}
6890 #endif /* ndef LOG_INFO */
6891         if (x == Mono_Posix_SyslogLevel_LOG_NOTICE)
6892 #ifdef LOG_NOTICE
6893                 {*r = LOG_NOTICE; return 0;}
6894 #else /* def LOG_NOTICE */
6895                 {errno = EINVAL; return -1;}
6896 #endif /* ndef LOG_NOTICE */
6897         if (x == Mono_Posix_SyslogLevel_LOG_WARNING)
6898 #ifdef LOG_WARNING
6899                 {*r = LOG_WARNING; return 0;}
6900 #else /* def LOG_WARNING */
6901                 {errno = EINVAL; return -1;}
6902 #endif /* ndef LOG_WARNING */
6903         if (x == 0)
6904                 return 0;
6905         errno = EINVAL; return -1;
6906 }
6907
6908 int Mono_Posix_ToSyslogLevel (int x, int *r)
6909 {
6910         *r = 0;
6911         if (x == 0)
6912                 return 0;
6913 #ifdef LOG_ALERT
6914         if (x == LOG_ALERT)
6915                 {*r = Mono_Posix_SyslogLevel_LOG_ALERT; return 0;}
6916 #endif /* ndef LOG_ALERT */
6917 #ifdef LOG_CRIT
6918         if (x == LOG_CRIT)
6919                 {*r = Mono_Posix_SyslogLevel_LOG_CRIT; return 0;}
6920 #endif /* ndef LOG_CRIT */
6921 #ifdef LOG_DEBUG
6922         if (x == LOG_DEBUG)
6923                 {*r = Mono_Posix_SyslogLevel_LOG_DEBUG; return 0;}
6924 #endif /* ndef LOG_DEBUG */
6925 #ifdef LOG_EMERG
6926         if (x == LOG_EMERG)
6927                 {*r = Mono_Posix_SyslogLevel_LOG_EMERG; return 0;}
6928 #endif /* ndef LOG_EMERG */
6929 #ifdef LOG_ERR
6930         if (x == LOG_ERR)
6931                 {*r = Mono_Posix_SyslogLevel_LOG_ERR; return 0;}
6932 #endif /* ndef LOG_ERR */
6933 #ifdef LOG_INFO
6934         if (x == LOG_INFO)
6935                 {*r = Mono_Posix_SyslogLevel_LOG_INFO; return 0;}
6936 #endif /* ndef LOG_INFO */
6937 #ifdef LOG_NOTICE
6938         if (x == LOG_NOTICE)
6939                 {*r = Mono_Posix_SyslogLevel_LOG_NOTICE; return 0;}
6940 #endif /* ndef LOG_NOTICE */
6941 #ifdef LOG_WARNING
6942         if (x == LOG_WARNING)
6943                 {*r = Mono_Posix_SyslogLevel_LOG_WARNING; return 0;}
6944 #endif /* ndef LOG_WARNING */
6945         errno = EINVAL; return -1;
6946 }
6947
6948 int Mono_Posix_FromSyslogOptions (int x, int *r)
6949 {
6950         *r = 0;
6951         if ((x & Mono_Posix_SyslogOptions_LOG_CONS) == Mono_Posix_SyslogOptions_LOG_CONS)
6952 #ifdef LOG_CONS
6953                 *r |= LOG_CONS;
6954 #else /* def LOG_CONS */
6955                 {errno = EINVAL; return -1;}
6956 #endif /* ndef LOG_CONS */
6957         if ((x & Mono_Posix_SyslogOptions_LOG_NDELAY) == Mono_Posix_SyslogOptions_LOG_NDELAY)
6958 #ifdef LOG_NDELAY
6959                 *r |= LOG_NDELAY;
6960 #else /* def LOG_NDELAY */
6961                 {errno = EINVAL; return -1;}
6962 #endif /* ndef LOG_NDELAY */
6963         if ((x & Mono_Posix_SyslogOptions_LOG_NOWAIT) == Mono_Posix_SyslogOptions_LOG_NOWAIT)
6964 #ifdef LOG_NOWAIT
6965                 *r |= LOG_NOWAIT;
6966 #else /* def LOG_NOWAIT */
6967                 {errno = EINVAL; return -1;}
6968 #endif /* ndef LOG_NOWAIT */
6969         if ((x & Mono_Posix_SyslogOptions_LOG_ODELAY) == Mono_Posix_SyslogOptions_LOG_ODELAY)
6970 #ifdef LOG_ODELAY
6971                 *r |= LOG_ODELAY;
6972 #else /* def LOG_ODELAY */
6973                 {errno = EINVAL; return -1;}
6974 #endif /* ndef LOG_ODELAY */
6975         if ((x & Mono_Posix_SyslogOptions_LOG_PERROR) == Mono_Posix_SyslogOptions_LOG_PERROR)
6976 #ifdef LOG_PERROR
6977                 *r |= LOG_PERROR;
6978 #else /* def LOG_PERROR */
6979                 {errno = EINVAL; return -1;}
6980 #endif /* ndef LOG_PERROR */
6981         if ((x & Mono_Posix_SyslogOptions_LOG_PID) == Mono_Posix_SyslogOptions_LOG_PID)
6982 #ifdef LOG_PID
6983                 *r |= LOG_PID;
6984 #else /* def LOG_PID */
6985                 {errno = EINVAL; return -1;}
6986 #endif /* ndef LOG_PID */
6987         if (x == 0)
6988                 return 0;
6989         return 0;
6990 }
6991
6992 int Mono_Posix_ToSyslogOptions (int x, int *r)
6993 {
6994         *r = 0;
6995         if (x == 0)
6996                 return 0;
6997 #ifdef LOG_CONS
6998         if ((x & LOG_CONS) == LOG_CONS)
6999                 *r |= Mono_Posix_SyslogOptions_LOG_CONS;
7000 #endif /* ndef LOG_CONS */
7001 #ifdef LOG_NDELAY
7002         if ((x & LOG_NDELAY) == LOG_NDELAY)
7003                 *r |= Mono_Posix_SyslogOptions_LOG_NDELAY;
7004 #endif /* ndef LOG_NDELAY */
7005 #ifdef LOG_NOWAIT
7006         if ((x & LOG_NOWAIT) == LOG_NOWAIT)
7007                 *r |= Mono_Posix_SyslogOptions_LOG_NOWAIT;
7008 #endif /* ndef LOG_NOWAIT */
7009 #ifdef LOG_ODELAY
7010         if ((x & LOG_ODELAY) == LOG_ODELAY)
7011                 *r |= Mono_Posix_SyslogOptions_LOG_ODELAY;
7012 #endif /* ndef LOG_ODELAY */
7013 #ifdef LOG_PERROR
7014         if ((x & LOG_PERROR) == LOG_PERROR)
7015                 *r |= Mono_Posix_SyslogOptions_LOG_PERROR;
7016 #endif /* ndef LOG_PERROR */
7017 #ifdef LOG_PID
7018         if ((x & LOG_PID) == LOG_PID)
7019                 *r |= Mono_Posix_SyslogOptions_LOG_PID;
7020 #endif /* ndef LOG_PID */
7021         return 0;
7022 }
7023
7024 #ifdef HAVE_STRUCT_TIMESPEC
7025 int
7026 Mono_Posix_FromTimespec (struct Mono_Posix_Timespec *from, struct timespec *to)
7027 {
7028         _cnm_return_val_if_overflow (time_t, from->tv_sec, -1);
7029         _cnm_return_val_if_overflow (gint64, from->tv_nsec, -1);
7030
7031         memset (to, 0, sizeof(*to));
7032
7033         to->tv_sec  = from->tv_sec;
7034         to->tv_nsec = from->tv_nsec;
7035
7036         return 0;
7037 }
7038 #endif /* ndef HAVE_STRUCT_TIMESPEC */
7039
7040
7041 #ifdef HAVE_STRUCT_TIMESPEC
7042 int
7043 Mono_Posix_ToTimespec (struct timespec *from, struct Mono_Posix_Timespec *to)
7044 {
7045         _cnm_return_val_if_overflow (gint64, from->tv_sec, -1);
7046         _cnm_return_val_if_overflow (gint64, from->tv_nsec, -1);
7047
7048         memset (to, 0, sizeof(*to));
7049
7050         to->tv_sec  = from->tv_sec;
7051         to->tv_nsec = from->tv_nsec;
7052
7053         return 0;
7054 }
7055 #endif /* ndef HAVE_STRUCT_TIMESPEC */
7056
7057
7058 #ifdef HAVE_STRUCT_TIMEVAL
7059 int
7060 Mono_Posix_FromTimeval (struct Mono_Posix_Timeval *from, struct timeval *to)
7061 {
7062         _cnm_return_val_if_overflow (time_t, from->tv_sec, -1);
7063         _cnm_return_val_if_overflow (suseconds_t, from->tv_usec, -1);
7064
7065         memset (to, 0, sizeof(*to));
7066
7067         to->tv_sec  = from->tv_sec;
7068         to->tv_usec = from->tv_usec;
7069
7070         return 0;
7071 }
7072 #endif /* ndef HAVE_STRUCT_TIMEVAL */
7073
7074
7075 #ifdef HAVE_STRUCT_TIMEVAL
7076 int
7077 Mono_Posix_ToTimeval (struct timeval *from, struct Mono_Posix_Timeval *to)
7078 {
7079         _cnm_return_val_if_overflow (gint64, from->tv_sec, -1);
7080         _cnm_return_val_if_overflow (gint64, from->tv_usec, -1);
7081
7082         memset (to, 0, sizeof(*to));
7083
7084         to->tv_sec  = from->tv_sec;
7085         to->tv_usec = from->tv_usec;
7086
7087         return 0;
7088 }
7089 #endif /* ndef HAVE_STRUCT_TIMEVAL */
7090
7091
7092 #ifdef HAVE_STRUCT_TIMEZONE
7093 int
7094 Mono_Posix_FromTimezone (struct Mono_Posix_Timezone *from, struct timezone *to)
7095 {
7096         _cnm_return_val_if_overflow (int, from->tz_minuteswest, -1);
7097         _cnm_return_val_if_overflow (int, from->tz_dsttime, -1);
7098
7099         memset (to, 0, sizeof(*to));
7100
7101         to->tz_minuteswest = from->tz_minuteswest;
7102         to->tz_dsttime     = from->tz_dsttime;
7103
7104         return 0;
7105 }
7106 #endif /* ndef HAVE_STRUCT_TIMEZONE */
7107
7108
7109 #ifdef HAVE_STRUCT_TIMEZONE
7110 int
7111 Mono_Posix_ToTimezone (struct timezone *from, struct Mono_Posix_Timezone *to)
7112 {
7113         _cnm_return_val_if_overflow (int, from->tz_minuteswest, -1);
7114         _cnm_return_val_if_overflow (int, from->tz_dsttime, -1);
7115
7116         memset (to, 0, sizeof(*to));
7117
7118         to->tz_minuteswest = from->tz_minuteswest;
7119         to->tz_dsttime     = from->tz_dsttime;
7120
7121         return 0;
7122 }
7123 #endif /* ndef HAVE_STRUCT_TIMEZONE */
7124
7125
7126 #ifdef HAVE_STRUCT_UTIMBUF
7127 int
7128 Mono_Posix_FromUtimbuf (struct Mono_Posix_Utimbuf *from, struct utimbuf *to)
7129 {
7130         _cnm_return_val_if_overflow (time_t, from->actime, -1);
7131         _cnm_return_val_if_overflow (time_t, from->modtime, -1);
7132
7133         memset (to, 0, sizeof(*to));
7134
7135         to->actime  = from->actime;
7136         to->modtime = from->modtime;
7137
7138         return 0;
7139 }
7140 #endif /* ndef HAVE_STRUCT_UTIMBUF */
7141
7142
7143 #ifdef HAVE_STRUCT_UTIMBUF
7144 int
7145 Mono_Posix_ToUtimbuf (struct utimbuf *from, struct Mono_Posix_Utimbuf *to)
7146 {
7147         _cnm_return_val_if_overflow (gint64, from->actime, -1);
7148         _cnm_return_val_if_overflow (gint64, from->modtime, -1);
7149
7150         memset (to, 0, sizeof(*to));
7151
7152         to->actime  = from->actime;
7153         to->modtime = from->modtime;
7154
7155         return 0;
7156 }
7157 #endif /* ndef HAVE_STRUCT_UTIMBUF */
7158
7159
7160 int Mono_Posix_FromWaitOptions (int x, int *r)
7161 {
7162         *r = 0;
7163         if ((x & Mono_Posix_WaitOptions_WNOHANG) == Mono_Posix_WaitOptions_WNOHANG)
7164 #ifdef WNOHANG
7165                 *r |= WNOHANG;
7166 #else /* def WNOHANG */
7167                 {errno = EINVAL; return -1;}
7168 #endif /* ndef WNOHANG */
7169         if ((x & Mono_Posix_WaitOptions_WUNTRACED) == Mono_Posix_WaitOptions_WUNTRACED)
7170 #ifdef WUNTRACED
7171                 *r |= WUNTRACED;
7172 #else /* def WUNTRACED */
7173                 {errno = EINVAL; return -1;}
7174 #endif /* ndef WUNTRACED */
7175         if (x == 0)
7176                 return 0;
7177         return 0;
7178 }
7179
7180 int Mono_Posix_ToWaitOptions (int x, int *r)
7181 {
7182         *r = 0;
7183         if (x == 0)
7184                 return 0;
7185 #ifdef WNOHANG
7186         if ((x & WNOHANG) == WNOHANG)
7187                 *r |= Mono_Posix_WaitOptions_WNOHANG;
7188 #endif /* ndef WNOHANG */
7189 #ifdef WUNTRACED
7190         if ((x & WUNTRACED) == WUNTRACED)
7191                 *r |= Mono_Posix_WaitOptions_WUNTRACED;
7192 #endif /* ndef WUNTRACED */
7193         return 0;
7194 }
7195
7196 int Mono_Posix_FromXattrFlags (int x, int *r)
7197 {
7198         *r = 0;
7199         if ((x & Mono_Posix_XattrFlags_XATTR_AUTO) == Mono_Posix_XattrFlags_XATTR_AUTO)
7200 #ifdef XATTR_AUTO
7201                 *r |= XATTR_AUTO;
7202 #else /* def XATTR_AUTO */
7203                 {errno = EINVAL; return -1;}
7204 #endif /* ndef XATTR_AUTO */
7205         if ((x & Mono_Posix_XattrFlags_XATTR_CREATE) == Mono_Posix_XattrFlags_XATTR_CREATE)
7206 #ifdef XATTR_CREATE
7207                 *r |= XATTR_CREATE;
7208 #else /* def XATTR_CREATE */
7209                 {errno = EINVAL; return -1;}
7210 #endif /* ndef XATTR_CREATE */
7211         if ((x & Mono_Posix_XattrFlags_XATTR_REPLACE) == Mono_Posix_XattrFlags_XATTR_REPLACE)
7212 #ifdef XATTR_REPLACE
7213                 *r |= XATTR_REPLACE;
7214 #else /* def XATTR_REPLACE */
7215                 {errno = EINVAL; return -1;}
7216 #endif /* ndef XATTR_REPLACE */
7217         if (x == 0)
7218                 return 0;
7219         return 0;
7220 }
7221
7222 int Mono_Posix_ToXattrFlags (int x, int *r)
7223 {
7224         *r = 0;
7225         if (x == 0)
7226                 return 0;
7227 #ifdef XATTR_AUTO
7228         if ((x & XATTR_AUTO) == XATTR_AUTO)
7229                 *r |= Mono_Posix_XattrFlags_XATTR_AUTO;
7230 #endif /* ndef XATTR_AUTO */
7231 #ifdef XATTR_CREATE
7232         if ((x & XATTR_CREATE) == XATTR_CREATE)
7233                 *r |= Mono_Posix_XattrFlags_XATTR_CREATE;
7234 #endif /* ndef XATTR_CREATE */
7235 #ifdef XATTR_REPLACE
7236         if ((x & XATTR_REPLACE) == XATTR_REPLACE)
7237                 *r |= Mono_Posix_XattrFlags_XATTR_REPLACE;
7238 #endif /* ndef XATTR_REPLACE */
7239         return 0;
7240 }
7241