Download codex-rs/exec-server/src/regular_file.rs from SaylorTwift/codex: direct link, hf CLI and curl.
- Browser
- Download file 2.51 kB
-
https://huggingface.co/SaylorTwift/codex/resolve/main/codex-rs/exec-server/src/regular_file.rs
- Command line
-
hf download hf://SaylorTwift/codex/codex-rs/exec-server/src/regular_file.rs
-
curl -L -o regular_file.rs https://huggingface.co/SaylorTwift/codex/resolve/main/codex-rs/exec-server/src/regular_file.rs
2.51 kB
| use std::io; | |
| use std::path::Path; | |
| use tokio::io::AsyncReadExt; | |
| pub(crate) async fn open(path: &Path) -> io::Result<tokio::fs::File> { | |
| let mut options = tokio::fs::OpenOptions::new(); | |
| options.read(true); | |
| configure_open(&mut options); | |
| let file = options.open(path).await?; | |
| if !is_disk_file(&file) || !file.metadata().await?.is_file() { | |
| return Err(io::Error::new( | |
| io::ErrorKind::InvalidInput, | |
| format!("path `{}` is not a file", path.display()), | |
| )); | |
| } | |
| Ok(file) | |
| } | |
| /// Reads a regular UTF-8 file without following a symlink at its final path component. | |
| pub async fn read_sensitive_file_to_string(path: &Path) -> io::Result<String> { | |
| let mut options = tokio::fs::OpenOptions::new(); | |
| options.read(true); | |
| configure_open(&mut options); | |
| options.custom_flags(libc::O_NONBLOCK | libc::O_NOFOLLOW); | |
| { | |
| use windows_sys::Win32::Storage::FileSystem::FILE_FLAG_OPEN_REPARSE_POINT; | |
| options.custom_flags(FILE_FLAG_OPEN_REPARSE_POINT); | |
| } | |
| let mut file = options.open(path).await?; | |
| let metadata = file.metadata().await?; | |
| if !is_disk_file(&file) || !metadata.is_file() || metadata.file_type().is_symlink() { | |
| return Err(io::Error::new( | |
| io::ErrorKind::InvalidInput, | |
| format!("path `{}` is not a regular file", path.display()), | |
| )); | |
| } | |
| let mut contents = String::new(); | |
| file.read_to_string(&mut contents).await?; | |
| Ok(contents) | |
| } | |
| fn configure_open(options: &mut tokio::fs::OpenOptions) { | |
| options.custom_flags(libc::O_NONBLOCK); | |
| } | |
| fn configure_open(options: &mut tokio::fs::OpenOptions) { | |
| use windows_sys::Win32::Storage::FileSystem::SECURITY_IDENTIFICATION; | |
| options.security_qos_flags(SECURITY_IDENTIFICATION); | |
| } | |
| fn configure_open(_options: &mut tokio::fs::OpenOptions) {} | |
| pub(crate) fn is_disk_file(file: &impl std::os::windows::io::AsRawHandle) -> bool { | |
| use windows_sys::Win32::Foundation::HANDLE; | |
| use windows_sys::Win32::Storage::FileSystem::FILE_TYPE_DISK; | |
| use windows_sys::Win32::Storage::FileSystem::GetFileType; | |
| // SAFETY: `file` owns this handle for the duration of the call. | |
| unsafe { GetFileType(file.as_raw_handle() as HANDLE) == FILE_TYPE_DISK } | |
| } | |
| fn is_disk_file(_file: &tokio::fs::File) -> bool { | |
| true | |
| } | |
| mod tests; | |