diff options
author | Joursoir <chat@joursoir.net> | 2021-12-13 21:50:31 +0300 |
---|---|---|
committer | Joursoir <chat@joursoir.net> | 2021-12-13 21:50:31 +0300 |
commit | 722a438a60827f99f48d41aae3daccd8c7d73ab1 (patch) | |
tree | c345feb1d994a63317cf35d58e08c93e182f7c56 /Library | |
parent | 5abed58efcf6c739c473179255815270413a586b (diff) | |
download | ufm-722a438a60827f99f48d41aae3daccd8c7d73ab1.tar.gz ufm-722a438a60827f99f48d41aae3daccd8c7d73ab1.tar.bz2 ufm-722a438a60827f99f48d41aae3daccd8c7d73ab1.zip |
cmds: make error handling when opening a directory
Diffstat (limited to 'Library')
-rw-r--r-- | Library/UefiShellUfmCommandLib/cmds.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/Library/UefiShellUfmCommandLib/cmds.c b/Library/UefiShellUfmCommandLib/cmds.c index 8f0b486..8a9c425 100644 --- a/Library/UefiShellUfmCommandLib/cmds.c +++ b/Library/UefiShellUfmCommandLib/cmds.c @@ -94,18 +94,19 @@ EFI_STATUS copy_file(CONST CHAR16 *src, CONST CHAR16 *dest) if(EFI_ERROR(status)) return EFI_ACCESS_DENIED; - temp_name = NULL; StrnCatGrow(&temp_name, &size, src, 0); StrnCatGrow(&temp_name, &size, L"\\*", 0); if(temp_name == NULL) return EFI_OUT_OF_RESOURCES; - ShellOpenFileMetaArg(temp_name, EFI_FILE_MODE_READ, &list); - *temp_name = CHAR_NULL; - StrnCatGrow(&temp_name, &size, dest, 0); - StrnCatGrow(&temp_name, &size, L"\\", 0); - // TODO: copy directory entries - ShellCloseFileMetaArg(&list); + status = ShellOpenFileMetaArg(temp_name, EFI_FILE_MODE_READ, &list); + if(!EFI_ERROR(status)) { + *temp_name = CHAR_NULL; + StrnCatGrow(&temp_name, &size, dest, 0); + StrnCatGrow(&temp_name, &size, L"\\", 0); + // TODO: copy directory entries + ShellCloseFileMetaArg(&list); + } SHELL_FREE_NON_NULL(temp_name); return status; } |