]> git.proxmox.com Git - mirror_edk2.git/commitdiff
fix for the cp shell command - halt when an error was encountered and also fix the...
authorjcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 30 Mar 2011 21:37:01 +0000 (21:37 +0000)
committerjcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 30 Mar 2011 21:37:01 +0000 (21:37 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11462 6f19259b-4bc3-4df7-8a09-765794883524

ShellPkg/Library/UefiShellLevel2CommandsLib/Cp.c

index d71a23cb736e6b9260baba52a0498dd439c0a73e..d09d2ec7a7db56058728c2b9978aa85d0a587c36 100644 (file)
@@ -603,22 +603,25 @@ ShellCommandRunCp (
           }\r
           Status = ShellOpenFileMetaArg((CHAR16*)ShellCommandLineGetRawValue(Package, LoopCounter), EFI_FILE_MODE_WRITE|EFI_FILE_MODE_READ, &FileList);\r
           if (EFI_ERROR(Status) || FileList == NULL || IsListEmpty(&FileList->Link)) {\r
-            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_NF), gShellLevel2HiiHandle, ShellCommandLineGetRawValue(Package, 1));\r
+            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_NF), gShellLevel2HiiHandle, ShellCommandLineGetRawValue(Package, LoopCounter));\r
             ShellStatus = SHELL_NOT_FOUND;\r
           }\r
         }\r
-        //\r
-        // now copy them all...\r
-        //\r
-        if (FileList != NULL && !IsListEmpty(&FileList->Link)) {\r
-          ShellStatus = ProcessValidateAndCopyFiles(FileList, ShellCommandCleanPath((CHAR16*)ShellCommandLineGetRawValue(Package, ParamCount)), SilentMode, RecursiveMode);\r
+        if (ShellStatus != SHELL_SUCCESS) {\r
           Status = ShellCloseFileMetaArg(&FileList);\r
-          if (EFI_ERROR(Status) && ShellStatus == SHELL_SUCCESS) {\r
-            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_ERR_FILE), gShellLevel2HiiHandle, ShellCommandLineGetRawValue(Package, 1), ShellStatus|MAX_BIT);\r
-            ShellStatus = SHELL_ACCESS_DENIED;\r
+        } else {\r
+          //\r
+          // now copy them all...\r
+          //\r
+          if (FileList != NULL && !IsListEmpty(&FileList->Link)) {\r
+            ShellStatus = ProcessValidateAndCopyFiles(FileList, ShellCommandCleanPath((CHAR16*)ShellCommandLineGetRawValue(Package, ParamCount)), SilentMode, RecursiveMode);\r
+            Status = ShellCloseFileMetaArg(&FileList);\r
+            if (EFI_ERROR(Status) && ShellStatus == SHELL_SUCCESS) {\r
+              ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_ERR_FILE), gShellLevel2HiiHandle, ShellCommandLineGetRawValue(Package, ParamCount), ShellStatus|MAX_BIT);\r
+              ShellStatus = SHELL_ACCESS_DENIED;\r
+            }\r
           }\r
         }\r
-\r
         break;\r
     } // switch on parameter count\r
 \r