authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2025-12-17 16:48:54 -08:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2025-12-17 17:13:16 -08:00
log7e6da1531ea4f12e26156c75492d2577363557eb
tree5c9d8032e345632fc8c600ca08a436a092a4355f
parent1daec6cb589c2b24833619f304bc40b1d16618ea

add errno


3 files changed, 932 insertions(+), 0 deletions(-)

licenses.txt+3
...@@ -1,3 +1,6 @@...@@ -1,3 +1,6 @@
1MIT:1MIT:
2= https://spdx.org/licenses/MIT2= https://spdx.org/licenses/MIT
3- This3- This
4
5Unspecified:
6- system_lib c
mod.zig+928
...@@ -0,0 +1,928 @@...@@ -0,0 +1,928 @@
1const std = @import("std");
2const builtin = @import("builtin");
3
4pub const errno = struct {
5 pub const Error = error{
6 Unexpected,
7 EPERM,
8 ENOENT,
9 ESRCH,
10 EINTR,
11 EIO,
12 ENXIO,
13 E2BIG,
14 ENOEXEC,
15 EBADF,
16 ECHILD,
17 EAGAIN,
18 ENOMEM,
19 EACCES,
20 EFAULT,
21 ENOTBLK,
22 EBUSY,
23 EEXIST,
24 EXDEV,
25 ENODEV,
26 ENOTDIR,
27 EISDIR,
28 EINVAL,
29 ENFILE,
30 EMFILE,
31 ENOTTY,
32 ETXTBSY,
33 EFBIG,
34 ENOSPC,
35 ESPIPE,
36 EROFS,
37 EMLINK,
38 EPIPE,
39 EDOM,
40 ERANGE,
41 EDEADLK,
42 ENAMETOOLONG,
43 ENOLCK,
44 ENOSYS,
45 ENOTEMPTY,
46 ELOOP,
47 ENOMSG,
48 EIDRM,
49 ECHRNG,
50 EL2NSYNC,
51 EL3HLT,
52 EL3RST,
53 ELNRNG,
54 EUNATCH,
55 ENOCSI,
56 EL2HLT,
57 EBADE,
58 EBADR,
59 EXFULL,
60 ENOANO,
61 EBADRQC,
62 EBADSLT,
63 EBFONT,
64 ENOSTR,
65 ENODATA,
66 ETIME,
67 ENOSR,
68 ENONET,
69 ENOPKG,
70 EREMOTE,
71 ENOLINK,
72 EADV,
73 ESRMNT,
74 ECOMM,
75 EPROTO,
76 EMULTIHOP,
77 EDOTDOT,
78 EBADMSG,
79 EOVERFLOW,
80 ENOTUNIQ,
81 EBADFD,
82 EREMCHG,
83 ELIBACC,
84 ELIBBAD,
85 ELIBSCN,
86 ELIBMAX,
87 ELIBEXEC,
88 EILSEQ,
89 ERESTART,
90 ESTRPIPE,
91 EUSERS,
92 ENOTSOCK,
93 EDESTADDRREQ,
94 EMSGSIZE,
95 EPROTOTYPE,
96 ENOPROTOOPT,
97 EPROTONOSUPPORT,
98 ESOCKTNOSUPPORT,
99 EOPNOTSUPP,
100 EPFNOSUPPORT,
101 EAFNOSUPPORT,
102 EADDRINUSE,
103 EADDRNOTAVAIL,
104 ENETDOWN,
105 ENETUNREACH,
106 ENETRESET,
107 ECONNABORTED,
108 ECONNRESET,
109 ENOBUFS,
110 EISCONN,
111 ENOTCONN,
112 ESHUTDOWN,
113 ETOOMANYREFS,
114 ETIMEDOUT,
115 ECONNREFUSED,
116 EHOSTDOWN,
117 EHOSTUNREACH,
118 EALREADY,
119 EINPROGRESS,
120 ESTALE,
121 EUCLEAN,
122 ENOTNAM,
123 ENAVAIL,
124 EISNAM,
125 EREMOTEIO,
126 EDQUOT,
127 ENOMEDIUM,
128 EMEDIUMTYPE,
129 ECANCELED,
130 ENOKEY,
131 EKEYEXPIRED,
132 EKEYREVOKED,
133 EKEYREJECTED,
134 EOWNERDEAD,
135 ENOTRECOVERABLE,
136 ERFKILL,
137 EHWPOISON,
138 };
139
140 pub const Enum = switch (builtin.target.cpu.arch) {
141 .arc,
142 .arm,
143 .armeb,
144 .aarch64,
145 .aarch64_be,
146 .csky,
147 .hexagon,
148 .loongarch32,
149 .loongarch64,
150 .m68k,
151 .riscv32,
152 .riscv64,
153 .s390x,
154 .sparc,
155 .sparc64,
156 .x86,
157 .x86_64,
158 .xtensa,
159 => enum(c_ushort) {
160 EPERM = 1,
161 ENOENT = 2,
162 ESRCH = 3,
163 EINTR = 4,
164 EIO = 5,
165 ENXIO = 6,
166 E2BIG = 7,
167 ENOEXEC = 8,
168 EBADF = 9,
169 ECHILD = 10,
170 EAGAIN = 11,
171 ENOMEM = 12,
172 EACCES = 13,
173 EFAULT = 14,
174 ENOTBLK = 15,
175 EBUSY = 16,
176 EEXIST = 17,
177 EXDEV = 18,
178 ENODEV = 19,
179 ENOTDIR = 20,
180 EISDIR = 21,
181 EINVAL = 22,
182 ENFILE = 23,
183 EMFILE = 24,
184 ENOTTY = 25,
185 ETXTBSY = 26,
186 EFBIG = 27,
187 ENOSPC = 28,
188 ESPIPE = 29,
189 EROFS = 30,
190 EMLINK = 31,
191 EPIPE = 32,
192 EDOM = 33,
193 ERANGE = 34,
194 EDEADLK = 35,
195 ENAMETOOLONG = 36,
196 ENOLCK = 37,
197 ENOSYS = 38,
198 ENOTEMPTY = 39,
199 ELOOP = 40,
200 ENOMSG = 42,
201 EIDRM = 43,
202 ECHRNG = 44,
203 EL2NSYNC = 45,
204 EL3HLT = 46,
205 EL3RST = 47,
206 ELNRNG = 48,
207 EUNATCH = 49,
208 ENOCSI = 50,
209 EL2HLT = 51,
210 EBADE = 52,
211 EBADR = 53,
212 EXFULL = 54,
213 ENOANO = 55,
214 EBADRQC = 56,
215 EBADSLT = 57,
216 EBFONT = 59,
217 ENOSTR = 60,
218 ENODATA = 61,
219 ETIME = 62,
220 ENOSR = 63,
221 ENONET = 64,
222 ENOPKG = 65,
223 EREMOTE = 66,
224 ENOLINK = 67,
225 EADV = 68,
226 ESRMNT = 69,
227 ECOMM = 70,
228 EPROTO = 71,
229 EMULTIHOP = 72,
230 EDOTDOT = 73,
231 EBADMSG = 74,
232 EOVERFLOW = 75,
233 ENOTUNIQ = 76,
234 EBADFD = 77,
235 EREMCHG = 78,
236 ELIBACC = 79,
237 ELIBBAD = 80,
238 ELIBSCN = 81,
239 ELIBMAX = 82,
240 ELIBEXEC = 83,
241 EILSEQ = 84,
242 ERESTART = 85,
243 ESTRPIPE = 86,
244 EUSERS = 87,
245 ENOTSOCK = 88,
246 EDESTADDRREQ = 89,
247 EMSGSIZE = 90,
248 EPROTOTYPE = 91,
249 ENOPROTOOPT = 92,
250 EPROTONOSUPPORT = 93,
251 ESOCKTNOSUPPORT = 94,
252 EOPNOTSUPP = 95,
253 EPFNOSUPPORT = 96,
254 EAFNOSUPPORT = 97,
255 EADDRINUSE = 98,
256 EADDRNOTAVAIL = 99,
257 ENETDOWN = 100,
258 ENETUNREACH = 101,
259 ENETRESET = 102,
260 ECONNABORTED = 103,
261 ECONNRESET = 104,
262 ENOBUFS = 105,
263 EISCONN = 106,
264 ENOTCONN = 107,
265 ESHUTDOWN = 108,
266 ETOOMANYREFS = 109,
267 ETIMEDOUT = 110,
268 ECONNREFUSED = 111,
269 EHOSTDOWN = 112,
270 EHOSTUNREACH = 113,
271 EALREADY = 114,
272 EINPROGRESS = 115,
273 ESTALE = 116,
274 EUCLEAN = 117,
275 ENOTNAM = 118,
276 ENAVAIL = 119,
277 EISNAM = 120,
278 EREMOTEIO = 121,
279 EDQUOT = 122,
280 ENOMEDIUM = 123,
281 EMEDIUMTYPE = 124,
282 ECANCELED = 125,
283 ENOKEY = 126,
284 EKEYEXPIRED = 127,
285 EKEYREVOKED = 128,
286 EKEYREJECTED = 129,
287 EOWNERDEAD = 130,
288 ENOTRECOVERABLE = 131,
289 ERFKILL = 132,
290 EHWPOISON = 133,
291 _,
292 pub const EWOULDBLOCK: Enum = .EAGAIN;
293 pub const EDEADLOCK: Enum = .EDEADLK;
294 pub const ENOTSUP: Enum = .EOPNOTSUPP;
295 },
296 .mips,
297 .mipsel,
298 => enum(c_ushort) {
299 EPERM = 1,
300 ENOENT = 2,
301 ESRCH = 3,
302 EINTR = 4,
303 EIO = 5,
304 ENXIO = 6,
305 E2BIG = 7,
306 ENOEXEC = 8,
307 EBADF = 9,
308 ECHILD = 10,
309 EAGAIN = 11,
310 ENOMEM = 12,
311 EACCES = 13,
312 EFAULT = 14,
313 ENOTBLK = 15,
314 EBUSY = 16,
315 EEXIST = 17,
316 EXDEV = 18,
317 ENODEV = 19,
318 ENOTDIR = 20,
319 EISDIR = 21,
320 EINVAL = 22,
321 ENFILE = 23,
322 EMFILE = 24,
323 ENOTTY = 25,
324 ETXTBSY = 26,
325 EFBIG = 27,
326 ENOSPC = 28,
327 ESPIPE = 29,
328 EROFS = 30,
329 EMLINK = 31,
330 EPIPE = 32,
331 EDOM = 33,
332 ERANGE = 34,
333 ENOMSG = 35,
334 EIDRM = 36,
335 ECHRNG = 37,
336 EL2NSYNC = 38,
337 EL3HLT = 39,
338 EL3RST = 40,
339 ELNRNG = 41,
340 EUNATCH = 42,
341 ENOCSI = 43,
342 EL2HLT = 44,
343 EDEADLK = 45,
344 ENOLCK = 46,
345 EBADE = 50,
346 EBADR = 51,
347 EXFULL = 52,
348 ENOANO = 53,
349 EBADRQC = 54,
350 EBADSLT = 55,
351 EDEADLOCK = 56,
352 EBFONT = 59,
353 ENOSTR = 60,
354 ENODATA = 61,
355 ETIME = 62,
356 ENOSR = 63,
357 ENONET = 64,
358 ENOPKG = 65,
359 EREMOTE = 66,
360 ENOLINK = 67,
361 EADV = 68,
362 ESRMNT = 69,
363 ECOMM = 70,
364 EPROTO = 71,
365 EDOTDOT = 73,
366 EMULTIHOP = 74,
367 EBADMSG = 77,
368 ENAMETOOLONG = 78,
369 EOVERFLOW = 79,
370 ENOTUNIQ = 80,
371 EBADFD = 81,
372 EREMCHG = 82,
373 ELIBACC = 83,
374 ELIBBAD = 84,
375 ELIBSCN = 85,
376 ELIBMAX = 86,
377 ELIBEXEC = 87,
378 EILSEQ = 88,
379 ENOSYS = 89,
380 ELOOP = 90,
381 ERESTART = 91,
382 ESTRPIPE = 92,
383 ENOTEMPTY = 93,
384 EUSERS = 94,
385 ENOTSOCK = 95,
386 EDESTADDRREQ = 96,
387 EMSGSIZE = 97,
388 EPROTOTYPE = 98,
389 ENOPROTOOPT = 99,
390 EPROTONOSUPPORT = 120,
391 ESOCKTNOSUPPORT = 121,
392 EOPNOTSUPP = 122,
393 EPFNOSUPPORT = 123,
394 EAFNOSUPPORT = 124,
395 EADDRINUSE = 125,
396 EADDRNOTAVAIL = 126,
397 ENETDOWN = 127,
398 ENETUNREACH = 128,
399 ENETRESET = 129,
400 ECONNABORTED = 130,
401 ECONNRESET = 131,
402 ENOBUFS = 132,
403 EISCONN = 133,
404 ENOTCONN = 134,
405 EUCLEAN = 135,
406 ENOTNAM = 137,
407 ENAVAIL = 138,
408 EISNAM = 139,
409 EREMOTEIO = 140,
410 ESHUTDOWN = 143,
411 ETOOMANYREFS = 144,
412 ETIMEDOUT = 145,
413 ECONNREFUSED = 146,
414 EHOSTDOWN = 147,
415 EHOSTUNREACH = 148,
416 EALREADY = 149,
417 EINPROGRESS = 150,
418 ESTALE = 151,
419 ECANCELED = 158,
420 ENOMEDIUM = 159,
421 EMEDIUMTYPE = 160,
422 ENOKEY = 161,
423 EKEYEXPIRED = 162,
424 EKEYREVOKED = 163,
425 EKEYREJECTED = 164,
426 EOWNERDEAD = 165,
427 ENOTRECOVERABLE = 166,
428 ERFKILL = 167,
429 EHWPOISON = 168,
430 EDQUOT = 1133,
431 _,
432 pub const ENOTSUP: Enum = .EOPNOTSUPP;
433 pub const EWOULDBLOCK: Enum = .EAGAIN;
434 },
435 .mips64,
436 .mips64el,
437 => enum(c_ushort) {
438 EPERM = 1,
439 ENOENT = 2,
440 ESRCH = 3,
441 EINTR = 4,
442 EIO = 5,
443 ENXIO = 6,
444 E2BIG = 7,
445 ENOEXEC = 8,
446 EBADF = 9,
447 ECHILD = 10,
448 EAGAIN = 11,
449 ENOMEM = 12,
450 EACCES = 13,
451 EFAULT = 14,
452 ENOTBLK = 15,
453 EBUSY = 16,
454 EEXIST = 17,
455 EXDEV = 18,
456 ENODEV = 19,
457 ENOTDIR = 20,
458 EISDIR = 21,
459 EINVAL = 22,
460 ENFILE = 23,
461 EMFILE = 24,
462 ENOTTY = 25,
463 ETXTBSY = 26,
464 EFBIG = 27,
465 ENOSPC = 28,
466 ESPIPE = 29,
467 EROFS = 30,
468 EMLINK = 31,
469 EPIPE = 32,
470 EDOM = 33,
471 ERANGE = 34,
472 ENOMSG = 35,
473 EIDRM = 36,
474 ECHRNG = 37,
475 EL2NSYNC = 38,
476 EL3HLT = 39,
477 EL3RST = 40,
478 ELNRNG = 41,
479 EUNATCH = 42,
480 ENOCSI = 43,
481 EL2HLT = 44,
482 EDEADLK = 45,
483 ENOLCK = 46,
484 EBADE = 50,
485 EBADR = 51,
486 EXFULL = 52,
487 ENOANO = 53,
488 EBADRQC = 54,
489 EBADSLT = 55,
490 EDEADLOCK = 56,
491 EBFONT = 59,
492 ENOSTR = 60,
493 ENODATA = 61,
494 ETIME = 62,
495 ENOSR = 63,
496 ENONET = 64,
497 ENOPKG = 65,
498 EREMOTE = 66,
499 ENOLINK = 67,
500 EADV = 68,
501 ESRMNT = 69,
502 ECOMM = 70,
503 EPROTO = 71,
504 EDOTDOT = 73,
505 EMULTIHOP = 74,
506 EBADMSG = 77,
507 ENAMETOOLONG = 78,
508 EOVERFLOW = 79,
509 ENOTUNIQ = 80,
510 EBADFD = 81,
511 EREMCHG = 82,
512 ELIBACC = 83,
513 ELIBBAD = 84,
514 ELIBSCN = 85,
515 ELIBMAX = 86,
516 ELIBEXEC = 87,
517 EILSEQ = 88,
518 ENOSYS = 89,
519 ELOOP = 90,
520 ERESTART = 91,
521 ESTRPIPE = 92,
522 ENOTEMPTY = 93,
523 EUSERS = 94,
524 ENOTSOCK = 95,
525 EDESTADDRREQ = 96,
526 EMSGSIZE = 97,
527 EPROTOTYPE = 98,
528 ENOPROTOOPT = 99,
529 EPROTONOSUPPORT = 120,
530 ESOCKTNOSUPPORT = 121,
531 EOPNOTSUPP = 122,
532 EPFNOSUPPORT = 123,
533 EAFNOSUPPORT = 124,
534 EADDRINUSE = 125,
535 EADDRNOTAVAIL = 126,
536 ENETDOWN = 127,
537 ENETUNREACH = 128,
538 ENETRESET = 129,
539 ECONNABORTED = 130,
540 ECONNRESET = 131,
541 ENOBUFS = 132,
542 EISCONN = 133,
543 ENOTCONN = 134,
544 EUCLEAN = 135,
545 ENOTNAM = 137,
546 ENAVAIL = 138,
547 EISNAM = 139,
548 EREMOTEIO = 140,
549 ESHUTDOWN = 143,
550 ETOOMANYREFS = 144,
551 ETIMEDOUT = 145,
552 ECONNREFUSED = 146,
553 EHOSTDOWN = 147,
554 EHOSTUNREACH = 148,
555 EALREADY = 149,
556 EINPROGRESS = 150,
557 ESTALE = 151,
558 ECANCELED = 158,
559 ENOMEDIUM = 159,
560 EMEDIUMTYPE = 160,
561 ENOKEY = 161,
562 EKEYEXPIRED = 162,
563 EKEYREVOKED = 163,
564 EKEYREJECTED = 164,
565 EOWNERDEAD = 165,
566 ENOTRECOVERABLE = 166,
567 ERFKILL = 167,
568 EHWPOISON = 168,
569 EDQUOT = 1133,
570 _,
571 pub const ENOTSUP: Enum = .EOPNOTSUPP;
572 pub const EWOULDBLOCK: Enum = .EAGAIN;
573 },
574 .powerpc,
575 .powerpcle,
576 => enum(c_ushort) {
577 EPERM = 1,
578 ENOENT = 2,
579 ESRCH = 3,
580 EINTR = 4,
581 EIO = 5,
582 ENXIO = 6,
583 E2BIG = 7,
584 ENOEXEC = 8,
585 EBADF = 9,
586 ECHILD = 10,
587 EAGAIN = 11,
588 ENOMEM = 12,
589 EACCES = 13,
590 EFAULT = 14,
591 ENOTBLK = 15,
592 EBUSY = 16,
593 EEXIST = 17,
594 EXDEV = 18,
595 ENODEV = 19,
596 ENOTDIR = 20,
597 EISDIR = 21,
598 EINVAL = 22,
599 ENFILE = 23,
600 EMFILE = 24,
601 ENOTTY = 25,
602 ETXTBSY = 26,
603 EFBIG = 27,
604 ENOSPC = 28,
605 ESPIPE = 29,
606 EROFS = 30,
607 EMLINK = 31,
608 EPIPE = 32,
609 EDOM = 33,
610 ERANGE = 34,
611 EDEADLK = 35,
612 ENAMETOOLONG = 36,
613 ENOLCK = 37,
614 ENOSYS = 38,
615 ENOTEMPTY = 39,
616 ELOOP = 40,
617 ENOMSG = 42,
618 EIDRM = 43,
619 ECHRNG = 44,
620 EL2NSYNC = 45,
621 EL3HLT = 46,
622 EL3RST = 47,
623 ELNRNG = 48,
624 EUNATCH = 49,
625 ENOCSI = 50,
626 EL2HLT = 51,
627 EBADE = 52,
628 EBADR = 53,
629 EXFULL = 54,
630 ENOANO = 55,
631 EBADRQC = 56,
632 EBADSLT = 57,
633 EDEADLOCK = 58,
634 EBFONT = 59,
635 ENOSTR = 60,
636 ENODATA = 61,
637 ETIME = 62,
638 ENOSR = 63,
639 ENONET = 64,
640 ENOPKG = 65,
641 EREMOTE = 66,
642 ENOLINK = 67,
643 EADV = 68,
644 ESRMNT = 69,
645 ECOMM = 70,
646 EPROTO = 71,
647 EMULTIHOP = 72,
648 EDOTDOT = 73,
649 EBADMSG = 74,
650 EOVERFLOW = 75,
651 ENOTUNIQ = 76,
652 EBADFD = 77,
653 EREMCHG = 78,
654 ELIBACC = 79,
655 ELIBBAD = 80,
656 ELIBSCN = 81,
657 ELIBMAX = 82,
658 ELIBEXEC = 83,
659 EILSEQ = 84,
660 ERESTART = 85,
661 ESTRPIPE = 86,
662 EUSERS = 87,
663 ENOTSOCK = 88,
664 EDESTADDRREQ = 89,
665 EMSGSIZE = 90,
666 EPROTOTYPE = 91,
667 ENOPROTOOPT = 92,
668 EPROTONOSUPPORT = 93,
669 ESOCKTNOSUPPORT = 94,
670 EOPNOTSUPP = 95,
671 EPFNOSUPPORT = 96,
672 EAFNOSUPPORT = 97,
673 EADDRINUSE = 98,
674 EADDRNOTAVAIL = 99,
675 ENETDOWN = 100,
676 ENETUNREACH = 101,
677 ENETRESET = 102,
678 ECONNABORTED = 103,
679 ECONNRESET = 104,
680 ENOBUFS = 105,
681 EISCONN = 106,
682 ENOTCONN = 107,
683 ESHUTDOWN = 108,
684 ETOOMANYREFS = 109,
685 ETIMEDOUT = 110,
686 ECONNREFUSED = 111,
687 EHOSTDOWN = 112,
688 EHOSTUNREACH = 113,
689 EALREADY = 114,
690 EINPROGRESS = 115,
691 ESTALE = 116,
692 EUCLEAN = 117,
693 ENOTNAM = 118,
694 ENAVAIL = 119,
695 EISNAM = 120,
696 EREMOTEIO = 121,
697 EDQUOT = 122,
698 ENOMEDIUM = 123,
699 EMEDIUMTYPE = 124,
700 ECANCELED = 125,
701 ENOKEY = 126,
702 EKEYEXPIRED = 127,
703 EKEYREVOKED = 128,
704 EKEYREJECTED = 129,
705 EOWNERDEAD = 130,
706 ENOTRECOVERABLE = 131,
707 ERFKILL = 132,
708 EHWPOISON = 133,
709 _,
710 pub const EWOULDBLOCK: Enum = .EAGAIN;
711 pub const ENOTSUP: Enum = .EOPNOTSUPP;
712 },
713 .powerpc64,
714 .powerpc64le,
715 => enum(c_ushort) {
716 EPERM = 1,
717 ENOENT = 2,
718 ESRCH = 3,
719 EINTR = 4,
720 EIO = 5,
721 ENXIO = 6,
722 E2BIG = 7,
723 ENOEXEC = 8,
724 EBADF = 9,
725 ECHILD = 10,
726 EAGAIN = 11,
727 ENOMEM = 12,
728 EACCES = 13,
729 EFAULT = 14,
730 ENOTBLK = 15,
731 EBUSY = 16,
732 EEXIST = 17,
733 EXDEV = 18,
734 ENODEV = 19,
735 ENOTDIR = 20,
736 EISDIR = 21,
737 EINVAL = 22,
738 ENFILE = 23,
739 EMFILE = 24,
740 ENOTTY = 25,
741 ETXTBSY = 26,
742 EFBIG = 27,
743 ENOSPC = 28,
744 ESPIPE = 29,
745 EROFS = 30,
746 EMLINK = 31,
747 EPIPE = 32,
748 EDOM = 33,
749 ERANGE = 34,
750 EDEADLK = 35,
751 ENAMETOOLONG = 36,
752 ENOLCK = 37,
753 ENOSYS = 38,
754 ENOTEMPTY = 39,
755 ELOOP = 40,
756 ENOMSG = 42,
757 EIDRM = 43,
758 ECHRNG = 44,
759 EL2NSYNC = 45,
760 EL3HLT = 46,
761 EL3RST = 47,
762 ELNRNG = 48,
763 EUNATCH = 49,
764 ENOCSI = 50,
765 EL2HLT = 51,
766 EBADE = 52,
767 EBADR = 53,
768 EXFULL = 54,
769 ENOANO = 55,
770 EBADRQC = 56,
771 EBADSLT = 57,
772 EDEADLOCK = 58,
773 EBFONT = 59,
774 ENOSTR = 60,
775 ENODATA = 61,
776 ETIME = 62,
777 ENOSR = 63,
778 ENONET = 64,
779 ENOPKG = 65,
780 EREMOTE = 66,
781 ENOLINK = 67,
782 EADV = 68,
783 ESRMNT = 69,
784 ECOMM = 70,
785 EPROTO = 71,
786 EMULTIHOP = 72,
787 EDOTDOT = 73,
788 EBADMSG = 74,
789 EOVERFLOW = 75,
790 ENOTUNIQ = 76,
791 EBADFD = 77,
792 EREMCHG = 78,
793 ELIBACC = 79,
794 ELIBBAD = 80,
795 ELIBSCN = 81,
796 ELIBMAX = 82,
797 ELIBEXEC = 83,
798 EILSEQ = 84,
799 ERESTART = 85,
800 ESTRPIPE = 86,
801 EUSERS = 87,
802 ENOTSOCK = 88,
803 EDESTADDRREQ = 89,
804 EMSGSIZE = 90,
805 EPROTOTYPE = 91,
806 ENOPROTOOPT = 92,
807 EPROTONOSUPPORT = 93,
808 ESOCKTNOSUPPORT = 94,
809 EOPNOTSUPP = 95,
810 EPFNOSUPPORT = 96,
811 EAFNOSUPPORT = 97,
812 EADDRINUSE = 98,
813 EADDRNOTAVAIL = 99,
814 ENETDOWN = 100,
815 ENETUNREACH = 101,
816 ENETRESET = 102,
817 ECONNABORTED = 103,
818 ECONNRESET = 104,
819 ENOBUFS = 105,
820 EISCONN = 106,
821 ENOTCONN = 107,
822 ESHUTDOWN = 108,
823 ETOOMANYREFS = 109,
824 ETIMEDOUT = 110,
825 ECONNREFUSED = 111,
826 EHOSTDOWN = 112,
827 EHOSTUNREACH = 113,
828 EALREADY = 114,
829 EINPROGRESS = 115,
830 ESTALE = 116,
831 EUCLEAN = 117,
832 ENOTNAM = 118,
833 ENAVAIL = 119,
834 EISNAM = 120,
835 EREMOTEIO = 121,
836 EDQUOT = 122,
837 ENOMEDIUM = 123,
838 EMEDIUMTYPE = 124,
839 ECANCELED = 125,
840 ENOKEY = 126,
841 EKEYEXPIRED = 127,
842 EKEYREVOKED = 128,
843 EKEYREJECTED = 129,
844 EOWNERDEAD = 130,
845 ENOTRECOVERABLE = 131,
846 ERFKILL = 132,
847 EHWPOISON = 133,
848 _,
849 pub const EWOULDBLOCK: Enum = .EAGAIN;
850 pub const ENOTSUP: Enum = .EOPNOTSUPP;
851 },
852 // alpha
853 // nios2
854 // microblaze
855 // openrisc
856 // parisc
857 // sh
858 // um
859 // @compileError("TODO: " ++ @tagName(v)),
860 .avr,
861 .bpfel,
862 .bpfeb,
863 .msp430,
864 .amdgcn,
865 .thumb,
866 .thumbeb,
867 .propeller,
868 .xcore,
869 .nvptx,
870 .nvptx64,
871 .spirv,
872 .spirv32,
873 .spirv64,
874 .kalimba,
875 .lanai,
876 .wasm32,
877 .wasm64,
878 .ve,
879 => unreachable,
880 };
881
882 pub fn byName(name: []const u8) ?Error {
883 inline for (comptime std.meta.fieldNames(Error)) |field_name| {
884 if (std.mem.eql(u8, name, field_name)) {
885 return @field(Error, field_name);
886 }
887 }
888 return null;
889 }
890
891 const map = blk: {
892 const KV = struct { []const u8, Error };
893 var kvs: []const KV = &.{};
894 for (std.meta.fields(Enum)) |field| {
895 kvs = kvs ++ &[1]KV{.{ field.name, @field(Error, field.name) }};
896 }
897 break :blk std.StaticStringMap(Error).initComptime(kvs);
898 };
899
900 pub fn fromInt(code: c_int) Error {
901 const errors_are_seqential = comptime blk: {
902 if (@intFromEnum(Enum.EPERM) != 1) break :blk false;
903 var prev: u16 = @intFromError(Error.EPERM);
904 for (std.meta.fields(Error)[1..]) |field| {
905 const int = @intFromError(@field(anyerror, field.name));
906 if (int != prev + 1) break :blk false;
907 prev = int;
908 }
909 break :blk true;
910 };
911 if (errors_are_seqential) {
912 // avoid an inline for and N comparisons
913 if (code < 1) return error.Unexpected;
914 if (code > std.meta.fields(Enum).len) return error.Unexpected;
915 const ucode: c_ushort = @intCast(code);
916 return @errorCast(@errorFromInt(@intFromError(Error.EPERM) + ucode - @intFromEnum(Enum.EPERM)));
917 }
918 return map.get(std.enums.tagName(Enum, @enumFromInt(code)) orelse return error.Unexpected).?;
919 }
920
921 pub fn fromLibC() c_int {
922 return libc.__errno_location().*;
923 }
924};
925
926pub const libc = struct {
927 pub extern fn __errno_location() *c_int;
928};
zigmod.yml+1
...@@ -4,3 +4,4 @@ main: mod.zig...@@ -4,3 +4,4 @@ main: mod.zig
4license: MIT4license: MIT
5description: OS bindings layer for interacting with Linux5description: OS bindings layer for interacting with Linux
6dependencies:6dependencies:
7 - src: system_lib c