/** @file\r
Main file for ls shell level 2 function.\r
\r
- Copyright (c) 2013 Hewlett-Packard Development Company, L.P.\r
+ (C) Copyright 2013-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
; !IsNull(&ListHead->Link, &Node->Link)\r
; Node = (EFI_SHELL_FILE_INFO *)GetNextNode(&ListHead->Link, &Node->Link)\r
){\r
+ if (ShellGetExecutionBreakFlag ()) {\r
+ ShellStatus = SHELL_ABORTED;\r
+ break;\r
+ }\r
ASSERT(Node != NULL);\r
if (LongestPath < StrSize(Node->FullName)) {\r
LongestPath = StrSize(Node->FullName);\r
}\r
}\r
\r
- if (!Sfo && HeaderPrinted == FALSE) {\r
+ if (!Sfo && !HeaderPrinted) {\r
PrintNonSfoHeader(CorrectedPath);\r
}\r
PrintFileInformation(Sfo, Node, &FileCount, &FileSize, &DirCount);\r
HeaderPrinted = TRUE;\r
}\r
\r
- if (!Sfo) {\r
+ if (!Sfo && ShellStatus != SHELL_ABORTED) {\r
PrintNonSfoFooter(FileCount, FileSize, DirCount);\r
}\r
}\r
\r
- if (Rec) {\r
+ if (Rec && ShellStatus != SHELL_ABORTED) {\r
//\r
// Re-Open all the files under the starting path for directories that didnt necessarily match our file filter\r
//\r
ShellCloseFileMetaArg(&ListHead);\r
CorrectedPath[0] = CHAR_NULL;\r
CorrectedPath = StrnCatGrow(&CorrectedPath, &LongestPath, RootPath, 0);\r
+ if (CorrectedPath == NULL) {\r
+ return SHELL_OUT_OF_RESOURCES;\r
+ }\r
if (CorrectedPath[StrLen(CorrectedPath)-1] != L'\\'\r
&&CorrectedPath[StrLen(CorrectedPath)-1] != L'/') {\r
CorrectedPath = StrnCatGrow(&CorrectedPath, &LongestPath, L"\\", 0);\r
&FoundOne,\r
Count,\r
TimeZone);\r
+ \r
+ //\r
+ // Since it's running recursively, we have to break immediately when returned SHELL_ABORTED\r
+ //\r
+ if (ShellStatus == SHELL_ABORTED) {\r
+ break;\r
+ }\r
}\r
}\r
}\r
SHELL_FREE_NON_NULL(CorrectedPath);\r
ShellCloseFileMetaArg(&ListHead);\r
\r
- if (Found == NULL && FoundOne == FALSE) {\r
+ if (Found == NULL && !FoundOne) {\r
return (SHELL_NOT_FOUND);\r
}\r
\r
Status = ShellCommandLineParse (LsParamList, &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"ls", ProblemParam); \r
FreePool(ProblemParam);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
}\r
\r
if (ShellCommandLineGetCount(Package) > 2) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel2HiiHandle);\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel2HiiHandle, L"ls"); \r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
//\r
Count++;\r
continue;\r
default:\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_ATTRIBUTE), gShellLevel2HiiHandle, ShellCommandLineGetValue(Package, L"-a"));\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_ATTRIBUTE), gShellLevel2HiiHandle, L"ls", ShellCommandLineGetValue(Package, L"-a")); \r
ShellStatus = SHELL_INVALID_PARAMETER;\r
break;\r
} // switch\r
CurDir = gEfiShellProtocol->GetCurDir(NULL);\r
if (CurDir == NULL) {\r
ShellStatus = SHELL_NOT_FOUND;\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_CWD), gShellLevel2HiiHandle);\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_CWD), gShellLevel2HiiHandle, L"ls"); \r
}\r
//\r
// Copy to the 2 strings for starting path and file search string\r
// If we got something and it doesnt have a fully qualified path, then we needed to have a CWD.\r
//\r
ShellStatus = SHELL_NOT_FOUND;\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_CWD), gShellLevel2HiiHandle);\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_CWD), gShellLevel2HiiHandle, L"ls"); \r
} else {\r
//\r
// We got a valid fully qualified path or we have a CWD\r
}\r
Status = gRT->GetTime(&TheTime, NULL);\r
if (EFI_ERROR(Status)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_UEFI_FUNC_WARN), gShellLevel2HiiHandle, L"gRT->GetTime", Status);\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_UEFI_FUNC_WARN), gShellLevel2HiiHandle, L"ls", L"gRT->GetTime", Status); \r
TheTime.TimeZone = EFI_UNSPECIFIED_TIMEZONE;\r
}\r
\r
SearchString,\r
NULL,\r
Count,\r
- (INT16)(TheTime.TimeZone==EFI_UNSPECIFIED_TIMEZONE?0:TheTime.TimeZone)\r
+ TheTime.TimeZone\r
);\r
if (ShellStatus == SHELL_NOT_FOUND) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_LS_FILE_NOT_FOUND), gShellLevel2HiiHandle);\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_LS_FILE_NOT_FOUND), gShellLevel2HiiHandle, L"ls", FullPath); \r
} else if (ShellStatus == SHELL_INVALID_PARAMETER) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellLevel2HiiHandle);\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellLevel2HiiHandle, L"ls", FullPath); \r
} else if (ShellStatus == SHELL_ABORTED) {\r
//\r
// Ignore aborting.\r
//\r
} else if (ShellStatus != SHELL_SUCCESS) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellLevel2HiiHandle);\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellLevel2HiiHandle, L"ls", FullPath); \r
}\r
}\r
}\r