about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAyush Singh <ayush@beagleboard.org>2025-03-09 15:39:04 +0530
committerAyush Singh <ayush@beagleboard.org>2025-03-10 08:16:56 +0530
commitc717cc7cd2e2ce9f3da069abd7781f366a87e64e (patch)
treefe6f7a547623f812c8459923d68815b1cdb25887
parent1833737e165ffc78b9b6318ab5bea7478945cc7a (diff)
downloadrust-c717cc7cd2e2ce9f3da069abd7781f366a87e64e.tar.gz
rust-c717cc7cd2e2ce9f3da069abd7781f366a87e64e.zip
uefi: fs: Implement FileType
- Similar to FilePermissions, using bool to represent the bitfield.
- FileType cannot be changed, so no need to worry about converting back
  to attribute.

Signed-off-by: Ayush Singh <ayush@beagleboard.org>
-rw-r--r--library/std/src/sys/fs/uefi.rs40
1 files changed, 10 insertions, 30 deletions
diff --git a/library/std/src/sys/fs/uefi.rs b/library/std/src/sys/fs/uefi.rs
index 9b8fd599789..188f712fb84 100644
--- a/library/std/src/sys/fs/uefi.rs
+++ b/library/std/src/sys/fs/uefi.rs
@@ -1,6 +1,6 @@
 use crate::ffi::OsString;
 use crate::fmt;
-use crate::hash::{Hash, Hasher};
+use crate::hash::Hash;
 use crate::io::{self, BorrowedCursor, IoSlice, IoSliceMut, SeekFrom};
 use crate::path::{Path, PathBuf};
 use crate::sys::time::SystemTime;
@@ -27,7 +27,9 @@ pub struct FileTimes {}
 // Bool indicates if file is readonly
 pub struct FilePermissions(bool);
 
-pub struct FileType(!);
+#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug)]
+// Bool indicates if directory
+pub struct FileType(bool);
 
 #[derive(Debug)]
 pub struct DirBuilder {}
@@ -95,39 +97,17 @@ impl FileType {
     }
 
     pub fn is_file(&self) -> bool {
-        self.0
+        !self.is_dir()
     }
 
+    // Symlinks are not supported in UEFI
     pub fn is_symlink(&self) -> bool {
-        self.0
+        false
     }
-}
 
-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
+    #[expect(dead_code)]
+    const fn from_attr(attr: u64) -> Self {
+        Self(attr & r_efi::protocols::file::DIRECTORY != 0)
     }
 }