Skip to content
/ rust Public
forked from rust-lang/rust

Commit

Permalink
Rollup merge of rust-lang#135324 - Ayush1325:uefi-fs-unsupported, r=j…
Browse files Browse the repository at this point in the history
…oboet

Initial fs module for uefi

- Just a copy of unsupported fs right now to reduce the noise from future PRs to allow for easier review.
- For the full working version of fs on uefi, see [0]
- This is an effort to break the original PR (rust-lang#129700) into much smaller chunks for faster upstreaming.

[0]: https://github.com/Ayush1325/rust/tree/uefi-file-full
  • Loading branch information
jhpratt authored Jan 11, 2025
2 parents 8c3e9d7 + e21d125 commit 23c22a6
Show file tree
Hide file tree
Showing 2 changed files with 344 additions and 1 deletion.
344 changes: 344 additions & 0 deletions library/std/src/sys/pal/uefi/fs.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,344 @@
use crate::ffi::OsString;
use crate::fmt;
use crate::hash::{Hash, Hasher};
use crate::io::{self, BorrowedCursor, IoSlice, IoSliceMut, SeekFrom};
use crate::path::{Path, PathBuf};
use crate::sys::time::SystemTime;
use crate::sys::unsupported;

pub struct File(!);

pub struct FileAttr(!);

pub struct ReadDir(!);

pub struct DirEntry(!);

#[derive(Clone, Debug)]
pub struct OpenOptions {}

#[derive(Copy, Clone, Debug, Default)]
pub struct FileTimes {}

pub struct FilePermissions(!);

pub struct FileType(!);

#[derive(Debug)]
pub struct DirBuilder {}

impl FileAttr {
pub fn size(&self) -> u64 {
self.0
}

pub fn perm(&self) -> FilePermissions {
self.0
}

pub fn file_type(&self) -> FileType {
self.0
}

pub fn modified(&self) -> io::Result<SystemTime> {
self.0
}

pub fn accessed(&self) -> io::Result<SystemTime> {
self.0
}

pub fn created(&self) -> io::Result<SystemTime> {
self.0
}
}

impl Clone for FileAttr {
fn clone(&self) -> FileAttr {
self.0
}
}

impl FilePermissions {
pub fn readonly(&self) -> bool {
self.0
}

pub fn set_readonly(&mut self, _readonly: bool) {
self.0
}
}

impl Clone for FilePermissions {
fn clone(&self) -> FilePermissions {
self.0
}
}

impl PartialEq for FilePermissions {
fn eq(&self, _other: &FilePermissions) -> bool {
self.0
}
}

impl Eq for FilePermissions {}

impl fmt::Debug for FilePermissions {
fn fmt(&self, _f: &mut fmt::Formatter<'_>) -> fmt::Result {
self.0
}
}

impl FileTimes {
pub fn set_accessed(&mut self, _t: SystemTime) {}
pub fn set_modified(&mut self, _t: SystemTime) {}
}

impl FileType {
pub fn is_dir(&self) -> bool {
self.0
}

pub fn is_file(&self) -> bool {
self.0
}

pub fn is_symlink(&self) -> bool {
self.0
}
}

impl Clone for FileType {
fn clone(&self) -> FileType {
self.0
}
}

impl Copy for FileType {}

impl PartialEq for FileType {
fn eq(&self, _other: &FileType) -> bool {
self.0
}
}

impl Eq for FileType {}

impl Hash for FileType {
fn hash<H: Hasher>(&self, _h: &mut H) {
self.0
}
}

impl fmt::Debug for FileType {
fn fmt(&self, _f: &mut fmt::Formatter<'_>) -> fmt::Result {
self.0
}
}

impl fmt::Debug for ReadDir {
fn fmt(&self, _f: &mut fmt::Formatter<'_>) -> fmt::Result {
self.0
}
}

impl Iterator for ReadDir {
type Item = io::Result<DirEntry>;

fn next(&mut self) -> Option<io::Result<DirEntry>> {
self.0
}
}

impl DirEntry {
pub fn path(&self) -> PathBuf {
self.0
}

pub fn file_name(&self) -> OsString {
self.0
}

pub fn metadata(&self) -> io::Result<FileAttr> {
self.0
}

pub fn file_type(&self) -> io::Result<FileType> {
self.0
}
}

impl OpenOptions {
pub fn new() -> OpenOptions {
OpenOptions {}
}

pub fn read(&mut self, _read: bool) {}
pub fn write(&mut self, _write: bool) {}
pub fn append(&mut self, _append: bool) {}
pub fn truncate(&mut self, _truncate: bool) {}
pub fn create(&mut self, _create: bool) {}
pub fn create_new(&mut self, _create_new: bool) {}
}

impl File {
pub fn open(_path: &Path, _opts: &OpenOptions) -> io::Result<File> {
unsupported()
}

pub fn file_attr(&self) -> io::Result<FileAttr> {
self.0
}

pub fn fsync(&self) -> io::Result<()> {
self.0
}

pub fn datasync(&self) -> io::Result<()> {
self.0
}

pub fn lock(&self) -> io::Result<()> {
self.0
}

pub fn lock_shared(&self) -> io::Result<()> {
self.0
}

pub fn try_lock(&self) -> io::Result<bool> {
self.0
}

pub fn try_lock_shared(&self) -> io::Result<bool> {
self.0
}

pub fn unlock(&self) -> io::Result<()> {
self.0
}

pub fn truncate(&self, _size: u64) -> io::Result<()> {
self.0
}

pub fn read(&self, _buf: &mut [u8]) -> io::Result<usize> {
self.0
}

pub fn read_vectored(&self, _bufs: &mut [IoSliceMut<'_>]) -> io::Result<usize> {
self.0
}

pub fn is_read_vectored(&self) -> bool {
self.0
}

pub fn read_buf(&self, _cursor: BorrowedCursor<'_>) -> io::Result<()> {
self.0
}

pub fn write(&self, _buf: &[u8]) -> io::Result<usize> {
self.0
}

pub fn write_vectored(&self, _bufs: &[IoSlice<'_>]) -> io::Result<usize> {
self.0
}

pub fn is_write_vectored(&self) -> bool {
self.0
}

pub fn flush(&self) -> io::Result<()> {
self.0
}

pub fn seek(&self, _pos: SeekFrom) -> io::Result<u64> {
self.0
}

pub fn duplicate(&self) -> io::Result<File> {
self.0
}

pub fn set_permissions(&self, _perm: FilePermissions) -> io::Result<()> {
self.0
}

pub fn set_times(&self, _times: FileTimes) -> io::Result<()> {
self.0
}
}

impl DirBuilder {
pub fn new() -> DirBuilder {
DirBuilder {}
}

pub fn mkdir(&self, _p: &Path) -> io::Result<()> {
unsupported()
}
}

impl fmt::Debug for File {
fn fmt(&self, _f: &mut fmt::Formatter<'_>) -> fmt::Result {
self.0
}
}

pub fn readdir(_p: &Path) -> io::Result<ReadDir> {
unsupported()
}

pub fn unlink(_p: &Path) -> io::Result<()> {
unsupported()
}

pub fn rename(_old: &Path, _new: &Path) -> io::Result<()> {
unsupported()
}

pub fn set_perm(_p: &Path, perm: FilePermissions) -> io::Result<()> {
match perm.0 {}
}

pub fn rmdir(_p: &Path) -> io::Result<()> {
unsupported()
}

pub fn remove_dir_all(_path: &Path) -> io::Result<()> {
unsupported()
}

pub fn exists(_path: &Path) -> io::Result<bool> {
unsupported()
}

pub fn readlink(_p: &Path) -> io::Result<PathBuf> {
unsupported()
}

pub fn symlink(_original: &Path, _link: &Path) -> io::Result<()> {
unsupported()
}

pub fn link(_src: &Path, _dst: &Path) -> io::Result<()> {
unsupported()
}

pub fn stat(_p: &Path) -> io::Result<FileAttr> {
unsupported()
}

pub fn lstat(_p: &Path) -> io::Result<FileAttr> {
unsupported()
}

pub fn canonicalize(_p: &Path) -> io::Result<PathBuf> {
unsupported()
}

pub fn copy(_from: &Path, _to: &Path) -> io::Result<u64> {
unsupported()
}
1 change: 0 additions & 1 deletion library/std/src/sys/pal/uefi/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@

pub mod args;
pub mod env;
#[path = "../unsupported/fs.rs"]
pub mod fs;
pub mod helpers;
#[path = "../unsupported/io.rs"]
Expand Down

0 comments on commit 23c22a6

Please sign in to comment.