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