1 /**
2     D header file for C99.
3 
4     $(C_HEADER_DESCRIPTION pubs.opengroup.org/onlinepubs/009695399/basedefs/_errno.h.html, _errno.h)
5 
6     Copyright: Copyright Sean Kelly 2005 - 2009.
7     License: Distributed under the
8          $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0).
9        (See accompanying file LICENSE)
10     Authors:   Sean Kelly, Alex Rønne Petersen
11     Source:    $(DRUNTIMESRC core/stdc/_errno.d)
12     Standards: ISO/IEC 9899:1999 (E)
13 */
14 module nulib.posix.errno;
15 
16 version (OSX)
17     version = Darwin;
18 else version (iOS)
19     version = Darwin;
20 else version (TVOS)
21     version = Darwin;
22 else version (WatchOS)
23     version = Darwin;
24 
25 version (ARM)     version = ARM_Any;
26 version (AArch64) version = ARM_Any;
27 version (HPPA)    version = HPPA_Any;
28 version (MIPS32)  version = MIPS_Any;
29 version (MIPS64)  version = MIPS_Any;
30 version (PPC)     version = PPC_Any;
31 version (PPC64)   version = PPC_Any;
32 version (RISCV32) version = RISCV_Any;
33 version (RISCV64) version = RISCV_Any;
34 version (S390)    version = IBMZ_Any;
35 version (SPARC)   version = SPARC_Any;
36 version (SPARC64) version = SPARC_Any;
37 version (SystemZ) version = IBMZ_Any;
38 version (X86)     version = X86_Any;
39 version (X86_64)  version = X86_Any;
40 
41 @trusted: // Only manipulates errno.
42 nothrow:
43 @nogc:
44 
45 version (CRuntime_Microsoft)
46 {
47     extern (C)
48     {
49         ref int _errno();
50         alias errno = _errno;
51     }
52 }
53 else version (CRuntime_Glibc)
54 {
55     extern (C)
56     {
57         ref int __errno_location();
58         alias errno = __errno_location;
59     }
60 }
61 else version (CRuntime_Musl)
62 {
63     extern (C)
64     {
65         ref int __errno_location();
66         alias errno = __errno_location;
67     }
68 }
69 else version (CRuntime_Newlib)
70 {
71     extern (C)
72     {
73         ref int __errno();
74         alias errno = __errno;
75     }
76 }
77 else version (OpenBSD)
78 {
79     // https://github.com/openbsd/src/blob/master/include/errno.h
80     extern (C)
81     {
82         ref int __errno();
83         alias errno = __errno;
84     }
85 }
86 else version (NetBSD)
87 {
88     // https://github.com/NetBSD/src/blob/trunk/include/errno.h
89     extern (C)
90     {
91         ref int __errno();
92         alias errno = __errno;
93     }
94 }
95 else version (FreeBSD)
96 {
97     extern (C)
98     {
99         ref int __error();
100         alias errno = __error;
101     }
102 }
103 else version (DragonFlyBSD)
104 {
105     extern (C)
106     {
107         pragma(mangle, "errno") int __errno;
108         ref int __error() {
109             return __errno;
110         }
111         alias errno = __error;
112     }
113 }
114 else version (CRuntime_Bionic)
115 {
116     extern (C)
117     {
118         ref int __errno();
119         alias errno = __errno;
120     }
121 }
122 else version (CRuntime_UClibc)
123 {
124     extern (C)
125     {
126         ref int __errno_location();
127         alias errno = __errno_location;
128     }
129 }
130 else version (Darwin)
131 {
132     extern (C)
133     {
134         ref int __error();
135         alias errno = __error;
136     }
137 }
138 else version (Solaris)
139 {
140     extern (C)
141     {
142         ref int ___errno();
143         alias errno = ___errno;
144     }
145 }
146 else version (Haiku)
147 {
148     // https://github.com/haiku/haiku/blob/master/headers/posix/errno.h
149     extern (C)
150     {
151         ref int _errnop();
152         alias errno = _errnop;
153     }
154 }
155 else
156 {
157     ///
158     extern(C) pragma(mangle, "getErrno") @property int errno();
159     ///
160     extern(C) pragma(mangle, "setErrno") @property int errno(int n);
161 }
162 
163 extern (C):
164 
165 
166 version (CRuntime_Microsoft)
167 {
168     enum EPERM              = 1;        /// Operation not permitted
169     enum ENOENT             = 2;        /// No such file or directory
170     enum ESRCH              = 3;        /// No such process
171     enum EINTR              = 4;        /// Interrupted system call
172     enum EIO                = 5;        /// I/O error
173     enum ENXIO              = 6;        /// No such device or address
174     enum E2BIG              = 7;        /// Argument list too long
175     enum ENOEXEC            = 8;        /// Exec format error
176     enum EBADF              = 9;        /// Bad file number
177     enum ECHILD             = 10;       /// No child processes
178     enum EAGAIN             = 11;       /// Try again
179     enum ENOMEM             = 12;       /// Out of memory
180     enum EACCES             = 13;       /// Permission denied
181     enum EFAULT             = 14;       /// Bad address
182     enum EBUSY              = 16;       /// Device or resource busy
183     enum EEXIST             = 17;       /// File exists
184     enum EXDEV              = 18;       /// Cross-device link
185     enum ENODEV             = 19;       /// No such device
186     enum ENOTDIR            = 20;       /// Not a directory
187     enum EISDIR             = 21;       /// Is a directory
188     enum EINVAL             = 22;       /// Invalid argument
189     enum ENFILE             = 23;       /// File table overflow
190     enum EMFILE             = 24;       /// Too many open files
191     enum ENOTTY             = 25;       /// Not a typewriter
192     enum EFBIG              = 27;       /// File too large
193     enum ENOSPC             = 28;       /// No space left on device
194     enum ESPIPE             = 29;       /// Illegal seek
195     enum EROFS              = 30;       /// Read-only file system
196     enum EMLINK             = 31;       /// Too many links
197     enum EPIPE              = 32;       /// Broken pipe
198     enum EDOM               = 33;       /// Math argument out of domain of func
199     enum ERANGE             = 34;       /// Math result not representable
200     enum EDEADLK            = 36;       /// Resource deadlock would occur
201     enum ENAMETOOLONG       = 38;       /// File name too long
202     enum ENOLCK             = 39;       /// No record locks available
203     enum ENOSYS             = 40;       /// Function not implemented
204     enum ENOTEMPTY          = 41;       /// Directory not empty
205     enum EILSEQ             = 42;       /// Illegal byte sequence
206     enum EDEADLOCK          = EDEADLK;  /// Resource deadlock would occur
207 
208     // POSIX compatibility
209     // See_Also: https://docs.microsoft.com/en-us/cpp/c-runtime-library/errno-constants
210     enum EADDRINUSE         = 100;
211     enum EADDRNOTAVAIL      = 101;
212     enum EAFNOSUPPORT       = 102;
213     enum EALREADY           = 103;
214     enum EBADMSG            = 104;
215     enum ECANCELED          = 105;
216     enum ECONNABORTED       = 106;
217     enum ECONNREFUSED       = 107;
218     enum ECONNRESET         = 108;
219     enum EDESTADDRREQ       = 109;
220     enum EHOSTUNREACH       = 110;
221     enum EIDRM              = 111;
222     enum EINPROGRESS        = 112;
223     enum EISCONN            = 113;
224     enum ELOOP              = 114;
225     enum EMSGSIZE           = 115;
226     enum ENETDOWN           = 116;
227     enum ENETRESET          = 117;
228     enum ENETUNREACH        = 118;
229     enum ENOBUFS            = 119;
230     enum ENODATA            = 120;
231     enum ENOLINK            = 121;
232     enum ENOMSG             = 122;
233     enum ENOPROTOOPT        = 123;
234     enum ENOSR              = 124;
235     enum ENOSTR             = 125;
236     enum ENOTCONN           = 126;
237     enum ENOTRECOVERABLE    = 127;
238     enum ENOTSOCK           = 128;
239     enum ENOTSUP            = 129;
240     enum EOPNOTSUPP         = 130;
241     enum EOTHER             = 131;
242     enum EOVERFLOW          = 132;
243     enum EOWNERDEAD         = 133;
244     enum EPROTO             = 134;
245     enum EPROTONOSUPPORT    = 135;
246     enum EPROTOTYPE         = 136;
247     enum ETIME              = 137;
248     enum ETIMEDOUT          = 138;
249     enum ETXTBSY            = 139;
250     enum EWOULDBLOCK        = 140;
251 }
252 else version (CRuntime_Newlib)
253 {
254     enum EPERM = 1;
255     enum ENOENT = 2;
256     enum ESRCH = 3;
257     enum EINTR = 4;
258     enum EIO = 5;
259     enum ENXIO = 6;
260     enum E2BIG = 7;
261     enum ENOEXEC = 8;
262     enum EBADF = 9;
263     enum ECHILD = 10;
264     enum EAGAIN = 11;
265     enum ENOMEM = 12;
266     enum EACCES = 13;
267     enum EFAULT = 14;
268     enum EBUSY = 16;
269     enum EEXIST = 17;
270     enum EXDEV = 18;
271     enum ENODEV = 19;
272     enum ENOTDIR = 20;
273     enum EISDIR = 21;
274     enum EINVAL = 22;
275     enum ENFILE = 23;
276     enum EMFILE = 24;
277     enum ENOTTY = 25;
278     enum ETXTBSY = 26;
279     enum EFBIG = 27;
280     enum ENOSPC = 28;
281     enum ESPIPE = 29;
282     enum EROFS = 30;
283     enum EMLINK = 31;
284     enum EPIPE = 32;
285     enum EDOM = 33;
286     enum ERANGE = 34;
287     enum ENOMSG = 35;
288     enum EIDRM = 36;
289     enum EDEADLK = 45;
290     enum ENOLCK = 46;
291     enum ENOSTR = 60;
292     enum ENODATA = 61;
293     enum ETIME = 62;
294     enum ENOSR = 63;
295     enum ENOLINK = 67;
296     enum EPROTO = 71;
297     enum EMULTIHOP = 74;
298     enum EBADMSG = 77;
299     enum EFTYPE = 79;
300     enum ENOSYS = 88;
301     enum ENOTEMPTY = 90;
302     enum ENAMETOOLONG = 91;
303     enum ELOOP = 92;
304     enum EOPNOTSUPP = 95;
305     enum EPFNOSUPPORT = 96;
306     enum ECONNRESET = 104;
307     enum ENOBUFS = 105;
308     enum EAFNOSUPPORT = 106;
309     enum EPROTOTYPE = 107;
310     enum ENOTSOCK = 108;
311     enum ENOPROTOOPT = 109;
312     enum ECONNREFUSED = 111;
313     enum EADDRINUSE = 112;
314     enum ECONNABORTED = 113;
315     enum ENETUNREACH = 114;
316     enum ENETDOWN = 115;
317     enum ETIMEDOUT = 116;
318     enum EHOSTDOWN = 117;
319     enum EHOSTUNREACH = 118;
320     enum EINPROGRESS = 119;
321     enum EALREADY = 120;
322     enum EDESTADDRREQ = 121;
323     enum EMSGSIZE = 122;
324     enum EPROTONOSUPPORT = 123;
325     enum EADDRNOTAVAIL = 125;
326     enum ENETRESET = 126;
327     enum EISCONN = 127;
328     enum ENOTCONN = 128;
329     enum ETOOMANYREFS = 129;
330     enum EDQUOT = 132;
331     enum ESTALE = 133;
332     enum ENOTSUP = 134;
333     enum EILSEQ = 138;
334     enum EOVERFLOW = 139;
335     enum ECANCELED = 140;
336     enum ENOTRECOVERABLE = 141;
337     enum EOWNERDEAD = 142;
338 
339     enum EWOULDBLOCK = EAGAIN;
340 
341     enum __ELASTERROR = 2000;
342 
343     // Linux errno extensions
344     version (Cygwin)
345     {
346         enum ENOTBLK = 15;
347         enum ECHRNG = 37;
348         enum EL2NSYNC = 38;
349         enum EL3HLT = 39;
350         enum EL3RST = 40;
351         enum ELNRNG = 41;
352         enum EUNATCH = 42;
353         enum ENOCSI = 43;
354         enum EL2HLT = 44;
355         enum EBADE = 50;
356         enum EBADR = 51;
357         enum EXFULL = 52;
358         enum ENOANO = 53;
359         enum EBADRQC = 54;
360         enum EBADSLT = 55;
361         enum EDEADLOCK = 56;
362         enum EBFONT = 57;
363         enum ENONET = 64;
364         enum ENOPKG = 65;
365         enum EREMOTE = 66;
366         enum EADV = 68;
367         enum ESRMNT = 69;
368         enum ECOMM = 70;
369         enum ELBIN = 75;
370         enum EDOTDOT = 76;
371         enum ENOTUNIQ = 80;
372         enum EBADFD = 81;
373         enum EREMCHG = 82;
374         enum ELIBACC = 83;
375         enum ELIBBAD = 84;
376         enum ELIBSCN = 85;
377         enum ELIBMAX = 86;
378         enum ELIBEXEC = 87;
379         enum ENMFILE = 89;
380         enum ESHUTDOWN = 110;
381         enum ESOCKTNOSUPPORT = 124;
382         enum EPROCLIM = 130;
383         enum EUSERS = 131;
384         enum ENOMEDIUM = 135;
385         enum ENOSHARE = 136;
386         enum ECASECLASH = 137;
387         enum ESTRPIPE = 143;
388     }
389 }
390 else version (linux)
391 {
392     enum EPERM              = 1;  ///
393     enum ENOENT             = 2;  ///
394     enum ESRCH              = 3;  ///
395     enum EINTR              = 4;  ///
396     enum EIO                = 5;  ///
397     enum ENXIO              = 6;  ///
398     enum E2BIG              = 7;  ///
399     enum ENOEXEC            = 8;  ///
400     enum EBADF              = 9;  ///
401     enum ECHILD             = 10; ///
402     enum EAGAIN             = 11; ///
403     enum ENOMEM             = 12; ///
404     enum EACCES             = 13; ///
405     enum EFAULT             = 14; ///
406     enum ENOTBLK            = 15; ///
407     enum EBUSY              = 16; ///
408     enum EEXIST             = 17; ///
409     enum EXDEV              = 18; ///
410     enum ENODEV             = 19; ///
411     enum ENOTDIR            = 20; ///
412     enum EISDIR             = 21; ///
413     enum EINVAL             = 22; ///
414     enum ENFILE             = 23; ///
415     enum EMFILE             = 24; ///
416     enum ENOTTY             = 25; ///
417     enum ETXTBSY            = 26; ///
418     enum EFBIG              = 27; ///
419     enum ENOSPC             = 28; ///
420     enum ESPIPE             = 29; ///
421     enum EROFS              = 30; ///
422     enum EMLINK             = 31; ///
423     enum EPIPE              = 32; ///
424     enum EDOM               = 33; ///
425     enum ERANGE             = 34; ///
426 
427     version (X86_Any)
428     {
429         enum EDEADLK            = 35;         ///
430         enum ENAMETOOLONG       = 36;         ///
431         enum ENOLCK             = 37;         ///
432         enum ENOSYS             = 38;         ///
433         enum ENOTEMPTY          = 39;         ///
434         enum ELOOP              = 40;         ///
435         enum EWOULDBLOCK        = EAGAIN;     ///
436         enum ENOMSG             = 42;         ///
437         enum EIDRM              = 43;         ///
438         enum ECHRNG             = 44;         ///
439         enum EL2NSYNC           = 45;         ///
440         enum EL3HLT             = 46;         ///
441         enum EL3RST             = 47;         ///
442         enum ELNRNG             = 48;         ///
443         enum EUNATCH            = 49;         ///
444         enum ENOCSI             = 50;         ///
445         enum EL2HLT             = 51;         ///
446         enum EBADE              = 52;         ///
447         enum EBADR              = 53;         ///
448         enum EXFULL             = 54;         ///
449         enum ENOANO             = 55;         ///
450         enum EBADRQC            = 56;         ///
451         enum EBADSLT            = 57;         ///
452         enum EDEADLOCK          = EDEADLK;    ///
453         enum EBFONT             = 59;         ///
454         enum ENOSTR             = 60;         ///
455         enum ENODATA            = 61;         ///
456         enum ETIME              = 62;         ///
457         enum ENOSR              = 63;         ///
458         enum ENONET             = 64;         ///
459         enum ENOPKG             = 65;         ///
460         enum EREMOTE            = 66;         ///
461         enum ENOLINK            = 67;         ///
462         enum EADV               = 68;         ///
463         enum ESRMNT             = 69;         ///
464         enum ECOMM              = 70;         ///
465         enum EPROTO             = 71;         ///
466         enum EMULTIHOP          = 72;         ///
467         enum EDOTDOT            = 73;         ///
468         enum EBADMSG            = 74;         ///
469         enum EOVERFLOW          = 75;         ///
470         enum ENOTUNIQ           = 76;         ///
471         enum EBADFD             = 77;         ///
472         enum EREMCHG            = 78;         ///
473         enum ELIBACC            = 79;         ///
474         enum ELIBBAD            = 80;         ///
475         enum ELIBSCN            = 81;         ///
476         enum ELIBMAX            = 82;         ///
477         enum ELIBEXEC           = 83;         ///
478         enum EILSEQ             = 84;         ///
479         enum ERESTART           = 85;         ///
480         enum ESTRPIPE           = 86;         ///
481         enum EUSERS             = 87;         ///
482         enum ENOTSOCK           = 88;         ///
483         enum EDESTADDRREQ       = 89;         ///
484         enum EMSGSIZE           = 90;         ///
485         enum EPROTOTYPE         = 91;         ///
486         enum ENOPROTOOPT        = 92;         ///
487         enum EPROTONOSUPPORT    = 93;         ///
488         enum ESOCKTNOSUPPORT    = 94;         ///
489         enum EOPNOTSUPP         = 95;         ///
490         enum ENOTSUP            = EOPNOTSUPP; ///
491         enum EPFNOSUPPORT       = 96;         ///
492         enum EAFNOSUPPORT       = 97;         ///
493         enum EADDRINUSE         = 98;         ///
494         enum EADDRNOTAVAIL      = 99;         ///
495         enum ENETDOWN           = 100;        ///
496         enum ENETUNREACH        = 101;        ///
497         enum ENETRESET          = 102;        ///
498         enum ECONNABORTED       = 103;        ///
499         enum ECONNRESET         = 104;        ///
500         enum ENOBUFS            = 105;        ///
501         enum EISCONN            = 106;        ///
502         enum ENOTCONN           = 107;        ///
503         enum ESHUTDOWN          = 108;        ///
504         enum ETOOMANYREFS       = 109;        ///
505         enum ETIMEDOUT          = 110;        ///
506         enum ECONNREFUSED       = 111;        ///
507         enum EHOSTDOWN          = 112;        ///
508         enum EHOSTUNREACH       = 113;        ///
509         enum EALREADY           = 114;        ///
510         enum EINPROGRESS        = 115;        ///
511         enum ESTALE             = 116;        ///
512         enum EUCLEAN            = 117;        ///
513         enum ENOTNAM            = 118;        ///
514         enum ENAVAIL            = 119;        ///
515         enum EISNAM             = 120;        ///
516         enum EREMOTEIO          = 121;        ///
517         enum EDQUOT             = 122;        ///
518         enum ENOMEDIUM          = 123;        ///
519         enum EMEDIUMTYPE        = 124;        ///
520         enum ECANCELED          = 125;        ///
521         enum ENOKEY             = 126;        ///
522         enum EKEYEXPIRED        = 127;        ///
523         enum EKEYREVOKED        = 128;        ///
524         enum EKEYREJECTED       = 129;        ///
525         enum EOWNERDEAD         = 130;        ///
526         enum ENOTRECOVERABLE    = 131;        ///
527         enum ERFKILL            = 132;        ///
528         enum EHWPOISON          = 133;        ///
529     }
530     else version (ARM_Any)
531     {
532         enum EDEADLK            = 35;         ///
533         enum ENAMETOOLONG       = 36;         ///
534         enum ENOLCK             = 37;         ///
535         enum ENOSYS             = 38;         ///
536         enum ENOTEMPTY          = 39;         ///
537         enum ELOOP              = 40;         ///
538         enum EWOULDBLOCK        = EAGAIN;     ///
539         enum ENOMSG             = 42;         ///
540         enum EIDRM              = 43;         ///
541         enum ECHRNG             = 44;         ///
542         enum EL2NSYNC           = 45;         ///
543         enum EL3HLT             = 46;         ///
544         enum EL3RST             = 47;         ///
545         enum ELNRNG             = 48;         ///
546         enum EUNATCH            = 49;         ///
547         enum ENOCSI             = 50;         ///
548         enum EL2HLT             = 51;         ///
549         enum EBADE              = 52;         ///
550         enum EBADR              = 53;         ///
551         enum EXFULL             = 54;         ///
552         enum ENOANO             = 55;         ///
553         enum EBADRQC            = 56;         ///
554         enum EBADSLT            = 57;         ///
555         enum EDEADLOCK          = EDEADLK;    ///
556         enum EBFONT             = 59;         ///
557         enum ENOSTR             = 60;         ///
558         enum ENODATA            = 61;         ///
559         enum ETIME              = 62;         ///
560         enum ENOSR              = 63;         ///
561         enum ENONET             = 64;         ///
562         enum ENOPKG             = 65;         ///
563         enum EREMOTE            = 66;         ///
564         enum ENOLINK            = 67;         ///
565         enum EADV               = 68;         ///
566         enum ESRMNT             = 69;         ///
567         enum ECOMM              = 70;         ///
568         enum EPROTO             = 71;         ///
569         enum EMULTIHOP          = 72;         ///
570         enum EDOTDOT            = 73;         ///
571         enum EBADMSG            = 74;         ///
572         enum EOVERFLOW          = 75;         ///
573         enum ENOTUNIQ           = 76;         ///
574         enum EBADFD             = 77;         ///
575         enum EREMCHG            = 78;         ///
576         enum ELIBACC            = 79;         ///
577         enum ELIBBAD            = 80;         ///
578         enum ELIBSCN            = 81;         ///
579         enum ELIBMAX            = 82;         ///
580         enum ELIBEXEC           = 83;         ///
581         enum EILSEQ             = 84;         ///
582         enum ERESTART           = 85;         ///
583         enum ESTRPIPE           = 86;         ///
584         enum EUSERS             = 87;         ///
585         enum ENOTSOCK           = 88;         ///
586         enum EDESTADDRREQ       = 89;         ///
587         enum EMSGSIZE           = 90;         ///
588         enum EPROTOTYPE         = 91;         ///
589         enum ENOPROTOOPT        = 92;         ///
590         enum EPROTONOSUPPORT    = 93;         ///
591         enum ESOCKTNOSUPPORT    = 94;         ///
592         enum EOPNOTSUPP         = 95;         ///
593         enum ENOTSUP            = EOPNOTSUPP; ///
594         enum EPFNOSUPPORT       = 96;         ///
595         enum EAFNOSUPPORT       = 97;         ///
596         enum EADDRINUSE         = 98;         ///
597         enum EADDRNOTAVAIL      = 99;         ///
598         enum ENETDOWN           = 100;        ///
599         enum ENETUNREACH        = 101;        ///
600         enum ENETRESET          = 102;        ///
601         enum ECONNABORTED       = 103;        ///
602         enum ECONNRESET         = 104;        ///
603         enum ENOBUFS            = 105;        ///
604         enum EISCONN            = 106;        ///
605         enum ENOTCONN           = 107;        ///
606         enum ESHUTDOWN          = 108;        ///
607         enum ETOOMANYREFS       = 109;        ///
608         enum ETIMEDOUT          = 110;        ///
609         enum ECONNREFUSED       = 111;        ///
610         enum EHOSTDOWN          = 112;        ///
611         enum EHOSTUNREACH       = 113;        ///
612         enum EALREADY           = 114;        ///
613         enum EINPROGRESS        = 115;        ///
614         enum ESTALE             = 116;        ///
615         enum EUCLEAN            = 117;        ///
616         enum ENOTNAM            = 118;        ///
617         enum ENAVAIL            = 119;        ///
618         enum EISNAM             = 120;        ///
619         enum EREMOTEIO          = 121;        ///
620         enum EDQUOT             = 122;        ///
621         enum ENOMEDIUM          = 123;        ///
622         enum EMEDIUMTYPE        = 124;        ///
623         enum ECANCELED          = 125;        ///
624         enum ENOKEY             = 126;        ///
625         enum EKEYEXPIRED        = 127;        ///
626         enum EKEYREVOKED        = 128;        ///
627         enum EKEYREJECTED       = 129;        ///
628         enum EOWNERDEAD         = 130;        ///
629         enum ENOTRECOVERABLE    = 131;        ///
630         enum ERFKILL            = 132;        ///
631         enum EHWPOISON          = 133;        ///
632     }
633     else version (HPPA_Any)
634     {
635         enum ENOMSG             = 35;         ///
636         enum EIDRM              = 36;         ///
637         enum ECHRNG             = 37;         ///
638         enum EL2NSYNC           = 38;         ///
639         enum EL3HLT             = 39;         ///
640         enum EL3RST             = 40;         ///
641         enum ELNRNG             = 41;         ///
642         enum EUNATCH            = 42;         ///
643         enum ENOCSI             = 43;         ///
644         enum EL2HLT             = 44;         ///
645         enum EDEADLK            = 45;         ///
646         enum EDEADLOCK          = EDEADLK;    ///
647         enum ENOLCK             = 46;         ///
648         enum EILSEQ             = 47;         ///
649         enum ENONET             = 50;         ///
650         enum ENODATA            = 51;         ///
651         enum ETIME              = 52;         ///
652         enum ENOSR              = 53;         ///
653         enum ENOSTR             = 54;         ///
654         enum ENOPKG             = 55;         ///
655         enum ENOLINK            = 57;         ///
656         enum EADV               = 58;         ///
657         enum ESRMNT             = 59;         ///
658         enum ECOMM              = 60;         ///
659         enum EPROTO             = 61;         ///
660         enum EMULTIHOP          = 64;         ///
661         enum EDOTDOT            = 66;         ///
662         enum EBADMSG            = 67;         ///
663         enum EUSERS             = 68;         ///
664         enum EDQUOT             = 69;         ///
665         enum ESTALE             = 70;         ///
666         enum EREMOTE            = 71;         ///
667         enum EOVERFLOW          = 72;         ///
668         enum EBADE              = 160;        ///
669         enum EBADR              = 161;        ///
670         enum EXFULL             = 162;        ///
671         enum ENOANO             = 163;        ///
672         enum EBADRQC            = 164;        ///
673         enum EBADSLT            = 165;        ///
674         enum EBFONT             = 166;        ///
675         enum ENOTUNIQ           = 167;        ///
676         enum EBADFD             = 168;        ///
677         enum EREMCHG            = 169;        ///
678         enum ELIBACC            = 170;        ///
679         enum ELIBBAD            = 171;        ///
680         enum ELIBSCN            = 172;        ///
681         enum ELIBMAX            = 173;        ///
682         enum ELIBEXEC           = 174;        ///
683         enum ERESTART           = 175;        ///
684         enum ESTRPIPE           = 176;        ///
685         enum EUCLEAN            = 177;        ///
686         enum ENOTNAM            = 178;        ///
687         enum ENAVAIL            = 179;        ///
688         enum EISNAM             = 180;        ///
689         enum EREMOTEIO          = 181;        ///
690         enum ENOMEDIUM          = 182;        ///
691         enum EMEDIUMTYPE        = 183;        ///
692         enum ENOKEY             = 184;        ///
693         enum EKEYEXPIRED        = 185;        ///
694         enum EKEYREVOKED        = 186;        ///
695         enum EKEYREJECTED       = 187;        ///
696         enum ENOSYM             = 215;        ///
697         enum ENOTSOCK           = 216;        ///
698         enum EDESTADDRREQ       = 217;        ///
699         enum EMSGSIZE           = 218;        ///
700         enum EPROTOTYPE         = 219;        ///
701         enum ENOPROTOOPT        = 220;        ///
702         enum EPROTONOSUPPORT    = 221;        ///
703         enum ESOCKTNOSUPPORT    = 221;        ///
704         enum EOPNOTSUPP         = 223;        ///
705         enum EPFNOSUPPORT       = 224;        ///
706         enum EAFNOSUPPORT       = 225;        ///
707         enum EADDRINUSE         = 226;        ///
708         enum EADDRNOTAVAIL      = 227;        ///
709         enum ENETDOWN           = 228;        ///
710         enum ENETUNREACH        = 229;        ///
711         enum ENETRESET          = 230;        ///
712         enum ECONNABORTED       = 231;        ///
713         enum ECONNRESET         = 232;        ///
714         enum ENOBUFS            = 233;        ///
715         enum EISCONN            = 234;        ///
716         enum ENOTCONN           = 235;        ///
717         enum ESHUTDOWN          = 236;        ///
718         enum ETOOMANYREFS       = 237;        ///
719         enum ETIMEDOUT          = 238;        ///
720         enum ECONNREFUSED       = 239;        ///
721         enum EREFUSED           = ECONNREFUSED; ///
722         enum EREMOTERELEASE     = 240;        ///
723         enum EHOSTDOWN          = 241;        ///
724         enum EHOSTUNREACH       = 242;        ///
725         enum EALREADY           = 244;        ///
726         enum EINPROGRESS        = 245;        ///
727         enum EWOULDBLOCK        = EAGAIN;     ///
728         enum ENOTEMPTY          = 247;        ///
729         enum ENAMETOOLONG       = 248;        ///
730         enum ELOOP              = 249;        ///
731         enum ENOSYS             = 251;        ///
732         enum ECANCELLED         = 253;        ///
733         enum ECANCELED          = ECANCELLED;  ///
734         enum EOWNERDEAD         = 254;        ///
735         enum ENOTRECOVERABLE    = 255;        ///
736         enum ERFKILL            = 256;        ///
737         enum EHWPOISON          = 257;        ///
738     }
739     else version (MIPS_Any)
740     {
741         enum ENOMSG             = 35;         ///
742         enum EIDRM              = 36;         ///
743         enum ECHRNG             = 37;         ///
744         enum EL2NSYNC           = 38;         ///
745         enum EL3HLT             = 39;         ///
746         enum EL3RST             = 40;         ///
747         enum ELNRNG             = 41;         ///
748         enum EUNATCH            = 42;         ///
749         enum ENOCSI             = 43;         ///
750         enum EL2HLT             = 44;         ///
751         enum EDEADLK            = 45;         ///
752         enum ENOLCK             = 46;         ///
753         enum EBADE              = 50;         ///
754         enum EBADR              = 51;         ///
755         enum EXFULL             = 52;         ///
756         enum ENOANO             = 53;         ///
757         enum EBADRQC            = 54;         ///
758         enum EBADSLT            = 55;         ///
759         enum EDEADLOCK          = 56;         ///
760         enum EBFONT             = 59;         ///
761         enum ENOSTR             = 60;         ///
762         enum ENODATA            = 61;         ///
763         enum ETIME              = 62;         ///
764         enum ENOSR              = 63;         ///
765         enum ENONET             = 64;         ///
766         enum ENOPKG             = 65;         ///
767         enum EREMOTE            = 66;         ///
768         enum ENOLINK            = 67;         ///
769         enum EADV               = 68;         ///
770         enum ESRMNT             = 69;         ///
771         enum ECOMM              = 70;         ///
772         enum EPROTO             = 71;         ///
773         enum EDOTDOT            = 73;         ///
774         enum EMULTIHOP          = 74;         ///
775         enum EBADMSG            = 77;         ///
776         enum ENAMETOOLONG       = 78;         ///
777         enum EOVERFLOW          = 79;         ///
778         enum ENOTUNIQ           = 80;         ///
779         enum EBADFD             = 81;         ///
780         enum EREMCHG            = 82;         ///
781         enum ELIBACC            = 83;         ///
782         enum ELIBBAD            = 84;         ///
783         enum ELIBSCN            = 85;         ///
784         enum ELIBMAX            = 86;         ///
785         enum ELIBEXEC           = 87;         ///
786         enum EILSEQ             = 88;         ///
787         enum ENOSYS             = 89;         ///
788         enum ELOOP              = 90;         ///
789         enum ERESTART           = 91;         ///
790         enum ESTRPIPE           = 92;         ///
791         enum ENOTEMPTY          = 93;         ///
792         enum EUSERS             = 94;         ///
793         enum ENOTSOCK           = 95;         ///
794         enum EDESTADDRREQ       = 96;         ///
795         enum EMSGSIZE           = 97;         ///
796         enum EPROTOTYPE         = 98;         ///
797         enum ENOPROTOOPT        = 99;         ///
798         enum EPROTONOSUPPORT    = 120;        ///
799         enum ESOCKTNOSUPPORT    = 121;        ///
800         enum EOPNOTSUPP         = 122;        ///
801         enum ENOTSUP            = EOPNOTSUPP; ///
802         enum EPFNOSUPPORT       = 123;        ///
803         enum EAFNOSUPPORT       = 124;        ///
804         enum EADDRINUSE         = 125;        ///
805         enum EADDRNOTAVAIL      = 126;        ///
806         enum ENETDOWN           = 127;        ///
807         enum ENETUNREACH        = 128;        ///
808         enum ENETRESET          = 129;        ///
809         enum ECONNABORTED       = 130;        ///
810         enum ECONNRESET         = 131;        ///
811         enum ENOBUFS            = 132;        ///
812         enum EISCONN            = 133;        ///
813         enum ENOTCONN           = 134;        ///
814         enum EUCLEAN            = 135;        ///
815         enum ENOTNAM            = 137;        ///
816         enum ENAVAIL            = 138;        ///
817         enum EISNAM             = 139;        ///
818         enum EREMOTEIO          = 140;        ///
819         enum EINIT              = 141;        ///
820         enum EREMDEV            = 142;        ///
821         enum ESHUTDOWN          = 143;        ///
822         enum ETOOMANYREFS       = 144;        ///
823         enum ETIMEDOUT          = 145;        ///
824         enum ECONNREFUSED       = 146;        ///
825         enum EHOSTDOWN          = 147;        ///
826         enum EHOSTUNREACH       = 148;        ///
827         enum EWOULDBLOCK        = EAGAIN;     ///
828         enum EALREADY           = 149;        ///
829         enum EINPROGRESS        = 150;        ///
830         enum ESTALE             = 151;        ///
831         enum ECANCELED          = 158;        ///
832         enum ENOMEDIUM          = 159;        ///
833         enum EMEDIUMTYPE        = 160;        ///
834         enum ENOKEY             = 161;        ///
835         enum EKEYEXPIRED        = 162;        ///
836         enum EKEYREVOKED        = 163;        ///
837         enum EKEYREJECTED       = 164;        ///
838         enum EOWNERDEAD         = 165;        ///
839         enum ENOTRECOVERABLE    = 166;        ///
840         enum ERFKILL            = 167;        ///
841         enum EHWPOISON          = 168;        ///
842         enum EDQUOT             = 1133;       ///
843     }
844     else version (PPC_Any)
845     {
846         enum EDEADLK            = 35;         ///
847         enum ENAMETOOLONG       = 36;         ///
848         enum ENOLCK             = 37;         ///
849         enum ENOSYS             = 38;         ///
850         enum ENOTEMPTY          = 39;         ///
851         enum ELOOP              = 40;         ///
852         enum EWOULDBLOCK        = EAGAIN;     ///
853         enum ENOMSG             = 42;         ///
854         enum EIDRM              = 43;         ///
855         enum ECHRNG             = 44;         ///
856         enum EL2NSYNC           = 45;         ///
857         enum EL3HLT             = 46;         ///
858         enum EL3RST             = 47;         ///
859         enum ELNRNG             = 48;         ///
860         enum EUNATCH            = 49;         ///
861         enum ENOCSI             = 50;         ///
862         enum EL2HLT             = 51;         ///
863         enum EBADE              = 52;         ///
864         enum EBADR              = 53;         ///
865         enum EXFULL             = 54;         ///
866         enum ENOANO             = 55;         ///
867         enum EBADRQC            = 56;         ///
868         enum EBADSLT            = 57;         ///
869         enum EDEADLOCK          = 58;         ///
870         enum EBFONT             = 59;         ///
871         enum ENOSTR             = 60;         ///
872         enum ENODATA            = 61;         ///
873         enum ETIME              = 62;         ///
874         enum ENOSR              = 63;         ///
875         enum ENONET             = 64;         ///
876         enum ENOPKG             = 65;         ///
877         enum EREMOTE            = 66;         ///
878         enum ENOLINK            = 67;         ///
879         enum EADV               = 68;         ///
880         enum ESRMNT             = 69;         ///
881         enum ECOMM              = 70;         ///
882         enum EPROTO             = 71;         ///
883         enum EMULTIHOP          = 72;         ///
884         enum EDOTDOT            = 73;         ///
885         enum EBADMSG            = 74;         ///
886         enum EOVERFLOW          = 75;         ///
887         enum ENOTUNIQ           = 76;         ///
888         enum EBADFD             = 77;         ///
889         enum EREMCHG            = 78;         ///
890         enum ELIBACC            = 79;         ///
891         enum ELIBBAD            = 80;         ///
892         enum ELIBSCN            = 81;         ///
893         enum ELIBMAX            = 82;         ///
894         enum ELIBEXEC           = 83;         ///
895         enum EILSEQ             = 84;         ///
896         enum ERESTART           = 85;         ///
897         enum ESTRPIPE           = 86;         ///
898         enum EUSERS             = 87;         ///
899         enum ENOTSOCK           = 88;         ///
900         enum EDESTADDRREQ       = 89;         ///
901         enum EMSGSIZE           = 90;         ///
902         enum EPROTOTYPE         = 91;         ///
903         enum ENOPROTOOPT        = 92;         ///
904         enum EPROTONOSUPPORT    = 93;         ///
905         enum ESOCKTNOSUPPORT    = 94;         ///
906         enum EOPNOTSUPP         = 95;         ///
907         enum ENOTSUP            = EOPNOTSUPP; ///
908         enum EPFNOSUPPORT       = 96;         ///
909         enum EAFNOSUPPORT       = 97;         ///
910         enum EADDRINUSE         = 98;         ///
911         enum EADDRNOTAVAIL      = 99;         ///
912         enum ENETDOWN           = 100;        ///
913         enum ENETUNREACH        = 101;        ///
914         enum ENETRESET          = 102;        ///
915         enum ECONNABORTED       = 103;        ///
916         enum ECONNRESET         = 104;        ///
917         enum ENOBUFS            = 105;        ///
918         enum EISCONN            = 106;        ///
919         enum ENOTCONN           = 107;        ///
920         enum ESHUTDOWN          = 108;        ///
921         enum ETOOMANYREFS       = 109;        ///
922         enum ETIMEDOUT          = 110;        ///
923         enum ECONNREFUSED       = 111;        ///
924         enum EHOSTDOWN          = 112;        ///
925         enum EHOSTUNREACH       = 113;        ///
926         enum EALREADY           = 114;        ///
927         enum EINPROGRESS        = 115;        ///
928         enum ESTALE             = 116;        ///
929         enum EUCLEAN            = 117;        ///
930         enum ENOTNAM            = 118;        ///
931         enum ENAVAIL            = 119;        ///
932         enum EISNAM             = 120;        ///
933         enum EREMOTEIO          = 121;        ///
934         enum EDQUOT             = 122;        ///
935         enum ENOMEDIUM          = 123;        ///
936         enum EMEDIUMTYPE        = 124;        ///
937         enum ECANCELED          = 125;        ///
938         enum ENOKEY             = 126;        ///
939         enum EKEYEXPIRED        = 127;        ///
940         enum EKEYREVOKED        = 128;        ///
941         enum EKEYREJECTED       = 129;        ///
942         enum EOWNERDEAD         = 130;        ///
943         enum ENOTRECOVERABLE    = 131;        ///
944         enum ERFKILL            = 132;        ///
945         enum EHWPOISON          = 133;        ///
946     }
947     else version (RISCV_Any)
948     {
949         enum EDEADLK            = 35;         ///
950         enum ENAMETOOLONG       = 36;         ///
951         enum ENOLCK             = 37;         ///
952         enum ENOSYS             = 38;         ///
953         enum ENOTEMPTY          = 39;         ///
954         enum ELOOP              = 40;         ///
955         enum EWOULDBLOCK        = EAGAIN;     ///
956         enum ENOMSG             = 42;         ///
957         enum EIDRM              = 43;         ///
958         enum ECHRNG             = 44;         ///
959         enum EL2NSYNC           = 45;         ///
960         enum EL3HLT             = 46;         ///
961         enum EL3RST             = 47;         ///
962         enum ELNRNG             = 48;         ///
963         enum EUNATCH            = 49;         ///
964         enum ENOCSI             = 50;         ///
965         enum EL2HLT             = 51;         ///
966         enum EBADE              = 52;         ///
967         enum EBADR              = 53;         ///
968         enum EXFULL             = 54;         ///
969         enum ENOANO             = 55;         ///
970         enum EBADRQC            = 56;         ///
971         enum EBADSLT            = 57;         ///
972         enum EDEADLOCK          = EDEADLK;    ///
973         enum EBFONT             = 59;         ///
974         enum ENOSTR             = 60;         ///
975         enum ENODATA            = 61;         ///
976         enum ETIME              = 62;         ///
977         enum ENOSR              = 63;         ///
978         enum ENONET             = 64;         ///
979         enum ENOPKG             = 65;         ///
980         enum EREMOTE            = 66;         ///
981         enum ENOLINK            = 67;         ///
982         enum EADV               = 68;         ///
983         enum ESRMNT             = 69;         ///
984         enum ECOMM              = 70;         ///
985         enum EPROTO             = 71;         ///
986         enum EMULTIHOP          = 72;         ///
987         enum EDOTDOT            = 73;         ///
988         enum EBADMSG            = 74;         ///
989         enum EOVERFLOW          = 75;         ///
990         enum ENOTUNIQ           = 76;         ///
991         enum EBADFD             = 77;         ///
992         enum EREMCHG            = 78;         ///
993         enum ELIBACC            = 79;         ///
994         enum ELIBBAD            = 80;         ///
995         enum ELIBSCN            = 81;         ///
996         enum ELIBMAX            = 82;         ///
997         enum ELIBEXEC           = 83;         ///
998         enum EILSEQ             = 84;         ///
999         enum ERESTART           = 85;         ///
1000         enum ESTRPIPE           = 86;         ///
1001         enum EUSERS             = 87;         ///
1002         enum ENOTSOCK           = 88;         ///
1003         enum EDESTADDRREQ       = 89;         ///
1004         enum EMSGSIZE           = 90;         ///
1005         enum EPROTOTYPE         = 91;         ///
1006         enum ENOPROTOOPT        = 92;         ///
1007         enum EPROTONOSUPPORT    = 93;         ///
1008         enum ESOCKTNOSUPPORT    = 94;         ///
1009         enum EOPNOTSUPP         = 95;         ///
1010         enum EPFNOSUPPORT       = 96;         ///
1011         enum EAFNOSUPPORT       = 97;         ///
1012         enum EADDRINUSE         = 98;         ///
1013         enum EADDRNOTAVAIL      = 99;         ///
1014         enum ENETDOWN           = 100;        ///
1015         enum ENETUNREACH        = 101;        ///
1016         enum ENETRESET          = 102;        ///
1017         enum ECONNABORTED       = 103;        ///
1018         enum ECONNRESET         = 104;        ///
1019         enum ENOBUFS            = 105;        ///
1020         enum EISCONN            = 106;        ///
1021         enum ENOTCONN           = 107;        ///
1022         enum ESHUTDOWN          = 108;        ///
1023         enum ETOOMANYREFS       = 109;        ///
1024         enum ETIMEDOUT          = 110;        ///
1025         enum ECONNREFUSED       = 111;        ///
1026         enum EHOSTDOWN          = 112;        ///
1027         enum EHOSTUNREACH       = 113;        ///
1028         enum EALREADY           = 114;        ///
1029         enum EINPROGRESS        = 115;        ///
1030         enum ESTALE             = 116;        ///
1031         enum EUCLEAN            = 117;        ///
1032         enum ENOTNAM            = 118;        ///
1033         enum ENAVAIL            = 119;        ///
1034         enum EISNAM             = 120;        ///
1035         enum EREMOTEIO          = 121;        ///
1036         enum EDQUOT             = 122;        ///
1037         enum ENOMEDIUM          = 123;        ///
1038         enum EMEDIUMTYPE        = 124;        ///
1039         enum ECANCELED          = 125;        ///
1040         enum ENOKEY             = 126;        ///
1041         enum EKEYEXPIRED        = 127;        ///
1042         enum EKEYREVOKED        = 128;        ///
1043         enum EKEYREJECTED       = 129;        ///
1044         enum EOWNERDEAD         = 130;        ///
1045         enum ENOTRECOVERABLE    = 131;        ///
1046         enum ERFKILL            = 132;        ///
1047         enum EHWPOISON          = 133;        ///
1048     }
1049     else version (SPARC_Any)
1050     {
1051         enum EWOULDBLOCK        = EAGAIN;     ///
1052         enum EINPROGRESS        = 36;         ///
1053         enum EALREADY           = 37;         ///
1054         enum ENOTSOCK           = 38;         ///
1055         enum EDESTADDRREQ       = 39;         ///
1056         enum EMSGSIZE           = 40;         ///
1057         enum EPROTOTYPE         = 41;         ///
1058         enum ENOPROTOOPT        = 42;         ///
1059         enum EPROTONOSUPPORT    = 43;         ///
1060         enum ESOCKTNOSUPPORT    = 44;         ///
1061         enum EOPNOTSUPP         = 45;         ///
1062         enum ENOTSUP            = EOPNOTSUPP; ///
1063         enum EPFNOSUPPORT       = 46;         ///
1064         enum EAFNOSUPPORT       = 47;         ///
1065         enum EADDRINUSE         = 48;         ///
1066         enum EADDRNOTAVAIL      = 49;         ///
1067         enum ENETDOWN           = 50;         ///
1068         enum ENETUNREACH        = 51;         ///
1069         enum ENETRESET          = 52;         ///
1070         enum ECONNABORTED       = 53;         ///
1071         enum ECONNRESET         = 54;         ///
1072         enum ENOBUFS            = 55;         ///
1073         enum EISCONN            = 56;         ///
1074         enum ENOTCONN           = 57;         ///
1075         enum ESHUTDOWN          = 58;         ///
1076         enum ETOOMANYREFS       = 59;         ///
1077         enum ETIMEDOUT          = 60;         ///
1078         enum ECONNREFUSED       = 61;         ///
1079         enum ELOOP              = 62;         ///
1080         enum ENAMETOOLONG       = 63;         ///
1081         enum EHOSTDOWN          = 64;         ///
1082         enum EHOSTUNREACH       = 65;         ///
1083         enum ENOTEMPTY          = 66;         ///
1084         enum EPROCLIM           = 67;         ///
1085         enum EUSERS             = 68;         ///
1086         enum EDQUOT             = 69;         ///
1087         enum ESTALE             = 70;         ///
1088         enum EREMOTE            = 71;         ///
1089         enum ENOSTR             = 72;         ///
1090         enum ETIME              = 73;         ///
1091         enum ENOSR              = 74;         ///
1092         enum ENOMSG             = 75;         ///
1093         enum EBADMSG            = 76;         ///
1094         enum EIDRM              = 77;         ///
1095         enum EDEADLK            = 78;         ///
1096         enum ENOLCK             = 79;         ///
1097         enum ENONET             = 80;         ///
1098         enum ERREMOTE           = 81;         ///
1099         enum ENOLINK            = 82;         ///
1100         enum EADV               = 83;         ///
1101         enum ESRMNT             = 84;         ///
1102         enum ECOMM              = 85;         ///
1103         enum EPROTO             = 86;         ///
1104         enum EMULTIHOP          = 87;         ///
1105         enum EDOTDOT            = 88;         ///
1106         enum EREMCHG            = 89;         ///
1107         enum ENOSYS             = 90;         ///
1108         enum ESTRPIPE           = 91;         ///
1109         enum EOVERFLOW          = 92;         ///
1110         enum EBADFD             = 93;         ///
1111         enum ECHRNG             = 94;         ///
1112         enum EL2NSYNC           = 95;         ///
1113         enum EL3HLT             = 96;         ///
1114         enum EL3RST             = 97;         ///
1115         enum ELNRNG             = 98;         ///
1116         enum EUNATCH            = 99;         ///
1117         enum ENOCSI             = 100;        ///
1118         enum EL2HLT             = 101;        ///
1119         enum EBADE              = 102;        ///
1120         enum EBADR              = 103;        ///
1121         enum EXFULL             = 104;        ///
1122         enum ENOANO             = 105;        ///
1123         enum EBADRQC            = 106;        ///
1124         enum EBADSLT            = 107;        ///
1125         enum EDEADLOCK          = 108;        ///
1126         enum EBFONT             = 109;        ///
1127         enum ELIBEXEC           = 110;        ///
1128         enum ENODATA            = 111;        ///
1129         enum ELIBBAD            = 112;        ///
1130         enum ENOPKG             = 113;        ///
1131         enum ELIBACC            = 114;        ///
1132         enum ENOTUNIQ           = 115;        ///
1133         enum ERESTART           = 116;        ///
1134         enum EUCLEAN            = 117;        ///
1135         enum ENOTNAM            = 118;        ///
1136         enum ENAVAIL            = 119;        ///
1137         enum EISNAM             = 120;        ///
1138         enum EREMOTEIO          = 121;        ///
1139         enum EILSEQ             = 122;        ///
1140         enum ELIBMAX            = 123;        ///
1141         enum ELIBSCN            = 124;        ///
1142         enum ENOMEDIUM          = 125;        ///
1143         enum EMEDIUMTYPE        = 126;        ///
1144         enum ECANCELED          = 127;        ///
1145         enum ENOKEY             = 128;        ///
1146         enum EKEYEXPIRED        = 129;        ///
1147         enum EKEYREVOKED        = 130;        ///
1148         enum EKEYREJECTED       = 131;        ///
1149         enum EOWNERDEAD         = 132;        ///
1150         enum ENOTRECOVERABLE    = 133;        ///
1151         enum ERFKILL            = 134;        ///
1152         enum EHWPOISON          = 135;        ///
1153     }
1154     else version (IBMZ_Any)
1155     {
1156         enum EDEADLK            = 35;         ///
1157         enum ENAMETOOLONG       = 36;         ///
1158         enum ENOLCK             = 37;         ///
1159         enum ENOSYS             = 38;         ///
1160         enum ENOTEMPTY          = 39;         ///
1161         enum ELOOP              = 40;         ///
1162         enum EWOULDBLOCK        = EAGAIN;     ///
1163         enum ENOMSG             = 42;         ///
1164         enum EIDRM              = 43;         ///
1165         enum ECHRNG             = 44;         ///
1166         enum EL2NSYNC           = 45;         ///
1167         enum EL3HLT             = 46;         ///
1168         enum EL3RST             = 47;         ///
1169         enum ELNRNG             = 48;         ///
1170         enum EUNATCH            = 49;         ///
1171         enum ENOCSI             = 50;         ///
1172         enum EL2HLT             = 51;         ///
1173         enum EBADE              = 52;         ///
1174         enum EBADR              = 53;         ///
1175         enum EXFULL             = 54;         ///
1176         enum ENOANO             = 55;         ///
1177         enum EBADRQC            = 56;         ///
1178         enum EBADSLT            = 57;         ///
1179         enum EDEADLOCK          = EDEADLK;    ///
1180         enum EBFONT             = 59;         ///
1181         enum ENOSTR             = 60;         ///
1182         enum ENODATA            = 61;         ///
1183         enum ETIME              = 62;         ///
1184         enum ENOSR              = 63;         ///
1185         enum ENONET             = 64;         ///
1186         enum ENOPKG             = 65;         ///
1187         enum EREMOTE            = 66;         ///
1188         enum ENOLINK            = 67;         ///
1189         enum EADV               = 68;         ///
1190         enum ESRMNT             = 69;         ///
1191         enum ECOMM              = 70;         ///
1192         enum EPROTO             = 71;         ///
1193         enum EMULTIHOP          = 72;         ///
1194         enum EDOTDOT            = 73;         ///
1195         enum EBADMSG            = 74;         ///
1196         enum EOVERFLOW          = 75;         ///
1197         enum ENOTUNIQ           = 76;         ///
1198         enum EBADFD             = 77;         ///
1199         enum EREMCHG            = 78;         ///
1200         enum ELIBACC            = 79;         ///
1201         enum ELIBBAD            = 80;         ///
1202         enum ELIBSCN            = 81;         ///
1203         enum ELIBMAX            = 82;         ///
1204         enum ELIBEXEC           = 83;         ///
1205         enum EILSEQ             = 84;         ///
1206         enum ERESTART           = 85;         ///
1207         enum ESTRPIPE           = 86;         ///
1208         enum EUSERS             = 87;         ///
1209         enum ENOTSOCK           = 88;         ///
1210         enum EDESTADDRREQ       = 89;         ///
1211         enum EMSGSIZE           = 90;         ///
1212         enum EPROTOTYPE         = 91;         ///
1213         enum ENOPROTOOPT        = 92;         ///
1214         enum EPROTONOSUPPORT    = 93;         ///
1215         enum ESOCKTNOSUPPORT    = 94;         ///
1216         enum EOPNOTSUPP         = 95;         ///
1217         enum ENOTSUP            = EOPNOTSUPP; ///
1218         enum EPFNOSUPPORT       = 96;         ///
1219         enum EAFNOSUPPORT       = 97;         ///
1220         enum EADDRINUSE         = 98;         ///
1221         enum EADDRNOTAVAIL      = 99;         ///
1222         enum ENETDOWN           = 100;        ///
1223         enum ENETUNREACH        = 101;        ///
1224         enum ENETRESET          = 102;        ///
1225         enum ECONNABORTED       = 103;        ///
1226         enum ECONNRESET         = 104;        ///
1227         enum ENOBUFS            = 105;        ///
1228         enum EISCONN            = 106;        ///
1229         enum ENOTCONN           = 107;        ///
1230         enum ESHUTDOWN          = 108;        ///
1231         enum ETOOMANYREFS       = 109;        ///
1232         enum ETIMEDOUT          = 110;        ///
1233         enum ECONNREFUSED       = 111;        ///
1234         enum EHOSTDOWN          = 112;        ///
1235         enum EHOSTUNREACH       = 113;        ///
1236         enum EALREADY           = 114;        ///
1237         enum EINPROGRESS        = 115;        ///
1238         enum ESTALE             = 116;        ///
1239         enum EUCLEAN            = 117;        ///
1240         enum ENOTNAM            = 118;        ///
1241         enum ENAVAIL            = 119;        ///
1242         enum EISNAM             = 120;        ///
1243         enum EREMOTEIO          = 121;        ///
1244         enum EDQUOT             = 122;        ///
1245         enum ENOMEDIUM          = 123;        ///
1246         enum EMEDIUMTYPE        = 124;        ///
1247         enum ECANCELED          = 125;        ///
1248         enum ENOKEY             = 126;        ///
1249         enum EKEYEXPIRED        = 127;        ///
1250         enum EKEYREVOKED        = 128;        ///
1251         enum EKEYREJECTED       = 129;        ///
1252         enum EOWNERDEAD         = 130;        ///
1253         enum ENOTRECOVERABLE    = 131;        ///
1254         enum ERFKILL            = 132;        ///
1255         enum EHWPOISON          = 133;        ///
1256     }
1257     else version (LoongArch64)
1258     {
1259         enum EDEADLK            = 35;         ///
1260         enum ENAMETOOLONG       = 36;         ///
1261         enum ENOLCK             = 37;         ///
1262         enum ENOSYS             = 38;         ///
1263         enum ENOTEMPTY          = 39;         ///
1264         enum ELOOP              = 40;         ///
1265         enum EWOULDBLOCK        = EAGAIN;     ///
1266         enum ENOMSG             = 42;         ///
1267         enum EIDRM              = 43;         ///
1268         enum ECHRNG             = 44;         ///
1269         enum EL2NSYNC           = 45;         ///
1270         enum EL3HLT             = 46;         ///
1271         enum EL3RST             = 47;         ///
1272         enum ELNRNG             = 48;         ///
1273         enum EUNATCH            = 49;         ///
1274         enum ENOCSI             = 50;         ///
1275         enum EL2HLT             = 51;         ///
1276         enum EBADE              = 52;         ///
1277         enum EBADR              = 53;         ///
1278         enum EXFULL             = 54;         ///
1279         enum ENOANO             = 55;         ///
1280         enum EBADRQC            = 56;         ///
1281         enum EBADSLT            = 57;         ///
1282         enum EDEADLOCK          = EDEADLK;    ///
1283         enum EBFONT             = 59;         ///
1284         enum ENOSTR             = 60;         ///
1285         enum ENODATA            = 61;         ///
1286         enum ETIME              = 62;         ///
1287         enum ENOSR              = 63;         ///
1288         enum ENONET             = 64;         ///
1289         enum ENOPKG             = 65;         ///
1290         enum EREMOTE            = 66;         ///
1291         enum ENOLINK            = 67;         ///
1292         enum EADV               = 68;         ///
1293         enum ESRMNT             = 69;         ///
1294         enum ECOMM              = 70;         ///
1295         enum EPROTO             = 71;         ///
1296         enum EMULTIHOP          = 72;         ///
1297         enum EDOTDOT            = 73;         ///
1298         enum EBADMSG            = 74;         ///
1299         enum EOVERFLOW          = 75;         ///
1300         enum ENOTUNIQ           = 76;         ///
1301         enum EBADFD             = 77;         ///
1302         enum EREMCHG            = 78;         ///
1303         enum ELIBACC            = 79;         ///
1304         enum ELIBBAD            = 80;         ///
1305         enum ELIBSCN            = 81;         ///
1306         enum ELIBMAX            = 82;         ///
1307         enum ELIBEXEC           = 83;         ///
1308         enum EILSEQ             = 84;         ///
1309         enum ERESTART           = 85;         ///
1310         enum ESTRPIPE           = 86;         ///
1311         enum EUSERS             = 87;         ///
1312         enum ENOTSOCK           = 88;         ///
1313         enum EDESTADDRREQ       = 89;         ///
1314         enum EMSGSIZE           = 90;         ///
1315         enum EPROTOTYPE         = 91;         ///
1316         enum ENOPROTOOPT        = 92;         ///
1317         enum EPROTONOSUPPORT    = 93;         ///
1318         enum ESOCKTNOSUPPORT    = 94;         ///
1319         enum EOPNOTSUPP         = 95;         ///
1320         enum ENOTSUP            = EOPNOTSUPP; ///
1321         enum EPFNOSUPPORT       = 96;         ///
1322         enum EAFNOSUPPORT       = 97;         ///
1323         enum EADDRINUSE         = 98;         ///
1324         enum EADDRNOTAVAIL      = 99;         ///
1325         enum ENETDOWN           = 100;        ///
1326         enum ENETUNREACH        = 101;        ///
1327         enum ENETRESET          = 102;        ///
1328         enum ECONNABORTED       = 103;        ///
1329         enum ECONNRESET         = 104;        ///
1330         enum ENOBUFS            = 105;        ///
1331         enum EISCONN            = 106;        ///
1332         enum ENOTCONN           = 107;        ///
1333         enum ESHUTDOWN          = 108;        ///
1334         enum ETOOMANYREFS       = 109;        ///
1335         enum ETIMEDOUT          = 110;        ///
1336         enum ECONNREFUSED       = 111;        ///
1337         enum EHOSTDOWN          = 112;        ///
1338         enum EHOSTUNREACH       = 113;        ///
1339         enum EALREADY           = 114;        ///
1340         enum EINPROGRESS        = 115;        ///
1341         enum ESTALE             = 116;        ///
1342         enum EUCLEAN            = 117;        ///
1343         enum ENOTNAM            = 118;        ///
1344         enum ENAVAIL            = 119;        ///
1345         enum EISNAM             = 120;        ///
1346         enum EREMOTEIO          = 121;        ///
1347         enum EDQUOT             = 122;        ///
1348         enum ENOMEDIUM          = 123;        ///
1349         enum EMEDIUMTYPE        = 124;        ///
1350         enum ECANCELED          = 125;        ///
1351         enum ENOKEY             = 126;        ///
1352         enum EKEYEXPIRED        = 127;        ///
1353         enum EKEYREVOKED        = 128;        ///
1354         enum EKEYREJECTED       = 129;        ///
1355         enum EOWNERDEAD         = 130;        ///
1356         enum ENOTRECOVERABLE    = 131;        ///
1357         enum ERFKILL            = 132;        ///
1358         enum EHWPOISON          = 133;        ///
1359     }
1360     else
1361     {
1362         static assert(false, "Architecture not supported.");
1363     }
1364 }
1365 else version (Darwin)
1366 {
1367     enum EPERM              = 1;        /// Operation not permitted
1368     enum ENOENT             = 2;        /// No such file or directory
1369     enum ESRCH              = 3;        /// No such process
1370     enum EINTR              = 4;        /// Interrupted system call
1371     enum EIO                = 5;        /// Input/output error
1372     enum ENXIO              = 6;        /// Device not configured
1373     enum E2BIG              = 7;        /// Argument list too long
1374     enum ENOEXEC            = 8;        /// Exec format error
1375     enum EBADF              = 9;        /// Bad file descriptor
1376     enum ECHILD             = 10;       /// No child processes
1377     enum EDEADLK            = 11;       /// Resource deadlock avoided
1378     enum ENOMEM             = 12;       /// Cannot allocate memory
1379     enum EACCES             = 13;       /// Permission denied
1380     enum EFAULT             = 14;       /// Bad address
1381     enum EBUSY              = 16;       /// Device busy
1382     enum EEXIST             = 17;       /// File exists
1383     enum EXDEV              = 18;       /// Cross-device link
1384     enum ENODEV             = 19;       /// Operation not supported by device
1385     enum ENOTDIR            = 20;       /// Not a directory
1386     enum EISDIR             = 21;       /// Is a directory
1387     enum EINVAL             = 22;       /// Invalid argument
1388     enum ENFILE             = 23;       /// Too many open files in system
1389     enum EMFILE             = 24;       /// Too many open files
1390     enum ENOTTY             = 25;       /// Inappropriate ioctl for device
1391     enum ETXTBSY            = 26;       /// Text file busy
1392     enum EFBIG              = 27;       /// File too large
1393     enum ENOSPC             = 28;       /// No space left on device
1394     enum ESPIPE             = 29;       /// Illegal seek
1395     enum EROFS              = 30;       /// Read-only file system
1396     enum EMLINK             = 31;       /// Too many links
1397     enum EPIPE              = 32;       /// Broken pipe
1398     enum EDOM               = 33;       /// Numerical argument out of domain
1399     enum ERANGE             = 34;       /// Result too large
1400     enum EAGAIN             = 35;       /// Resource temporarily unavailable
1401     enum EWOULDBLOCK        = EAGAIN;   /// Operation would block
1402     enum EINPROGRESS        = 36;       /// Operation now in progress
1403     enum EALREADY           = 37;       /// Operation already in progress
1404     enum ENOTSOCK           = 38;       /// Socket operation on non-socket
1405     enum EDESTADDRREQ       = 39;       /// Destination address required
1406     enum EMSGSIZE           = 40;       /// Message too long
1407     enum EPROTOTYPE         = 41;       /// Protocol wrong type for socket
1408     enum ENOPROTOOPT        = 42;       /// Protocol not available
1409     enum EPROTONOSUPPORT    = 43;       /// Protocol not supported
1410     enum ENOTSUP            = 45;       /// Operation not supported
1411     enum EOPNOTSUPP         = ENOTSUP;  /// Operation not supported on socket
1412     enum EAFNOSUPPORT       = 47;       /// Address family not supported by protocol family
1413     enum EADDRINUSE         = 48;       /// Address already in use
1414     enum EADDRNOTAVAIL      = 49;       /// Can't assign requested address
1415     enum ENETDOWN           = 50;       /// Network is down
1416     enum ENETUNREACH        = 51;       /// Network is unreachable
1417     enum ENETRESET          = 52;       /// Network dropped connection on reset
1418     enum ECONNABORTED       = 53;       /// Software caused connection abort
1419     enum ECONNRESET         = 54;       /// Connection reset by peer
1420     enum ENOBUFS            = 55;       /// No buffer space available
1421     enum EISCONN            = 56;       /// Socket is already connected
1422     enum ENOTCONN           = 57;       /// Socket is not connected
1423     enum ETIMEDOUT          = 60;       /// Operation timed out
1424     enum ECONNREFUSED       = 61;       /// Connection refused
1425     enum ELOOP              = 62;       /// Too many levels of symbolic links
1426     enum ENAMETOOLONG       = 63;       /// File name too long
1427     enum EHOSTUNREACH       = 65;       /// No route to host
1428     enum ENOTEMPTY          = 66;       /// Directory not empty
1429     enum EDQUOT             = 69;       /// Disc quota exceeded
1430     enum ESTALE             = 70;       /// Stale NFS file handle
1431     enum ENOLCK             = 77;       /// No locks available
1432     enum ENOSYS             = 78;       /// Function not implemented
1433     enum EOVERFLOW          = 84;       /// Value too large to be stored in data type
1434     enum ECANCELED          = 89;       /// Operation canceled
1435     enum EIDRM              = 90;       /// Identifier removed
1436     enum ENOMSG             = 91;       /// No message of desired type
1437     enum EILSEQ             = 92;       /// Illegal byte sequence
1438     enum EBADMSG            = 94;       /// Bad message
1439     enum EMULTIHOP          = 95;       /// Reserved
1440     enum ENODATA            = 96;       /// No message available on STREAM
1441     enum ENOLINK            = 97;       /// Reserved
1442     enum ENOSR              = 98;       /// No STREAM resources
1443     enum ENOSTR             = 99;       /// Not a STREAM
1444     enum EPROTO             = 100;      /// Protocol error
1445     enum ETIME              = 101;      /// STREAM ioctl timeout
1446     enum ELAST              = 101;      /// Must be equal largest errno
1447 }
1448 else version (FreeBSD)
1449 {
1450     enum EPERM              = 1;        /// Operation not permitted
1451     enum ENOENT             = 2;        /// No such file or directory
1452     enum ESRCH              = 3;        /// No such process
1453     enum EINTR              = 4;        /// Interrupted system call
1454     enum EIO                = 5;        /// Input/output error
1455     enum ENXIO              = 6;        /// Device not configured
1456     enum E2BIG              = 7;        /// Argument list too long
1457     enum ENOEXEC            = 8;        /// Exec format error
1458     enum EBADF              = 9;        /// Bad file descriptor
1459     enum ECHILD             = 10;       /// No child processes
1460     enum EDEADLK            = 11;       /// Resource deadlock avoided
1461     enum ENOMEM             = 12;       /// Cannot allocate memory
1462     enum EACCES             = 13;       /// Permission denied
1463     enum EFAULT             = 14;       /// Bad address
1464     enum ENOTBLK            = 15;       /// Block device required
1465     enum EBUSY              = 16;       /// Device busy
1466     enum EEXIST             = 17;       /// File exists
1467     enum EXDEV              = 18;       /// Cross-device link
1468     enum ENODEV             = 19;       /// Operation not supported by device
1469     enum ENOTDIR            = 20;       /// Not a directory
1470     enum EISDIR             = 21;       /// Is a directory
1471     enum EINVAL             = 22;       /// Invalid argument
1472     enum ENFILE             = 23;       /// Too many open files in system
1473     enum EMFILE             = 24;       /// Too many open files
1474     enum ENOTTY             = 25;       /// Inappropriate ioctl for device
1475     enum ETXTBSY            = 26;       /// Text file busy
1476     enum EFBIG              = 27;       /// File too large
1477     enum ENOSPC             = 28;       /// No space left on device
1478     enum ESPIPE             = 29;       /// Illegal seek
1479     enum EROFS              = 30;       /// Read-only file system
1480     enum EMLINK             = 31;       /// Too many links
1481     enum EPIPE              = 32;       /// Broken pipe
1482     enum EDOM               = 33;       /// Numerical argument out of domain
1483     enum ERANGE             = 34;       /// Result too large
1484     enum EAGAIN             = 35;       /// Resource temporarily unavailable
1485     enum EWOULDBLOCK        = EAGAIN;   /// Operation would block
1486     enum EINPROGRESS        = 36;       /// Operation now in progress
1487     enum EALREADY           = 37;       /// Operation already in progress
1488     enum ENOTSOCK           = 38;       /// Socket operation on non-socket
1489     enum EDESTADDRREQ       = 39;       /// Destination address required
1490     enum EMSGSIZE           = 40;       /// Message too long
1491     enum EPROTOTYPE         = 41;       /// Protocol wrong type for socket
1492     enum ENOPROTOOPT        = 42;       /// Protocol not available
1493     enum EPROTONOSUPPORT    = 43;       /// Protocol not supported
1494     enum ENOTSUP            = 45;       /// Operation not supported
1495     enum EOPNOTSUPP         = ENOTSUP;  /// Operation not supported on socket
1496     enum EAFNOSUPPORT       = 47;       /// Address family not supported by protocol family
1497     enum EADDRINUSE         = 48;       /// Address already in use
1498     enum EADDRNOTAVAIL      = 49;       /// Can't assign requested address
1499     enum ENETDOWN           = 50;       /// Network is down
1500     enum ENETUNREACH        = 51;       /// Network is unreachable
1501     enum ENETRESET          = 52;       /// Network dropped connection on reset
1502     enum ECONNABORTED       = 53;       /// Software caused connection abort
1503     enum ECONNRESET         = 54;       /// Connection reset by peer
1504     enum ENOBUFS            = 55;       /// No buffer space available
1505     enum EISCONN            = 56;       /// Socket is already connected
1506     enum ENOTCONN           = 57;       /// Socket is not connected
1507     enum ESHUTDOWN          = 58;       /// Can't send after socket shutdown
1508     enum ETOOMANYREFS       = 59;       /// Too many refrences; can't splice
1509     enum ETIMEDOUT          = 60;       /// Operation timed out
1510     enum ECONNREFUSED       = 61;       /// Connection refused
1511     enum ELOOP              = 62;       /// Too many levels of symbolic links
1512     enum ENAMETOOLONG       = 63;       /// File name too long
1513     enum EHOSTUNREACH       = 65;       /// No route to host
1514     enum ENOTEMPTY          = 66;       /// Directory not empty
1515     enum EPROCLIM           = 67;       /// Too many processes
1516     enum EUSERS             = 68;       /// Too many users
1517     enum EDQUOT             = 69;       /// Disc quota exceeded
1518     enum ESTALE             = 70;       /// Stale NFS file handle
1519     enum EREMOTE            = 71;       /// Too many levels of remote in path
1520     enum EBADRPC            = 72;       /// RPC struct is bad
1521     enum ERPCMISMATCH       = 73;       /// RPC version wrong
1522     enum EPROGUNAVAIL       = 74;       /// RPC prog. not avail
1523     enum EPROGMISMATCH      = 75;       /// Program version wrong
1524     enum EPROCUNAVAIL       = 76;       /// Bad procedure for program
1525     enum ENOLCK             = 77;       /// No locks available
1526     enum ENOSYS             = 78;       /// Function not implemented
1527     enum EFTYPE             = 79;       /// Inappropriate file type or format
1528     enum EAUTH              = 80;       /// Authentication error
1529     enum ENEEDAUTH          = 81;       /// Need authenticator
1530     enum EIDRM              = 82;       /// Itendifier removed
1531     enum ENOMSG             = 83;       /// No message of desired type
1532     enum EOVERFLOW          = 84;       /// Value too large to be stored in data type
1533     enum ECANCELED          = 85;       /// Operation canceled
1534     enum EILSEQ             = 86;       /// Illegal byte sequence
1535     enum ENOATTR            = 87;       /// Attribute not found
1536     enum EDOOFUS            = 88;       /// Programming error
1537     enum EBADMSG            = 89;       /// Bad message
1538     enum EMULTIHOP          = 90;       /// Multihop attempted
1539     enum ENOLINK            = 91;       /// Link has been severed
1540     enum EPROTO             = 92;       /// Protocol error
1541     enum ELAST              = 92;       /// Must be equal largest errno
1542 }
1543 else version (NetBSD)
1544 {
1545     // http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/sys/errno.h
1546     enum EPERM           = 1;
1547     enum ENOENT          = 2;
1548     enum ESRCH           = 3;
1549     enum EINTR           = 4;
1550     enum EIO             = 5;
1551     enum ENXIO           = 6;
1552     enum E2BIG           = 7;
1553     enum ENOEXEC         = 8;
1554     enum EBADF           = 9;
1555     enum ECHILD          = 10;
1556     enum EDEADLK         = 11;
1557     ///
1558     enum ENOMEM          = 12;
1559     enum EACCES          = 13;
1560     enum EFAULT          = 14;
1561     enum ENOTBLK         = 15;
1562     enum EBUSY           = 16;
1563     enum EEXIST          = 17;
1564     enum EXDEV           = 18;
1565     enum ENODEV          = 19;
1566     enum ENOTDIR         = 20;
1567     enum EISDIR          = 21;
1568     enum EINVAL          = 22;
1569     enum ENFILE          = 23;
1570     enum EMFILE          = 24;
1571     enum ENOTTY          = 25;
1572     enum ETXTBSY         = 26;
1573     enum EFBIG           = 27;
1574     enum ENOSPC          = 28;
1575     enum ESPIPE          = 29;
1576     enum EROFS           = 30;
1577     enum EMLINK          = 31;
1578     enum EPIPE           = 32;
1579     ///
1580     enum EDOM            = 33;
1581     enum ERANGE          = 34;
1582 
1583     ///
1584     enum EAGAIN          = 35;
1585     enum EWOULDBLOCK     = EAGAIN;
1586     enum EINPROGRESS     = 36;
1587     enum EALREADY        = 37;
1588 
1589     ///
1590     enum ENOTSOCK        = 38;
1591     enum EDESTADDRREQ    = 39;
1592     enum EMSGSIZE        = 40;
1593     enum EPROTOTYPE      = 41;
1594     enum ENOPROTOOPT     = 42;
1595     enum EPROTONOSUPPORT = 43;
1596     enum ESOCKTNOSUPPORT = 44;
1597     enum EOPNOTSUPP      = 45;
1598     enum EPFNOSUPPORT    = 46;
1599     enum EAFNOSUPPORT    = 47;
1600     enum EADDRINUSE      = 48;
1601     enum EADDRNOTAVAIL   = 49;
1602 
1603     ///
1604     enum ENETDOWN        = 50;
1605     enum ENETUNREACH     = 51;
1606     enum ENETRESET       = 52;
1607     enum ECONNABORTED    = 53;
1608     enum ECONNRESET      = 54;
1609     enum ENOBUFS         = 55;
1610     enum EISCONN         = 56;
1611     enum ENOTCONN        = 57;
1612     enum ESHUTDOWN       = 58;
1613     enum ETOOMANYREFS    = 59;
1614     enum ETIMEDOUT       = 60;
1615     enum ECONNREFUSED    = 61;
1616     enum ELOOP           = 62;
1617     enum ENAMETOOLONG    = 63;
1618 
1619     ///
1620     enum EHOSTDOWN       = 64;
1621     enum EHOSTUNREACH    = 65;
1622     enum ENOTEMPTY       = 66;
1623 
1624     ///
1625     enum EPROCLIM        = 67;
1626     enum EUSERS          = 68;
1627     enum EDQUOT          = 69;
1628 
1629     ///
1630     enum ESTALE          = 70;
1631     enum EREMOTE         = 71;
1632     enum EBADRPC         = 72;
1633     enum ERPCMISMATCH    = 73;
1634     enum EPROGUNAVAIL    = 74;
1635     enum EPROGMISMATCH   = 75;
1636     enum EPROCUNAVAIL    = 76;
1637 
1638     enum ENOLCK          = 77;
1639     enum ENOSYS          = 78;
1640 
1641     enum EFTYPE          = 79;
1642     enum EAUTH           = 80;
1643     enum ENEEDAUTH       = 81;
1644 
1645     ///
1646     enum EIDRM           = 82;
1647     enum ENOMSG          = 83;
1648     enum EOVERFLOW       = 84;
1649     ///
1650     enum EILSEQ          = 85;
1651 
1652     ///
1653     enum ENOTSUP         = 86;
1654 
1655     ///
1656     enum ECANCELED       = 87;
1657 
1658     ///
1659     enum EBADMSG         = 88;
1660 
1661     ///
1662     enum ENODATA         = 89;
1663     enum ENOSR           = 90;
1664     enum ENOSTR          = 91;
1665     enum ETIME           = 92;
1666 
1667     ///
1668     enum ENOATTR         = 93;
1669 
1670     ///
1671     enum EMULTIHOP       = 94;
1672     enum ENOLINK         = 95;
1673     enum EPROTO          = 96;
1674 }
1675 else version (OpenBSD)
1676 {
1677     enum EPERM              = 1;        /// Operation not permitted
1678     enum ENOENT             = 2;        /// No such file or directory
1679     enum ESRCH              = 3;        /// No such process
1680     enum EINTR              = 4;        /// Interrupted system call
1681     enum EIO                = 5;        /// Input/output error
1682     enum ENXIO              = 6;        /// Device not configured
1683     enum E2BIG              = 7;        /// Argument list too long
1684     enum ENOEXEC            = 8;        /// Exec format error
1685     enum EBADF              = 9;        /// Bad file descriptor
1686     enum ECHILD             = 10;       /// No child processes
1687     enum EDEADLK            = 11;       /// Resource deadlock avoided
1688     enum ENOMEM             = 12;       /// Cannot allocate memory
1689     enum EACCES             = 13;       /// Permission denied
1690     enum EFAULT             = 14;       /// Bad address
1691     enum ENOTBLK            = 15;       /// Block device required
1692     enum EBUSY              = 16;       /// Device busy
1693     enum EEXIST             = 17;       /// File exists
1694     enum EXDEV              = 18;       /// Cross-device link
1695     enum ENODEV             = 19;       /// Operation not supported by device
1696     enum ENOTDIR            = 20;       /// Not a directory
1697     enum EISDIR             = 21;       /// Is a directory
1698     enum EINVAL             = 22;       /// Invalid argument
1699     enum ENFILE             = 23;       /// Too many open files in system
1700     enum EMFILE             = 24;       /// Too many open files
1701     enum ENOTTY             = 25;       /// Inappropriate ioctl for device
1702     enum ETXTBSY            = 26;       /// Text file busy
1703     enum EFBIG              = 27;       /// File too large
1704     enum ENOSPC             = 28;       /// No space left on device
1705     enum ESPIPE             = 29;       /// Illegal seek
1706     enum EROFS              = 30;       /// Read-only file system
1707     enum EMLINK             = 31;       /// Too many links
1708     enum EPIPE              = 32;       /// Broken pipe
1709     enum EDOM               = 33;       /// Numerical argument out of domain
1710     enum ERANGE             = 34;       /// Result too large
1711     enum EAGAIN             = 35;       /// Resource temporarily unavailable
1712     enum EWOULDBLOCK        = EAGAIN;   /// Operation would block
1713     enum EINPROGRESS        = 36;       /// Operation now in progress
1714     enum EALREADY           = 37;       /// Operation already in progress
1715     enum ENOTSOCK           = 38;       /// Socket operation on non-socket
1716     enum EDESTADDRREQ       = 39;       /// Destination address required
1717     enum EMSGSIZE           = 40;       /// Message too long
1718     enum EPROTOTYPE         = 41;       /// Protocol wrong type for socket
1719     enum ENOPROTOOPT        = 42;       /// Protocol not available
1720     enum EPROTONOSUPPORT    = 43;       /// Protocol not supported
1721     enum ESOCKTNOSUPPORT    = 44;       /// Socket type not supported
1722     enum EOPNOTSUPP         = 45;       /// Operation not supported
1723     enum EPFNOSUPPORT       = 46;       /// Protocol family not supported
1724     enum EAFNOSUPPORT       = 47;       /// Address family not supported by protocol family
1725     enum EADDRINUSE         = 48;       /// Address already in use
1726     enum EADDRNOTAVAIL      = 49;       /// Can't assign requested address
1727     enum ENETDOWN           = 50;       /// Network is down
1728     enum ENETUNREACH        = 51;       /// Network is unreachable
1729     enum ENETRESET          = 52;       /// Network dropped connection on reset
1730     enum ECONNABORTED       = 53;       /// Software caused connection abort
1731     enum ECONNRESET         = 54;       /// Connection reset by peer
1732     enum ENOBUFS            = 55;       /// No buffer space available
1733     enum EISCONN            = 56;       /// Socket is already connected
1734     enum ENOTCONN           = 57;       /// Socket is not connected
1735     enum ESHUTDOWN          = 58;       /// Can't send after socket shutdown
1736     enum ETOOMANYREFS       = 59;       /// Too many references: can't splice
1737     enum ETIMEDOUT          = 60;       /// Operation timed out
1738     enum ECONNREFUSED       = 61;       /// Connection refused
1739     enum ELOOP              = 62;       /// Too many levels of symbolic links
1740     enum ENAMETOOLONG       = 63;       /// File name too long
1741     enum EHOSTDOWN          = 64;       /// Host is down
1742     enum EHOSTUNREACH       = 65;       /// No route to host
1743     enum ENOTEMPTY          = 66;       /// Directory not empty
1744     enum EPROCLIM           = 67;       /// Too many processes
1745     enum EUSERS             = 68;       /// Too many users
1746     enum EDQUOT             = 69;       /// Disk quota exceeded
1747     enum ESTALE             = 70;       /// Stale NFS file handle
1748     enum EREMOTE            = 71;       /// Too many levels of remote in path
1749     enum EBADRPC            = 72;       /// RPC struct is bad
1750     enum ERPCMISMATCH       = 73;       /// RPC version wrong
1751     enum EPROGUNAVAIL       = 74;       /// RPC program not available
1752     enum EPROGMISMATCH      = 75;       /// Program version wrong
1753     enum EPROCUNAVAIL       = 76;       /// Bad procedure for program
1754     enum ENOLCK             = 77;       /// No locks available
1755     enum ENOSYS             = 78;       /// Function not implemented
1756     enum EFTYPE             = 79;       /// Inappropriate file type or format
1757     enum EAUTH              = 80;       /// Authentication error
1758     enum ENEEDAUTH          = 81;       /// Need authenticator
1759     enum EIPSEC             = 82;       /// IPsec processing failure
1760     enum ENOATTR            = 83;       /// Attribute not found
1761     enum EILSEQ             = 84;       /// Illegal byte sequence
1762     enum ENOMEDIUM          = 85;       /// No medium found
1763     enum EMEDIUMTYPE        = 86;       /// Wrong medium type
1764     enum EOVERFLOW          = 87;       /// Value too large to be stored in data type
1765     enum ECANCELED          = 88;       /// Operation canceled
1766     enum EIDRM              = 89;       /// Identifier removed
1767     enum ENOMSG             = 90;       /// No message of desired type
1768     enum ENOTSUP            = 91;       /// Not supported
1769     enum EBADMSG            = 92;       /// Bad message
1770     enum ENOTRECOVERABLE    = 93;       /// State not recoverable
1771     enum EOWNERDEAD         = 94;       /// Previous owner died
1772     enum EPROTO             = 95;       /// Protocol error
1773     enum ELAST              = 95;       /// Must be equal largest errno
1774 }
1775 else version (DragonFlyBSD)
1776 {
1777     enum EPERM              = 1;
1778     enum ENOENT             = 2;
1779     enum ESRCH              = 3;
1780     enum EINTR              = 4;
1781     enum EIO                = 5;
1782     enum ENXIO              = 6;
1783     enum E2BIG              = 7;
1784     enum ENOEXEC            = 8;
1785     enum EBADF              = 9;
1786     enum ECHILD             = 10;
1787     enum EDEADLK            = 11;
1788     enum ENOMEM             = 12;
1789     enum EACCES             = 13;
1790     enum EFAULT             = 14;
1791     enum ENOTBLK            = 15;
1792     enum EBUSY              = 16;
1793     enum EEXIST             = 17;
1794     enum EXDEV              = 18;
1795     enum ENODEV             = 19;
1796     enum ENOTDIR            = 20;
1797     enum EISDIR             = 21;
1798     enum EINVAL             = 22;
1799     enum ENFILE             = 23;
1800     enum EMFILE             = 24;
1801     enum ENOTTY             = 25;
1802     enum ETXTBSY            = 26;
1803     enum EFBIG              = 27;
1804     enum ENOSPC             = 28;
1805     enum ESPIPE             = 29;
1806     enum EROFS              = 30;
1807     enum EMLINK             = 31;
1808     enum EPIPE              = 32;
1809     enum EDOM               = 33;
1810     enum ERANGE             = 34;
1811     enum EAGAIN             = 35;
1812     enum EWOULDBLOCK        = EAGAIN;
1813     enum EINPROGRESS        = 36;
1814     enum EALREADY           = 37;
1815     enum ENOTSOCK           = 38;
1816     enum EDESTADDRREQ       = 39;
1817     enum EMSGSIZE           = 40;
1818     enum EPROTOTYPE         = 41;
1819     enum ENOPROTOOPT        = 42;
1820     enum EPROTONOSUPPORT    = 43;
1821     enum ENOTSUP            = 45;
1822     enum EOPNOTSUPP         = ENOTSUP;
1823     enum EPFNOSUPPORT       = 46;
1824     enum EAFNOSUPPORT       = 47;
1825     enum EADDRINUSE         = 48;
1826     enum EADDRNOTAVAIL      = 49;
1827     enum ENETDOWN           = 50;
1828     enum ENETUNREACH        = 51;
1829     enum ENETRESET          = 52;
1830     enum ECONNABORTED       = 53;
1831     enum ECONNRESET         = 54;
1832     enum ENOBUFS            = 55;
1833     enum EISCONN            = 56;
1834     enum ENOTCONN           = 57;
1835     enum ESHUTDOWN          = 58;
1836     enum ETOOMANYREFS       = 59;
1837     enum ETIMEDOUT          = 60;
1838     enum ECONNREFUSED       = 61;
1839     enum ELOOP              = 62;
1840     enum ENAMETOOLONG       = 63;
1841     enum EHOSTUNREACH       = 65;
1842     enum ENOTEMPTY          = 66;
1843     enum EPROCLIM           = 67;
1844     enum EUSERS             = 68;
1845     enum EDQUOT             = 69;
1846     enum ESTALE             = 70;
1847     enum EREMOTE            = 71;
1848     enum EBADRPC            = 72;
1849     enum ERPCMISMATCH       = 73;
1850     enum EPROGUNAVAIL       = 74;
1851     enum EPROGMISMATCH      = 75;
1852     enum EPROCUNAVAIL       = 76;
1853     enum ENOLCK             = 77;
1854     enum ENOSYS             = 78;
1855     enum EFTYPE             = 79;
1856     enum EAUTH              = 80;
1857     enum ENEEDAUTH          = 81;
1858     enum EIDRM              = 82;
1859     enum ENOMSG             = 83;
1860     enum EOVERFLOW          = 84;
1861     enum ECANCELED          = 85;
1862     enum EILSEQ             = 86;
1863     enum ENOATTR            = 87;
1864     enum EDOOFUS            = 88;
1865     enum EBADMSG            = 89;
1866     enum EMULTIHOP          = 90;
1867     enum ENOLINK            = 91;
1868     enum EPROTO             = 92;
1869     enum ENOMEDIUM          = 93;
1870     enum EUNUSED94          = 94;
1871     enum EUNUSED95          = 95;
1872     enum EUNUSED96          = 96;
1873     enum EUNUSED97          = 97;
1874     enum EUNUSED98          = 98;
1875     enum EASYNC             = 99;
1876     enum ELAST              = 99;
1877 }
1878 else version (Solaris)
1879 {
1880     enum EPERM =  1;              ///  Not super-user
1881     enum ENOENT = 2;              ///  No such file or directory
1882     enum ESRCH =  3;              ///  No such process
1883     enum EINTR =  4;              ///  interrupted system call
1884     enum EIO =    5;              ///  I/O error
1885     enum ENXIO =  6;              ///  No such device or address
1886     enum E2BIG =  7;              ///  Arg list too long
1887     enum ENOEXEC = 8;             ///  Exec format error
1888     enum EBADF =  9;              ///  Bad file number
1889     enum ECHILD = 10;             ///  No children
1890     enum EAGAIN = 11;             ///  Resource temporarily unavailable
1891     enum ENOMEM = 12;             ///  Not enough core
1892     enum EACCES = 13;             ///  Permission denied
1893     enum EFAULT = 14;             ///  Bad address
1894     enum ENOTBLK = 15;            ///  Block device required
1895     enum EBUSY =  16;             ///  Mount device busy
1896     enum EEXIST = 17;             ///  File exists
1897     enum EXDEV =  18;             ///  Cross-device link
1898     enum ENODEV = 19;             ///  No such device
1899     enum ENOTDIR = 20;            ///  Not a directory
1900     enum EISDIR = 21;             ///  Is a directory
1901     enum EINVAL = 22;             ///  Invalid argument
1902     enum ENFILE = 23;             ///  File table overflow
1903     enum EMFILE = 24;             ///  Too many open files
1904     enum ENOTTY = 25;             ///  Inappropriate ioctl for device
1905     enum ETXTBSY = 26;            ///  Text file busy
1906     enum EFBIG =  27;             ///  File too large
1907     enum ENOSPC = 28;             ///  No space left on device
1908     enum ESPIPE = 29;             ///  Illegal seek
1909     enum EROFS =  30;             ///  Read only file system
1910     enum EMLINK = 31;             ///  Too many links
1911     enum EPIPE =  32;             ///  Broken pipe
1912     enum EDOM =   33;             ///  Math arg out of domain of func
1913     enum ERANGE = 34;             ///  Math result not representable
1914     enum ENOMSG = 35;             ///  No message of desired type
1915     enum EIDRM =  36;             ///  Identifier removed
1916     enum ECHRNG = 37;             ///  Channel number out of range
1917     enum EL2NSYNC = 38;           ///  Level 2 not synchronized
1918     enum EL3HLT = 39;             ///  Level 3 halted
1919     enum EL3RST = 40;             ///  Level 3 reset
1920     enum ELNRNG = 41;             ///  Link number out of range
1921     enum EUNATCH = 42;            ///  Protocol driver not attached
1922     enum ENOCSI = 43;             ///  No CSI structure available
1923     enum EL2HLT = 44;             ///  Level 2 halted
1924     enum EDEADLK = 45;            ///  Deadlock condition.
1925     enum ENOLCK = 46;             ///  No record locks available.
1926     enum ECANCELED = 47;          ///  Operation canceled
1927     enum ENOTSUP = 48;            ///  Operation not supported
1928     enum EDQUOT = 49;             ///  Disc quota exceeded
1929     enum EBADE =  50;             ///  invalid exchange
1930     enum EBADR =  51;             ///  invalid request descriptor
1931     enum EXFULL = 52;             ///  exchange full
1932     enum ENOANO = 53;             ///  no anode
1933     enum EBADRQC = 54;            ///  invalid request code
1934     enum EBADSLT = 55;            ///  invalid slot
1935     enum EDEADLOCK = 56;          ///  file locking deadlock error
1936     enum EBFONT = 57;             ///  bad font file fmt
1937     enum EOWNERDEAD =     58;     ///  process died with the lock
1938     enum ENOTRECOVERABLE = 59;    ///  lock is not recoverable
1939     enum ENOSTR = 60;             ///  Device not a stream
1940     enum ENODATA = 61;            ///  no data (for no delay io)
1941     enum ETIME =  62;             ///  timer expired
1942     enum ENOSR =  63;             ///  out of streams resources
1943     enum ENONET = 64;             ///  Machine is not on the network
1944     enum ENOPKG = 65;             ///  Package not installed
1945     enum EREMOTE = 66;            ///  The object is remote
1946     enum ENOLINK = 67;            ///  the link has been severed
1947     enum EADV =   68;             ///  advertise error
1948     enum ESRMNT = 69;             ///  srmount error
1949     enum ECOMM =  70;             ///  Communication error on send
1950     enum EPROTO = 71;             ///  Protocol error
1951     enum ELOCKUNMAPPED =  72;     ///  locked lock was unmapped
1952     enum ENOTACTIVE = 73;         ///  Facility is not active
1953     enum EMULTIHOP = 74;          ///  multihop attempted
1954     enum EBADMSG = 77;            ///  trying to read unreadable message
1955     enum ENAMETOOLONG = 78;       ///  path name is too long
1956     enum EOVERFLOW = 79;          ///  value too large to be stored in data type
1957     enum ENOTUNIQ = 80;           ///  given log. name not unique
1958     enum EBADFD =  81;            ///  f.d. invalid for this operation
1959     enum EREMCHG = 82;            ///  Remote address changed
1960     enum ELIBACC = 83;            ///  Can't access a needed shared lib.
1961     enum ELIBBAD = 84;            ///  Accessing a corrupted shared lib.
1962     enum ELIBSCN = 85;            ///  .lib section in a.out corrupted.
1963     enum ELIBMAX = 86;            ///  Attempting to link in too many libs.
1964     enum ELIBEXEC = 87;           ///  Attempting to exec a shared library.
1965     enum EILSEQ = 88;             ///  Illegal byte sequence.
1966     enum ENOSYS = 89;             ///  Unsupported file system operation
1967     enum ELOOP =  90;             ///  Symbolic link loop
1968     enum ERESTART = 91;           ///  Restartable system call
1969     enum ESTRPIPE = 92;           ///  if pipe/FIFO, don't sleep in stream head
1970     enum ENOTEMPTY = 93;          ///  directory not empty
1971     enum EUSERS = 94;             ///  Too many users (for UFS)
1972     enum ENOTSOCK =       95;     ///  Socket operation on non-socket
1973     enum EDESTADDRREQ =   96;     ///  Destination address required
1974     enum EMSGSIZE =       97;     ///  Message too long
1975     enum EPROTOTYPE =     98;     ///  Protocol wrong type for socket
1976     enum ENOPROTOOPT =    99;     ///  Protocol not available
1977     enum EPROTONOSUPPORT = 120;   ///  Protocol not supported
1978     enum ESOCKTNOSUPPORT = 121;   ///  Socket type not supported
1979     enum EOPNOTSUPP =     122;    ///  Operation not supported on socket
1980     enum EPFNOSUPPORT =   123;    ///  Protocol family not supported
1981     enum EAFNOSUPPORT =   124;    ///  Address family not supported by the protocol family
1982     enum EADDRINUSE =     125;    ///  Address already in use
1983     enum EADDRNOTAVAIL =   126;   ///  Can't assign requested address
1984     enum ENETDOWN =       127;    ///  Network is down
1985     enum ENETUNREACH =    128;    ///  Network is unreachable
1986     enum ENETRESET =      129;    ///  Network dropped connection because of reset
1987     enum ECONNABORTED =   130;    ///  Software caused connection abort
1988     enum ECONNRESET =     131;    ///  Connection reset by peer
1989     enum ENOBUFS =        132;    ///  No buffer space available
1990     enum EISCONN =        133;    ///  Socket is already connected
1991     enum ENOTCONN =       134;    ///  Socket is not connected
1992     enum ESHUTDOWN =      143;    ///  Can't send after socket shutdown
1993     enum ETOOMANYREFS =   144;    ///  Too many references: can't splice
1994     enum ETIMEDOUT =      145;    ///  Connection timed out
1995     enum ECONNREFUSED =   146;    ///  Connection refused
1996     enum EHOSTDOWN =      147;    ///  Host is down
1997     enum EHOSTUNREACH =   148;    ///  No route to host
1998     enum EWOULDBLOCK =    EAGAIN; ///  Resource temporarily unavailable
1999     enum EALREADY =       149;    ///  operation already in progress
2000     enum EINPROGRESS =    150;    ///  operation now in progress
2001     enum ESTALE =         151;    ///  Stale NFS file handle
2002 }
2003 else version (Haiku)
2004 {
2005     // https://github.com/haiku/haiku/blob/master/headers/os/support/Errors.h
2006     // https://github.com/haiku/haiku/blob/master/headers/build/os/support/Errors.h
2007     import core.stdc.limits : INT_MIN;
2008     enum B_GENERAL_ERROR_BASE        = INT_MIN;
2009     enum B_OS_ERROR_BASE             = (B_GENERAL_ERROR_BASE + 0x1000);
2010     enum B_APP_ERROR_BASE            = (B_GENERAL_ERROR_BASE + 0x2000);
2011     enum B_INTERFACE_ERROR_BASE      = (B_GENERAL_ERROR_BASE + 0x3000);
2012     enum B_MEDIA_ERROR_BASE          = (B_GENERAL_ERROR_BASE + 0x4000);
2013                                             /* - 0x41ff */
2014     enum B_TRANSLATION_ERROR_BASE    = (B_GENERAL_ERROR_BASE + 0x4800);
2015                                             /* - 0x48ff */
2016     enum B_MIDI_ERROR_BASE           = (B_GENERAL_ERROR_BASE + 0x5000);
2017     enum B_STORAGE_ERROR_BASE        = (B_GENERAL_ERROR_BASE + 0x6000);
2018     enum B_POSIX_ERROR_BASE          = (B_GENERAL_ERROR_BASE + 0x7000);
2019     enum B_MAIL_ERROR_BASE           = (B_GENERAL_ERROR_BASE + 0x8000);
2020     enum B_PRINT_ERROR_BASE          = (B_GENERAL_ERROR_BASE + 0x9000);
2021     enum B_DEVICE_ERROR_BASE         = (B_GENERAL_ERROR_BASE + 0xa000);
2022 
2023     /* General Errors */
2024     enum B_NO_MEMORY                 = (B_GENERAL_ERROR_BASE + 0);
2025     enum B_IO_ERROR                  = (B_GENERAL_ERROR_BASE + 1);
2026     enum B_PERMISSION_DENIED         = (B_GENERAL_ERROR_BASE + 2);
2027     enum B_BAD_INDEX                 = (B_GENERAL_ERROR_BASE + 3);
2028     enum B_BAD_TYPE                  = (B_GENERAL_ERROR_BASE + 4);
2029     enum B_BAD_VALUE                 = (B_GENERAL_ERROR_BASE + 5);
2030     enum B_MISMATCHED_VALUES         = (B_GENERAL_ERROR_BASE + 6);
2031     enum B_NAME_NOT_FOUND            = (B_GENERAL_ERROR_BASE + 7);
2032     enum B_NAME_IN_USE               = (B_GENERAL_ERROR_BASE + 8);
2033     enum B_TIMED_OUT                 = (B_GENERAL_ERROR_BASE + 9);
2034     enum B_INTERRUPTED               = (B_GENERAL_ERROR_BASE + 10);
2035     enum B_WOULD_BLOCK               = (B_GENERAL_ERROR_BASE + 11);
2036     enum B_CANCELED                  = (B_GENERAL_ERROR_BASE + 12);
2037     enum B_NO_INIT                   = (B_GENERAL_ERROR_BASE + 13);
2038     enum B_NOT_INITIALIZED           = (B_GENERAL_ERROR_BASE + 13);
2039     enum B_BUSY                      = (B_GENERAL_ERROR_BASE + 14);
2040     enum B_NOT_ALLOWED               = (B_GENERAL_ERROR_BASE + 15);
2041     enum B_BAD_DATA                  = (B_GENERAL_ERROR_BASE + 16);
2042     enum B_DONT_DO_THAT              = (B_GENERAL_ERROR_BASE + 17);
2043 
2044     enum B_ERROR                     = (-1);
2045     enum B_OK                        = (int(0));
2046     enum B_NO_ERROR                  = (int(0));
2047 
2048     /* Kernel Kit Errors */
2049     enum B_BAD_SEM_ID                = (B_OS_ERROR_BASE + 0);
2050     enum B_NO_MORE_SEMS              = (B_OS_ERROR_BASE + 1);
2051 
2052     enum B_BAD_THREAD_ID             = (B_OS_ERROR_BASE + 0x100);
2053     enum B_NO_MORE_THREADS           = (B_OS_ERROR_BASE + 0x101);
2054     enum B_BAD_THREAD_STATE          = (B_OS_ERROR_BASE + 0x102);
2055     enum B_BAD_TEAM_ID               = (B_OS_ERROR_BASE + 0x103);
2056     enum B_NO_MORE_TEAMS             = (B_OS_ERROR_BASE + 0x104);
2057 
2058     enum B_BAD_PORT_ID               = (B_OS_ERROR_BASE + 0x200);
2059     enum B_NO_MORE_PORTS             = (B_OS_ERROR_BASE + 0x201);
2060 
2061     enum B_BAD_IMAGE_ID              = (B_OS_ERROR_BASE + 0x300);
2062     enum B_BAD_ADDRESS               = (B_OS_ERROR_BASE + 0x301);
2063     enum B_NOT_AN_EXECUTABLE         = (B_OS_ERROR_BASE + 0x302);
2064     enum B_MISSING_LIBRARY           = (B_OS_ERROR_BASE + 0x303);
2065     enum B_MISSING_SYMBOL            = (B_OS_ERROR_BASE + 0x304);
2066     enum B_UNKNOWN_EXECUTABLE        = (B_OS_ERROR_BASE + 0x305);
2067     enum B_LEGACY_EXECUTABLE         = (B_OS_ERROR_BASE + 0x306);
2068 
2069     enum B_DEBUGGER_ALREADY_INSTALLED    = (B_OS_ERROR_BASE + 0x400);
2070 
2071     /* Application Kit Errors */
2072     enum B_BAD_REPLY                         = (B_APP_ERROR_BASE + 0);
2073     enum B_DUPLICATE_REPLY                   = (B_APP_ERROR_BASE + 1);
2074     enum B_MESSAGE_TO_SELF                   = (B_APP_ERROR_BASE + 2);
2075     enum B_BAD_HANDLER                       = (B_APP_ERROR_BASE + 3);
2076     enum B_ALREADY_RUNNING                   = (B_APP_ERROR_BASE + 4);
2077     enum B_LAUNCH_FAILED                     = (B_APP_ERROR_BASE + 5);
2078     enum B_AMBIGUOUS_APP_LAUNCH              = (B_APP_ERROR_BASE + 6);
2079     enum B_UNKNOWN_MIME_TYPE                 = (B_APP_ERROR_BASE + 7);
2080     enum B_BAD_SCRIPT_SYNTAX                 = (B_APP_ERROR_BASE + 8);
2081     enum B_LAUNCH_FAILED_NO_RESOLVE_LINK     = (B_APP_ERROR_BASE + 9);
2082     enum B_LAUNCH_FAILED_EXECUTABLE          = (B_APP_ERROR_BASE + 10);
2083     enum B_LAUNCH_FAILED_APP_NOT_FOUND       = (B_APP_ERROR_BASE + 11);
2084     enum B_LAUNCH_FAILED_APP_IN_TRASH        = (B_APP_ERROR_BASE + 12);
2085     enum B_LAUNCH_FAILED_NO_PREFERRED_APP    = (B_APP_ERROR_BASE + 13);
2086     enum B_LAUNCH_FAILED_FILES_APP_NOT_FOUND = (B_APP_ERROR_BASE + 14);
2087     enum B_BAD_MIME_SNIFFER_RULE             = (B_APP_ERROR_BASE + 15);
2088     enum B_NOT_A_MESSAGE                     = (B_APP_ERROR_BASE + 16);
2089     enum B_SHUTDOWN_CANCELLED                = (B_APP_ERROR_BASE + 17);
2090     enum B_SHUTTING_DOWN                     = (B_APP_ERROR_BASE + 18);
2091 
2092     /* Storage Kit/File System Errors */
2093     enum B_FILE_ERROR                        = (B_STORAGE_ERROR_BASE + 0);
2094     enum B_FILE_NOT_FOUND                    = (B_STORAGE_ERROR_BASE + 1);
2095                 /* deprecated: use B_ENTRY_NOT_FOUND instead */
2096     enum B_FILE_EXISTS                       = (B_STORAGE_ERROR_BASE + 2);
2097     enum B_ENTRY_NOT_FOUND                   = (B_STORAGE_ERROR_BASE + 3);
2098     enum B_NAME_TOO_LONG                     = (B_STORAGE_ERROR_BASE + 4);
2099     enum B_NOT_A_DIRECTORY                   = (B_STORAGE_ERROR_BASE + 5);
2100     enum B_DIRECTORY_NOT_EMPTY               = (B_STORAGE_ERROR_BASE + 6);
2101     enum B_DEVICE_FULL                       = (B_STORAGE_ERROR_BASE + 7);
2102     enum B_READ_ONLY_DEVICE                  = (B_STORAGE_ERROR_BASE + 8);
2103     enum B_IS_A_DIRECTORY                    = (B_STORAGE_ERROR_BASE + 9);
2104     enum B_NO_MORE_FDS                       = (B_STORAGE_ERROR_BASE + 10);
2105     enum B_CROSS_DEVICE_LINK                 = (B_STORAGE_ERROR_BASE + 11);
2106     enum B_LINK_LIMIT                        = (B_STORAGE_ERROR_BASE + 12);
2107     enum B_BUSTED_PIPE                       = (B_STORAGE_ERROR_BASE + 13);
2108     enum B_UNSUPPORTED                       = (B_STORAGE_ERROR_BASE + 14);
2109     enum B_PARTITION_TOO_SMALL               = (B_STORAGE_ERROR_BASE + 15);
2110     enum B_PARTIAL_READ                      = (B_STORAGE_ERROR_BASE + 16);
2111     enum B_PARTIAL_WRITE                     = (B_STORAGE_ERROR_BASE + 17);
2112 
2113     /* POSIX Errors */
2114     enum B_USE_POSITIVE_POSIX_ERRORS = false;
2115 
2116     static if (B_USE_POSITIVE_POSIX_ERRORS)
2117     {
2118         enum B_TO_POSIX_ERROR(int code) = -code;
2119     }
2120     else
2121     {
2122         enum B_TO_POSIX_ERROR(int code) = code;
2123     }
2124     alias B_FROM_POSIX_ERROR = B_TO_POSIX_ERROR;
2125 
2126     enum B_POSIX_ENOMEM  = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 0);
2127     enum E2BIG           = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 1);
2128     enum ECHILD          = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 2);
2129     enum EDEADLK         = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 3);
2130     enum EFBIG           = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 4);
2131     enum EMLINK          = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 5);
2132     enum ENFILE          = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 6);
2133     enum ENODEV          = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 7);
2134     enum ENOLCK          = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 8);
2135     enum ENOSYS          = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 9);
2136     enum ENOTTY          = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 10);
2137     enum ENXIO           = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 11);
2138     enum ESPIPE          = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 12);
2139     enum ESRCH           = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 13);
2140     enum EFPOS           = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 14);
2141     enum ESIGPARM        = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 15);
2142     enum EDOM            = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 16);
2143     enum ERANGE          = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 17);
2144     enum EPROTOTYPE      = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 18);
2145     enum EPROTONOSUPPORT = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 19);
2146     enum EPFNOSUPPORT    = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 20);
2147     enum EAFNOSUPPORT    = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 21);
2148     enum EADDRINUSE      = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 22);
2149     enum EADDRNOTAVAIL   = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 23);
2150     enum ENETDOWN        = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 24);
2151     enum ENETUNREACH     = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 25);
2152     enum ENETRESET       = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 26);
2153     enum ECONNABORTED    = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 27);
2154     enum ECONNRESET      = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 28);
2155     enum EISCONN         = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 29);
2156     enum ENOTCONN        = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 30);
2157     enum ESHUTDOWN       = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 31);
2158     enum ECONNREFUSED    = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 32);
2159     enum EHOSTUNREACH    = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 33);
2160     enum ENOPROTOOPT     = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 34);
2161     enum ENOBUFS         = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 35);
2162     enum EINPROGRESS     = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 36);
2163     enum EALREADY        = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 37);
2164     enum EILSEQ          = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 38);
2165     enum ENOMSG          = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 39);
2166     enum ESTALE          = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 40);
2167     enum EOVERFLOW       = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 41);
2168     enum EMSGSIZE        = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 42);
2169     enum EOPNOTSUPP      = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 43);
2170     enum ENOTSOCK        = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 44);
2171     enum EHOSTDOWN       = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 45);
2172     enum EBADMSG         = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 46);
2173     enum ECANCELED       = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 47);
2174     enum EDESTADDRREQ    = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 48);
2175     enum EDQUOT          = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 49);
2176     enum EIDRM           = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 50);
2177     enum EMULTIHOP       = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 51);
2178     enum ENODATA         = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 52);
2179     enum ENOLINK         = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 53);
2180     enum ENOSR           = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 54);
2181     enum ENOSTR          = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 55);
2182     enum ENOTSUP         = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 56);
2183     enum EPROTO          = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 57);
2184     enum ETIME           = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 58);
2185     enum ETXTBSY         = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 59);
2186     enum ENOATTR         = B_TO_POSIX_ERROR!(B_POSIX_ERROR_BASE + 60);
2187 
2188     /* B_NO_MEMORY (0x80000000) can't be negated, so it needs special handling */
2189     static if (B_USE_POSITIVE_POSIX_ERRORS)
2190         enum ENOMEM = B_POSIX_ENOMEM;
2191     else
2192         enum ENOMEM = B_NO_MEMORY;
2193 
2194     /* POSIX errors that can be mapped to BeOS error codes */
2195     enum EACCES          = B_TO_POSIX_ERROR!(B_PERMISSION_DENIED);
2196     enum EINTR           = B_TO_POSIX_ERROR!(B_INTERRUPTED);
2197     enum EIO             = B_TO_POSIX_ERROR!(B_IO_ERROR);
2198     enum EBUSY           = B_TO_POSIX_ERROR!(B_BUSY);
2199     enum EFAULT          = B_TO_POSIX_ERROR!(B_BAD_ADDRESS);
2200     enum ETIMEDOUT       = B_TO_POSIX_ERROR!(B_TIMED_OUT);
2201     enum EAGAIN          = B_TO_POSIX_ERROR!(B_WOULD_BLOCK) /* SysV compatibility */;
2202     enum EWOULDBLOCK     = B_TO_POSIX_ERROR!(B_WOULD_BLOCK) /* BSD compatibility */;
2203     enum EBADF           = B_TO_POSIX_ERROR!(B_FILE_ERROR);
2204     enum EEXIST          = B_TO_POSIX_ERROR!(B_FILE_EXISTS);
2205     enum EINVAL          = B_TO_POSIX_ERROR!(B_BAD_VALUE);
2206     enum ENAMETOOLONG    = B_TO_POSIX_ERROR!(B_NAME_TOO_LONG);
2207     enum ENOENT          = B_TO_POSIX_ERROR!(B_ENTRY_NOT_FOUND);
2208     enum EPERM           = B_TO_POSIX_ERROR!(B_NOT_ALLOWED);
2209     enum ENOTDIR         = B_TO_POSIX_ERROR!(B_NOT_A_DIRECTORY);
2210     enum EISDIR          = B_TO_POSIX_ERROR!(B_IS_A_DIRECTORY);
2211     enum ENOTEMPTY       = B_TO_POSIX_ERROR!(B_DIRECTORY_NOT_EMPTY);
2212     enum ENOSPC          = B_TO_POSIX_ERROR!(B_DEVICE_FULL);
2213     enum EROFS           = B_TO_POSIX_ERROR!(B_READ_ONLY_DEVICE);
2214     enum EMFILE          = B_TO_POSIX_ERROR!(B_NO_MORE_FDS);
2215     enum EXDEV           = B_TO_POSIX_ERROR!(B_CROSS_DEVICE_LINK);
2216     enum ELOOP           = B_TO_POSIX_ERROR!(B_LINK_LIMIT);
2217     enum ENOEXEC         = B_TO_POSIX_ERROR!(B_NOT_AN_EXECUTABLE);
2218     enum EPIPE           = B_TO_POSIX_ERROR!(B_BUSTED_PIPE);
2219 
2220     /* new error codes that can be mapped to POSIX errors */
2221     enum B_BUFFER_OVERFLOW          =  B_FROM_POSIX_ERROR!(EOVERFLOW);
2222     enum B_TOO_MANY_ARGS            =  B_FROM_POSIX_ERROR!(E2BIG);
2223     enum B_FILE_TOO_LARGE           =  B_FROM_POSIX_ERROR!(EFBIG);
2224     enum B_RESULT_NOT_REPRESENTABLE =  B_FROM_POSIX_ERROR!(ERANGE);
2225     enum B_DEVICE_NOT_FOUND         =  B_FROM_POSIX_ERROR!(ENODEV);
2226     enum B_NOT_SUPPORTED            =  B_FROM_POSIX_ERROR!(EOPNOTSUPP);
2227 
2228     /* Media Kit Errors */
2229     enum B_STREAM_NOT_FOUND              = (B_MEDIA_ERROR_BASE + 0);
2230     enum B_SERVER_NOT_FOUND              = (B_MEDIA_ERROR_BASE + 1);
2231     enum B_RESOURCE_NOT_FOUND            = (B_MEDIA_ERROR_BASE + 2);
2232     enum B_RESOURCE_UNAVAILABLE          = (B_MEDIA_ERROR_BASE + 3);
2233     enum B_BAD_SUBSCRIBER                = (B_MEDIA_ERROR_BASE + 4);
2234     enum B_SUBSCRIBER_NOT_ENTERED        = (B_MEDIA_ERROR_BASE + 5);
2235     enum B_BUFFER_NOT_AVAILABLE          = (B_MEDIA_ERROR_BASE + 6);
2236     enum B_LAST_BUFFER_ERROR             = (B_MEDIA_ERROR_BASE + 7);
2237 
2238     enum B_MEDIA_SYSTEM_FAILURE          = (B_MEDIA_ERROR_BASE + 100);
2239     enum B_MEDIA_BAD_NODE                = (B_MEDIA_ERROR_BASE + 101);
2240     enum B_MEDIA_NODE_BUSY               = (B_MEDIA_ERROR_BASE + 102);
2241     enum B_MEDIA_BAD_FORMAT              = (B_MEDIA_ERROR_BASE + 103);
2242     enum B_MEDIA_BAD_BUFFER              = (B_MEDIA_ERROR_BASE + 104);
2243     enum B_MEDIA_TOO_MANY_NODES          = (B_MEDIA_ERROR_BASE + 105);
2244     enum B_MEDIA_TOO_MANY_BUFFERS        = (B_MEDIA_ERROR_BASE + 106);
2245     enum B_MEDIA_NODE_ALREADY_EXISTS     = (B_MEDIA_ERROR_BASE + 107);
2246     enum B_MEDIA_BUFFER_ALREADY_EXISTS   = (B_MEDIA_ERROR_BASE + 108);
2247     enum B_MEDIA_CANNOT_SEEK             = (B_MEDIA_ERROR_BASE + 109);
2248     enum B_MEDIA_CANNOT_CHANGE_RUN_MODE  = (B_MEDIA_ERROR_BASE + 110);
2249     enum B_MEDIA_APP_ALREADY_REGISTERED  = (B_MEDIA_ERROR_BASE + 111);
2250     enum B_MEDIA_APP_NOT_REGISTERED      = (B_MEDIA_ERROR_BASE + 112);
2251     enum B_MEDIA_CANNOT_RECLAIM_BUFFERS  = (B_MEDIA_ERROR_BASE + 113);
2252     enum B_MEDIA_BUFFERS_NOT_RECLAIMED   = (B_MEDIA_ERROR_BASE + 114);
2253     enum B_MEDIA_TIME_SOURCE_STOPPED     = (B_MEDIA_ERROR_BASE + 115);
2254     enum B_MEDIA_TIME_SOURCE_BUSY        = (B_MEDIA_ERROR_BASE + 116);
2255     enum B_MEDIA_BAD_SOURCE              = (B_MEDIA_ERROR_BASE + 117);
2256     enum B_MEDIA_BAD_DESTINATION         = (B_MEDIA_ERROR_BASE + 118);
2257     enum B_MEDIA_ALREADY_CONNECTED       = (B_MEDIA_ERROR_BASE + 119);
2258     enum B_MEDIA_NOT_CONNECTED           = (B_MEDIA_ERROR_BASE + 120);
2259     enum B_MEDIA_BAD_CLIP_FORMAT         = (B_MEDIA_ERROR_BASE + 121);
2260     enum B_MEDIA_ADDON_FAILED            = (B_MEDIA_ERROR_BASE + 122);
2261     enum B_MEDIA_ADDON_DISABLED          = (B_MEDIA_ERROR_BASE + 123);
2262     enum B_MEDIA_CHANGE_IN_PROGRESS      = (B_MEDIA_ERROR_BASE + 124);
2263     enum B_MEDIA_STALE_CHANGE_COUNT      = (B_MEDIA_ERROR_BASE + 125);
2264     enum B_MEDIA_ADDON_RESTRICTED        = (B_MEDIA_ERROR_BASE + 126);
2265     enum B_MEDIA_NO_HANDLER              = (B_MEDIA_ERROR_BASE + 127);
2266     enum B_MEDIA_DUPLICATE_FORMAT        = (B_MEDIA_ERROR_BASE + 128);
2267     enum B_MEDIA_REALTIME_DISABLED       = (B_MEDIA_ERROR_BASE + 129);
2268     enum B_MEDIA_REALTIME_UNAVAILABLE    = (B_MEDIA_ERROR_BASE + 130);
2269 
2270     /* Mail Kit Errors */
2271     enum B_MAIL_NO_DAEMON                = (B_MAIL_ERROR_BASE + 0);
2272     enum B_MAIL_UNKNOWN_USER             = (B_MAIL_ERROR_BASE + 1);
2273     enum B_MAIL_WRONG_PASSWORD           = (B_MAIL_ERROR_BASE + 2);
2274     enum B_MAIL_UNKNOWN_HOST             = (B_MAIL_ERROR_BASE + 3);
2275     enum B_MAIL_ACCESS_ERROR             = (B_MAIL_ERROR_BASE + 4);
2276     enum B_MAIL_UNKNOWN_FIELD            = (B_MAIL_ERROR_BASE + 5);
2277     enum B_MAIL_NO_RECIPIENT             = (B_MAIL_ERROR_BASE + 6);
2278     enum B_MAIL_INVALID_MAIL             = (B_MAIL_ERROR_BASE + 7);
2279 
2280     /* Printing Errors */
2281     enum B_NO_PRINT_SERVER               = (B_PRINT_ERROR_BASE + 0);
2282 
2283     /* Device Kit Errors */
2284     enum B_DEV_INVALID_IOCTL             = (B_DEVICE_ERROR_BASE + 0);
2285     enum B_DEV_NO_MEMORY                 = (B_DEVICE_ERROR_BASE + 1);
2286     enum B_DEV_BAD_DRIVE_NUM             = (B_DEVICE_ERROR_BASE + 2);
2287     enum B_DEV_NO_MEDIA                  = (B_DEVICE_ERROR_BASE + 3);
2288     enum B_DEV_UNREADABLE                = (B_DEVICE_ERROR_BASE + 4);
2289     enum B_DEV_FORMAT_ERROR              = (B_DEVICE_ERROR_BASE + 5);
2290     enum B_DEV_TIMEOUT                   = (B_DEVICE_ERROR_BASE + 6);
2291     enum B_DEV_RECALIBRATE_ERROR         = (B_DEVICE_ERROR_BASE + 7);
2292     enum B_DEV_SEEK_ERROR                = (B_DEVICE_ERROR_BASE + 8);
2293     enum B_DEV_ID_ERROR                  = (B_DEVICE_ERROR_BASE + 9);
2294     enum B_DEV_READ_ERROR                = (B_DEVICE_ERROR_BASE + 10);
2295     enum B_DEV_WRITE_ERROR               = (B_DEVICE_ERROR_BASE + 11);
2296     enum B_DEV_NOT_READY                 = (B_DEVICE_ERROR_BASE + 12);
2297     enum B_DEV_MEDIA_CHANGED             = (B_DEVICE_ERROR_BASE + 13);
2298     enum B_DEV_MEDIA_CHANGE_REQUESTED    = (B_DEVICE_ERROR_BASE + 14);
2299     enum B_DEV_RESOURCE_CONFLICT         = (B_DEVICE_ERROR_BASE + 15);
2300     enum B_DEV_CONFIGURATION_ERROR       = (B_DEVICE_ERROR_BASE + 16);
2301     enum B_DEV_DISABLED_BY_USER          = (B_DEVICE_ERROR_BASE + 17);
2302     enum B_DEV_DOOR_OPEN                 = (B_DEVICE_ERROR_BASE + 18);
2303 
2304     enum B_DEV_INVALID_PIPE              = (B_DEVICE_ERROR_BASE + 19);
2305     enum B_DEV_CRC_ERROR                 = (B_DEVICE_ERROR_BASE + 20);
2306     enum B_DEV_STALLED                   = (B_DEVICE_ERROR_BASE + 21);
2307     enum B_DEV_BAD_PID                   = (B_DEVICE_ERROR_BASE + 22);
2308     enum B_DEV_UNEXPECTED_PID            = (B_DEVICE_ERROR_BASE + 23);
2309     enum B_DEV_DATA_OVERRUN              = (B_DEVICE_ERROR_BASE + 24);
2310     enum B_DEV_DATA_UNDERRUN             = (B_DEVICE_ERROR_BASE + 25);
2311     enum B_DEV_FIFO_OVERRUN              = (B_DEVICE_ERROR_BASE + 26);
2312     enum B_DEV_FIFO_UNDERRUN             = (B_DEVICE_ERROR_BASE + 27);
2313     enum B_DEV_PENDING                   = (B_DEVICE_ERROR_BASE + 28);
2314     enum B_DEV_MULTIPLE_ERRORS           = (B_DEVICE_ERROR_BASE + 29);
2315     enum B_DEV_TOO_LATE                  = (B_DEVICE_ERROR_BASE + 30);
2316 
2317     /* Translation Kit Errors */
2318     enum B_TRANSLATION_BASE_ERROR        = (B_TRANSLATION_ERROR_BASE + 0);
2319     enum B_NO_TRANSLATOR                 = (B_TRANSLATION_ERROR_BASE + 1);
2320     enum B_ILLEGAL_DATA                  = (B_TRANSLATION_ERROR_BASE + 2);
2321 }
2322 else version (WASI)
2323 {
2324     enum EPERM            = 1;
2325     enum ENOENT           = 2;
2326     enum ESRCH            = 3;
2327     enum EINTR            = 4;
2328     enum EIO              = 5;
2329     enum ENXIO            = 6;
2330     enum E2BIG            = 7;
2331     enum ENOEXEC          = 8;
2332     enum EBADF            = 9;
2333     enum ECHILD          = 10;
2334     enum EAGAIN          = 11;
2335     enum ENOMEM          = 12;
2336     enum EACCES          = 13;
2337     enum EFAULT          = 14;
2338     enum ENOTBLK         = 15;
2339     enum EBUSY           = 16;
2340     enum EEXIST          = 17;
2341     enum EXDEV           = 18;
2342     enum ENODEV          = 19;
2343     enum ENOTDIR         = 20;
2344     enum EISDIR          = 21;
2345     enum EINVAL          = 22;
2346     enum ENFILE          = 23;
2347     enum EMFILE          = 24;
2348     enum ENOTTY          = 25;
2349     enum ETXTBSY         = 26;
2350     enum EFBIG           = 27;
2351     enum ENOSPC          = 28;
2352     enum ESPIPE          = 29;
2353     enum EROFS           = 30;
2354     enum EMLINK          = 31;
2355     enum EPIPE           = 32;
2356     enum EDOM            = 33;
2357     enum ERANGE          = 34;
2358     enum EDEADLK         = 35;
2359     enum ENAMETOOLONG    = 36;
2360     enum ENOLCK          = 37;
2361     enum ENOSYS          = 38;
2362     enum ENOTEMPTY       = 39;
2363     enum ELOOP           = 40;
2364     enum EWOULDBLOCK     = EAGAIN;
2365     enum ENOMSG          = 42;
2366     enum EIDRM           = 43;
2367     enum ECHRNG          = 44;
2368     enum EL2NSYNC        = 45;
2369     enum EL3HLT          = 46;
2370     enum EL3RST          = 47;
2371     enum ELNRNG          = 48;
2372     enum EUNATCH         = 49;
2373     enum ENOCSI          = 50;
2374     enum EL2HLT          = 51;
2375     enum EBADE           = 52;
2376     enum EBADR           = 53;
2377     enum EXFULL          = 54;
2378     enum ENOANO          = 55;
2379     enum EBADRQC         = 56;
2380     enum EBADSLT         = 57;
2381     enum EDEADLOCK       = EDEADLK;
2382     enum EBFONT          = 59;
2383     enum ENOSTR          = 60;
2384     enum ENODATA         = 61;
2385     enum ETIME           = 62;
2386     enum ENOSR           = 63;
2387     enum ENONET          = 64;
2388     enum ENOPKG          = 65;
2389     enum EREMOTE         = 66;
2390     enum ENOLINK         = 67;
2391     enum EADV            = 68;
2392     enum ESRMNT          = 69;
2393     enum ECOMM           = 70;
2394     enum EPROTO          = 71;
2395     enum EMULTIHOP       = 72;
2396     enum EDOTDOT         = 73;
2397     enum EBADMSG         = 74;
2398     enum EOVERFLOW       = 75;
2399     enum ENOTUNIQ        = 76;
2400     enum EBADFD          = 77;
2401     enum EREMCHG         = 78;
2402     enum ELIBACC         = 79;
2403     enum ELIBBAD         = 80;
2404     enum ELIBSCN         = 81;
2405     enum ELIBMAX         = 82;
2406     enum ELIBEXEC        = 83;
2407     enum EILSEQ          = 84;
2408     enum ERESTART        = 85;
2409     enum ESTRPIPE        = 86;
2410     enum EUSERS          = 87;
2411     enum ENOTSOCK        = 88;
2412     enum EDESTADDRREQ    = 89;
2413     enum EMSGSIZE        = 90;
2414     enum EPROTOTYPE      = 91;
2415     enum ENOPROTOOPT     = 92;
2416     enum EPROTONOSUPPORT = 93;
2417     enum ESOCKTNOSUPPORT = 94;
2418     enum EOPNOTSUPP      = 95;
2419     enum ENOTSUP         = EOPNOTSUPP;
2420     enum EPFNOSUPPORT    = 96;
2421     enum EAFNOSUPPORT    = 97;
2422     enum EADDRINUSE      = 98;
2423     enum EADDRNOTAVAIL   = 99;
2424     enum ENETDOWN        = 100;
2425     enum ENETUNREACH     = 101;
2426     enum ENETRESET       = 102;
2427     enum ECONNABORTED    = 103;
2428     enum ECONNRESET      = 104;
2429     enum ENOBUFS         = 105;
2430     enum EISCONN         = 106;
2431     enum ENOTCONN        = 107;
2432     enum ESHUTDOWN       = 108;
2433     enum ETOOMANYREFS    = 109;
2434     enum ETIMEDOUT       = 110;
2435     enum ECONNREFUSED    = 111;
2436     enum EHOSTDOWN       = 112;
2437     enum EHOSTUNREACH    = 113;
2438     enum EALREADY        = 114;
2439     enum EINPROGRESS     = 115;
2440     enum ESTALE          = 116;
2441     enum EUCLEAN         = 117;
2442     enum ENOTNAM         = 118;
2443     enum ENAVAIL         = 119;
2444     enum EISNAM          = 120;
2445     enum EREMOTEIO       = 121;
2446     enum EDQUOT          = 122;
2447     enum ENOMEDIUM       = 123;
2448     enum EMEDIUMTYPE     = 124;
2449     enum ECANCELED       = 125;
2450     enum ENOKEY          = 126;
2451     enum EKEYEXPIRED     = 127;
2452     enum EKEYREVOKED     = 128;
2453     enum EKEYREJECTED    = 129;
2454     enum EOWNERDEAD      = 130;
2455     enum ENOTRECOVERABLE = 131;
2456     enum ERFKILL         = 132;
2457     enum EHWPOISON       = 133;
2458 }
2459 else
2460 {
2461     static assert(false, "Unsupported platform");
2462 }