]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellLevel2CommandsLib/Rm.c
ShellPkg: Follow spec to remove the last '\' char in return name of GetCurDir().
[mirror_edk2.git] / ShellPkg / Library / UefiShellLevel2CommandsLib / Rm.c
index 6cc5dcf69107a91a6ea98f0b6aa56a5fa5f4cf81..0b23fba150815204e2180ac5e8ba9ca7ff4fee9e 100644 (file)
@@ -1,7 +1,8 @@
 /** @file\r
   Main file for attrib shell level 2 function.\r
 \r
-  Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>\r
+  (C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>\r
+  Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
@@ -85,7 +86,7 @@ CascadeDelete(
   Status                = EFI_SUCCESS;\r
 \r
   if ((Node->Info->Attribute & EFI_FILE_READ_ONLY) == EFI_FILE_READ_ONLY) {\r
-    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_RM_LOG_DETELE_RO), gShellLevel2HiiHandle, Node->FullName);\r
+    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_RM_LOG_DETELE_RO), gShellLevel2HiiHandle, L"rm", Node->FullName);  \r
     return (SHELL_ACCESS_DENIED);\r
   }\r
 \r
@@ -131,9 +132,9 @@ CascadeDelete(
           if (TempName == NULL) {\r
             ShellStatus = SHELL_OUT_OF_RESOURCES;\r
           } else {\r
-            StrnCpy(TempName, Node->FullName, NewSize/sizeof(CHAR16) -1);\r
+            StrCpyS(TempName, NewSize/sizeof(CHAR16), Node->FullName);\r
             TempName[StrStr(TempName, L":")+1-TempName] = CHAR_NULL;\r
-            StrnCat(TempName, Node2->FullName, NewSize/sizeof(CHAR16) -1 - StrLen(TempName));\r
+            StrCatS(TempName, NewSize/sizeof(CHAR16), Node2->FullName);\r
             FreePool((VOID*)Node2->FullName);\r
             Node2->FullName = TempName;\r
 \r
@@ -165,7 +166,9 @@ CascadeDelete(
     //\r
     // now delete the current node...\r
     //\r
-    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_RM_LOG_DELETE), gShellLevel2HiiHandle, Node->FullName);\r
+    if (!Quiet) {\r
+      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_RM_LOG_DELETE), gShellLevel2HiiHandle, Node->FullName);\r
+    }\r
     Status = gEfiShellProtocol->DeleteFile(Node->Handle);\r
     Node->Handle = NULL;\r
   }\r
@@ -185,7 +188,7 @@ CascadeDelete(
 }\r
 \r
 /**\r
-  Determins if a Node is a valid delete target.  Will prevent deleting the root directory.\r
+  Determines if a Node is a valid delete target.  Will prevent deleting the root directory.\r
 \r
   @param[in] List       RESERVED.  Not used.\r
   @param[in] Node       The node to analyze.\r
@@ -228,7 +231,9 @@ IsValidDeleteTarget(
   Pattern       = NULL;\r
   SearchString  = NULL;\r
   Size          = 0;\r
-  Pattern       = StrnCatGrow(&Pattern     , NULL, TempLocation  , 0);\r
+  Pattern       = StrnCatGrow(&Pattern, &Size, TempLocation  , 0);\r
+  Pattern       = StrnCatGrow(&Pattern, &Size, L"\\"  , 0);\r
+  Size = 0;\r
   SearchString  = StrnCatGrow(&SearchString, &Size, Node->FullName, 0);\r
   if (!EFI_ERROR(ShellIsDirectory(SearchString))) {\r
     SearchString  = StrnCatGrow(&SearchString, &Size, L"\\", 0);\r
@@ -289,7 +294,7 @@ ShellCommandRunRm (
   Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);\r
   if (EFI_ERROR(Status)) {\r
     if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {\r
-      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel2HiiHandle, ProblemParam);\r
+      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel2HiiHandle, L"rm", ProblemParam);  \r
       FreePool(ProblemParam);\r
       ShellStatus = SHELL_INVALID_PARAMETER;\r
     } else {\r
@@ -306,7 +311,7 @@ ShellCommandRunRm (
       //\r
       // we insufficient parameters\r
       //\r
-      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellLevel2HiiHandle);\r
+      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellLevel2HiiHandle, L"rm");  \r
       ShellStatus = SHELL_INVALID_PARAMETER;\r
     } else {\r
       //\r
@@ -319,7 +324,7 @@ ShellCommandRunRm (
          ){\r
         Status = ShellOpenFileMetaArg((CHAR16*)Param, 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, (CHAR16*)Param);\r
+          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_NF), gShellLevel2HiiHandle, L"rm", (CHAR16*)Param);  \r
           ShellStatus = SHELL_NOT_FOUND;\r
           break;\r
         }\r