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