/** @file\r
Main file for attrib shell level 2 function.\r
\r
- Copyright (c) 2015, Hewlett-Packard Development Company, L.P.<BR>\r
- Copyright (c) 2009 - 2014, 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
- http://opensource.org/licenses/bsd-license.php\r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ (C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>\r
+ Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
Determine if a directory has no files in it.\r
\r
@param[in] FileHandle The EFI_HANDLE to the directory.\r
- \r
+\r
@retval TRUE The directory has no files (or directories).\r
@retval FALSE The directory has at least 1 file or directory in it.\r
**/\r
BOOLEAN\r
-EFIAPI\r
IsDirectoryEmpty (\r
IN EFI_HANDLE FileHandle\r
)\r
{\r
+ EFI_STATUS Status;\r
EFI_FILE_INFO *FileInfo;\r
BOOLEAN NoFile;\r
BOOLEAN RetVal;\r
NoFile = FALSE;\r
FileInfo = NULL;\r
\r
- for (FileHandleFindFirstFile(FileHandle, &FileInfo)\r
- ; !NoFile\r
+ for (Status = FileHandleFindFirstFile(FileHandle, &FileInfo)\r
+ ; !NoFile && !EFI_ERROR (Status)\r
; FileHandleFindNextFile(FileHandle, FileInfo, &NoFile)\r
){\r
if (StrStr(FileInfo->FileName, L".") != FileInfo->FileName\r
@retval SHELL_DEVICE_ERROR A device error occured reading this Node.\r
**/\r
SHELL_STATUS\r
-EFIAPI\r
CascadeDelete(\r
IN EFI_SHELL_FILE_INFO *Node,\r
IN CONST BOOLEAN Quiet\r
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, L"rm", 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
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
}\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
@param[in] Package RESERVED. Not used.\r
**/\r
BOOLEAN\r
-EFIAPI\r
IsValidDeleteTarget(\r
IN CONST EFI_SHELL_FILE_INFO *List,\r
IN CONST EFI_SHELL_FILE_INFO *Node,\r
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
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, L"rm", 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
//\r
// we insufficient parameters\r
//\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellLevel2HiiHandle, L"rm"); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellLevel2HiiHandle, L"rm");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
//\r
){\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, L"rm", (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