|
2 | 2 |
|
3 | 3 | //! EFI Shell Protocol v2.2 |
4 | 4 |
|
5 | | -use uefi_macros::unsafe_protocol; |
6 | | - |
| 5 | +use crate::proto::unsafe_protocol; |
| 6 | +use crate::{CStr16, Char16, Error, Result, Status, StatusExt}; |
7 | 7 | use core::ptr; |
8 | | - |
9 | 8 | use uefi_raw::protocol::shell::ShellProtocol; |
10 | 9 |
|
11 | | -use crate::{CStr16, Char16, Result, StatusExt}; |
12 | | - |
13 | 10 | /// Shell Protocol |
14 | 11 | #[derive(Debug)] |
15 | 12 | #[repr(transparent)] |
16 | 13 | #[unsafe_protocol(ShellProtocol::GUID)] |
17 | 14 | pub struct Shell(ShellProtocol); |
| 15 | + |
18 | 16 | impl Shell { |
19 | | - /// Returns the current directory on the specified device |
| 17 | + /// Returns the current directory on the specified device. |
20 | 18 | /// |
21 | 19 | /// # Arguments |
22 | 20 | /// |
23 | 21 | /// * `file_system_mapping` - The file system mapping for which to get |
24 | 22 | /// the current directory |
25 | 23 | /// |
26 | | - /// # Returns |
| 24 | + /// # Errors |
27 | 25 | /// |
28 | | - /// * `Some(cwd)` - CStr16 containing the current working directory |
29 | | - /// * `None` - Could not retrieve current directory |
30 | | - #[must_use] |
31 | | - pub fn current_dir(&self, file_system_mapping: Option<&CStr16>) -> Option<&CStr16> { |
| 26 | + /// * [`Status::NOT_FOUND`] - Could not retrieve current directory |
| 27 | + pub fn current_dir(&self, file_system_mapping: Option<&CStr16>) -> Result<&CStr16> { |
32 | 28 | let mapping_ptr: *const Char16 = file_system_mapping.map_or(ptr::null(), CStr16::as_ptr); |
33 | 29 | let cur_dir = unsafe { (self.0.get_cur_dir)(mapping_ptr.cast()) }; |
34 | 30 | if cur_dir.is_null() { |
35 | | - None |
| 31 | + Err(Error::new(Status::NOT_FOUND, ())) |
36 | 32 | } else { |
37 | | - unsafe { Some(CStr16::from_ptr(cur_dir.cast())) } |
| 33 | + unsafe { Ok(CStr16::from_ptr(cur_dir.cast())) } |
38 | 34 | } |
39 | 35 | } |
40 | 36 |
|
41 | 37 | /// Changes the current directory on the specified device |
42 | 38 | /// |
43 | 39 | /// # Arguments |
44 | 40 | /// |
45 | | - /// * `file_system` - Pointer to the file system's mapped name. |
46 | | - /// * `directory` - Points to the directory on the device specified by |
| 41 | + /// * `file_system` - File system's mapped name. |
| 42 | + /// * `directory` - Directory on the device specified by |
47 | 43 | /// `file_system`. |
48 | 44 | /// |
49 | | - /// # Returns |
50 | | - /// |
51 | | - /// * `Status::SUCCESS` - The directory was successfully set |
52 | | - /// |
53 | 45 | /// # Errors |
54 | 46 | /// |
55 | | - /// * `Status::EFI_NOT_FOUND` - The directory does not exist |
| 47 | + /// * [`Status::NOT_FOUND`] - The directory does not exist |
56 | 48 | pub fn set_current_dir( |
57 | 49 | &self, |
58 | 50 | file_system: Option<&CStr16>, |
|
0 commit comments