1use crate::Result;
15use cfg_if::cfg_if;
16use libc::{c_int, c_void};
17use std::{error, fmt, io};
18
19pub use self::consts::*;
20
21cfg_if! {
22 if #[cfg(any(target_os = "freebsd",
23 apple_targets,))] {
24 unsafe fn errno_location() -> *mut c_int {
25 unsafe { libc::__error() }
26 }
27 } else if #[cfg(any(target_os = "android", netbsdlike))] {
28 unsafe fn errno_location() -> *mut c_int {
29 unsafe { libc::__errno() }
30 }
31 } else if #[cfg(any(target_os = "linux",
32 target_os = "redox",
33 target_os = "dragonfly",
34 target_os = "fuchsia",
35 target_os = "hurd"))] {
36 unsafe fn errno_location() -> *mut c_int {
37 unsafe { libc::__errno_location() }
38 }
39 } else if #[cfg(solarish)] {
40 unsafe fn errno_location() -> *mut c_int {
41 unsafe { libc::___errno() }
42 }
43 } else if #[cfg(any(target_os = "haiku",))] {
44 unsafe fn errno_location() -> *mut c_int {
45 unsafe { libc::_errnop() }
46 }
47 } else if #[cfg(any(target_os = "aix"))] {
48 unsafe fn errno_location() -> *mut c_int {
49 unsafe { libc::_Errno() }
50 }
51 }
52}
53
54#[deprecated(since = "0.28.0", note = "please use `Errno::last_raw()` instead")]
56pub fn errno() -> i32 {
57 Errno::last_raw()
58}
59
60impl Errno {
61 pub fn last() -> Self {
63 Self::from_raw(Self::last_raw())
64 }
65
66 pub fn last_raw() -> i32 {
68 unsafe { *errno_location() }
69 }
70
71 pub fn set(self) {
82 Self::set_raw(self as i32)
83 }
84
85 pub fn set_raw(errno: i32) {
87 unsafe {
89 *errno_location() = errno;
90 }
91 }
92
93 #[deprecated(
94 since = "0.28.0",
95 note = "please use `Errno::from_raw()` instead"
96 )]
97 pub const fn from_i32(err: i32) -> Errno {
98 Self::from_raw(err)
99 }
100
101 pub const fn from_raw(err: i32) -> Errno {
102 #[allow(deprecated)]
103 from_i32(err)
104 }
105
106 pub fn desc(self) -> &'static str {
107 desc(self)
108 }
109
110 pub fn clear() {
124 Self::set_raw(0)
125 }
126
127 #[inline]
130 pub fn result<S: ErrnoSentinel + PartialEq<S>>(value: S) -> Result<S> {
131 if value == S::sentinel() {
132 Err(Self::last())
133 } else {
134 Ok(value)
135 }
136 }
137}
138
139pub trait ErrnoSentinel: Sized {
142 fn sentinel() -> Self;
143}
144
145impl ErrnoSentinel for isize {
146 fn sentinel() -> Self {
147 -1
148 }
149}
150
151impl ErrnoSentinel for i32 {
152 fn sentinel() -> Self {
153 -1
154 }
155}
156
157impl ErrnoSentinel for i64 {
158 fn sentinel() -> Self {
159 -1
160 }
161}
162
163impl ErrnoSentinel for *mut c_void {
164 fn sentinel() -> Self {
165 -1isize as *mut c_void
166 }
167}
168
169impl ErrnoSentinel for libc::sighandler_t {
170 fn sentinel() -> Self {
171 libc::SIG_ERR
172 }
173}
174
175impl error::Error for Errno {}
176
177impl fmt::Display for Errno {
178 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
179 write!(f, "{:?}: {}", self, self.desc())
180 }
181}
182
183impl From<Errno> for io::Error {
184 fn from(err: Errno) -> Self {
185 io::Error::from_raw_os_error(err as i32)
186 }
187}
188
189impl TryFrom<io::Error> for Errno {
190 type Error = io::Error;
191
192 fn try_from(ioerror: io::Error) -> std::result::Result<Self, io::Error> {
193 ioerror.raw_os_error().map(Errno::from_raw).ok_or(ioerror)
194 }
195}
196
197fn desc(errno: Errno) -> &'static str {
198 use self::Errno::*;
199 match errno {
200 UnknownErrno => "Unknown errno",
201 EPERM => "Operation not permitted",
202 ENOENT => "No such file or directory",
203 ESRCH => "No such process",
204 EINTR => "Interrupted system call",
205 EIO => "I/O error",
206 ENXIO => "No such device or address",
207 E2BIG => "Argument list too long",
208 ENOEXEC => "Exec format error",
209 EBADF => "Bad file number",
210 ECHILD => "No child processes",
211 EAGAIN => "Try again",
212 ENOMEM => "Out of memory",
213 EACCES => "Permission denied",
214 EFAULT => "Bad address",
215 #[cfg(not(target_os = "haiku"))]
216 ENOTBLK => "Block device required",
217 EBUSY => "Device or resource busy",
218 EEXIST => "File exists",
219 EXDEV => "Cross-device link",
220 ENODEV => "No such device",
221 ENOTDIR => "Not a directory",
222 EISDIR => "Is a directory",
223 EINVAL => "Invalid argument",
224 ENFILE => "File table overflow",
225 EMFILE => "Too many open files",
226 ENOTTY => "Not a typewriter",
227 ETXTBSY => "Text file busy",
228 EFBIG => "File too large",
229 ENOSPC => "No space left on device",
230 ESPIPE => "Illegal seek",
231 EROFS => "Read-only file system",
232 EMLINK => "Too many links",
233 EPIPE => "Broken pipe",
234 EDOM => "Math argument out of domain of func",
235 ERANGE => "Math result not representable",
236 EDEADLK => "Resource deadlock would occur",
237 ENAMETOOLONG => "File name too long",
238 ENOLCK => "No record locks available",
239 ENOSYS => "Function not implemented",
240 ENOTEMPTY => "Directory not empty",
241 ELOOP => "Too many symbolic links encountered",
242 ENOMSG => "No message of desired type",
243 EIDRM => "Identifier removed",
244 EINPROGRESS => "Operation now in progress",
245 EALREADY => "Operation already in progress",
246 ENOTSOCK => "Socket operation on non-socket",
247 EDESTADDRREQ => "Destination address required",
248 EMSGSIZE => "Message too long",
249 EPROTOTYPE => "Protocol wrong type for socket",
250 ENOPROTOOPT => "Protocol not available",
251 EPROTONOSUPPORT => "Protocol not supported",
252 #[cfg(not(target_os = "haiku"))]
253 ESOCKTNOSUPPORT => "Socket type not supported",
254 #[cfg(not(target_os = "haiku"))]
255 EPFNOSUPPORT => "Protocol family not supported",
256 #[cfg(not(target_os = "haiku"))]
257 EAFNOSUPPORT => "Address family not supported by protocol",
258 EADDRINUSE => "Address already in use",
259 EADDRNOTAVAIL => "Cannot assign requested address",
260 ENETDOWN => "Network is down",
261 ENETUNREACH => "Network is unreachable",
262 ENETRESET => "Network dropped connection because of reset",
263 ECONNABORTED => "Software caused connection abort",
264 ECONNRESET => "Connection reset by peer",
265 ENOBUFS => "No buffer space available",
266 EISCONN => "Transport endpoint is already connected",
267 ENOTCONN => "Transport endpoint is not connected",
268 ESHUTDOWN => "Cannot send after transport endpoint shutdown",
269 #[cfg(not(target_os = "haiku"))]
270 ETOOMANYREFS => "Too many references: cannot splice",
271 ETIMEDOUT => "Connection timed out",
272 ECONNREFUSED => "Connection refused",
273 EHOSTDOWN => "Host is down",
274 EHOSTUNREACH => "No route to host",
275
276 #[cfg(any(
277 linux_android,
278 solarish,
279 target_os = "aix",
280 target_os = "fuchsia"
281 ))]
282 ECHRNG => "Channel number out of range",
283
284 #[cfg(any(
285 linux_android,
286 solarish,
287 target_os = "aix",
288 target_os = "fuchsia"
289 ))]
290 EL2NSYNC => "Level 2 not synchronized",
291
292 #[cfg(any(
293 linux_android,
294 solarish,
295 target_os = "aix",
296 target_os = "fuchsia"
297 ))]
298 EL3HLT => "Level 3 halted",
299
300 #[cfg(any(
301 linux_android,
302 solarish,
303 target_os = "aix",
304 target_os = "fuchsia"
305 ))]
306 EL3RST => "Level 3 reset",
307
308 #[cfg(any(
309 linux_android,
310 solarish,
311 target_os = "aix",
312 target_os = "fuchsia"
313 ))]
314 ELNRNG => "Link number out of range",
315
316 #[cfg(any(
317 linux_android,
318 solarish,
319 target_os = "aix",
320 target_os = "fuchsia"
321 ))]
322 EUNATCH => "Protocol driver not attached",
323
324 #[cfg(any(
325 linux_android,
326 solarish,
327 target_os = "aix",
328 target_os = "fuchsia"
329 ))]
330 ENOCSI => "No CSI structure available",
331
332 #[cfg(any(
333 linux_android,
334 solarish,
335 target_os = "aix",
336 target_os = "fuchsia"
337 ))]
338 EL2HLT => "Level 2 halted",
339
340 #[cfg(any(linux_android, solarish, target_os = "fuchsia"))]
341 EBADE => "Invalid exchange",
342
343 #[cfg(any(linux_android, solarish, target_os = "fuchsia"))]
344 EBADR => "Invalid request descriptor",
345
346 #[cfg(any(linux_android, solarish, target_os = "fuchsia"))]
347 EXFULL => "Exchange full",
348
349 #[cfg(any(linux_android, solarish, target_os = "fuchsia"))]
350 ENOANO => "No anode",
351
352 #[cfg(any(linux_android, solarish, target_os = "fuchsia"))]
353 EBADRQC => "Invalid request code",
354
355 #[cfg(any(linux_android, solarish, target_os = "fuchsia"))]
356 EBADSLT => "Invalid slot",
357
358 #[cfg(any(linux_android, solarish, target_os = "fuchsia"))]
359 EBFONT => "Bad font file format",
360
361 #[cfg(any(
362 linux_android,
363 solarish,
364 target_os = "fuchsia",
365 target_os = "hurd"
366 ))]
367 ENOSTR => "Device not a stream",
368
369 #[cfg(any(
370 linux_android,
371 solarish,
372 target_os = "fuchsia",
373 target_os = "hurd"
374 ))]
375 ENODATA => "No data available",
376
377 #[cfg(any(
378 linux_android,
379 solarish,
380 target_os = "fuchsia",
381 target_os = "hurd"
382 ))]
383 ETIME => "Timer expired",
384
385 #[cfg(any(
386 linux_android,
387 solarish,
388 target_os = "fuchsia",
389 target_os = "hurd"
390 ))]
391 ENOSR => "Out of streams resources",
392
393 #[cfg(any(linux_android, solarish, target_os = "fuchsia"))]
394 ENONET => "Machine is not on the network",
395
396 #[cfg(any(linux_android, solarish, target_os = "fuchsia"))]
397 ENOPKG => "Package not installed",
398
399 #[cfg(any(
400 linux_android,
401 solarish,
402 target_os = "fuchsia",
403 target_os = "hurd"
404 ))]
405 EREMOTE => "Object is remote",
406
407 #[cfg(any(
408 linux_android,
409 solarish,
410 target_os = "aix",
411 target_os = "fuchsia"
412 ))]
413 ENOLINK => "Link has been severed",
414
415 #[cfg(any(linux_android, solarish, target_os = "fuchsia"))]
416 EADV => "Advertise error",
417
418 #[cfg(any(linux_android, solarish, target_os = "fuchsia"))]
419 ESRMNT => "Srmount error",
420
421 #[cfg(any(linux_android, solarish, target_os = "fuchsia"))]
422 ECOMM => "Communication error on send",
423
424 #[cfg(any(
425 linux_android,
426 solarish,
427 target_os = "aix",
428 target_os = "fuchsia",
429 ))]
430 EPROTO => "Protocol error",
431
432 #[cfg(any(
433 linux_android,
434 solarish,
435 target_os = "aix",
436 target_os = "fuchsia"
437 ))]
438 EMULTIHOP => "Multihop attempted",
439
440 #[cfg(any(linux_android, target_os = "fuchsia"))]
441 EDOTDOT => "RFS specific error",
442
443 #[cfg(any(linux_android, target_os = "aix", target_os = "fuchsia"))]
444 EBADMSG => "Not a data message",
445
446 #[cfg(solarish)]
447 EBADMSG => "Trying to read unreadable message",
448
449 #[cfg(any(
450 linux_android,
451 target_os = "aix",
452 target_os = "fuchsia",
453 target_os = "haiku",
454 target_os = "hurd"
455 ))]
456 EOVERFLOW => "Value too large for defined data type",
457
458 #[cfg(any(linux_android, solarish, target_os = "fuchsia"))]
459 ENOTUNIQ => "Name not unique on network",
460
461 #[cfg(any(linux_android, solarish, target_os = "fuchsia"))]
462 EBADFD => "File descriptor in bad state",
463
464 #[cfg(any(linux_android, solarish, target_os = "fuchsia"))]
465 EREMCHG => "Remote address changed",
466
467 #[cfg(any(linux_android, solarish, target_os = "fuchsia"))]
468 ELIBACC => "Can not access a needed shared library",
469
470 #[cfg(any(linux_android, solarish, target_os = "fuchsia"))]
471 ELIBBAD => "Accessing a corrupted shared library",
472
473 #[cfg(any(linux_android, solarish, target_os = "fuchsia"))]
474 ELIBSCN => ".lib section in a.out corrupted",
475
476 #[cfg(any(linux_android, solarish, target_os = "fuchsia"))]
477 ELIBMAX => "Attempting to link in too many shared libraries",
478
479 #[cfg(any(
480 linux_android,
481 solarish,
482 target_os = "fuchsia",
483 target_os = "hurd"
484 ))]
485 ELIBEXEC => "Cannot exec a shared library directly",
486
487 #[cfg(any(
488 linux_android,
489 solarish,
490 target_os = "aix",
491 target_os = "fuchsia",
492 target_os = "openbsd"
493 ))]
494 EILSEQ => "Illegal byte sequence",
495
496 #[cfg(any(
497 linux_android,
498 solarish,
499 target_os = "aix",
500 target_os = "fuchsia"
501 ))]
502 ERESTART => "Interrupted system call should be restarted",
503
504 #[cfg(any(linux_android, solarish, target_os = "fuchsia"))]
505 ESTRPIPE => "Streams pipe error",
506
507 #[cfg(any(linux_android, solarish, target_os = "fuchsia"))]
508 EUSERS => "Too many users",
509
510 #[cfg(any(
511 linux_android,
512 target_os = "fuchsia",
513 target_os = "netbsd",
514 target_os = "redox"
515 ))]
516 EOPNOTSUPP => "Operation not supported on transport endpoint",
517
518 #[cfg(any(linux_android, target_os = "fuchsia", target_os = "hurd"))]
519 ESTALE => "Stale file handle",
520
521 #[cfg(any(linux_android, target_os = "fuchsia"))]
522 EUCLEAN => "Structure needs cleaning",
523
524 #[cfg(any(linux_android, target_os = "fuchsia"))]
525 ENOTNAM => "Not a XENIX named type file",
526
527 #[cfg(any(linux_android, target_os = "fuchsia"))]
528 ENAVAIL => "No XENIX semaphores available",
529
530 #[cfg(any(linux_android, target_os = "fuchsia"))]
531 EISNAM => "Is a named type file",
532
533 #[cfg(any(linux_android, target_os = "fuchsia"))]
534 EREMOTEIO => "Remote I/O error",
535
536 #[cfg(any(linux_android, target_os = "fuchsia"))]
537 EDQUOT => "Quota exceeded",
538
539 #[cfg(any(
540 linux_android,
541 target_os = "fuchsia",
542 target_os = "openbsd",
543 target_os = "dragonfly"
544 ))]
545 ENOMEDIUM => "No medium found",
546
547 #[cfg(any(
548 linux_android,
549 target_os = "fuchsia",
550 target_os = "openbsd"
551 ))]
552 EMEDIUMTYPE => "Wrong medium type",
553
554 #[cfg(any(
555 linux_android,
556 solarish,
557 target_os = "fuchsia",
558 target_os = "haiku"
559 ))]
560 ECANCELED => "Operation canceled",
561
562 #[cfg(any(linux_android, target_os = "fuchsia"))]
563 ENOKEY => "Required key not available",
564
565 #[cfg(any(linux_android, target_os = "fuchsia"))]
566 EKEYEXPIRED => "Key has expired",
567
568 #[cfg(any(linux_android, target_os = "fuchsia"))]
569 EKEYREVOKED => "Key has been revoked",
570
571 #[cfg(any(linux_android, target_os = "fuchsia"))]
572 EKEYREJECTED => "Key was rejected by service",
573
574 #[cfg(any(
575 linux_android,
576 target_os = "aix",
577 target_os = "fuchsia",
578 target_os = "hurd"
579 ))]
580 EOWNERDEAD => "Owner died",
581
582 #[cfg(solarish)]
583 EOWNERDEAD => "Process died with lock",
584
585 #[cfg(any(linux_android, target_os = "aix", target_os = "fuchsia"))]
586 ENOTRECOVERABLE => "State not recoverable",
587
588 #[cfg(solarish)]
589 ENOTRECOVERABLE => "Lock is not recoverable",
590
591 #[cfg(any(
592 all(target_os = "linux", not(target_arch = "mips")),
593 target_os = "fuchsia"
594 ))]
595 ERFKILL => "Operation not possible due to RF-kill",
596
597 #[cfg(any(
598 all(target_os = "linux", not(target_arch = "mips")),
599 target_os = "fuchsia"
600 ))]
601 EHWPOISON => "Memory page has hardware error",
602
603 #[cfg(freebsdlike)]
604 EDOOFUS => "Programming error",
605
606 #[cfg(any(freebsdlike, target_os = "hurd", target_os = "redox"))]
607 EMULTIHOP => "Multihop attempted",
608
609 #[cfg(any(freebsdlike, target_os = "hurd", target_os = "redox"))]
610 ENOLINK => "Link has been severed",
611
612 #[cfg(target_os = "freebsd")]
613 ENOTCAPABLE => "Capabilities insufficient",
614
615 #[cfg(target_os = "freebsd")]
616 ECAPMODE => "Not permitted in capability mode",
617
618 #[cfg(any(bsd, target_os = "hurd"))]
619 ENEEDAUTH => "Need authenticator",
620
621 #[cfg(any(bsd, target_os = "redox", solarish))]
622 EOVERFLOW => "Value too large to be stored in data type",
623
624 #[cfg(any(
625 freebsdlike,
626 apple_targets,
627 target_os = "netbsd",
628 target_os = "redox",
629 target_os = "haiku",
630 target_os = "hurd"
631 ))]
632 EILSEQ => "Illegal byte sequence",
633
634 #[cfg(any(bsd, target_os = "haiku"))]
635 ENOATTR => "Attribute not found",
636
637 #[cfg(any(
638 bsd,
639 target_os = "redox",
640 target_os = "haiku",
641 target_os = "hurd"
642 ))]
643 EBADMSG => "Bad message",
644
645 #[cfg(any(
646 bsd,
647 target_os = "haiku",
648 target_os = "hurd",
649 target_os = "redox"
650 ))]
651 EPROTO => "Protocol error",
652
653 #[cfg(any(
654 freebsdlike,
655 apple_targets,
656 target_os = "openbsd",
657 target_os = "hurd"
658 ))]
659 ENOTRECOVERABLE => "State not recoverable",
660
661 #[cfg(any(freebsdlike, apple_targets, target_os = "openbsd"))]
662 EOWNERDEAD => "Previous owner died",
663
664 #[cfg(any(
665 bsd,
666 target_os = "aix",
667 solarish,
668 target_os = "haiku",
669 target_os = "hurd"
670 ))]
671 ENOTSUP => "Operation not supported",
672
673 #[cfg(any(bsd, target_os = "aix", target_os = "hurd"))]
674 EPROCLIM => "Too many processes",
675
676 #[cfg(any(
677 bsd,
678 target_os = "aix",
679 target_os = "hurd",
680 target_os = "redox"
681 ))]
682 EUSERS => "Too many users",
683
684 #[cfg(any(
685 bsd,
686 solarish,
687 target_os = "redox",
688 target_os = "aix",
689 target_os = "haiku",
690 target_os = "hurd"
691 ))]
692 EDQUOT => "Disc quota exceeded",
693
694 #[cfg(any(
695 bsd,
696 solarish,
697 target_os = "redox",
698 target_os = "aix",
699 target_os = "haiku"
700 ))]
701 ESTALE => "Stale NFS file handle",
702
703 #[cfg(any(bsd, target_os = "aix", target_os = "redox"))]
704 EREMOTE => "Too many levels of remote in path",
705
706 #[cfg(any(bsd, target_os = "hurd"))]
707 EBADRPC => "RPC struct is bad",
708
709 #[cfg(any(bsd, target_os = "hurd"))]
710 ERPCMISMATCH => "RPC version wrong",
711
712 #[cfg(any(bsd, target_os = "hurd"))]
713 EPROGUNAVAIL => "RPC prog. not avail",
714
715 #[cfg(any(bsd, target_os = "hurd"))]
716 EPROGMISMATCH => "Program version wrong",
717
718 #[cfg(any(bsd, target_os = "hurd"))]
719 EPROCUNAVAIL => "Bad procedure for program",
720
721 #[cfg(any(bsd, target_os = "hurd"))]
722 EFTYPE => "Inappropriate file type or format",
723
724 #[cfg(any(bsd, target_os = "hurd"))]
725 EAUTH => "Authentication error",
726
727 #[cfg(any(
728 bsd,
729 target_os = "aix",
730 target_os = "hurd",
731 target_os = "redox"
732 ))]
733 ECANCELED => "Operation canceled",
734
735 #[cfg(apple_targets)]
736 EPWROFF => "Device power is off",
737
738 #[cfg(apple_targets)]
739 EDEVERR => "Device error, e.g. paper out",
740
741 #[cfg(apple_targets)]
742 EBADEXEC => "Bad executable",
743
744 #[cfg(apple_targets)]
745 EBADARCH => "Bad CPU type in executable",
746
747 #[cfg(apple_targets)]
748 ESHLIBVERS => "Shared library version mismatch",
749
750 #[cfg(apple_targets)]
751 EBADMACHO => "Malformed Macho file",
752
753 #[cfg(any(apple_targets, target_os = "netbsd", target_os = "haiku"))]
754 EMULTIHOP => "Reserved",
755
756 #[cfg(any(
757 apple_targets,
758 target_os = "aix",
759 target_os = "netbsd",
760 target_os = "redox"
761 ))]
762 ENODATA => "No message available on STREAM",
763
764 #[cfg(any(apple_targets, target_os = "netbsd", target_os = "haiku"))]
765 ENOLINK => "Reserved",
766
767 #[cfg(any(
768 apple_targets,
769 target_os = "aix",
770 target_os = "netbsd",
771 target_os = "redox"
772 ))]
773 ENOSR => "No STREAM resources",
774
775 #[cfg(any(
776 apple_targets,
777 target_os = "aix",
778 target_os = "netbsd",
779 target_os = "redox"
780 ))]
781 ENOSTR => "Not a STREAM",
782
783 #[cfg(any(
784 apple_targets,
785 target_os = "aix",
786 target_os = "netbsd",
787 target_os = "redox"
788 ))]
789 ETIME => "STREAM ioctl timeout",
790
791 #[cfg(any(apple_targets, solarish, target_os = "aix"))]
792 EOPNOTSUPP => "Operation not supported on socket",
793
794 #[cfg(apple_targets)]
795 ENOPOLICY => "No such policy registered",
796
797 #[cfg(apple_targets)]
798 EQFULL => "Interface output queue is full",
799
800 #[cfg(any(target_os = "openbsd", target_os = "hurd"))]
801 EOPNOTSUPP => "Operation not supported",
802
803 #[cfg(target_os = "openbsd")]
804 EIPSEC => "IPsec processing failure",
805
806 #[cfg(target_os = "dragonfly")]
807 EASYNC => "Async",
808
809 #[cfg(solarish)]
810 EDEADLOCK => "Resource deadlock would occur",
811
812 #[cfg(solarish)]
813 ELOCKUNMAPPED => "Locked lock was unmapped",
814
815 #[cfg(solarish)]
816 ENOTACTIVE => "Facility is not active",
817
818 #[cfg(target_os = "hurd")]
819 EBACKGROUND => "Inappropriate operation for background process",
820
821 #[cfg(target_os = "hurd")]
822 EDIED => "Translator died",
823
824 #[cfg(target_os = "hurd")]
825 EGREGIOUS => "You really blew it this time",
826
827 #[cfg(target_os = "hurd")]
828 EIEIO => "Computer bought the farm",
829
830 #[cfg(target_os = "hurd")]
831 EGRATUITOUS => "Gratuitous error",
832 }
833}
834
835#[cfg(any(linux_android, target_os = "fuchsia"))]
836mod consts {
837 #[derive(Clone, Copy, Debug, Eq, PartialEq)]
838 #[repr(i32)]
839 #[non_exhaustive]
840 pub enum Errno {
841 UnknownErrno = 0,
842 EPERM = libc::EPERM,
843 ENOENT = libc::ENOENT,
844 ESRCH = libc::ESRCH,
845 EINTR = libc::EINTR,
846 EIO = libc::EIO,
847 ENXIO = libc::ENXIO,
848 E2BIG = libc::E2BIG,
849 ENOEXEC = libc::ENOEXEC,
850 EBADF = libc::EBADF,
851 ECHILD = libc::ECHILD,
852 EAGAIN = libc::EAGAIN,
853 ENOMEM = libc::ENOMEM,
854 EACCES = libc::EACCES,
855 EFAULT = libc::EFAULT,
856 ENOTBLK = libc::ENOTBLK,
857 EBUSY = libc::EBUSY,
858 EEXIST = libc::EEXIST,
859 EXDEV = libc::EXDEV,
860 ENODEV = libc::ENODEV,
861 ENOTDIR = libc::ENOTDIR,
862 EISDIR = libc::EISDIR,
863 EINVAL = libc::EINVAL,
864 ENFILE = libc::ENFILE,
865 EMFILE = libc::EMFILE,
866 ENOTTY = libc::ENOTTY,
867 ETXTBSY = libc::ETXTBSY,
868 EFBIG = libc::EFBIG,
869 ENOSPC = libc::ENOSPC,
870 ESPIPE = libc::ESPIPE,
871 EROFS = libc::EROFS,
872 EMLINK = libc::EMLINK,
873 EPIPE = libc::EPIPE,
874 EDOM = libc::EDOM,
875 ERANGE = libc::ERANGE,
876 EDEADLK = libc::EDEADLK,
877 ENAMETOOLONG = libc::ENAMETOOLONG,
878 ENOLCK = libc::ENOLCK,
879 ENOSYS = libc::ENOSYS,
880 ENOTEMPTY = libc::ENOTEMPTY,
881 ELOOP = libc::ELOOP,
882 ENOMSG = libc::ENOMSG,
883 EIDRM = libc::EIDRM,
884 ECHRNG = libc::ECHRNG,
885 EL2NSYNC = libc::EL2NSYNC,
886 EL3HLT = libc::EL3HLT,
887 EL3RST = libc::EL3RST,
888 ELNRNG = libc::ELNRNG,
889 EUNATCH = libc::EUNATCH,
890 ENOCSI = libc::ENOCSI,
891 EL2HLT = libc::EL2HLT,
892 EBADE = libc::EBADE,
893 EBADR = libc::EBADR,
894 EXFULL = libc::EXFULL,
895 ENOANO = libc::ENOANO,
896 EBADRQC = libc::EBADRQC,
897 EBADSLT = libc::EBADSLT,
898 EBFONT = libc::EBFONT,
899 ENOSTR = libc::ENOSTR,
900 ENODATA = libc::ENODATA,
901 ETIME = libc::ETIME,
902 ENOSR = libc::ENOSR,
903 ENONET = libc::ENONET,
904 ENOPKG = libc::ENOPKG,
905 EREMOTE = libc::EREMOTE,
906 ENOLINK = libc::ENOLINK,
907 EADV = libc::EADV,
908 ESRMNT = libc::ESRMNT,
909 ECOMM = libc::ECOMM,
910 EPROTO = libc::EPROTO,
911 EMULTIHOP = libc::EMULTIHOP,
912 EDOTDOT = libc::EDOTDOT,
913 EBADMSG = libc::EBADMSG,
914 EOVERFLOW = libc::EOVERFLOW,
915 ENOTUNIQ = libc::ENOTUNIQ,
916 EBADFD = libc::EBADFD,
917 EREMCHG = libc::EREMCHG,
918 ELIBACC = libc::ELIBACC,
919 ELIBBAD = libc::ELIBBAD,
920 ELIBSCN = libc::ELIBSCN,
921 ELIBMAX = libc::ELIBMAX,
922 ELIBEXEC = libc::ELIBEXEC,
923 EILSEQ = libc::EILSEQ,
924 ERESTART = libc::ERESTART,
925 ESTRPIPE = libc::ESTRPIPE,
926 EUSERS = libc::EUSERS,
927 ENOTSOCK = libc::ENOTSOCK,
928 EDESTADDRREQ = libc::EDESTADDRREQ,
929 EMSGSIZE = libc::EMSGSIZE,
930 EPROTOTYPE = libc::EPROTOTYPE,
931 ENOPROTOOPT = libc::ENOPROTOOPT,
932 EPROTONOSUPPORT = libc::EPROTONOSUPPORT,
933 ESOCKTNOSUPPORT = libc::ESOCKTNOSUPPORT,
934 EOPNOTSUPP = libc::EOPNOTSUPP,
935 EPFNOSUPPORT = libc::EPFNOSUPPORT,
936 EAFNOSUPPORT = libc::EAFNOSUPPORT,
937 EADDRINUSE = libc::EADDRINUSE,
938 EADDRNOTAVAIL = libc::EADDRNOTAVAIL,
939 ENETDOWN = libc::ENETDOWN,
940 ENETUNREACH = libc::ENETUNREACH,
941 ENETRESET = libc::ENETRESET,
942 ECONNABORTED = libc::ECONNABORTED,
943 ECONNRESET = libc::ECONNRESET,
944 ENOBUFS = libc::ENOBUFS,
945 EISCONN = libc::EISCONN,
946 ENOTCONN = libc::ENOTCONN,
947 ESHUTDOWN = libc::ESHUTDOWN,
948 ETOOMANYREFS = libc::ETOOMANYREFS,
949 ETIMEDOUT = libc::ETIMEDOUT,
950 ECONNREFUSED = libc::ECONNREFUSED,
951 EHOSTDOWN = libc::EHOSTDOWN,
952 EHOSTUNREACH = libc::EHOSTUNREACH,
953 EALREADY = libc::EALREADY,
954 EINPROGRESS = libc::EINPROGRESS,
955 ESTALE = libc::ESTALE,
956 EUCLEAN = libc::EUCLEAN,
957 ENOTNAM = libc::ENOTNAM,
958 ENAVAIL = libc::ENAVAIL,
959 EISNAM = libc::EISNAM,
960 EREMOTEIO = libc::EREMOTEIO,
961 EDQUOT = libc::EDQUOT,
962 ENOMEDIUM = libc::ENOMEDIUM,
963 EMEDIUMTYPE = libc::EMEDIUMTYPE,
964 ECANCELED = libc::ECANCELED,
965 ENOKEY = libc::ENOKEY,
966 EKEYEXPIRED = libc::EKEYEXPIRED,
967 EKEYREVOKED = libc::EKEYREVOKED,
968 EKEYREJECTED = libc::EKEYREJECTED,
969 EOWNERDEAD = libc::EOWNERDEAD,
970 ENOTRECOVERABLE = libc::ENOTRECOVERABLE,
971 #[cfg(not(any(target_os = "android", target_arch = "mips")))]
972 ERFKILL = libc::ERFKILL,
973 #[cfg(not(any(target_os = "android", target_arch = "mips")))]
974 EHWPOISON = libc::EHWPOISON,
975 }
976
977 impl Errno {
978 pub const EWOULDBLOCK: Errno = Errno::EAGAIN;
979 pub const EDEADLOCK: Errno = Errno::EDEADLK;
980 pub const ENOTSUP: Errno = Errno::EOPNOTSUPP;
981 }
982
983 #[deprecated(
984 since = "0.28.0",
985 note = "please use `Errno::from_raw()` instead"
986 )]
987 pub const fn from_i32(e: i32) -> Errno {
988 use self::Errno::*;
989
990 match e {
991 libc::EPERM => EPERM,
992 libc::ENOENT => ENOENT,
993 libc::ESRCH => ESRCH,
994 libc::EINTR => EINTR,
995 libc::EIO => EIO,
996 libc::ENXIO => ENXIO,
997 libc::E2BIG => E2BIG,
998 libc::ENOEXEC => ENOEXEC,
999 libc::EBADF => EBADF,
1000 libc::ECHILD => ECHILD,
1001 libc::EAGAIN => EAGAIN,
1002 libc::ENOMEM => ENOMEM,
1003 libc::EACCES => EACCES,
1004 libc::EFAULT => EFAULT,
1005 libc::ENOTBLK => ENOTBLK,
1006 libc::EBUSY => EBUSY,
1007 libc::EEXIST => EEXIST,
1008 libc::EXDEV => EXDEV,
1009 libc::ENODEV => ENODEV,
1010 libc::ENOTDIR => ENOTDIR,
1011 libc::EISDIR => EISDIR,
1012 libc::EINVAL => EINVAL,
1013 libc::ENFILE => ENFILE,
1014 libc::EMFILE => EMFILE,
1015 libc::ENOTTY => ENOTTY,
1016 libc::ETXTBSY => ETXTBSY,
1017 libc::EFBIG => EFBIG,
1018 libc::ENOSPC => ENOSPC,
1019 libc::ESPIPE => ESPIPE,
1020 libc::EROFS => EROFS,
1021 libc::EMLINK => EMLINK,
1022 libc::EPIPE => EPIPE,
1023 libc::EDOM => EDOM,
1024 libc::ERANGE => ERANGE,
1025 libc::EDEADLK => EDEADLK,
1026 libc::ENAMETOOLONG => ENAMETOOLONG,
1027 libc::ENOLCK => ENOLCK,
1028 libc::ENOSYS => ENOSYS,
1029 libc::ENOTEMPTY => ENOTEMPTY,
1030 libc::ELOOP => ELOOP,
1031 libc::ENOMSG => ENOMSG,
1032 libc::EIDRM => EIDRM,
1033 libc::ECHRNG => ECHRNG,
1034 libc::EL2NSYNC => EL2NSYNC,
1035 libc::EL3HLT => EL3HLT,
1036 libc::EL3RST => EL3RST,
1037 libc::ELNRNG => ELNRNG,
1038 libc::EUNATCH => EUNATCH,
1039 libc::ENOCSI => ENOCSI,
1040 libc::EL2HLT => EL2HLT,
1041 libc::EBADE => EBADE,
1042 libc::EBADR => EBADR,
1043 libc::EXFULL => EXFULL,
1044 libc::ENOANO => ENOANO,
1045 libc::EBADRQC => EBADRQC,
1046 libc::EBADSLT => EBADSLT,
1047 libc::EBFONT => EBFONT,
1048 libc::ENOSTR => ENOSTR,
1049 libc::ENODATA => ENODATA,
1050 libc::ETIME => ETIME,
1051 libc::ENOSR => ENOSR,
1052 libc::ENONET => ENONET,
1053 libc::ENOPKG => ENOPKG,
1054 libc::EREMOTE => EREMOTE,
1055 libc::ENOLINK => ENOLINK,
1056 libc::EADV => EADV,
1057 libc::ESRMNT => ESRMNT,
1058 libc::ECOMM => ECOMM,
1059 libc::EPROTO => EPROTO,
1060 libc::EMULTIHOP => EMULTIHOP,
1061 libc::EDOTDOT => EDOTDOT,
1062 libc::EBADMSG => EBADMSG,
1063 libc::EOVERFLOW => EOVERFLOW,
1064 libc::ENOTUNIQ => ENOTUNIQ,
1065 libc::EBADFD => EBADFD,
1066 libc::EREMCHG => EREMCHG,
1067 libc::ELIBACC => ELIBACC,
1068 libc::ELIBBAD => ELIBBAD,
1069 libc::ELIBSCN => ELIBSCN,
1070 libc::ELIBMAX => ELIBMAX,
1071 libc::ELIBEXEC => ELIBEXEC,
1072 libc::EILSEQ => EILSEQ,
1073 libc::ERESTART => ERESTART,
1074 libc::ESTRPIPE => ESTRPIPE,
1075 libc::EUSERS => EUSERS,
1076 libc::ENOTSOCK => ENOTSOCK,
1077 libc::EDESTADDRREQ => EDESTADDRREQ,
1078 libc::EMSGSIZE => EMSGSIZE,
1079 libc::EPROTOTYPE => EPROTOTYPE,
1080 libc::ENOPROTOOPT => ENOPROTOOPT,
1081 libc::EPROTONOSUPPORT => EPROTONOSUPPORT,
1082 libc::ESOCKTNOSUPPORT => ESOCKTNOSUPPORT,
1083 libc::EOPNOTSUPP => EOPNOTSUPP,
1084 libc::EPFNOSUPPORT => EPFNOSUPPORT,
1085 libc::EAFNOSUPPORT => EAFNOSUPPORT,
1086 libc::EADDRINUSE => EADDRINUSE,
1087 libc::EADDRNOTAVAIL => EADDRNOTAVAIL,
1088 libc::ENETDOWN => ENETDOWN,
1089 libc::ENETUNREACH => ENETUNREACH,
1090 libc::ENETRESET => ENETRESET,
1091 libc::ECONNABORTED => ECONNABORTED,
1092 libc::ECONNRESET => ECONNRESET,
1093 libc::ENOBUFS => ENOBUFS,
1094 libc::EISCONN => EISCONN,
1095 libc::ENOTCONN => ENOTCONN,
1096 libc::ESHUTDOWN => ESHUTDOWN,
1097 libc::ETOOMANYREFS => ETOOMANYREFS,
1098 libc::ETIMEDOUT => ETIMEDOUT,
1099 libc::ECONNREFUSED => ECONNREFUSED,
1100 libc::EHOSTDOWN => EHOSTDOWN,
1101 libc::EHOSTUNREACH => EHOSTUNREACH,
1102 libc::EALREADY => EALREADY,
1103 libc::EINPROGRESS => EINPROGRESS,
1104 libc::ESTALE => ESTALE,
1105 libc::EUCLEAN => EUCLEAN,
1106 libc::ENOTNAM => ENOTNAM,
1107 libc::ENAVAIL => ENAVAIL,
1108 libc::EISNAM => EISNAM,
1109 libc::EREMOTEIO => EREMOTEIO,
1110 libc::EDQUOT => EDQUOT,
1111 libc::ENOMEDIUM => ENOMEDIUM,
1112 libc::EMEDIUMTYPE => EMEDIUMTYPE,
1113 libc::ECANCELED => ECANCELED,
1114 libc::ENOKEY => ENOKEY,
1115 libc::EKEYEXPIRED => EKEYEXPIRED,
1116 libc::EKEYREVOKED => EKEYREVOKED,
1117 libc::EKEYREJECTED => EKEYREJECTED,
1118 libc::EOWNERDEAD => EOWNERDEAD,
1119 libc::ENOTRECOVERABLE => ENOTRECOVERABLE,
1120 #[cfg(not(any(target_os = "android", target_arch = "mips")))]
1121 libc::ERFKILL => ERFKILL,
1122 #[cfg(not(any(target_os = "android", target_arch = "mips")))]
1123 libc::EHWPOISON => EHWPOISON,
1124 _ => UnknownErrno,
1125 }
1126 }
1127}
1128
1129#[cfg(apple_targets)]
1130mod consts {
1131 #[derive(Clone, Copy, Debug, Eq, PartialEq)]
1132 #[repr(i32)]
1133 #[non_exhaustive]
1134 pub enum Errno {
1135 UnknownErrno = 0,
1136 EPERM = libc::EPERM,
1137 ENOENT = libc::ENOENT,
1138 ESRCH = libc::ESRCH,
1139 EINTR = libc::EINTR,
1140 EIO = libc::EIO,
1141 ENXIO = libc::ENXIO,
1142 E2BIG = libc::E2BIG,
1143 ENOEXEC = libc::ENOEXEC,
1144 EBADF = libc::EBADF,
1145 ECHILD = libc::ECHILD,
1146 EDEADLK = libc::EDEADLK,
1147 ENOMEM = libc::ENOMEM,
1148 EACCES = libc::EACCES,
1149 EFAULT = libc::EFAULT,
1150 ENOTBLK = libc::ENOTBLK,
1151 EBUSY = libc::EBUSY,
1152 EEXIST = libc::EEXIST,
1153 EXDEV = libc::EXDEV,
1154 ENODEV = libc::ENODEV,
1155 ENOTDIR = libc::ENOTDIR,
1156 EISDIR = libc::EISDIR,
1157 EINVAL = libc::EINVAL,
1158 ENFILE = libc::ENFILE,
1159 EMFILE = libc::EMFILE,
1160 ENOTTY = libc::ENOTTY,
1161 ETXTBSY = libc::ETXTBSY,
1162 EFBIG = libc::EFBIG,
1163 ENOSPC = libc::ENOSPC,
1164 ESPIPE = libc::ESPIPE,
1165 EROFS = libc::EROFS,
1166 EMLINK = libc::EMLINK,
1167 EPIPE = libc::EPIPE,
1168 EDOM = libc::EDOM,
1169 ERANGE = libc::ERANGE,
1170 EAGAIN = libc::EAGAIN,
1171 EINPROGRESS = libc::EINPROGRESS,
1172 EALREADY = libc::EALREADY,
1173 ENOTSOCK = libc::ENOTSOCK,
1174 EDESTADDRREQ = libc::EDESTADDRREQ,
1175 EMSGSIZE = libc::EMSGSIZE,
1176 EPROTOTYPE = libc::EPROTOTYPE,
1177 ENOPROTOOPT = libc::ENOPROTOOPT,
1178 EPROTONOSUPPORT = libc::EPROTONOSUPPORT,
1179 ESOCKTNOSUPPORT = libc::ESOCKTNOSUPPORT,
1180 ENOTSUP = libc::ENOTSUP,
1181 EPFNOSUPPORT = libc::EPFNOSUPPORT,
1182 EAFNOSUPPORT = libc::EAFNOSUPPORT,
1183 EADDRINUSE = libc::EADDRINUSE,
1184 EADDRNOTAVAIL = libc::EADDRNOTAVAIL,
1185 ENETDOWN = libc::ENETDOWN,
1186 ENETUNREACH = libc::ENETUNREACH,
1187 ENETRESET = libc::ENETRESET,
1188 ECONNABORTED = libc::ECONNABORTED,
1189 ECONNRESET = libc::ECONNRESET,
1190 ENOBUFS = libc::ENOBUFS,
1191 EISCONN = libc::EISCONN,
1192 ENOTCONN = libc::ENOTCONN,
1193 ESHUTDOWN = libc::ESHUTDOWN,
1194 ETOOMANYREFS = libc::ETOOMANYREFS,
1195 ETIMEDOUT = libc::ETIMEDOUT,
1196 ECONNREFUSED = libc::ECONNREFUSED,
1197 ELOOP = libc::ELOOP,
1198 ENAMETOOLONG = libc::ENAMETOOLONG,
1199 EHOSTDOWN = libc::EHOSTDOWN,
1200 EHOSTUNREACH = libc::EHOSTUNREACH,
1201 ENOTEMPTY = libc::ENOTEMPTY,
1202 EPROCLIM = libc::EPROCLIM,
1203 EUSERS = libc::EUSERS,
1204 EDQUOT = libc::EDQUOT,
1205 ESTALE = libc::ESTALE,
1206 EREMOTE = libc::EREMOTE,
1207 EBADRPC = libc::EBADRPC,
1208 ERPCMISMATCH = libc::ERPCMISMATCH,
1209 EPROGUNAVAIL = libc::EPROGUNAVAIL,
1210 EPROGMISMATCH = libc::EPROGMISMATCH,
1211 EPROCUNAVAIL = libc::EPROCUNAVAIL,
1212 ENOLCK = libc::ENOLCK,
1213 ENOSYS = libc::ENOSYS,
1214 EFTYPE = libc::EFTYPE,
1215 EAUTH = libc::EAUTH,
1216 ENEEDAUTH = libc::ENEEDAUTH,
1217 EPWROFF = libc::EPWROFF,
1218 EDEVERR = libc::EDEVERR,
1219 EOVERFLOW = libc::EOVERFLOW,
1220 EBADEXEC = libc::EBADEXEC,
1221 EBADARCH = libc::EBADARCH,
1222 ESHLIBVERS = libc::ESHLIBVERS,
1223 EBADMACHO = libc::EBADMACHO,
1224 ECANCELED = libc::ECANCELED,
1225 EIDRM = libc::EIDRM,
1226 ENOMSG = libc::ENOMSG,
1227 EILSEQ = libc::EILSEQ,
1228 ENOATTR = libc::ENOATTR,
1229 EBADMSG = libc::EBADMSG,
1230 EMULTIHOP = libc::EMULTIHOP,
1231 ENODATA = libc::ENODATA,
1232 ENOLINK = libc::ENOLINK,
1233 ENOSR = libc::ENOSR,
1234 ENOSTR = libc::ENOSTR,
1235 EPROTO = libc::EPROTO,
1236 ETIME = libc::ETIME,
1237 EOPNOTSUPP = libc::EOPNOTSUPP,
1238 ENOPOLICY = libc::ENOPOLICY,
1239 ENOTRECOVERABLE = libc::ENOTRECOVERABLE,
1240 EOWNERDEAD = libc::EOWNERDEAD,
1241 EQFULL = libc::EQFULL,
1242 }
1243
1244 impl Errno {
1245 pub const ELAST: Errno = Errno::EQFULL;
1246 pub const EWOULDBLOCK: Errno = Errno::EAGAIN;
1247 pub const EDEADLOCK: Errno = Errno::EDEADLK;
1248 }
1249
1250 #[deprecated(
1251 since = "0.28.0",
1252 note = "please use `Errno::from_raw()` instead"
1253 )]
1254 pub const fn from_i32(e: i32) -> Errno {
1255 use self::Errno::*;
1256
1257 match e {
1258 libc::EPERM => EPERM,
1259 libc::ENOENT => ENOENT,
1260 libc::ESRCH => ESRCH,
1261 libc::EINTR => EINTR,
1262 libc::EIO => EIO,
1263 libc::ENXIO => ENXIO,
1264 libc::E2BIG => E2BIG,
1265 libc::ENOEXEC => ENOEXEC,
1266 libc::EBADF => EBADF,
1267 libc::ECHILD => ECHILD,
1268 libc::EDEADLK => EDEADLK,
1269 libc::ENOMEM => ENOMEM,
1270 libc::EACCES => EACCES,
1271 libc::EFAULT => EFAULT,
1272 libc::ENOTBLK => ENOTBLK,
1273 libc::EBUSY => EBUSY,
1274 libc::EEXIST => EEXIST,
1275 libc::EXDEV => EXDEV,
1276 libc::ENODEV => ENODEV,
1277 libc::ENOTDIR => ENOTDIR,
1278 libc::EISDIR => EISDIR,
1279 libc::EINVAL => EINVAL,
1280 libc::ENFILE => ENFILE,
1281 libc::EMFILE => EMFILE,
1282 libc::ENOTTY => ENOTTY,
1283 libc::ETXTBSY => ETXTBSY,
1284 libc::EFBIG => EFBIG,
1285 libc::ENOSPC => ENOSPC,
1286 libc::ESPIPE => ESPIPE,
1287 libc::EROFS => EROFS,
1288 libc::EMLINK => EMLINK,
1289 libc::EPIPE => EPIPE,
1290 libc::EDOM => EDOM,
1291 libc::ERANGE => ERANGE,
1292 libc::EAGAIN => EAGAIN,
1293 libc::EINPROGRESS => EINPROGRESS,
1294 libc::EALREADY => EALREADY,
1295 libc::ENOTSOCK => ENOTSOCK,
1296 libc::EDESTADDRREQ => EDESTADDRREQ,
1297 libc::EMSGSIZE => EMSGSIZE,
1298 libc::EPROTOTYPE => EPROTOTYPE,
1299 libc::ENOPROTOOPT => ENOPROTOOPT,
1300 libc::EPROTONOSUPPORT => EPROTONOSUPPORT,
1301 libc::ESOCKTNOSUPPORT => ESOCKTNOSUPPORT,
1302 libc::ENOTSUP => ENOTSUP,
1303 libc::EPFNOSUPPORT => EPFNOSUPPORT,
1304 libc::EAFNOSUPPORT => EAFNOSUPPORT,
1305 libc::EADDRINUSE => EADDRINUSE,
1306 libc::EADDRNOTAVAIL => EADDRNOTAVAIL,
1307 libc::ENETDOWN => ENETDOWN,
1308 libc::ENETUNREACH => ENETUNREACH,
1309 libc::ENETRESET => ENETRESET,
1310 libc::ECONNABORTED => ECONNABORTED,
1311 libc::ECONNRESET => ECONNRESET,
1312 libc::ENOBUFS => ENOBUFS,
1313 libc::EISCONN => EISCONN,
1314 libc::ENOTCONN => ENOTCONN,
1315 libc::ESHUTDOWN => ESHUTDOWN,
1316 libc::ETOOMANYREFS => ETOOMANYREFS,
1317 libc::ETIMEDOUT => ETIMEDOUT,
1318 libc::ECONNREFUSED => ECONNREFUSED,
1319 libc::ELOOP => ELOOP,
1320 libc::ENAMETOOLONG => ENAMETOOLONG,
1321 libc::EHOSTDOWN => EHOSTDOWN,
1322 libc::EHOSTUNREACH => EHOSTUNREACH,
1323 libc::ENOTEMPTY => ENOTEMPTY,
1324 libc::EPROCLIM => EPROCLIM,
1325 libc::EUSERS => EUSERS,
1326 libc::EDQUOT => EDQUOT,
1327 libc::ESTALE => ESTALE,
1328 libc::EREMOTE => EREMOTE,
1329 libc::EBADRPC => EBADRPC,
1330 libc::ERPCMISMATCH => ERPCMISMATCH,
1331 libc::EPROGUNAVAIL => EPROGUNAVAIL,
1332 libc::EPROGMISMATCH => EPROGMISMATCH,
1333 libc::EPROCUNAVAIL => EPROCUNAVAIL,
1334 libc::ENOLCK => ENOLCK,
1335 libc::ENOSYS => ENOSYS,
1336 libc::EFTYPE => EFTYPE,
1337 libc::EAUTH => EAUTH,
1338 libc::ENEEDAUTH => ENEEDAUTH,
1339 libc::EPWROFF => EPWROFF,
1340 libc::EDEVERR => EDEVERR,
1341 libc::EOVERFLOW => EOVERFLOW,
1342 libc::EBADEXEC => EBADEXEC,
1343 libc::EBADARCH => EBADARCH,
1344 libc::ESHLIBVERS => ESHLIBVERS,
1345 libc::EBADMACHO => EBADMACHO,
1346 libc::ECANCELED => ECANCELED,
1347 libc::EIDRM => EIDRM,
1348 libc::ENOMSG => ENOMSG,
1349 libc::EILSEQ => EILSEQ,
1350 libc::ENOATTR => ENOATTR,
1351 libc::EBADMSG => EBADMSG,
1352 libc::EMULTIHOP => EMULTIHOP,
1353 libc::ENODATA => ENODATA,
1354 libc::ENOLINK => ENOLINK,
1355 libc::ENOSR => ENOSR,
1356 libc::ENOSTR => ENOSTR,
1357 libc::EPROTO => EPROTO,
1358 libc::ETIME => ETIME,
1359 libc::EOPNOTSUPP => EOPNOTSUPP,
1360 libc::ENOPOLICY => ENOPOLICY,
1361 libc::ENOTRECOVERABLE => ENOTRECOVERABLE,
1362 libc::EOWNERDEAD => EOWNERDEAD,
1363 libc::EQFULL => EQFULL,
1364 _ => UnknownErrno,
1365 }
1366 }
1367}
1368
1369#[cfg(target_os = "freebsd")]
1370mod consts {
1371 #[derive(Clone, Copy, Debug, Eq, PartialEq)]
1372 #[repr(i32)]
1373 #[non_exhaustive]
1374 pub enum Errno {
1375 UnknownErrno = 0,
1376 EPERM = libc::EPERM,
1377 ENOENT = libc::ENOENT,
1378 ESRCH = libc::ESRCH,
1379 EINTR = libc::EINTR,
1380 EIO = libc::EIO,
1381 ENXIO = libc::ENXIO,
1382 E2BIG = libc::E2BIG,
1383 ENOEXEC = libc::ENOEXEC,
1384 EBADF = libc::EBADF,
1385 ECHILD = libc::ECHILD,
1386 EDEADLK = libc::EDEADLK,
1387 ENOMEM = libc::ENOMEM,
1388 EACCES = libc::EACCES,
1389 EFAULT = libc::EFAULT,
1390 ENOTBLK = libc::ENOTBLK,
1391 EBUSY = libc::EBUSY,
1392 EEXIST = libc::EEXIST,
1393 EXDEV = libc::EXDEV,
1394 ENODEV = libc::ENODEV,
1395 ENOTDIR = libc::ENOTDIR,
1396 EISDIR = libc::EISDIR,
1397 EINVAL = libc::EINVAL,
1398 ENFILE = libc::ENFILE,
1399 EMFILE = libc::EMFILE,
1400 ENOTTY = libc::ENOTTY,
1401 ETXTBSY = libc::ETXTBSY,
1402 EFBIG = libc::EFBIG,
1403 ENOSPC = libc::ENOSPC,
1404 ESPIPE = libc::ESPIPE,
1405 EROFS = libc::EROFS,
1406 EMLINK = libc::EMLINK,
1407 EPIPE = libc::EPIPE,
1408 EDOM = libc::EDOM,
1409 ERANGE = libc::ERANGE,
1410 EAGAIN = libc::EAGAIN,
1411 EINPROGRESS = libc::EINPROGRESS,
1412 EALREADY = libc::EALREADY,
1413 ENOTSOCK = libc::ENOTSOCK,
1414 EDESTADDRREQ = libc::EDESTADDRREQ,
1415 EMSGSIZE = libc::EMSGSIZE,
1416 EPROTOTYPE = libc::EPROTOTYPE,
1417 ENOPROTOOPT = libc::ENOPROTOOPT,
1418 EPROTONOSUPPORT = libc::EPROTONOSUPPORT,
1419 ESOCKTNOSUPPORT = libc::ESOCKTNOSUPPORT,
1420 ENOTSUP = libc::ENOTSUP,
1421 EPFNOSUPPORT = libc::EPFNOSUPPORT,
1422 EAFNOSUPPORT = libc::EAFNOSUPPORT,
1423 EADDRINUSE = libc::EADDRINUSE,
1424 EADDRNOTAVAIL = libc::EADDRNOTAVAIL,
1425 ENETDOWN = libc::ENETDOWN,
1426 ENETUNREACH = libc::ENETUNREACH,
1427 ENETRESET = libc::ENETRESET,
1428 ECONNABORTED = libc::ECONNABORTED,
1429 ECONNRESET = libc::ECONNRESET,
1430 ENOBUFS = libc::ENOBUFS,
1431 EISCONN = libc::EISCONN,
1432 ENOTCONN = libc::ENOTCONN,
1433 ESHUTDOWN = libc::ESHUTDOWN,
1434 ETOOMANYREFS = libc::ETOOMANYREFS,
1435 ETIMEDOUT = libc::ETIMEDOUT,
1436 ECONNREFUSED = libc::ECONNREFUSED,
1437 ELOOP = libc::ELOOP,
1438 ENAMETOOLONG = libc::ENAMETOOLONG,
1439 EHOSTDOWN = libc::EHOSTDOWN,
1440 EHOSTUNREACH = libc::EHOSTUNREACH,
1441 ENOTEMPTY = libc::ENOTEMPTY,
1442 EPROCLIM = libc::EPROCLIM,
1443 EUSERS = libc::EUSERS,
1444 EDQUOT = libc::EDQUOT,
1445 ESTALE = libc::ESTALE,
1446 EREMOTE = libc::EREMOTE,
1447 EBADRPC = libc::EBADRPC,
1448 ERPCMISMATCH = libc::ERPCMISMATCH,
1449 EPROGUNAVAIL = libc::EPROGUNAVAIL,
1450 EPROGMISMATCH = libc::EPROGMISMATCH,
1451 EPROCUNAVAIL = libc::EPROCUNAVAIL,
1452 ENOLCK = libc::ENOLCK,
1453 ENOSYS = libc::ENOSYS,
1454 EFTYPE = libc::EFTYPE,
1455 EAUTH = libc::EAUTH,
1456 ENEEDAUTH = libc::ENEEDAUTH,
1457 EIDRM = libc::EIDRM,
1458 ENOMSG = libc::ENOMSG,
1459 EOVERFLOW = libc::EOVERFLOW,
1460 ECANCELED = libc::ECANCELED,
1461 EILSEQ = libc::EILSEQ,
1462 ENOATTR = libc::ENOATTR,
1463 EDOOFUS = libc::EDOOFUS,
1464 EBADMSG = libc::EBADMSG,
1465 EMULTIHOP = libc::EMULTIHOP,
1466 ENOLINK = libc::ENOLINK,
1467 EPROTO = libc::EPROTO,
1468 ENOTCAPABLE = libc::ENOTCAPABLE,
1469 ECAPMODE = libc::ECAPMODE,
1470 ENOTRECOVERABLE = libc::ENOTRECOVERABLE,
1471 EOWNERDEAD = libc::EOWNERDEAD,
1472 }
1473
1474 impl Errno {
1475 pub const ELAST: Errno = Errno::EOWNERDEAD;
1476 pub const EWOULDBLOCK: Errno = Errno::EAGAIN;
1477 pub const EDEADLOCK: Errno = Errno::EDEADLK;
1478 pub const EOPNOTSUPP: Errno = Errno::ENOTSUP;
1479 }
1480
1481 #[deprecated(
1482 since = "0.28.0",
1483 note = "please use `Errno::from_raw()` instead"
1484 )]
1485 pub const fn from_i32(e: i32) -> Errno {
1486 use self::Errno::*;
1487
1488 match e {
1489 libc::EPERM => EPERM,
1490 libc::ENOENT => ENOENT,
1491 libc::ESRCH => ESRCH,
1492 libc::EINTR => EINTR,
1493 libc::EIO => EIO,
1494 libc::ENXIO => ENXIO,
1495 libc::E2BIG => E2BIG,
1496 libc::ENOEXEC => ENOEXEC,
1497 libc::EBADF => EBADF,
1498 libc::ECHILD => ECHILD,
1499 libc::EDEADLK => EDEADLK,
1500 libc::ENOMEM => ENOMEM,
1501 libc::EACCES => EACCES,
1502 libc::EFAULT => EFAULT,
1503 libc::ENOTBLK => ENOTBLK,
1504 libc::EBUSY => EBUSY,
1505 libc::EEXIST => EEXIST,
1506 libc::EXDEV => EXDEV,
1507 libc::ENODEV => ENODEV,
1508 libc::ENOTDIR => ENOTDIR,
1509 libc::EISDIR => EISDIR,
1510 libc::EINVAL => EINVAL,
1511 libc::ENFILE => ENFILE,
1512 libc::EMFILE => EMFILE,
1513 libc::ENOTTY => ENOTTY,
1514 libc::ETXTBSY => ETXTBSY,
1515 libc::EFBIG => EFBIG,
1516 libc::ENOSPC => ENOSPC,
1517 libc::ESPIPE => ESPIPE,
1518 libc::EROFS => EROFS,
1519 libc::EMLINK => EMLINK,
1520 libc::EPIPE => EPIPE,
1521 libc::EDOM => EDOM,
1522 libc::ERANGE => ERANGE,
1523 libc::EAGAIN => EAGAIN,
1524 libc::EINPROGRESS => EINPROGRESS,
1525 libc::EALREADY => EALREADY,
1526 libc::ENOTSOCK => ENOTSOCK,
1527 libc::EDESTADDRREQ => EDESTADDRREQ,
1528 libc::EMSGSIZE => EMSGSIZE,
1529 libc::EPROTOTYPE => EPROTOTYPE,
1530 libc::ENOPROTOOPT => ENOPROTOOPT,
1531 libc::EPROTONOSUPPORT => EPROTONOSUPPORT,
1532 libc::ESOCKTNOSUPPORT => ESOCKTNOSUPPORT,
1533 libc::ENOTSUP => ENOTSUP,
1534 libc::EPFNOSUPPORT => EPFNOSUPPORT,
1535 libc::EAFNOSUPPORT => EAFNOSUPPORT,
1536 libc::EADDRINUSE => EADDRINUSE,
1537 libc::EADDRNOTAVAIL => EADDRNOTAVAIL,
1538 libc::ENETDOWN => ENETDOWN,
1539 libc::ENETUNREACH => ENETUNREACH,
1540 libc::ENETRESET => ENETRESET,
1541 libc::ECONNABORTED => ECONNABORTED,
1542 libc::ECONNRESET => ECONNRESET,
1543 libc::ENOBUFS => ENOBUFS,
1544 libc::EISCONN => EISCONN,
1545 libc::ENOTCONN => ENOTCONN,
1546 libc::ESHUTDOWN => ESHUTDOWN,
1547 libc::ETOOMANYREFS => ETOOMANYREFS,
1548 libc::ETIMEDOUT => ETIMEDOUT,
1549 libc::ECONNREFUSED => ECONNREFUSED,
1550 libc::ELOOP => ELOOP,
1551 libc::ENAMETOOLONG => ENAMETOOLONG,
1552 libc::EHOSTDOWN => EHOSTDOWN,
1553 libc::EHOSTUNREACH => EHOSTUNREACH,
1554 libc::ENOTEMPTY => ENOTEMPTY,
1555 libc::EPROCLIM => EPROCLIM,
1556 libc::EUSERS => EUSERS,
1557 libc::EDQUOT => EDQUOT,
1558 libc::ESTALE => ESTALE,
1559 libc::EREMOTE => EREMOTE,
1560 libc::EBADRPC => EBADRPC,
1561 libc::ERPCMISMATCH => ERPCMISMATCH,
1562 libc::EPROGUNAVAIL => EPROGUNAVAIL,
1563 libc::EPROGMISMATCH => EPROGMISMATCH,
1564 libc::EPROCUNAVAIL => EPROCUNAVAIL,
1565 libc::ENOLCK => ENOLCK,
1566 libc::ENOSYS => ENOSYS,
1567 libc::EFTYPE => EFTYPE,
1568 libc::EAUTH => EAUTH,
1569 libc::ENEEDAUTH => ENEEDAUTH,
1570 libc::EIDRM => EIDRM,
1571 libc::ENOMSG => ENOMSG,
1572 libc::EOVERFLOW => EOVERFLOW,
1573 libc::ECANCELED => ECANCELED,
1574 libc::EILSEQ => EILSEQ,
1575 libc::ENOATTR => ENOATTR,
1576 libc::EDOOFUS => EDOOFUS,
1577 libc::EBADMSG => EBADMSG,
1578 libc::EMULTIHOP => EMULTIHOP,
1579 libc::ENOLINK => ENOLINK,
1580 libc::EPROTO => EPROTO,
1581 libc::ENOTCAPABLE => ENOTCAPABLE,
1582 libc::ECAPMODE => ECAPMODE,
1583 libc::ENOTRECOVERABLE => ENOTRECOVERABLE,
1584 libc::EOWNERDEAD => EOWNERDEAD,
1585 _ => UnknownErrno,
1586 }
1587 }
1588}
1589
1590#[cfg(target_os = "dragonfly")]
1591mod consts {
1592 #[derive(Clone, Copy, Debug, Eq, PartialEq)]
1593 #[repr(i32)]
1594 #[non_exhaustive]
1595 pub enum Errno {
1596 UnknownErrno = 0,
1597 EPERM = libc::EPERM,
1598 ENOENT = libc::ENOENT,
1599 ESRCH = libc::ESRCH,
1600 EINTR = libc::EINTR,
1601 EIO = libc::EIO,
1602 ENXIO = libc::ENXIO,
1603 E2BIG = libc::E2BIG,
1604 ENOEXEC = libc::ENOEXEC,
1605 EBADF = libc::EBADF,
1606 ECHILD = libc::ECHILD,
1607 EDEADLK = libc::EDEADLK,
1608 ENOMEM = libc::ENOMEM,
1609 EACCES = libc::EACCES,
1610 EFAULT = libc::EFAULT,
1611 ENOTBLK = libc::ENOTBLK,
1612 EBUSY = libc::EBUSY,
1613 EEXIST = libc::EEXIST,
1614 EXDEV = libc::EXDEV,
1615 ENODEV = libc::ENODEV,
1616 ENOTDIR = libc::ENOTDIR,
1617 EISDIR = libc::EISDIR,
1618 EINVAL = libc::EINVAL,
1619 ENFILE = libc::ENFILE,
1620 EMFILE = libc::EMFILE,
1621 ENOTTY = libc::ENOTTY,
1622 ETXTBSY = libc::ETXTBSY,
1623 EFBIG = libc::EFBIG,
1624 ENOSPC = libc::ENOSPC,
1625 ESPIPE = libc::ESPIPE,
1626 EROFS = libc::EROFS,
1627 EMLINK = libc::EMLINK,
1628 EPIPE = libc::EPIPE,
1629 EDOM = libc::EDOM,
1630 ERANGE = libc::ERANGE,
1631 EAGAIN = libc::EAGAIN,
1632 EINPROGRESS = libc::EINPROGRESS,
1633 EALREADY = libc::EALREADY,
1634 ENOTSOCK = libc::ENOTSOCK,
1635 EDESTADDRREQ = libc::EDESTADDRREQ,
1636 EMSGSIZE = libc::EMSGSIZE,
1637 EPROTOTYPE = libc::EPROTOTYPE,
1638 ENOPROTOOPT = libc::ENOPROTOOPT,
1639 EPROTONOSUPPORT = libc::EPROTONOSUPPORT,
1640 ESOCKTNOSUPPORT = libc::ESOCKTNOSUPPORT,
1641 ENOTSUP = libc::ENOTSUP,
1642 EPFNOSUPPORT = libc::EPFNOSUPPORT,
1643 EAFNOSUPPORT = libc::EAFNOSUPPORT,
1644 EADDRINUSE = libc::EADDRINUSE,
1645 EADDRNOTAVAIL = libc::EADDRNOTAVAIL,
1646 ENETDOWN = libc::ENETDOWN,
1647 ENETUNREACH = libc::ENETUNREACH,
1648 ENETRESET = libc::ENETRESET,
1649 ECONNABORTED = libc::ECONNABORTED,
1650 ECONNRESET = libc::ECONNRESET,
1651 ENOBUFS = libc::ENOBUFS,
1652 EISCONN = libc::EISCONN,
1653 ENOTCONN = libc::ENOTCONN,
1654 ESHUTDOWN = libc::ESHUTDOWN,
1655 ETOOMANYREFS = libc::ETOOMANYREFS,
1656 ETIMEDOUT = libc::ETIMEDOUT,
1657 ECONNREFUSED = libc::ECONNREFUSED,
1658 ELOOP = libc::ELOOP,
1659 ENAMETOOLONG = libc::ENAMETOOLONG,
1660 EHOSTDOWN = libc::EHOSTDOWN,
1661 EHOSTUNREACH = libc::EHOSTUNREACH,
1662 ENOTEMPTY = libc::ENOTEMPTY,
1663 EPROCLIM = libc::EPROCLIM,
1664 EUSERS = libc::EUSERS,
1665 EDQUOT = libc::EDQUOT,
1666 ESTALE = libc::ESTALE,
1667 EREMOTE = libc::EREMOTE,
1668 EBADRPC = libc::EBADRPC,
1669 ERPCMISMATCH = libc::ERPCMISMATCH,
1670 EPROGUNAVAIL = libc::EPROGUNAVAIL,
1671 EPROGMISMATCH = libc::EPROGMISMATCH,
1672 EPROCUNAVAIL = libc::EPROCUNAVAIL,
1673 ENOLCK = libc::ENOLCK,
1674 ENOSYS = libc::ENOSYS,
1675 EFTYPE = libc::EFTYPE,
1676 EAUTH = libc::EAUTH,
1677 ENEEDAUTH = libc::ENEEDAUTH,
1678 EIDRM = libc::EIDRM,
1679 ENOMSG = libc::ENOMSG,
1680 EOVERFLOW = libc::EOVERFLOW,
1681 ECANCELED = libc::ECANCELED,
1682 EILSEQ = libc::EILSEQ,
1683 ENOATTR = libc::ENOATTR,
1684 EDOOFUS = libc::EDOOFUS,
1685 EBADMSG = libc::EBADMSG,
1686 EMULTIHOP = libc::EMULTIHOP,
1687 ENOLINK = libc::ENOLINK,
1688 EPROTO = libc::EPROTO,
1689 ENOMEDIUM = libc::ENOMEDIUM,
1690 ENOTRECOVERABLE = libc::ENOTRECOVERABLE,
1691 EOWNERDEAD = libc::EOWNERDEAD,
1692 EASYNC = libc::EASYNC,
1693 }
1694
1695 impl Errno {
1696 pub const ELAST: Errno = Errno::EASYNC;
1697 pub const EWOULDBLOCK: Errno = Errno::EAGAIN;
1698 pub const EDEADLOCK: Errno = Errno::EDEADLK;
1699 pub const EOPNOTSUPP: Errno = Errno::ENOTSUP;
1700 }
1701
1702 #[deprecated(
1703 since = "0.28.0",
1704 note = "please use `Errno::from_raw()` instead"
1705 )]
1706 pub const fn from_i32(e: i32) -> Errno {
1707 use self::Errno::*;
1708
1709 match e {
1710 libc::EPERM => EPERM,
1711 libc::ENOENT => ENOENT,
1712 libc::ESRCH => ESRCH,
1713 libc::EINTR => EINTR,
1714 libc::EIO => EIO,
1715 libc::ENXIO => ENXIO,
1716 libc::E2BIG => E2BIG,
1717 libc::ENOEXEC => ENOEXEC,
1718 libc::EBADF => EBADF,
1719 libc::ECHILD => ECHILD,
1720 libc::EDEADLK => EDEADLK,
1721 libc::ENOMEM => ENOMEM,
1722 libc::EACCES => EACCES,
1723 libc::EFAULT => EFAULT,
1724 libc::ENOTBLK => ENOTBLK,
1725 libc::EBUSY => EBUSY,
1726 libc::EEXIST => EEXIST,
1727 libc::EXDEV => EXDEV,
1728 libc::ENODEV => ENODEV,
1729 libc::ENOTDIR => ENOTDIR,
1730 libc::EISDIR => EISDIR,
1731 libc::EINVAL => EINVAL,
1732 libc::ENFILE => ENFILE,
1733 libc::EMFILE => EMFILE,
1734 libc::ENOTTY => ENOTTY,
1735 libc::ETXTBSY => ETXTBSY,
1736 libc::EFBIG => EFBIG,
1737 libc::ENOSPC => ENOSPC,
1738 libc::ESPIPE => ESPIPE,
1739 libc::EROFS => EROFS,
1740 libc::EMLINK => EMLINK,
1741 libc::EPIPE => EPIPE,
1742 libc::EDOM => EDOM,
1743 libc::ERANGE => ERANGE,
1744 libc::EAGAIN => EAGAIN,
1745 libc::EINPROGRESS => EINPROGRESS,
1746 libc::EALREADY => EALREADY,
1747 libc::ENOTSOCK => ENOTSOCK,
1748 libc::EDESTADDRREQ => EDESTADDRREQ,
1749 libc::EMSGSIZE => EMSGSIZE,
1750 libc::EPROTOTYPE => EPROTOTYPE,
1751 libc::ENOPROTOOPT => ENOPROTOOPT,
1752 libc::EPROTONOSUPPORT => EPROTONOSUPPORT,
1753 libc::ESOCKTNOSUPPORT => ESOCKTNOSUPPORT,
1754 libc::ENOTSUP => ENOTSUP,
1755 libc::EPFNOSUPPORT => EPFNOSUPPORT,
1756 libc::EAFNOSUPPORT => EAFNOSUPPORT,
1757 libc::EADDRINUSE => EADDRINUSE,
1758 libc::EADDRNOTAVAIL => EADDRNOTAVAIL,
1759 libc::ENETDOWN => ENETDOWN,
1760 libc::ENETUNREACH => ENETUNREACH,
1761 libc::ENETRESET => ENETRESET,
1762 libc::ECONNABORTED => ECONNABORTED,
1763 libc::ECONNRESET => ECONNRESET,
1764 libc::ENOBUFS => ENOBUFS,
1765 libc::EISCONN => EISCONN,
1766 libc::ENOTCONN => ENOTCONN,
1767 libc::ESHUTDOWN => ESHUTDOWN,
1768 libc::ETOOMANYREFS => ETOOMANYREFS,
1769 libc::ETIMEDOUT => ETIMEDOUT,
1770 libc::ECONNREFUSED => ECONNREFUSED,
1771 libc::ELOOP => ELOOP,
1772 libc::ENAMETOOLONG => ENAMETOOLONG,
1773 libc::EHOSTDOWN => EHOSTDOWN,
1774 libc::EHOSTUNREACH => EHOSTUNREACH,
1775 libc::ENOTEMPTY => ENOTEMPTY,
1776 libc::EPROCLIM => EPROCLIM,
1777 libc::EUSERS => EUSERS,
1778 libc::EDQUOT => EDQUOT,
1779 libc::ESTALE => ESTALE,
1780 libc::EREMOTE => EREMOTE,
1781 libc::EBADRPC => EBADRPC,
1782 libc::ERPCMISMATCH => ERPCMISMATCH,
1783 libc::EPROGUNAVAIL => EPROGUNAVAIL,
1784 libc::EPROGMISMATCH => EPROGMISMATCH,
1785 libc::EPROCUNAVAIL => EPROCUNAVAIL,
1786 libc::ENOLCK => ENOLCK,
1787 libc::ENOSYS => ENOSYS,
1788 libc::EFTYPE => EFTYPE,
1789 libc::EAUTH => EAUTH,
1790 libc::ENEEDAUTH => ENEEDAUTH,
1791 libc::EIDRM => EIDRM,
1792 libc::ENOMSG => ENOMSG,
1793 libc::EOVERFLOW => EOVERFLOW,
1794 libc::ECANCELED => ECANCELED,
1795 libc::EILSEQ => EILSEQ,
1796 libc::ENOATTR => ENOATTR,
1797 libc::EDOOFUS => EDOOFUS,
1798 libc::EBADMSG => EBADMSG,
1799 libc::EMULTIHOP => EMULTIHOP,
1800 libc::ENOLINK => ENOLINK,
1801 libc::EPROTO => EPROTO,
1802 libc::ENOMEDIUM => ENOMEDIUM,
1803 libc::EASYNC => EASYNC,
1804 _ => UnknownErrno,
1805 }
1806 }
1807}
1808
1809#[cfg(target_os = "openbsd")]
1810mod consts {
1811 #[derive(Clone, Copy, Debug, Eq, PartialEq)]
1812 #[repr(i32)]
1813 #[non_exhaustive]
1814 pub enum Errno {
1815 UnknownErrno = 0,
1816 EPERM = libc::EPERM,
1817 ENOENT = libc::ENOENT,
1818 ESRCH = libc::ESRCH,
1819 EINTR = libc::EINTR,
1820 EIO = libc::EIO,
1821 ENXIO = libc::ENXIO,
1822 E2BIG = libc::E2BIG,
1823 ENOEXEC = libc::ENOEXEC,
1824 EBADF = libc::EBADF,
1825 ECHILD = libc::ECHILD,
1826 EDEADLK = libc::EDEADLK,
1827 ENOMEM = libc::ENOMEM,
1828 EACCES = libc::EACCES,
1829 EFAULT = libc::EFAULT,
1830 ENOTBLK = libc::ENOTBLK,
1831 EBUSY = libc::EBUSY,
1832 EEXIST = libc::EEXIST,
1833 EXDEV = libc::EXDEV,
1834 ENODEV = libc::ENODEV,
1835 ENOTDIR = libc::ENOTDIR,
1836 EISDIR = libc::EISDIR,
1837 EINVAL = libc::EINVAL,
1838 ENFILE = libc::ENFILE,
1839 EMFILE = libc::EMFILE,
1840 ENOTTY = libc::ENOTTY,
1841 ETXTBSY = libc::ETXTBSY,
1842 EFBIG = libc::EFBIG,
1843 ENOSPC = libc::ENOSPC,
1844 ESPIPE = libc::ESPIPE,
1845 EROFS = libc::EROFS,
1846 EMLINK = libc::EMLINK,
1847 EPIPE = libc::EPIPE,
1848 EDOM = libc::EDOM,
1849 ERANGE = libc::ERANGE,
1850 EAGAIN = libc::EAGAIN,
1851 EINPROGRESS = libc::EINPROGRESS,
1852 EALREADY = libc::EALREADY,
1853 ENOTSOCK = libc::ENOTSOCK,
1854 EDESTADDRREQ = libc::EDESTADDRREQ,
1855 EMSGSIZE = libc::EMSGSIZE,
1856 EPROTOTYPE = libc::EPROTOTYPE,
1857 ENOPROTOOPT = libc::ENOPROTOOPT,
1858 EPROTONOSUPPORT = libc::EPROTONOSUPPORT,
1859 ESOCKTNOSUPPORT = libc::ESOCKTNOSUPPORT,
1860 EOPNOTSUPP = libc::EOPNOTSUPP,
1861 EPFNOSUPPORT = libc::EPFNOSUPPORT,
1862 EAFNOSUPPORT = libc::EAFNOSUPPORT,
1863 EADDRINUSE = libc::EADDRINUSE,
1864 EADDRNOTAVAIL = libc::EADDRNOTAVAIL,
1865 ENETDOWN = libc::ENETDOWN,
1866 ENETUNREACH = libc::ENETUNREACH,
1867 ENETRESET = libc::ENETRESET,
1868 ECONNABORTED = libc::ECONNABORTED,
1869 ECONNRESET = libc::ECONNRESET,
1870 ENOBUFS = libc::ENOBUFS,
1871 EISCONN = libc::EISCONN,
1872 ENOTCONN = libc::ENOTCONN,
1873 ESHUTDOWN = libc::ESHUTDOWN,
1874 ETOOMANYREFS = libc::ETOOMANYREFS,
1875 ETIMEDOUT = libc::ETIMEDOUT,
1876 ECONNREFUSED = libc::ECONNREFUSED,
1877 ELOOP = libc::ELOOP,
1878 ENAMETOOLONG = libc::ENAMETOOLONG,
1879 EHOSTDOWN = libc::EHOSTDOWN,
1880 EHOSTUNREACH = libc::EHOSTUNREACH,
1881 ENOTEMPTY = libc::ENOTEMPTY,
1882 EPROCLIM = libc::EPROCLIM,
1883 EUSERS = libc::EUSERS,
1884 EDQUOT = libc::EDQUOT,
1885 ESTALE = libc::ESTALE,
1886 EREMOTE = libc::EREMOTE,
1887 EBADRPC = libc::EBADRPC,
1888 ERPCMISMATCH = libc::ERPCMISMATCH,
1889 EPROGUNAVAIL = libc::EPROGUNAVAIL,
1890 EPROGMISMATCH = libc::EPROGMISMATCH,
1891 EPROCUNAVAIL = libc::EPROCUNAVAIL,
1892 ENOLCK = libc::ENOLCK,
1893 ENOSYS = libc::ENOSYS,
1894 EFTYPE = libc::EFTYPE,
1895 EAUTH = libc::EAUTH,
1896 ENEEDAUTH = libc::ENEEDAUTH,
1897 EIPSEC = libc::EIPSEC,
1898 ENOATTR = libc::ENOATTR,
1899 EILSEQ = libc::EILSEQ,
1900 ENOMEDIUM = libc::ENOMEDIUM,
1901 EMEDIUMTYPE = libc::EMEDIUMTYPE,
1902 EOVERFLOW = libc::EOVERFLOW,
1903 ECANCELED = libc::ECANCELED,
1904 EIDRM = libc::EIDRM,
1905 ENOMSG = libc::ENOMSG,
1906 ENOTSUP = libc::ENOTSUP,
1907 EBADMSG = libc::EBADMSG,
1908 ENOTRECOVERABLE = libc::ENOTRECOVERABLE,
1909 EOWNERDEAD = libc::EOWNERDEAD,
1910 EPROTO = libc::EPROTO,
1911 }
1912
1913 impl Errno {
1914 pub const ELAST: Errno = Errno::ENOTSUP;
1915 pub const EWOULDBLOCK: Errno = Errno::EAGAIN;
1916 }
1917
1918 #[deprecated(
1919 since = "0.28.0",
1920 note = "please use `Errno::from_raw()` instead"
1921 )]
1922 pub const fn from_i32(e: i32) -> Errno {
1923 use self::Errno::*;
1924
1925 match e {
1926 libc::EPERM => EPERM,
1927 libc::ENOENT => ENOENT,
1928 libc::ESRCH => ESRCH,
1929 libc::EINTR => EINTR,
1930 libc::EIO => EIO,
1931 libc::ENXIO => ENXIO,
1932 libc::E2BIG => E2BIG,
1933 libc::ENOEXEC => ENOEXEC,
1934 libc::EBADF => EBADF,
1935 libc::ECHILD => ECHILD,
1936 libc::EDEADLK => EDEADLK,
1937 libc::ENOMEM => ENOMEM,
1938 libc::EACCES => EACCES,
1939 libc::EFAULT => EFAULT,
1940 libc::ENOTBLK => ENOTBLK,
1941 libc::EBUSY => EBUSY,
1942 libc::EEXIST => EEXIST,
1943 libc::EXDEV => EXDEV,
1944 libc::ENODEV => ENODEV,
1945 libc::ENOTDIR => ENOTDIR,
1946 libc::EISDIR => EISDIR,
1947 libc::EINVAL => EINVAL,
1948 libc::ENFILE => ENFILE,
1949 libc::EMFILE => EMFILE,
1950 libc::ENOTTY => ENOTTY,
1951 libc::ETXTBSY => ETXTBSY,
1952 libc::EFBIG => EFBIG,
1953 libc::ENOSPC => ENOSPC,
1954 libc::ESPIPE => ESPIPE,
1955 libc::EROFS => EROFS,
1956 libc::EMLINK => EMLINK,
1957 libc::EPIPE => EPIPE,
1958 libc::EDOM => EDOM,
1959 libc::ERANGE => ERANGE,
1960 libc::EAGAIN => EAGAIN,
1961 libc::EINPROGRESS => EINPROGRESS,
1962 libc::EALREADY => EALREADY,
1963 libc::ENOTSOCK => ENOTSOCK,
1964 libc::EDESTADDRREQ => EDESTADDRREQ,
1965 libc::EMSGSIZE => EMSGSIZE,
1966 libc::EPROTOTYPE => EPROTOTYPE,
1967 libc::ENOPROTOOPT => ENOPROTOOPT,
1968 libc::EPROTONOSUPPORT => EPROTONOSUPPORT,
1969 libc::ESOCKTNOSUPPORT => ESOCKTNOSUPPORT,
1970 libc::EOPNOTSUPP => EOPNOTSUPP,
1971 libc::EPFNOSUPPORT => EPFNOSUPPORT,
1972 libc::EAFNOSUPPORT => EAFNOSUPPORT,
1973 libc::EADDRINUSE => EADDRINUSE,
1974 libc::EADDRNOTAVAIL => EADDRNOTAVAIL,
1975 libc::ENETDOWN => ENETDOWN,
1976 libc::ENETUNREACH => ENETUNREACH,
1977 libc::ENETRESET => ENETRESET,
1978 libc::ECONNABORTED => ECONNABORTED,
1979 libc::ECONNRESET => ECONNRESET,
1980 libc::ENOBUFS => ENOBUFS,
1981 libc::EISCONN => EISCONN,
1982 libc::ENOTCONN => ENOTCONN,
1983 libc::ESHUTDOWN => ESHUTDOWN,
1984 libc::ETOOMANYREFS => ETOOMANYREFS,
1985 libc::ETIMEDOUT => ETIMEDOUT,
1986 libc::ECONNREFUSED => ECONNREFUSED,
1987 libc::ELOOP => ELOOP,
1988 libc::ENAMETOOLONG => ENAMETOOLONG,
1989 libc::EHOSTDOWN => EHOSTDOWN,
1990 libc::EHOSTUNREACH => EHOSTUNREACH,
1991 libc::ENOTEMPTY => ENOTEMPTY,
1992 libc::EPROCLIM => EPROCLIM,
1993 libc::EUSERS => EUSERS,
1994 libc::EDQUOT => EDQUOT,
1995 libc::ESTALE => ESTALE,
1996 libc::EREMOTE => EREMOTE,
1997 libc::EBADRPC => EBADRPC,
1998 libc::ERPCMISMATCH => ERPCMISMATCH,
1999 libc::EPROGUNAVAIL => EPROGUNAVAIL,
2000 libc::EPROGMISMATCH => EPROGMISMATCH,
2001 libc::EPROCUNAVAIL => EPROCUNAVAIL,
2002 libc::ENOLCK => ENOLCK,
2003 libc::ENOSYS => ENOSYS,
2004 libc::EFTYPE => EFTYPE,
2005 libc::EAUTH => EAUTH,
2006 libc::ENEEDAUTH => ENEEDAUTH,
2007 libc::EIPSEC => EIPSEC,
2008 libc::ENOATTR => ENOATTR,
2009 libc::EILSEQ => EILSEQ,
2010 libc::ENOMEDIUM => ENOMEDIUM,
2011 libc::EMEDIUMTYPE => EMEDIUMTYPE,
2012 libc::EOVERFLOW => EOVERFLOW,
2013 libc::ECANCELED => ECANCELED,
2014 libc::EIDRM => EIDRM,
2015 libc::ENOMSG => ENOMSG,
2016 libc::ENOTSUP => ENOTSUP,
2017 libc::EBADMSG => EBADMSG,
2018 libc::ENOTRECOVERABLE => ENOTRECOVERABLE,
2019 libc::EOWNERDEAD => EOWNERDEAD,
2020 libc::EPROTO => EPROTO,
2021 _ => UnknownErrno,
2022 }
2023 }
2024}
2025
2026#[cfg(target_os = "netbsd")]
2027mod consts {
2028 #[derive(Clone, Copy, Debug, Eq, PartialEq)]
2029 #[repr(i32)]
2030 #[non_exhaustive]
2031 pub enum Errno {
2032 UnknownErrno = 0,
2033 EPERM = libc::EPERM,
2034 ENOENT = libc::ENOENT,
2035 ESRCH = libc::ESRCH,
2036 EINTR = libc::EINTR,
2037 EIO = libc::EIO,
2038 ENXIO = libc::ENXIO,
2039 E2BIG = libc::E2BIG,
2040 ENOEXEC = libc::ENOEXEC,
2041 EBADF = libc::EBADF,
2042 ECHILD = libc::ECHILD,
2043 EDEADLK = libc::EDEADLK,
2044 ENOMEM = libc::ENOMEM,
2045 EACCES = libc::EACCES,
2046 EFAULT = libc::EFAULT,
2047 ENOTBLK = libc::ENOTBLK,
2048 EBUSY = libc::EBUSY,
2049 EEXIST = libc::EEXIST,
2050 EXDEV = libc::EXDEV,
2051 ENODEV = libc::ENODEV,
2052 ENOTDIR = libc::ENOTDIR,
2053 EISDIR = libc::EISDIR,
2054 EINVAL = libc::EINVAL,
2055 ENFILE = libc::ENFILE,
2056 EMFILE = libc::EMFILE,
2057 ENOTTY = libc::ENOTTY,
2058 ETXTBSY = libc::ETXTBSY,
2059 EFBIG = libc::EFBIG,
2060 ENOSPC = libc::ENOSPC,
2061 ESPIPE = libc::ESPIPE,
2062 EROFS = libc::EROFS,
2063 EMLINK = libc::EMLINK,
2064 EPIPE = libc::EPIPE,
2065 EDOM = libc::EDOM,
2066 ERANGE = libc::ERANGE,
2067 EAGAIN = libc::EAGAIN,
2068 EINPROGRESS = libc::EINPROGRESS,
2069 EALREADY = libc::EALREADY,
2070 ENOTSOCK = libc::ENOTSOCK,
2071 EDESTADDRREQ = libc::EDESTADDRREQ,
2072 EMSGSIZE = libc::EMSGSIZE,
2073 EPROTOTYPE = libc::EPROTOTYPE,
2074 ENOPROTOOPT = libc::ENOPROTOOPT,
2075 EPROTONOSUPPORT = libc::EPROTONOSUPPORT,
2076 ESOCKTNOSUPPORT = libc::ESOCKTNOSUPPORT,
2077 EOPNOTSUPP = libc::EOPNOTSUPP,
2078 EPFNOSUPPORT = libc::EPFNOSUPPORT,
2079 EAFNOSUPPORT = libc::EAFNOSUPPORT,
2080 EADDRINUSE = libc::EADDRINUSE,
2081 EADDRNOTAVAIL = libc::EADDRNOTAVAIL,
2082 ENETDOWN = libc::ENETDOWN,
2083 ENETUNREACH = libc::ENETUNREACH,
2084 ENETRESET = libc::ENETRESET,
2085 ECONNABORTED = libc::ECONNABORTED,
2086 ECONNRESET = libc::ECONNRESET,
2087 ENOBUFS = libc::ENOBUFS,
2088 EISCONN = libc::EISCONN,
2089 ENOTCONN = libc::ENOTCONN,
2090 ESHUTDOWN = libc::ESHUTDOWN,
2091 ETOOMANYREFS = libc::ETOOMANYREFS,
2092 ETIMEDOUT = libc::ETIMEDOUT,
2093 ECONNREFUSED = libc::ECONNREFUSED,
2094 ELOOP = libc::ELOOP,
2095 ENAMETOOLONG = libc::ENAMETOOLONG,
2096 EHOSTDOWN = libc::EHOSTDOWN,
2097 EHOSTUNREACH = libc::EHOSTUNREACH,
2098 ENOTEMPTY = libc::ENOTEMPTY,
2099 EPROCLIM = libc::EPROCLIM,
2100 EUSERS = libc::EUSERS,
2101 EDQUOT = libc::EDQUOT,
2102 ESTALE = libc::ESTALE,
2103 EREMOTE = libc::EREMOTE,
2104 EBADRPC = libc::EBADRPC,
2105 ERPCMISMATCH = libc::ERPCMISMATCH,
2106 EPROGUNAVAIL = libc::EPROGUNAVAIL,
2107 EPROGMISMATCH = libc::EPROGMISMATCH,
2108 EPROCUNAVAIL = libc::EPROCUNAVAIL,
2109 ENOLCK = libc::ENOLCK,
2110 ENOSYS = libc::ENOSYS,
2111 EFTYPE = libc::EFTYPE,
2112 EAUTH = libc::EAUTH,
2113 ENEEDAUTH = libc::ENEEDAUTH,
2114 EIDRM = libc::EIDRM,
2115 ENOMSG = libc::ENOMSG,
2116 EOVERFLOW = libc::EOVERFLOW,
2117 EILSEQ = libc::EILSEQ,
2118 ENOTSUP = libc::ENOTSUP,
2119 ECANCELED = libc::ECANCELED,
2120 EBADMSG = libc::EBADMSG,
2121 ENODATA = libc::ENODATA,
2122 ENOSR = libc::ENOSR,
2123 ENOSTR = libc::ENOSTR,
2124 ETIME = libc::ETIME,
2125 ENOATTR = libc::ENOATTR,
2126 EMULTIHOP = libc::EMULTIHOP,
2127 ENOLINK = libc::ENOLINK,
2128 EPROTO = libc::EPROTO,
2129 }
2130
2131 impl Errno {
2132 pub const ELAST: Errno = Errno::ENOTSUP;
2133 pub const EWOULDBLOCK: Errno = Errno::EAGAIN;
2134 }
2135
2136 #[deprecated(
2137 since = "0.28.0",
2138 note = "please use `Errno::from_raw()` instead"
2139 )]
2140 pub const fn from_i32(e: i32) -> Errno {
2141 use self::Errno::*;
2142
2143 match e {
2144 libc::EPERM => EPERM,
2145 libc::ENOENT => ENOENT,
2146 libc::ESRCH => ESRCH,
2147 libc::EINTR => EINTR,
2148 libc::EIO => EIO,
2149 libc::ENXIO => ENXIO,
2150 libc::E2BIG => E2BIG,
2151 libc::ENOEXEC => ENOEXEC,
2152 libc::EBADF => EBADF,
2153 libc::ECHILD => ECHILD,
2154 libc::EDEADLK => EDEADLK,
2155 libc::ENOMEM => ENOMEM,
2156 libc::EACCES => EACCES,
2157 libc::EFAULT => EFAULT,
2158 libc::ENOTBLK => ENOTBLK,
2159 libc::EBUSY => EBUSY,
2160 libc::EEXIST => EEXIST,
2161 libc::EXDEV => EXDEV,
2162 libc::ENODEV => ENODEV,
2163 libc::ENOTDIR => ENOTDIR,
2164 libc::EISDIR => EISDIR,
2165 libc::EINVAL => EINVAL,
2166 libc::ENFILE => ENFILE,
2167 libc::EMFILE => EMFILE,
2168 libc::ENOTTY => ENOTTY,
2169 libc::ETXTBSY => ETXTBSY,
2170 libc::EFBIG => EFBIG,
2171 libc::ENOSPC => ENOSPC,
2172 libc::ESPIPE => ESPIPE,
2173 libc::EROFS => EROFS,
2174 libc::EMLINK => EMLINK,
2175 libc::EPIPE => EPIPE,
2176 libc::EDOM => EDOM,
2177 libc::ERANGE => ERANGE,
2178 libc::EAGAIN => EAGAIN,
2179 libc::EINPROGRESS => EINPROGRESS,
2180 libc::EALREADY => EALREADY,
2181 libc::ENOTSOCK => ENOTSOCK,
2182 libc::EDESTADDRREQ => EDESTADDRREQ,
2183 libc::EMSGSIZE => EMSGSIZE,
2184 libc::EPROTOTYPE => EPROTOTYPE,
2185 libc::ENOPROTOOPT => ENOPROTOOPT,
2186 libc::EPROTONOSUPPORT => EPROTONOSUPPORT,
2187 libc::ESOCKTNOSUPPORT => ESOCKTNOSUPPORT,
2188 libc::EOPNOTSUPP => EOPNOTSUPP,
2189 libc::EPFNOSUPPORT => EPFNOSUPPORT,
2190 libc::EAFNOSUPPORT => EAFNOSUPPORT,
2191 libc::EADDRINUSE => EADDRINUSE,
2192 libc::EADDRNOTAVAIL => EADDRNOTAVAIL,
2193 libc::ENETDOWN => ENETDOWN,
2194 libc::ENETUNREACH => ENETUNREACH,
2195 libc::ENETRESET => ENETRESET,
2196 libc::ECONNABORTED => ECONNABORTED,
2197 libc::ECONNRESET => ECONNRESET,
2198 libc::ENOBUFS => ENOBUFS,
2199 libc::EISCONN => EISCONN,
2200 libc::ENOTCONN => ENOTCONN,
2201 libc::ESHUTDOWN => ESHUTDOWN,
2202 libc::ETOOMANYREFS => ETOOMANYREFS,
2203 libc::ETIMEDOUT => ETIMEDOUT,
2204 libc::ECONNREFUSED => ECONNREFUSED,
2205 libc::ELOOP => ELOOP,
2206 libc::ENAMETOOLONG => ENAMETOOLONG,
2207 libc::EHOSTDOWN => EHOSTDOWN,
2208 libc::EHOSTUNREACH => EHOSTUNREACH,
2209 libc::ENOTEMPTY => ENOTEMPTY,
2210 libc::EPROCLIM => EPROCLIM,
2211 libc::EUSERS => EUSERS,
2212 libc::EDQUOT => EDQUOT,
2213 libc::ESTALE => ESTALE,
2214 libc::EREMOTE => EREMOTE,
2215 libc::EBADRPC => EBADRPC,
2216 libc::ERPCMISMATCH => ERPCMISMATCH,
2217 libc::EPROGUNAVAIL => EPROGUNAVAIL,
2218 libc::EPROGMISMATCH => EPROGMISMATCH,
2219 libc::EPROCUNAVAIL => EPROCUNAVAIL,
2220 libc::ENOLCK => ENOLCK,
2221 libc::ENOSYS => ENOSYS,
2222 libc::EFTYPE => EFTYPE,
2223 libc::EAUTH => EAUTH,
2224 libc::ENEEDAUTH => ENEEDAUTH,
2225 libc::EIDRM => EIDRM,
2226 libc::ENOMSG => ENOMSG,
2227 libc::EOVERFLOW => EOVERFLOW,
2228 libc::EILSEQ => EILSEQ,
2229 libc::ENOTSUP => ENOTSUP,
2230 libc::ECANCELED => ECANCELED,
2231 libc::EBADMSG => EBADMSG,
2232 libc::ENODATA => ENODATA,
2233 libc::ENOSR => ENOSR,
2234 libc::ENOSTR => ENOSTR,
2235 libc::ETIME => ETIME,
2236 libc::ENOATTR => ENOATTR,
2237 libc::EMULTIHOP => EMULTIHOP,
2238 libc::ENOLINK => ENOLINK,
2239 libc::EPROTO => EPROTO,
2240 _ => UnknownErrno,
2241 }
2242 }
2243}
2244
2245#[cfg(target_os = "redox")]
2246mod consts {
2247 #[derive(Clone, Copy, Debug, Eq, PartialEq)]
2248 #[repr(i32)]
2249 #[non_exhaustive]
2250 pub enum Errno {
2251 UnknownErrno = 0,
2252 EPERM = libc::EPERM,
2253 ENOENT = libc::ENOENT,
2254 ESRCH = libc::ESRCH,
2255 EINTR = libc::EINTR,
2256 EIO = libc::EIO,
2257 ENXIO = libc::ENXIO,
2258 E2BIG = libc::E2BIG,
2259 ENOEXEC = libc::ENOEXEC,
2260 EBADF = libc::EBADF,
2261 ECHILD = libc::ECHILD,
2262 EDEADLK = libc::EDEADLK,
2263 ENOMEM = libc::ENOMEM,
2264 EACCES = libc::EACCES,
2265 EFAULT = libc::EFAULT,
2266 ENOTBLK = libc::ENOTBLK,
2267 EBUSY = libc::EBUSY,
2268 EEXIST = libc::EEXIST,
2269 EXDEV = libc::EXDEV,
2270 ENODEV = libc::ENODEV,
2271 ENOTDIR = libc::ENOTDIR,
2272 EISDIR = libc::EISDIR,
2273 EINVAL = libc::EINVAL,
2274 ENFILE = libc::ENFILE,
2275 EMFILE = libc::EMFILE,
2276 ENOTTY = libc::ENOTTY,
2277 ETXTBSY = libc::ETXTBSY,
2278 EFBIG = libc::EFBIG,
2279 ENOSPC = libc::ENOSPC,
2280 ESPIPE = libc::ESPIPE,
2281 EROFS = libc::EROFS,
2282 EMLINK = libc::EMLINK,
2283 EPIPE = libc::EPIPE,
2284 EDOM = libc::EDOM,
2285 ERANGE = libc::ERANGE,
2286 EAGAIN = libc::EAGAIN,
2287 EINPROGRESS = libc::EINPROGRESS,
2288 EALREADY = libc::EALREADY,
2289 ENOTSOCK = libc::ENOTSOCK,
2290 EDESTADDRREQ = libc::EDESTADDRREQ,
2291 EMSGSIZE = libc::EMSGSIZE,
2292 EPROTOTYPE = libc::EPROTOTYPE,
2293 ENOPROTOOPT = libc::ENOPROTOOPT,
2294 EPROTONOSUPPORT = libc::EPROTONOSUPPORT,
2295 ESOCKTNOSUPPORT = libc::ESOCKTNOSUPPORT,
2296 EOPNOTSUPP = libc::EOPNOTSUPP,
2297 EPFNOSUPPORT = libc::EPFNOSUPPORT,
2298 EAFNOSUPPORT = libc::EAFNOSUPPORT,
2299 EADDRINUSE = libc::EADDRINUSE,
2300 EADDRNOTAVAIL = libc::EADDRNOTAVAIL,
2301 ENETDOWN = libc::ENETDOWN,
2302 ENETUNREACH = libc::ENETUNREACH,
2303 ENETRESET = libc::ENETRESET,
2304 ECONNABORTED = libc::ECONNABORTED,
2305 ECONNRESET = libc::ECONNRESET,
2306 ENOBUFS = libc::ENOBUFS,
2307 EISCONN = libc::EISCONN,
2308 ENOTCONN = libc::ENOTCONN,
2309 ESHUTDOWN = libc::ESHUTDOWN,
2310 ETOOMANYREFS = libc::ETOOMANYREFS,
2311 ETIMEDOUT = libc::ETIMEDOUT,
2312 ECONNREFUSED = libc::ECONNREFUSED,
2313 ELOOP = libc::ELOOP,
2314 ENAMETOOLONG = libc::ENAMETOOLONG,
2315 EHOSTDOWN = libc::EHOSTDOWN,
2316 EHOSTUNREACH = libc::EHOSTUNREACH,
2317 ENOTEMPTY = libc::ENOTEMPTY,
2318 EUSERS = libc::EUSERS,
2319 EDQUOT = libc::EDQUOT,
2320 ESTALE = libc::ESTALE,
2321 EREMOTE = libc::EREMOTE,
2322 ENOLCK = libc::ENOLCK,
2323 ENOSYS = libc::ENOSYS,
2324 EIDRM = libc::EIDRM,
2325 ENOMSG = libc::ENOMSG,
2326 EOVERFLOW = libc::EOVERFLOW,
2327 EILSEQ = libc::EILSEQ,
2328 ECANCELED = libc::ECANCELED,
2329 EBADMSG = libc::EBADMSG,
2330 ENODATA = libc::ENODATA,
2331 ENOSR = libc::ENOSR,
2332 ENOSTR = libc::ENOSTR,
2333 ETIME = libc::ETIME,
2334 EMULTIHOP = libc::EMULTIHOP,
2335 ENOLINK = libc::ENOLINK,
2336 EPROTO = libc::EPROTO,
2337 }
2338
2339 impl Errno {
2340 pub const EWOULDBLOCK: Errno = Errno::EAGAIN;
2341 }
2342
2343 #[deprecated(
2344 since = "0.28.0",
2345 note = "please use `Errno::from_raw()` instead"
2346 )]
2347 pub const fn from_i32(e: i32) -> Errno {
2348 use self::Errno::*;
2349
2350 match e {
2351 libc::EPERM => EPERM,
2352 libc::ENOENT => ENOENT,
2353 libc::ESRCH => ESRCH,
2354 libc::EINTR => EINTR,
2355 libc::EIO => EIO,
2356 libc::ENXIO => ENXIO,
2357 libc::E2BIG => E2BIG,
2358 libc::ENOEXEC => ENOEXEC,
2359 libc::EBADF => EBADF,
2360 libc::ECHILD => ECHILD,
2361 libc::EDEADLK => EDEADLK,
2362 libc::ENOMEM => ENOMEM,
2363 libc::EACCES => EACCES,
2364 libc::EFAULT => EFAULT,
2365 libc::ENOTBLK => ENOTBLK,
2366 libc::EBUSY => EBUSY,
2367 libc::EEXIST => EEXIST,
2368 libc::EXDEV => EXDEV,
2369 libc::ENODEV => ENODEV,
2370 libc::ENOTDIR => ENOTDIR,
2371 libc::EISDIR => EISDIR,
2372 libc::EINVAL => EINVAL,
2373 libc::ENFILE => ENFILE,
2374 libc::EMFILE => EMFILE,
2375 libc::ENOTTY => ENOTTY,
2376 libc::ETXTBSY => ETXTBSY,
2377 libc::EFBIG => EFBIG,
2378 libc::ENOSPC => ENOSPC,
2379 libc::ESPIPE => ESPIPE,
2380 libc::EROFS => EROFS,
2381 libc::EMLINK => EMLINK,
2382 libc::EPIPE => EPIPE,
2383 libc::EDOM => EDOM,
2384 libc::ERANGE => ERANGE,
2385 libc::EAGAIN => EAGAIN,
2386 libc::EINPROGRESS => EINPROGRESS,
2387 libc::EALREADY => EALREADY,
2388 libc::ENOTSOCK => ENOTSOCK,
2389 libc::EDESTADDRREQ => EDESTADDRREQ,
2390 libc::EMSGSIZE => EMSGSIZE,
2391 libc::EPROTOTYPE => EPROTOTYPE,
2392 libc::ENOPROTOOPT => ENOPROTOOPT,
2393 libc::EPROTONOSUPPORT => EPROTONOSUPPORT,
2394 libc::ESOCKTNOSUPPORT => ESOCKTNOSUPPORT,
2395 libc::EOPNOTSUPP => EOPNOTSUPP,
2396 libc::EPFNOSUPPORT => EPFNOSUPPORT,
2397 libc::EAFNOSUPPORT => EAFNOSUPPORT,
2398 libc::EADDRINUSE => EADDRINUSE,
2399 libc::EADDRNOTAVAIL => EADDRNOTAVAIL,
2400 libc::ENETDOWN => ENETDOWN,
2401 libc::ENETUNREACH => ENETUNREACH,
2402 libc::ENETRESET => ENETRESET,
2403 libc::ECONNABORTED => ECONNABORTED,
2404 libc::ECONNRESET => ECONNRESET,
2405 libc::ENOBUFS => ENOBUFS,
2406 libc::EISCONN => EISCONN,
2407 libc::ENOTCONN => ENOTCONN,
2408 libc::ESHUTDOWN => ESHUTDOWN,
2409 libc::ETOOMANYREFS => ETOOMANYREFS,
2410 libc::ETIMEDOUT => ETIMEDOUT,
2411 libc::ECONNREFUSED => ECONNREFUSED,
2412 libc::ELOOP => ELOOP,
2413 libc::ENAMETOOLONG => ENAMETOOLONG,
2414 libc::EHOSTDOWN => EHOSTDOWN,
2415 libc::EHOSTUNREACH => EHOSTUNREACH,
2416 libc::ENOTEMPTY => ENOTEMPTY,
2417 libc::EUSERS => EUSERS,
2418 libc::EDQUOT => EDQUOT,
2419 libc::ESTALE => ESTALE,
2420 libc::EREMOTE => EREMOTE,
2421 libc::ENOLCK => ENOLCK,
2422 libc::ENOSYS => ENOSYS,
2423 libc::EIDRM => EIDRM,
2424 libc::ENOMSG => ENOMSG,
2425 libc::EOVERFLOW => EOVERFLOW,
2426 libc::EILSEQ => EILSEQ,
2427 libc::ECANCELED => ECANCELED,
2428 libc::EBADMSG => EBADMSG,
2429 libc::ENODATA => ENODATA,
2430 libc::ENOSR => ENOSR,
2431 libc::ENOSTR => ENOSTR,
2432 libc::ETIME => ETIME,
2433 libc::EMULTIHOP => EMULTIHOP,
2434 libc::ENOLINK => ENOLINK,
2435 libc::EPROTO => EPROTO,
2436 _ => UnknownErrno,
2437 }
2438 }
2439}
2440
2441#[cfg(solarish)]
2442mod consts {
2443 #[derive(Clone, Copy, Debug, Eq, PartialEq)]
2444 #[repr(i32)]
2445 #[non_exhaustive]
2446 pub enum Errno {
2447 UnknownErrno = 0,
2448 EPERM = libc::EPERM,
2449 ENOENT = libc::ENOENT,
2450 ESRCH = libc::ESRCH,
2451 EINTR = libc::EINTR,
2452 EIO = libc::EIO,
2453 ENXIO = libc::ENXIO,
2454 E2BIG = libc::E2BIG,
2455 ENOEXEC = libc::ENOEXEC,
2456 EBADF = libc::EBADF,
2457 ECHILD = libc::ECHILD,
2458 EAGAIN = libc::EAGAIN,
2459 ENOMEM = libc::ENOMEM,
2460 EACCES = libc::EACCES,
2461 EFAULT = libc::EFAULT,
2462 ENOTBLK = libc::ENOTBLK,
2463 EBUSY = libc::EBUSY,
2464 EEXIST = libc::EEXIST,
2465 EXDEV = libc::EXDEV,
2466 ENODEV = libc::ENODEV,
2467 ENOTDIR = libc::ENOTDIR,
2468 EISDIR = libc::EISDIR,
2469 EINVAL = libc::EINVAL,
2470 ENFILE = libc::ENFILE,
2471 EMFILE = libc::EMFILE,
2472 ENOTTY = libc::ENOTTY,
2473 ETXTBSY = libc::ETXTBSY,
2474 EFBIG = libc::EFBIG,
2475 ENOSPC = libc::ENOSPC,
2476 ESPIPE = libc::ESPIPE,
2477 EROFS = libc::EROFS,
2478 EMLINK = libc::EMLINK,
2479 EPIPE = libc::EPIPE,
2480 EDOM = libc::EDOM,
2481 ERANGE = libc::ERANGE,
2482 ENOMSG = libc::ENOMSG,
2483 EIDRM = libc::EIDRM,
2484 ECHRNG = libc::ECHRNG,
2485 EL2NSYNC = libc::EL2NSYNC,
2486 EL3HLT = libc::EL3HLT,
2487 EL3RST = libc::EL3RST,
2488 ELNRNG = libc::ELNRNG,
2489 EUNATCH = libc::EUNATCH,
2490 ENOCSI = libc::ENOCSI,
2491 EL2HLT = libc::EL2HLT,
2492 EDEADLK = libc::EDEADLK,
2493 ENOLCK = libc::ENOLCK,
2494 ECANCELED = libc::ECANCELED,
2495 ENOTSUP = libc::ENOTSUP,
2496 EDQUOT = libc::EDQUOT,
2497 EBADE = libc::EBADE,
2498 EBADR = libc::EBADR,
2499 EXFULL = libc::EXFULL,
2500 ENOANO = libc::ENOANO,
2501 EBADRQC = libc::EBADRQC,
2502 EBADSLT = libc::EBADSLT,
2503 EDEADLOCK = libc::EDEADLOCK,
2504 EBFONT = libc::EBFONT,
2505 EOWNERDEAD = libc::EOWNERDEAD,
2506 ENOTRECOVERABLE = libc::ENOTRECOVERABLE,
2507 ENOSTR = libc::ENOSTR,
2508 ENODATA = libc::ENODATA,
2509 ETIME = libc::ETIME,
2510 ENOSR = libc::ENOSR,
2511 ENONET = libc::ENONET,
2512 ENOPKG = libc::ENOPKG,
2513 EREMOTE = libc::EREMOTE,
2514 ENOLINK = libc::ENOLINK,
2515 EADV = libc::EADV,
2516 ESRMNT = libc::ESRMNT,
2517 ECOMM = libc::ECOMM,
2518 EPROTO = libc::EPROTO,
2519 ELOCKUNMAPPED = libc::ELOCKUNMAPPED,
2520 ENOTACTIVE = libc::ENOTACTIVE,
2521 EMULTIHOP = libc::EMULTIHOP,
2522 EBADMSG = libc::EBADMSG,
2523 ENAMETOOLONG = libc::ENAMETOOLONG,
2524 EOVERFLOW = libc::EOVERFLOW,
2525 ENOTUNIQ = libc::ENOTUNIQ,
2526 EBADFD = libc::EBADFD,
2527 EREMCHG = libc::EREMCHG,
2528 ELIBACC = libc::ELIBACC,
2529 ELIBBAD = libc::ELIBBAD,
2530 ELIBSCN = libc::ELIBSCN,
2531 ELIBMAX = libc::ELIBMAX,
2532 ELIBEXEC = libc::ELIBEXEC,
2533 EILSEQ = libc::EILSEQ,
2534 ENOSYS = libc::ENOSYS,
2535 ELOOP = libc::ELOOP,
2536 ERESTART = libc::ERESTART,
2537 ESTRPIPE = libc::ESTRPIPE,
2538 ENOTEMPTY = libc::ENOTEMPTY,
2539 EUSERS = libc::EUSERS,
2540 ENOTSOCK = libc::ENOTSOCK,
2541 EDESTADDRREQ = libc::EDESTADDRREQ,
2542 EMSGSIZE = libc::EMSGSIZE,
2543 EPROTOTYPE = libc::EPROTOTYPE,
2544 ENOPROTOOPT = libc::ENOPROTOOPT,
2545 EPROTONOSUPPORT = libc::EPROTONOSUPPORT,
2546 ESOCKTNOSUPPORT = libc::ESOCKTNOSUPPORT,
2547 EOPNOTSUPP = libc::EOPNOTSUPP,
2548 EPFNOSUPPORT = libc::EPFNOSUPPORT,
2549 EAFNOSUPPORT = libc::EAFNOSUPPORT,
2550 EADDRINUSE = libc::EADDRINUSE,
2551 EADDRNOTAVAIL = libc::EADDRNOTAVAIL,
2552 ENETDOWN = libc::ENETDOWN,
2553 ENETUNREACH = libc::ENETUNREACH,
2554 ENETRESET = libc::ENETRESET,
2555 ECONNABORTED = libc::ECONNABORTED,
2556 ECONNRESET = libc::ECONNRESET,
2557 ENOBUFS = libc::ENOBUFS,
2558 EISCONN = libc::EISCONN,
2559 ENOTCONN = libc::ENOTCONN,
2560 ESHUTDOWN = libc::ESHUTDOWN,
2561 ETOOMANYREFS = libc::ETOOMANYREFS,
2562 ETIMEDOUT = libc::ETIMEDOUT,
2563 ECONNREFUSED = libc::ECONNREFUSED,
2564 EHOSTDOWN = libc::EHOSTDOWN,
2565 EHOSTUNREACH = libc::EHOSTUNREACH,
2566 EALREADY = libc::EALREADY,
2567 EINPROGRESS = libc::EINPROGRESS,
2568 ESTALE = libc::ESTALE,
2569 }
2570
2571 impl Errno {
2572 pub const ELAST: Errno = Errno::ESTALE;
2573 pub const EWOULDBLOCK: Errno = Errno::EAGAIN;
2574 }
2575
2576 #[deprecated(
2577 since = "0.28.0",
2578 note = "please use `Errno::from_raw()` instead"
2579 )]
2580 pub const fn from_i32(e: i32) -> Errno {
2581 use self::Errno::*;
2582
2583 match e {
2584 libc::EPERM => EPERM,
2585 libc::ENOENT => ENOENT,
2586 libc::ESRCH => ESRCH,
2587 libc::EINTR => EINTR,
2588 libc::EIO => EIO,
2589 libc::ENXIO => ENXIO,
2590 libc::E2BIG => E2BIG,
2591 libc::ENOEXEC => ENOEXEC,
2592 libc::EBADF => EBADF,
2593 libc::ECHILD => ECHILD,
2594 libc::EAGAIN => EAGAIN,
2595 libc::ENOMEM => ENOMEM,
2596 libc::EACCES => EACCES,
2597 libc::EFAULT => EFAULT,
2598 libc::ENOTBLK => ENOTBLK,
2599 libc::EBUSY => EBUSY,
2600 libc::EEXIST => EEXIST,
2601 libc::EXDEV => EXDEV,
2602 libc::ENODEV => ENODEV,
2603 libc::ENOTDIR => ENOTDIR,
2604 libc::EISDIR => EISDIR,
2605 libc::EINVAL => EINVAL,
2606 libc::ENFILE => ENFILE,
2607 libc::EMFILE => EMFILE,
2608 libc::ENOTTY => ENOTTY,
2609 libc::ETXTBSY => ETXTBSY,
2610 libc::EFBIG => EFBIG,
2611 libc::ENOSPC => ENOSPC,
2612 libc::ESPIPE => ESPIPE,
2613 libc::EROFS => EROFS,
2614 libc::EMLINK => EMLINK,
2615 libc::EPIPE => EPIPE,
2616 libc::EDOM => EDOM,
2617 libc::ERANGE => ERANGE,
2618 libc::ENOMSG => ENOMSG,
2619 libc::EIDRM => EIDRM,
2620 libc::ECHRNG => ECHRNG,
2621 libc::EL2NSYNC => EL2NSYNC,
2622 libc::EL3HLT => EL3HLT,
2623 libc::EL3RST => EL3RST,
2624 libc::ELNRNG => ELNRNG,
2625 libc::EUNATCH => EUNATCH,
2626 libc::ENOCSI => ENOCSI,
2627 libc::EL2HLT => EL2HLT,
2628 libc::EDEADLK => EDEADLK,
2629 libc::ENOLCK => ENOLCK,
2630 libc::ECANCELED => ECANCELED,
2631 libc::ENOTSUP => ENOTSUP,
2632 libc::EDQUOT => EDQUOT,
2633 libc::EBADE => EBADE,
2634 libc::EBADR => EBADR,
2635 libc::EXFULL => EXFULL,
2636 libc::ENOANO => ENOANO,
2637 libc::EBADRQC => EBADRQC,
2638 libc::EBADSLT => EBADSLT,
2639 libc::EDEADLOCK => EDEADLOCK,
2640 libc::EBFONT => EBFONT,
2641 libc::EOWNERDEAD => EOWNERDEAD,
2642 libc::ENOTRECOVERABLE => ENOTRECOVERABLE,
2643 libc::ENOSTR => ENOSTR,
2644 libc::ENODATA => ENODATA,
2645 libc::ETIME => ETIME,
2646 libc::ENOSR => ENOSR,
2647 libc::ENONET => ENONET,
2648 libc::ENOPKG => ENOPKG,
2649 libc::EREMOTE => EREMOTE,
2650 libc::ENOLINK => ENOLINK,
2651 libc::EADV => EADV,
2652 libc::ESRMNT => ESRMNT,
2653 libc::ECOMM => ECOMM,
2654 libc::EPROTO => EPROTO,
2655 libc::ELOCKUNMAPPED => ELOCKUNMAPPED,
2656 libc::ENOTACTIVE => ENOTACTIVE,
2657 libc::EMULTIHOP => EMULTIHOP,
2658 libc::EBADMSG => EBADMSG,
2659 libc::ENAMETOOLONG => ENAMETOOLONG,
2660 libc::EOVERFLOW => EOVERFLOW,
2661 libc::ENOTUNIQ => ENOTUNIQ,
2662 libc::EBADFD => EBADFD,
2663 libc::EREMCHG => EREMCHG,
2664 libc::ELIBACC => ELIBACC,
2665 libc::ELIBBAD => ELIBBAD,
2666 libc::ELIBSCN => ELIBSCN,
2667 libc::ELIBMAX => ELIBMAX,
2668 libc::ELIBEXEC => ELIBEXEC,
2669 libc::EILSEQ => EILSEQ,
2670 libc::ENOSYS => ENOSYS,
2671 libc::ELOOP => ELOOP,
2672 libc::ERESTART => ERESTART,
2673 libc::ESTRPIPE => ESTRPIPE,
2674 libc::ENOTEMPTY => ENOTEMPTY,
2675 libc::EUSERS => EUSERS,
2676 libc::ENOTSOCK => ENOTSOCK,
2677 libc::EDESTADDRREQ => EDESTADDRREQ,
2678 libc::EMSGSIZE => EMSGSIZE,
2679 libc::EPROTOTYPE => EPROTOTYPE,
2680 libc::ENOPROTOOPT => ENOPROTOOPT,
2681 libc::EPROTONOSUPPORT => EPROTONOSUPPORT,
2682 libc::ESOCKTNOSUPPORT => ESOCKTNOSUPPORT,
2683 libc::EOPNOTSUPP => EOPNOTSUPP,
2684 libc::EPFNOSUPPORT => EPFNOSUPPORT,
2685 libc::EAFNOSUPPORT => EAFNOSUPPORT,
2686 libc::EADDRINUSE => EADDRINUSE,
2687 libc::EADDRNOTAVAIL => EADDRNOTAVAIL,
2688 libc::ENETDOWN => ENETDOWN,
2689 libc::ENETUNREACH => ENETUNREACH,
2690 libc::ENETRESET => ENETRESET,
2691 libc::ECONNABORTED => ECONNABORTED,
2692 libc::ECONNRESET => ECONNRESET,
2693 libc::ENOBUFS => ENOBUFS,
2694 libc::EISCONN => EISCONN,
2695 libc::ENOTCONN => ENOTCONN,
2696 libc::ESHUTDOWN => ESHUTDOWN,
2697 libc::ETOOMANYREFS => ETOOMANYREFS,
2698 libc::ETIMEDOUT => ETIMEDOUT,
2699 libc::ECONNREFUSED => ECONNREFUSED,
2700 libc::EHOSTDOWN => EHOSTDOWN,
2701 libc::EHOSTUNREACH => EHOSTUNREACH,
2702 libc::EALREADY => EALREADY,
2703 libc::EINPROGRESS => EINPROGRESS,
2704 libc::ESTALE => ESTALE,
2705 _ => UnknownErrno,
2706 }
2707 }
2708}
2709
2710#[cfg(target_os = "haiku")]
2711mod consts {
2712 #[derive(Clone, Copy, Debug, Eq, PartialEq)]
2713 #[repr(i32)]
2714 #[non_exhaustive]
2715 pub enum Errno {
2716 UnknownErrno = 0,
2717 EPERM = libc::EPERM,
2718 ENOENT = libc::ENOENT,
2719 ESRCH = libc::ESRCH,
2720 EINTR = libc::EINTR,
2721 EIO = libc::EIO,
2722 ENXIO = libc::ENXIO,
2723 E2BIG = libc::E2BIG,
2724 ENOEXEC = libc::ENOEXEC,
2725 EBADF = libc::EBADF,
2726 ECHILD = libc::ECHILD,
2727 EDEADLK = libc::EDEADLK,
2728 ENOMEM = libc::ENOMEM,
2729 EACCES = libc::EACCES,
2730 EFAULT = libc::EFAULT,
2731 EBUSY = libc::EBUSY,
2732 EEXIST = libc::EEXIST,
2733 EXDEV = libc::EXDEV,
2734 ENODEV = libc::ENODEV,
2735 ENOTDIR = libc::ENOTDIR,
2736 EISDIR = libc::EISDIR,
2737 EINVAL = libc::EINVAL,
2738 ENFILE = libc::ENFILE,
2739 EMFILE = libc::EMFILE,
2740 ENOTTY = libc::ENOTTY,
2741 ETXTBSY = libc::ETXTBSY,
2742 EFBIG = libc::EFBIG,
2743 ENOSPC = libc::ENOSPC,
2744 ESPIPE = libc::ESPIPE,
2745 EROFS = libc::EROFS,
2746 EMLINK = libc::EMLINK,
2747 EPIPE = libc::EPIPE,
2748 EDOM = libc::EDOM,
2749 ERANGE = libc::ERANGE,
2750 EAGAIN = libc::EAGAIN,
2751 EINPROGRESS = libc::EINPROGRESS,
2752 EALREADY = libc::EALREADY,
2753 ENOTSOCK = libc::ENOTSOCK,
2754 EDESTADDRREQ = libc::EDESTADDRREQ,
2755 EMSGSIZE = libc::EMSGSIZE,
2756 EPROTOTYPE = libc::EPROTOTYPE,
2757 ENOPROTOOPT = libc::ENOPROTOOPT,
2758 EPROTONOSUPPORT = libc::EPROTONOSUPPORT,
2759 ENOTSUP = libc::ENOTSUP,
2760 EADDRINUSE = libc::EADDRINUSE,
2761 EADDRNOTAVAIL = libc::EADDRNOTAVAIL,
2762 ENETDOWN = libc::ENETDOWN,
2763 ENETUNREACH = libc::ENETUNREACH,
2764 ENETRESET = libc::ENETRESET,
2765 ECONNABORTED = libc::ECONNABORTED,
2766 ECONNRESET = libc::ECONNRESET,
2767 ENOBUFS = libc::ENOBUFS,
2768 EISCONN = libc::EISCONN,
2769 ENOTCONN = libc::ENOTCONN,
2770 ESHUTDOWN = libc::ESHUTDOWN,
2771 ETIMEDOUT = libc::ETIMEDOUT,
2772 ECONNREFUSED = libc::ECONNREFUSED,
2773 ELOOP = libc::ELOOP,
2774 ENAMETOOLONG = libc::ENAMETOOLONG,
2775 EHOSTDOWN = libc::EHOSTDOWN,
2776 EHOSTUNREACH = libc::EHOSTUNREACH,
2777 ENOTEMPTY = libc::ENOTEMPTY,
2778 EDQUOT = libc::EDQUOT,
2779 ESTALE = libc::ESTALE,
2780 ENOLCK = libc::ENOLCK,
2781 ENOSYS = libc::ENOSYS,
2782 EIDRM = libc::EIDRM,
2783 ENOMSG = libc::ENOMSG,
2784 EOVERFLOW = libc::EOVERFLOW,
2785 ECANCELED = libc::ECANCELED,
2786 EILSEQ = libc::EILSEQ,
2787 ENOATTR = libc::ENOATTR,
2788 EBADMSG = libc::EBADMSG,
2789 EMULTIHOP = libc::EMULTIHOP,
2790 ENOLINK = libc::ENOLINK,
2791 EPROTO = libc::EPROTO,
2792 }
2793
2794 impl Errno {
2795 pub const EWOULDBLOCK: Errno = Errno::EAGAIN;
2796 pub const EDEADLOCK: Errno = Errno::EDEADLK;
2797 pub const EOPNOTSUPP: Errno = Errno::ENOTSUP;
2798 }
2799
2800 #[deprecated(
2801 since = "0.28.0",
2802 note = "please use `Errno::from_raw()` instead"
2803 )]
2804 pub const fn from_i32(e: i32) -> Errno {
2805 use self::Errno::*;
2806
2807 match e {
2808 libc::EPERM => EPERM,
2809 libc::ENOENT => ENOENT,
2810 libc::ESRCH => ESRCH,
2811 libc::EINTR => EINTR,
2812 libc::EIO => EIO,
2813 libc::ENXIO => ENXIO,
2814 libc::E2BIG => E2BIG,
2815 libc::ENOEXEC => ENOEXEC,
2816 libc::EBADF => EBADF,
2817 libc::ECHILD => ECHILD,
2818 libc::EDEADLK => EDEADLK,
2819 libc::ENOMEM => ENOMEM,
2820 libc::EACCES => EACCES,
2821 libc::EFAULT => EFAULT,
2822 libc::EBUSY => EBUSY,
2823 libc::EEXIST => EEXIST,
2824 libc::EXDEV => EXDEV,
2825 libc::ENODEV => ENODEV,
2826 libc::ENOTDIR => ENOTDIR,
2827 libc::EISDIR => EISDIR,
2828 libc::EINVAL => EINVAL,
2829 libc::ENFILE => ENFILE,
2830 libc::EMFILE => EMFILE,
2831 libc::ENOTTY => ENOTTY,
2832 libc::ETXTBSY => ETXTBSY,
2833 libc::EFBIG => EFBIG,
2834 libc::ENOSPC => ENOSPC,
2835 libc::ESPIPE => ESPIPE,
2836 libc::EROFS => EROFS,
2837 libc::EMLINK => EMLINK,
2838 libc::EPIPE => EPIPE,
2839 libc::EDOM => EDOM,
2840 libc::ERANGE => ERANGE,
2841 libc::EAGAIN => EAGAIN,
2842 libc::EINPROGRESS => EINPROGRESS,
2843 libc::EALREADY => EALREADY,
2844 libc::ENOTSOCK => ENOTSOCK,
2845 libc::EDESTADDRREQ => EDESTADDRREQ,
2846 libc::EMSGSIZE => EMSGSIZE,
2847 libc::EPROTOTYPE => EPROTOTYPE,
2848 libc::ENOPROTOOPT => ENOPROTOOPT,
2849 libc::EPROTONOSUPPORT => EPROTONOSUPPORT,
2850 libc::ENOTSUP => ENOTSUP,
2851 libc::EADDRINUSE => EADDRINUSE,
2852 libc::EADDRNOTAVAIL => EADDRNOTAVAIL,
2853 libc::ENETDOWN => ENETDOWN,
2854 libc::ENETUNREACH => ENETUNREACH,
2855 libc::ENETRESET => ENETRESET,
2856 libc::ECONNABORTED => ECONNABORTED,
2857 libc::ECONNRESET => ECONNRESET,
2858 libc::ENOBUFS => ENOBUFS,
2859 libc::EISCONN => EISCONN,
2860 libc::ENOTCONN => ENOTCONN,
2861 libc::ESHUTDOWN => ESHUTDOWN,
2862 libc::ETIMEDOUT => ETIMEDOUT,
2863 libc::ECONNREFUSED => ECONNREFUSED,
2864 libc::ELOOP => ELOOP,
2865 libc::ENAMETOOLONG => ENAMETOOLONG,
2866 libc::EHOSTDOWN => EHOSTDOWN,
2867 libc::EHOSTUNREACH => EHOSTUNREACH,
2868 libc::ENOTEMPTY => ENOTEMPTY,
2869 libc::EDQUOT => EDQUOT,
2870 libc::ESTALE => ESTALE,
2871 libc::ENOLCK => ENOLCK,
2872 libc::ENOSYS => ENOSYS,
2873 libc::EIDRM => EIDRM,
2874 libc::ENOMSG => ENOMSG,
2875 libc::EOVERFLOW => EOVERFLOW,
2876 libc::ECANCELED => ECANCELED,
2877 libc::EILSEQ => EILSEQ,
2878 libc::ENOATTR => ENOATTR,
2879 libc::EBADMSG => EBADMSG,
2880 libc::EMULTIHOP => EMULTIHOP,
2881 libc::ENOLINK => ENOLINK,
2882 libc::EPROTO => EPROTO,
2883 _ => UnknownErrno,
2884 }
2885 }
2886}
2887
2888#[cfg(target_os = "aix")]
2889mod consts {
2890 #[derive(Clone, Copy, Debug, Eq, PartialEq)]
2891 #[repr(i32)]
2892 #[non_exhaustive]
2893 pub enum Errno {
2894 UnknownErrno = 0,
2895 EPERM = libc::EPERM,
2896 ENOENT = libc::ENOENT,
2897 ESRCH = libc::ESRCH,
2898 EINTR = libc::EINTR,
2899 EIO = libc::EIO,
2900 ENXIO = libc::ENXIO,
2901 E2BIG = libc::E2BIG,
2902 ENOEXEC = libc::ENOEXEC,
2903 EBADF = libc::EBADF,
2904 ECHILD = libc::ECHILD,
2905 EAGAIN = libc::EAGAIN,
2906 ENOMEM = libc::ENOMEM,
2907 EACCES = libc::EACCES,
2908 EFAULT = libc::EFAULT,
2909 ENOTBLK = libc::ENOTBLK,
2910 EBUSY = libc::EBUSY,
2911 EEXIST = libc::EEXIST,
2912 EXDEV = libc::EXDEV,
2913 ENODEV = libc::ENODEV,
2914 ENOTDIR = libc::ENOTDIR,
2915 EISDIR = libc::EISDIR,
2916 EINVAL = libc::EINVAL,
2917 ENFILE = libc::ENFILE,
2918 EMFILE = libc::EMFILE,
2919 ENOTTY = libc::ENOTTY,
2920 ETXTBSY = libc::ETXTBSY,
2921 EFBIG = libc::EFBIG,
2922 ENOSPC = libc::ENOSPC,
2923 ESPIPE = libc::ESPIPE,
2924 EROFS = libc::EROFS,
2925 EMLINK = libc::EMLINK,
2926 EPIPE = libc::EPIPE,
2927 EDOM = libc::EDOM,
2928 ERANGE = libc::ERANGE,
2929 EDEADLK = libc::EDEADLK,
2930 ENAMETOOLONG = libc::ENAMETOOLONG,
2931 ENOLCK = libc::ENOLCK,
2932 ENOSYS = libc::ENOSYS,
2933 ENOTEMPTY = libc::ENOTEMPTY,
2934 ELOOP = libc::ELOOP,
2935 ENOMSG = libc::ENOMSG,
2936 EIDRM = libc::EIDRM,
2937 EINPROGRESS = libc::EINPROGRESS,
2938 EALREADY = libc::EALREADY,
2939 ENOTSOCK = libc::ENOTSOCK,
2940 EDESTADDRREQ = libc::EDESTADDRREQ,
2941 EMSGSIZE = libc::EMSGSIZE,
2942 EPROTOTYPE = libc::EPROTOTYPE,
2943 ENOPROTOOPT = libc::ENOPROTOOPT,
2944 EPROTONOSUPPORT = libc::EPROTONOSUPPORT,
2945 ESOCKTNOSUPPORT = libc::ESOCKTNOSUPPORT,
2946 EPFNOSUPPORT = libc::EPFNOSUPPORT,
2947 EAFNOSUPPORT = libc::EAFNOSUPPORT,
2948 EADDRINUSE = libc::EADDRINUSE,
2949 EADDRNOTAVAIL = libc::EADDRNOTAVAIL,
2950 ENETDOWN = libc::ENETDOWN,
2951 ENETUNREACH = libc::ENETUNREACH,
2952 ENETRESET = libc::ENETRESET,
2953 ECONNABORTED = libc::ECONNABORTED,
2954 ECONNRESET = libc::ECONNRESET,
2955 ENOBUFS = libc::ENOBUFS,
2956 EISCONN = libc::EISCONN,
2957 ENOTCONN = libc::ENOTCONN,
2958 ESHUTDOWN = libc::ESHUTDOWN,
2959 ETOOMANYREFS = libc::ETOOMANYREFS,
2960 ETIMEDOUT = libc::ETIMEDOUT,
2961 ECONNREFUSED = libc::ECONNREFUSED,
2962 EHOSTDOWN = libc::EHOSTDOWN,
2963 EHOSTUNREACH = libc::EHOSTUNREACH,
2964 ECHRNG = libc::ECHRNG,
2965 EL2NSYNC = libc::EL2NSYNC,
2966 EL3HLT = libc::EL3HLT,
2967 EL3RST = libc::EL3RST,
2968 ELNRNG = libc::ELNRNG,
2969 EUNATCH = libc::EUNATCH,
2970 ENOCSI = libc::ENOCSI,
2971 EL2HLT = libc::EL2HLT,
2972 ENOLINK = libc::ENOLINK,
2973 EPROTO = libc::EPROTO,
2974 EMULTIHOP = libc::EMULTIHOP,
2975 EBADMSG = libc::EBADMSG,
2976 EOVERFLOW = libc::EOVERFLOW,
2977 EILSEQ = libc::EILSEQ,
2978 ERESTART = libc::ERESTART,
2979 EOWNERDEAD = libc::EOWNERDEAD,
2980 ENOTRECOVERABLE = libc::ENOTRECOVERABLE,
2981 ENOTSUP = libc::ENOTSUP,
2982 EPROCLIM = libc::EPROCLIM,
2983 EUSERS = libc::EUSERS,
2984 EDQUOT = libc::EDQUOT,
2985 ESTALE = libc::ESTALE,
2986 EREMOTE = libc::EREMOTE,
2987 ECANCELED = libc::ECANCELED,
2988 ENODATA = libc::ENODATA,
2989 ENOSR = libc::ENOSR,
2990 ENOSTR = libc::ENOSTR,
2991 ETIME = libc::ETIME,
2992 EOPNOTSUPP = libc::EOPNOTSUPP,
2993 }
2994
2995 #[deprecated(
2996 since = "0.28.0",
2997 note = "please use `Errno::from_raw()` instead"
2998 )]
2999 pub const fn from_i32(e: i32) -> Errno {
3000 use self::Errno::*;
3001
3002 match e {
3003 libc::EPERM => EPERM,
3004 libc::ENOENT => ENOENT,
3005 libc::ESRCH => ESRCH,
3006 libc::EINTR => EINTR,
3007 libc::EIO => EIO,
3008 libc::ENXIO => ENXIO,
3009 libc::E2BIG => E2BIG,
3010 libc::ENOEXEC => ENOEXEC,
3011 libc::EBADF => EBADF,
3012 libc::ECHILD => ECHILD,
3013 libc::EAGAIN => EAGAIN,
3014 libc::ENOMEM => ENOMEM,
3015 libc::EACCES => EACCES,
3016 libc::EFAULT => EFAULT,
3017 libc::ENOTBLK => ENOTBLK,
3018 libc::EBUSY => EBUSY,
3019 libc::EEXIST => EEXIST,
3020 libc::EXDEV => EXDEV,
3021 libc::ENODEV => ENODEV,
3022 libc::ENOTDIR => ENOTDIR,
3023 libc::EISDIR => EISDIR,
3024 libc::EINVAL => EINVAL,
3025 libc::ENFILE => ENFILE,
3026 libc::EMFILE => EMFILE,
3027 libc::ENOTTY => ENOTTY,
3028 libc::ETXTBSY => ETXTBSY,
3029 libc::EFBIG => EFBIG,
3030 libc::ENOSPC => ENOSPC,
3031 libc::ESPIPE => ESPIPE,
3032 libc::EROFS => EROFS,
3033 libc::EMLINK => EMLINK,
3034 libc::EPIPE => EPIPE,
3035 libc::EDOM => EDOM,
3036 libc::ERANGE => ERANGE,
3037 libc::EDEADLK => EDEADLK,
3038 libc::ENAMETOOLONG => ENAMETOOLONG,
3039 libc::ENOLCK => ENOLCK,
3040 libc::ENOSYS => ENOSYS,
3041 libc::ENOTEMPTY => ENOTEMPTY,
3042 libc::ELOOP => ELOOP,
3043 libc::ENOMSG => ENOMSG,
3044 libc::EIDRM => EIDRM,
3045 libc::EINPROGRESS => EINPROGRESS,
3046 libc::EALREADY => EALREADY,
3047 libc::ENOTSOCK => ENOTSOCK,
3048 libc::EDESTADDRREQ => EDESTADDRREQ,
3049 libc::EMSGSIZE => EMSGSIZE,
3050 libc::EPROTOTYPE => EPROTOTYPE,
3051 libc::ENOPROTOOPT => ENOPROTOOPT,
3052 libc::EPROTONOSUPPORT => EPROTONOSUPPORT,
3053 libc::ESOCKTNOSUPPORT => ESOCKTNOSUPPORT,
3054 libc::EPFNOSUPPORT => EPFNOSUPPORT,
3055 libc::EAFNOSUPPORT => EAFNOSUPPORT,
3056 libc::EADDRINUSE => EADDRINUSE,
3057 libc::EADDRNOTAVAIL => EADDRNOTAVAIL,
3058 libc::ENETDOWN => ENETDOWN,
3059 libc::ENETUNREACH => ENETUNREACH,
3060 libc::ENETRESET => ENETRESET,
3061 libc::ECONNABORTED => ECONNABORTED,
3062 libc::ECONNRESET => ECONNRESET,
3063 libc::ENOBUFS => ENOBUFS,
3064 libc::EISCONN => EISCONN,
3065 libc::ENOTCONN => ENOTCONN,
3066 libc::ESHUTDOWN => ESHUTDOWN,
3067 libc::ETOOMANYREFS => ETOOMANYREFS,
3068 libc::ETIMEDOUT => ETIMEDOUT,
3069 libc::ECONNREFUSED => ECONNREFUSED,
3070 libc::EHOSTDOWN => EHOSTDOWN,
3071 libc::EHOSTUNREACH => EHOSTUNREACH,
3072 libc::ECHRNG => ECHRNG,
3073 libc::EL2NSYNC => EL2NSYNC,
3074 libc::EL3HLT => EL3HLT,
3075 libc::EL3RST => EL3RST,
3076 libc::ELNRNG => ELNRNG,
3077 libc::EUNATCH => EUNATCH,
3078 libc::ENOCSI => ENOCSI,
3079 libc::EL2HLT => EL2HLT,
3080 libc::ENOLINK => ENOLINK,
3081 libc::EPROTO => EPROTO,
3082 libc::EMULTIHOP => EMULTIHOP,
3083 libc::EBADMSG => EBADMSG,
3084 libc::EOVERFLOW => EOVERFLOW,
3085 libc::EILSEQ => EILSEQ,
3086 libc::ERESTART => ERESTART,
3087 libc::ENOTRECOVERABLE => ENOTRECOVERABLE,
3088 libc::EOWNERDEAD => EOWNERDEAD,
3089 libc::ENOTSUP => ENOTSUP,
3090 libc::EPROCLIM => EPROCLIM,
3091 libc::EUSERS => EUSERS,
3092 libc::EDQUOT => EDQUOT,
3093 libc::ESTALE => ESTALE,
3094 libc::EREMOTE => EREMOTE,
3095 libc::ECANCELED => ECANCELED,
3096 libc::ENODATA => ENODATA,
3097 libc::ENOSR => ENOSR,
3098 libc::ENOSTR => ENOSTR,
3099 libc::ETIME => ETIME,
3100 libc::EOPNOTSUPP => EOPNOTSUPP,
3101 _ => UnknownErrno,
3102 }
3103 }
3104}
3105
3106#[cfg(target_os = "hurd")]
3107mod consts {
3108 #[derive(Clone, Copy, Debug, Eq, PartialEq)]
3109 #[repr(i32)]
3110 #[non_exhaustive]
3111 pub enum Errno {
3112 UnknownErrno = 0,
3113 EPERM = libc::EPERM,
3114 ENOENT = libc::ENOENT,
3115 ESRCH = libc::ESRCH,
3116 EINTR = libc::EINTR,
3117 EIO = libc::EIO,
3118 ENXIO = libc::ENXIO,
3119 E2BIG = libc::E2BIG,
3120 ENOEXEC = libc::ENOEXEC,
3121 EBADF = libc::EBADF,
3122 ECHILD = libc::ECHILD,
3123 EDEADLK = libc::EDEADLK,
3124 ENOMEM = libc::ENOMEM,
3125 EACCES = libc::EACCES,
3126 EFAULT = libc::EFAULT,
3127 ENOTBLK = libc::ENOTBLK,
3128 EBUSY = libc::EBUSY,
3129 EEXIST = libc::EEXIST,
3130 EXDEV = libc::EXDEV,
3131 ENODEV = libc::ENODEV,
3132 ENOTDIR = libc::ENOTDIR,
3133 EISDIR = libc::EISDIR,
3134 EINVAL = libc::EINVAL,
3135 EMFILE = libc::EMFILE,
3136 ENFILE = libc::ENFILE,
3137 ENOTTY = libc::ENOTTY,
3138 ETXTBSY = libc::ETXTBSY,
3139 EFBIG = libc::EFBIG,
3140 ENOSPC = libc::ENOSPC,
3141 ESPIPE = libc::ESPIPE,
3142 EROFS = libc::EROFS,
3143 EMLINK = libc::EMLINK,
3144 EPIPE = libc::EPIPE,
3145 EDOM = libc::EDOM,
3146 ERANGE = libc::ERANGE,
3147 EAGAIN = libc::EAGAIN,
3148 EINPROGRESS = libc::EINPROGRESS,
3149 EALREADY = libc::EALREADY,
3150 ENOTSOCK = libc::ENOTSOCK,
3151 EMSGSIZE = libc::EMSGSIZE,
3152 EPROTOTYPE = libc::EPROTOTYPE,
3153 ENOPROTOOPT = libc::ENOPROTOOPT,
3154 EPROTONOSUPPORT = libc::EPROTONOSUPPORT,
3155 ESOCKTNOSUPPORT = libc::ESOCKTNOSUPPORT,
3156 EOPNOTSUPP = libc::EOPNOTSUPP,
3157 EPFNOSUPPORT = libc::EPFNOSUPPORT,
3158 EAFNOSUPPORT = libc::EAFNOSUPPORT,
3159 EADDRINUSE = libc::EADDRINUSE,
3160 EADDRNOTAVAIL = libc::EADDRNOTAVAIL,
3161 ENETDOWN = libc::ENETDOWN,
3162 ENETUNREACH = libc::ENETUNREACH,
3163 ENETRESET = libc::ENETRESET,
3164 ECONNABORTED = libc::ECONNABORTED,
3165 ECONNRESET = libc::ECONNRESET,
3166 ENOBUFS = libc::ENOBUFS,
3167 EISCONN = libc::EISCONN,
3168 ENOTCONN = libc::ENOTCONN,
3169 EDESTADDRREQ = libc::EDESTADDRREQ,
3170 ESHUTDOWN = libc::ESHUTDOWN,
3171 ETOOMANYREFS = libc::ETOOMANYREFS,
3172 ETIMEDOUT = libc::ETIMEDOUT,
3173 ECONNREFUSED = libc::ECONNREFUSED,
3174 ELOOP = libc::ELOOP,
3175 ENAMETOOLONG = libc::ENAMETOOLONG,
3176 EHOSTDOWN = libc::EHOSTDOWN,
3177 EHOSTUNREACH = libc::EHOSTUNREACH,
3178 ENOTEMPTY = libc::ENOTEMPTY,
3179 EPROCLIM = libc::EPROCLIM,
3180 EUSERS = libc::EUSERS,
3181 EDQUOT = libc::EDQUOT,
3182 ESTALE = libc::ESTALE,
3183 EREMOTE = libc::EREMOTE,
3184 EBADRPC = libc::EBADRPC,
3185 ERPCMISMATCH = libc::ERPCMISMATCH,
3186 EPROGUNAVAIL = libc::EPROGUNAVAIL,
3187 EPROGMISMATCH = libc::EPROGMISMATCH,
3188 EPROCUNAVAIL = libc::EPROCUNAVAIL,
3189 ENOLCK = libc::ENOLCK,
3190 EFTYPE = libc::EFTYPE,
3191 EAUTH = libc::EAUTH,
3192 ENEEDAUTH = libc::ENEEDAUTH,
3193 ENOSYS = libc::ENOSYS,
3194 ELIBEXEC = libc::ELIBEXEC,
3195 ENOTSUP = libc::ENOTSUP,
3196 EILSEQ = libc::EILSEQ,
3197 EBACKGROUND = libc::EBACKGROUND,
3198 EDIED = libc::EDIED,
3199 EGREGIOUS = libc::EGREGIOUS,
3200 EIEIO = libc::EIEIO,
3201 EGRATUITOUS = libc::EGRATUITOUS,
3202 EBADMSG = libc::EBADMSG,
3203 EIDRM = libc::EIDRM,
3204 EMULTIHOP = libc::EMULTIHOP,
3205 ENODATA = libc::ENODATA,
3206 ENOLINK = libc::ENOLINK,
3207 ENOMSG = libc::ENOMSG,
3208 ENOSR = libc::ENOSR,
3209 ENOSTR = libc::ENOSTR,
3210 EOVERFLOW = libc::EOVERFLOW,
3211 EPROTO = libc::EPROTO,
3212 ETIME = libc::ETIME,
3213 ECANCELED = libc::ECANCELED,
3214 EOWNERDEAD = libc::EOWNERDEAD,
3215 ENOTRECOVERABLE = libc::ENOTRECOVERABLE,
3216 }
3217
3218 impl Errno {
3219 pub const EWOULDBLOCK: Errno = Errno::EAGAIN;
3220 }
3221
3222 #[deprecated(
3223 since = "0.28.0",
3224 note = "please use `Errno::from_raw()` instead"
3225 )]
3226 pub const fn from_i32(e: i32) -> Errno {
3227 use self::Errno::*;
3228
3229 match e {
3230 libc::EPERM => EPERM,
3231 libc::ENOENT => ENOENT,
3232 libc::ESRCH => ESRCH,
3233 libc::EINTR => EINTR,
3234 libc::EIO => EIO,
3235 libc::ENXIO => ENXIO,
3236 libc::E2BIG => E2BIG,
3237 libc::ENOEXEC => ENOEXEC,
3238 libc::EBADF => EBADF,
3239 libc::ECHILD => ECHILD,
3240 libc::EDEADLK => EDEADLK,
3241 libc::ENOMEM => ENOMEM,
3242 libc::EACCES => EACCES,
3243 libc::EFAULT => EFAULT,
3244 libc::ENOTBLK => ENOTBLK,
3245 libc::EBUSY => EBUSY,
3246 libc::EEXIST => EEXIST,
3247 libc::EXDEV => EXDEV,
3248 libc::ENODEV => ENODEV,
3249 libc::ENOTDIR => ENOTDIR,
3250 libc::EISDIR => EISDIR,
3251 libc::EINVAL => EINVAL,
3252 libc::EMFILE => EMFILE,
3253 libc::ENFILE => ENFILE,
3254 libc::ENOTTY => ENOTTY,
3255 libc::ETXTBSY => ETXTBSY,
3256 libc::EFBIG => EFBIG,
3257 libc::ENOSPC => ENOSPC,
3258 libc::ESPIPE => ESPIPE,
3259 libc::EROFS => EROFS,
3260 libc::EMLINK => EMLINK,
3261 libc::EPIPE => EPIPE,
3262 libc::EDOM => EDOM,
3263 libc::ERANGE => ERANGE,
3264 libc::EAGAIN => EAGAIN,
3265 libc::EINPROGRESS => EINPROGRESS,
3266 libc::EALREADY => EALREADY,
3267 libc::ENOTSOCK => ENOTSOCK,
3268 libc::EMSGSIZE => EMSGSIZE,
3269 libc::EPROTOTYPE => EPROTOTYPE,
3270 libc::ENOPROTOOPT => ENOPROTOOPT,
3271 libc::EPROTONOSUPPORT => EPROTONOSUPPORT,
3272 libc::ESOCKTNOSUPPORT => ESOCKTNOSUPPORT,
3273 libc::EOPNOTSUPP => EOPNOTSUPP,
3274 libc::EPFNOSUPPORT => EPFNOSUPPORT,
3275 libc::EAFNOSUPPORT => EAFNOSUPPORT,
3276 libc::EADDRINUSE => EADDRINUSE,
3277 libc::EADDRNOTAVAIL => EADDRNOTAVAIL,
3278 libc::ENETDOWN => ENETDOWN,
3279 libc::ENETUNREACH => ENETUNREACH,
3280 libc::ENETRESET => ENETRESET,
3281 libc::ECONNABORTED => ECONNABORTED,
3282 libc::ECONNRESET => ECONNRESET,
3283 libc::ENOBUFS => ENOBUFS,
3284 libc::EISCONN => EISCONN,
3285 libc::ENOTCONN => ENOTCONN,
3286 libc::EDESTADDRREQ => EDESTADDRREQ,
3287 libc::ESHUTDOWN => ESHUTDOWN,
3288 libc::ETOOMANYREFS => ETOOMANYREFS,
3289 libc::ETIMEDOUT => ETIMEDOUT,
3290 libc::ECONNREFUSED => ECONNREFUSED,
3291 libc::ELOOP => ELOOP,
3292 libc::ENAMETOOLONG => ENAMETOOLONG,
3293 libc::EHOSTDOWN => EHOSTDOWN,
3294 libc::EHOSTUNREACH => EHOSTUNREACH,
3295 libc::ENOTEMPTY => ENOTEMPTY,
3296 libc::EPROCLIM => EPROCLIM,
3297 libc::EUSERS => EUSERS,
3298 libc::EDQUOT => EDQUOT,
3299 libc::ESTALE => ESTALE,
3300 libc::EREMOTE => EREMOTE,
3301 libc::EBADRPC => EBADRPC,
3302 libc::ERPCMISMATCH => ERPCMISMATCH,
3303 libc::EPROGUNAVAIL => EPROGUNAVAIL,
3304 libc::EPROGMISMATCH => EPROGMISMATCH,
3305 libc::EPROCUNAVAIL => EPROCUNAVAIL,
3306 libc::ENOLCK => ENOLCK,
3307 libc::EFTYPE => EFTYPE,
3308 libc::EAUTH => EAUTH,
3309 libc::ENEEDAUTH => ENEEDAUTH,
3310 libc::ENOSYS => ENOSYS,
3311 libc::ELIBEXEC => ELIBEXEC,
3312 libc::ENOTSUP => ENOTSUP,
3313 libc::EILSEQ => EILSEQ,
3314 libc::EBACKGROUND => EBACKGROUND,
3315 libc::EDIED => EDIED,
3316 libc::EGREGIOUS => EGREGIOUS,
3317 libc::EIEIO => EIEIO,
3318 libc::EGRATUITOUS => EGRATUITOUS,
3319 libc::EBADMSG => EBADMSG,
3320 libc::EIDRM => EIDRM,
3321 libc::EMULTIHOP => EMULTIHOP,
3322 libc::ENODATA => ENODATA,
3323 libc::ENOLINK => ENOLINK,
3324 libc::ENOMSG => ENOMSG,
3325 libc::ENOSR => ENOSR,
3326 libc::ENOSTR => ENOSTR,
3327 libc::EOVERFLOW => EOVERFLOW,
3328 libc::EPROTO => EPROTO,
3329 libc::ETIME => ETIME,
3330 libc::ECANCELED => ECANCELED,
3331 libc::EOWNERDEAD => EOWNERDEAD,
3332 libc::ENOTRECOVERABLE => ENOTRECOVERABLE,
3333 _ => UnknownErrno,
3334 }
3335 }
3336}