getrandom/utils/
get_errno.rs1cfg_if! {
2 if #[cfg(any(target_os = "netbsd", target_os = "openbsd", target_os = "android", target_os = "cygwin"))] {
3 use libc::__errno as errno_location;
4 } else if #[cfg(any(target_os = "linux", target_os = "emscripten", target_os = "hurd", target_os = "redox", target_os = "dragonfly"))] {
5 use libc::__errno_location as errno_location;
6 } else if #[cfg(target_os = "illumos")] {
7 use libc::___errno as errno_location;
8 } else if #[cfg(any(target_os = "macos", target_os = "freebsd"))] {
9 use libc::__error as errno_location;
10 } else if #[cfg(target_os = "haiku")] {
11 use libc::_errnop as errno_location;
12 } else if #[cfg(target_os = "nto")] {
13 use libc::__get_errno_ptr as errno_location;
14 } else if #[cfg(any(all(target_os = "horizon", target_arch = "arm"), target_os = "vita"))] {
15 unsafe extern "C" {
16 fn __errno() -> *mut libc::c_int;
18 }
19 use __errno as errno_location;
20 } else if #[cfg(target_os = "aix")] {
21 use libc::_Errno as errno_location;
22 } else {
23 compile_error!("errno_location is not provided for the target");
24 }
25}
26
27pub(crate) fn get_errno() -> libc::c_int {
28 unsafe { core::ptr::read(errno_location()) }
29}