Skip to content

Initial fs module for uefi #135324

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 11, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading