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