]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellLevel2CommandsLib/Cp.c
ShellPkg: Follow spec to remove the last '\' char in return name of GetCurDir().
[mirror_edk2.git] / ShellPkg / Library / UefiShellLevel2CommandsLib / Cp.c
index deff42e0494e0b0d889e5e744315e37ce19c7973..5cfbc9064f8318670fe7c16807ccb65c15577769 100644 (file)
@@ -360,7 +360,7 @@ ValidateAndCopyFiles(
 \r
     NewSize =  StrSize(CleanFilePathStr);\r
     NewSize += StrSize(Node->FullName);\r
-    NewSize += (Cwd == NULL)? 0 : StrSize(Cwd);\r
+    NewSize += (Cwd == NULL)? 0 : (StrSize(Cwd) + sizeof(CHAR16));\r
     if (NewSize > PathSize) {\r
       PathSize = NewSize;\r
     }\r
@@ -428,6 +428,7 @@ ValidateAndCopyFiles(
         //\r
         if (Cwd != NULL) {\r
           StrCpyS(DestPath, PathSize / sizeof(CHAR16), Cwd);\r
+          StrCatS(DestPath, PathSize / sizeof(CHAR16), L"\\");\r
         } else {\r
           ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_DIR_NF), gShellLevel2HiiHandle, L"cp", CleanFilePathStr);  \r
           FreePool (CleanFilePathStr);\r
@@ -456,6 +457,7 @@ ValidateAndCopyFiles(
          //\r
         if (Cwd != NULL) {\r
           StrCpyS(DestPath, PathSize/sizeof(CHAR16), Cwd);\r
+          StrCatS(DestPath, PathSize/sizeof(CHAR16), L"\\");\r
         } else {\r
           ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_DIR_NF), gShellLevel2HiiHandle, L"cp",  CleanFilePathStr); \r
           FreePool(CleanFilePathStr);\r
@@ -467,6 +469,7 @@ ValidateAndCopyFiles(
       } else if (StrStr(CleanFilePathStr, L":") == NULL) {\r
         if (Cwd != NULL) {\r
           StrCpyS(DestPath, PathSize/sizeof(CHAR16), Cwd);\r
+          StrCatS(DestPath, PathSize/sizeof(CHAR16), L"\\");\r
         } else {\r
           ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_DIR_NF), gShellLevel2HiiHandle, L"cp", CleanFilePathStr);  \r
           FreePool(CleanFilePathStr);\r
@@ -644,6 +647,7 @@ ShellCommandRunCp (
   BOOLEAN             SilentMode;\r
   BOOLEAN             RecursiveMode;\r
   CONST CHAR16        *Cwd;\r
+  CHAR16              *FullCwd;\r
 \r
   ProblemParam        = NULL;\r
   ShellStatus         = SHELL_SUCCESS;\r
@@ -712,7 +716,11 @@ ShellCommandRunCp (
             ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_NF), gShellLevel2HiiHandle, L"cp", ShellCommandLineGetRawValue(Package, 1));  \r
             ShellStatus = SHELL_NOT_FOUND;\r
           } else  {\r
-            ShellStatus = ProcessValidateAndCopyFiles(FileList, Cwd, SilentMode, RecursiveMode);\r
+            FullCwd = AllocateZeroPool(StrSize(Cwd) + sizeof(CHAR16));\r
+            ASSERT (FullCwd != NULL);\r
+            StrCpyS(FullCwd, StrSize(Cwd)/sizeof(CHAR16)+1, Cwd);\r
+            ShellStatus = ProcessValidateAndCopyFiles(FileList, FullCwd, SilentMode, RecursiveMode);\r
+            FreePool(FullCwd);\r
           }\r
         }\r
 \r