22
33//! EFI Shell Protocol v2.2
44
5- use uefi_macros :: unsafe_protocol;
6-
5+ use crate :: proto :: unsafe_protocol;
6+ use crate :: { CStr16 , Char16 , Error , Result , Status , StatusExt } ;
77use core:: ptr;
8-
98use uefi_raw:: protocol:: shell:: ShellProtocol ;
109
11- use crate :: { CStr16 , Char16 , Result , StatusExt } ;
12-
1310/// Shell Protocol
1411#[ derive( Debug ) ]
1512#[ repr( transparent) ]
1613#[ unsafe_protocol( ShellProtocol :: GUID ) ]
1714pub struct Shell ( ShellProtocol ) ;
15+
1816impl Shell {
19- /// Returns the current directory on the specified device
17+ /// Returns the current directory on the specified device.
2018 ///
2119 /// # Arguments
2220 ///
@@ -25,34 +23,32 @@ impl Shell {
2523 ///
2624 /// # Returns
2725 ///
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+ /// * `Ok(cwd)` - CStr16 containing the current working directory
27+ ///
28+ /// # Errors
29+ ///
30+ /// * [`Status::NOT_FOUND`] - Could not retrieve current directory
31+ pub fn current_dir ( & self , file_system_mapping : Option < & CStr16 > ) -> Result < & CStr16 > {
3232 let mapping_ptr: * const Char16 = file_system_mapping. map_or ( ptr:: null ( ) , CStr16 :: as_ptr) ;
3333 let cur_dir = unsafe { ( self . 0 . get_cur_dir ) ( mapping_ptr. cast ( ) ) } ;
3434 if cur_dir. is_null ( ) {
35- None
35+ Err ( Error :: new ( Status :: NOT_FOUND , ( ) ) )
3636 } else {
37- unsafe { Some ( CStr16 :: from_ptr ( cur_dir. cast ( ) ) ) }
37+ unsafe { Ok ( CStr16 :: from_ptr ( cur_dir. cast ( ) ) ) }
3838 }
3939 }
4040
4141 /// Changes the current directory on the specified device
4242 ///
4343 /// # Arguments
4444 ///
45- /// * `file_system` - Pointer to the file system's mapped name.
46- /// * `directory` - Points to the directory on the device specified by
45+ /// * `file_system` - File system's mapped name.
46+ /// * `directory` - Directory on the device specified by
4747 /// `file_system`.
4848 ///
49- /// # Returns
50- ///
51- /// * `Status::SUCCESS` - The directory was successfully set
52- ///
5349 /// # Errors
5450 ///
55- /// * `Status::EFI_NOT_FOUND` - The directory does not exist
51+ /// * [ `Status::NOT_FOUND`] - The directory does not exist
5652 pub fn set_current_dir (
5753 & self ,
5854 file_system : Option < & CStr16 > ,
0 commit comments