//! linux_raw syscalls for UIDs and GIDs //! //! # Safety //! //! See the `rustix::backend` module documentation for details. #![allow(unsafe_code, clippy::undocumented_unsafe_blocks)] use crate::backend::c; use crate::backend::conv::ret_usize_infallible; use crate::ugid::{Gid, Uid}; #[inline] pub(crate) fn getuid() -> Uid { #[cfg(any(target_arch = "arm", target_arch = "sparc", target_arch = "x86"))] unsafe { let uid = ret_usize_infallible(syscall_readonly!(__NR_getuid32)) as c::uid_t; Uid::from_raw(uid) } #[cfg(not(any(target_arch = "arm", target_arch = "sparc", target_arch = "x86")))] unsafe { let uid = ret_usize_infallible(syscall_readonly!(__NR_getuid)) as c::uid_t; Uid::from_raw(uid) } } #[inline] pub(crate) fn geteuid() -> Uid { #[cfg(any(target_arch = "arm", target_arch = "sparc", target_arch = "x86"))] unsafe { let uid = ret_usize_infallible(syscall_readonly!(__NR_geteuid32)) as c::uid_t; Uid::from_raw(uid) } #[cfg(not(any(target_arch = "arm", target_arch = "sparc", target_arch = "x86")))] unsafe { let uid = ret_usize_infallible(syscall_readonly!(__NR_geteuid)) as c::uid_t; Uid::from_raw(uid) } } #[inline] pub(crate) fn getgid() -> Gid { #[cfg(any(target_arch = "arm", target_arch = "sparc", target_arch = "x86"))] unsafe { let gid = ret_usize_infallible(syscall_readonly!(__NR_getgid32)) as c::gid_t; Gid::from_raw(gid) } #[cfg(not(any(target_arch = "arm", target_arch = "sparc", target_arch = "x86")))] unsafe { let gid = ret_usize_infallible(syscall_readonly!(__NR_getgid)) as c::gid_t; Gid::from_raw(gid) } } #[inline] pub(crate) fn getegid() -> Gid { #[cfg(any(target_arch = "arm", target_arch = "sparc", target_arch = "x86"))] unsafe { let gid = ret_usize_infallible(syscall_readonly!(__NR_getegid32)) as c::gid_t; Gid::from_raw(gid) } #[cfg(not(any(target_arch = "arm", target_arch = "sparc", target_arch = "x86")))] unsafe { let gid = ret_usize_infallible(syscall_readonly!(__NR_getegid)) as c::gid_t; Gid::from_raw(gid) } }