summaryrefslogtreecommitdiff
path: root/vendor/rustix/src/fs/cwd.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/rustix/src/fs/cwd.rs')
-rw-r--r--vendor/rustix/src/fs/cwd.rs39
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) }
+}