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