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