diff options
Diffstat (limited to 'vendor/rustix/src/fs/cwd.rs')
-rw-r--r-- | vendor/rustix/src/fs/cwd.rs | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/vendor/rustix/src/fs/cwd.rs b/vendor/rustix/src/fs/cwd.rs new file mode 100644 index 0000000..e66360e --- /dev/null +++ b/vendor/rustix/src/fs/cwd.rs @@ -0,0 +1,39 @@ +//! The `cwd` function, representing the current working directory. +//! +//! # Safety +//! +//! This file uses `AT_FDCWD`, which is a raw file descriptor, but which is +//! always valid. + +#![allow(unsafe_code)] + +use crate::backend; +use backend::c; +use backend::fd::{BorrowedFd, RawFd}; + +/// `AT_FDCWD`—A handle representing the current working directory. +/// +/// This is a file descriptor which refers to the process current directory +/// which can be used as the directory argument in `*at` functions such as +/// [`openat`]. +/// +/// # References +/// - [POSIX] +/// +/// [`openat`]: crate::fs::openat +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/fcntl.h.html +// SAFETY: `AT_FDCWD` is a reserved value that is never dynamically +// allocated, so it'll remain valid for the duration of `'static`. +#[doc(alias = "AT_FDCWD")] +pub const CWD: BorrowedFd<'static> = + unsafe { BorrowedFd::<'static>::borrow_raw(c::AT_FDCWD as RawFd) }; + +/// Return the value of [`CWD`]. +#[deprecated(note = "Use `CWD` in place of `cwd()`.")] +pub const fn cwd() -> BorrowedFd<'static> { + let at_fdcwd = c::AT_FDCWD as RawFd; + + // SAFETY: `AT_FDCWD` is a reserved value that is never dynamically + // allocated, so it'll remain valid for the duration of `'static`. + unsafe { BorrowedFd::<'static>::borrow_raw(at_fdcwd) } +} |