ShellPkg: Apply uncrustify changes

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737

Apply uncrustify changes to .c/.h files in the ShellPkg package

Cc: Andrew Fish <afish@apple.com>
Cc: Leif Lindholm <leif@nuviainc.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
This commit is contained in:
Michael Kubacki
2021-12-05 14:54:13 -08:00
committed by mergify[bot]
parent c411b485b6
commit 47d20b54f9
211 changed files with 30269 additions and 27004 deletions

View File

@ -20,15 +20,15 @@
@retval SHELL_SUCCESS the printout was sucessful
**/
SHELL_STATUS
PrintSingleShellAlias(
IN CONST CHAR16 *Alias
PrintSingleShellAlias (
IN CONST CHAR16 *Alias
)
{
CONST CHAR16 *ConstAliasVal;
SHELL_STATUS ShellStatus;
BOOLEAN Volatile;
CONST CHAR16 *ConstAliasVal;
SHELL_STATUS ShellStatus;
BOOLEAN Volatile;
ShellStatus = SHELL_SUCCESS;
ShellStatus = SHELL_SUCCESS;
ConstAliasVal = gEfiShellProtocol->GetAlias (Alias, &Volatile);
if (ConstAliasVal == NULL) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellLevel3HiiHandle, L"alias", Alias);
@ -37,8 +37,10 @@ PrintSingleShellAlias(
if (ShellCommandIsOnAliasList (Alias)) {
Volatile = FALSE;
}
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_ALIAS_OUTPUT), gShellLevel3HiiHandle, !Volatile ? L' ' : L'*', Alias, ConstAliasVal);
}
return ShellStatus;
}
@ -49,35 +51,38 @@ PrintSingleShellAlias(
@return any return code from GetNextVariableName except EFI_NOT_FOUND
**/
SHELL_STATUS
PrintAllShellAlias(
PrintAllShellAlias (
VOID
)
{
CONST CHAR16 *ConstAllAliasList;
CHAR16 *Alias;
CHAR16 *Walker;
CONST CHAR16 *ConstAllAliasList;
CHAR16 *Alias;
CHAR16 *Walker;
ConstAllAliasList = gEfiShellProtocol->GetAlias(NULL, NULL);
ConstAllAliasList = gEfiShellProtocol->GetAlias (NULL, NULL);
if (ConstAllAliasList == NULL) {
return (SHELL_SUCCESS);
}
Alias = AllocateZeroPool(StrSize(ConstAllAliasList));
Alias = AllocateZeroPool (StrSize (ConstAllAliasList));
if (Alias == NULL) {
return (SHELL_OUT_OF_RESOURCES);
}
Walker = (CHAR16*)ConstAllAliasList;
Walker = (CHAR16 *)ConstAllAliasList;
do {
CopyMem(Alias, Walker, StrSize(Walker));
Walker = StrStr(Alias, L";");
CopyMem (Alias, Walker, StrSize (Walker));
Walker = StrStr (Alias, L";");
if (Walker != NULL) {
Walker[0] = CHAR_NULL;
Walker = Walker + 1;
Walker = Walker + 1;
}
PrintSingleShellAlias(Alias);
PrintSingleShellAlias (Alias);
} while (Walker != NULL && Walker[0] != CHAR_NULL);
FreePool(Alias);
FreePool (Alias);
return (SHELL_SUCCESS);
}
@ -104,19 +109,19 @@ PrintAllShellAlias(
@retval SHELL_DEVICE_ERROR Command is null or the empty string.
**/
SHELL_STATUS
ShellLevel3CommandsLibSetAlias(
IN CONST CHAR16 *Command,
IN CONST CHAR16 *Alias,
IN BOOLEAN Replace,
IN BOOLEAN Volatile
ShellLevel3CommandsLibSetAlias (
IN CONST CHAR16 *Command,
IN CONST CHAR16 *Alias,
IN BOOLEAN Replace,
IN BOOLEAN Volatile
)
{
SHELL_STATUS ShellStatus;
EFI_STATUS Status;
SHELL_STATUS ShellStatus;
EFI_STATUS Status;
ShellStatus = SHELL_SUCCESS;
Status = gEfiShellProtocol->SetAlias (Command, Alias, Replace, Volatile);
if (EFI_ERROR(Status)) {
Status = gEfiShellProtocol->SetAlias (Command, Alias, Replace, Volatile);
if (EFI_ERROR (Status)) {
if (Status == EFI_ACCESS_DENIED) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_ERR_AD), gShellLevel3HiiHandle, L"alias");
ShellStatus = SHELL_ACCESS_DENIED;
@ -128,14 +133,15 @@ ShellLevel3CommandsLibSetAlias(
ShellStatus = SHELL_DEVICE_ERROR;
}
}
return ShellStatus;
}
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
{L"-v", TypeFlag},
{L"-d", TypeValue},
{NULL, TypeMax}
};
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
{ L"-v", TypeFlag },
{ L"-d", TypeValue },
{ NULL, TypeMax }
};
/**
Function for 'alias' command.
@ -150,59 +156,59 @@ ShellCommandRunAlias (
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
LIST_ENTRY *Package;
CHAR16 *ProblemParam;
SHELL_STATUS ShellStatus;
CONST CHAR16 *Param1;
CONST CHAR16 *Param2;
CONST CHAR16 *ParamStrD;
CHAR16 *CleanParam2;
BOOLEAN DeleteFlag;
BOOLEAN VolatileFlag;
EFI_STATUS Status;
LIST_ENTRY *Package;
CHAR16 *ProblemParam;
SHELL_STATUS ShellStatus;
CONST CHAR16 *Param1;
CONST CHAR16 *Param2;
CONST CHAR16 *ParamStrD;
CHAR16 *CleanParam2;
BOOLEAN DeleteFlag;
BOOLEAN VolatileFlag;
ProblemParam = NULL;
ShellStatus = SHELL_SUCCESS;
CleanParam2 = NULL;
ProblemParam = NULL;
ShellStatus = SHELL_SUCCESS;
CleanParam2 = NULL;
//
// initialize the shell lib (we must be in non-auto-init...)
//
Status = ShellInitialize();
ASSERT_EFI_ERROR(Status);
Status = ShellInitialize ();
ASSERT_EFI_ERROR (Status);
Status = CommandInit();
ASSERT_EFI_ERROR(Status);
Status = CommandInit ();
ASSERT_EFI_ERROR (Status);
//
// parse the command line
//
Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);
if (EFI_ERROR(Status)) {
if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel3HiiHandle, L"alias", ProblemParam);
FreePool(ProblemParam);
if (EFI_ERROR (Status)) {
if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel3HiiHandle, L"alias", ProblemParam);
FreePool (ProblemParam);
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
ASSERT(FALSE);
ASSERT (FALSE);
}
} else {
Param1 = ShellCommandLineGetRawValue(Package, 1);
Param2 = ShellCommandLineGetRawValue(Package, 2);
Param1 = ShellCommandLineGetRawValue (Package, 1);
Param2 = ShellCommandLineGetRawValue (Package, 2);
DeleteFlag = ShellCommandLineGetFlag (Package, L"-d");
VolatileFlag = ShellCommandLineGetFlag (Package, L"-v");
if (Param2 != NULL) {
CleanParam2 = AllocateCopyPool (StrSize(Param2), Param2);
CleanParam2 = AllocateCopyPool (StrSize (Param2), Param2);
if (CleanParam2 == NULL) {
ShellCommandLineFreeVarList (Package);
return SHELL_OUT_OF_RESOURCES;
}
if (CleanParam2[0] == L'\"' && CleanParam2[StrLen(CleanParam2)-1] == L'\"') {
CleanParam2[StrLen(CleanParam2)-1] = L'\0';
CopyMem (CleanParam2, CleanParam2 + 1, StrSize(CleanParam2) - sizeof(CleanParam2[0]));
if ((CleanParam2[0] == L'\"') && (CleanParam2[StrLen (CleanParam2)-1] == L'\"')) {
CleanParam2[StrLen (CleanParam2)-1] = L'\0';
CopyMem (CleanParam2, CleanParam2 + 1, StrSize (CleanParam2) - sizeof (CleanParam2[0]));
}
}
@ -231,7 +237,7 @@ ShellCommandRunAlias (
ShellStatus = SHELL_INVALID_PARAMETER;
}
} else if (DeleteFlag) {
if (VolatileFlag || ShellCommandLineGetCount (Package) > 1) {
if (VolatileFlag || (ShellCommandLineGetCount (Package) > 1)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel3HiiHandle, L"alias");
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
@ -269,6 +275,7 @@ ShellCommandRunAlias (
ShellStatus = SHELL_INVALID_PARAMETER;
}
}
//
// free the command line package
//

View File

@ -10,10 +10,10 @@
#include "UefiShellLevel3CommandsLib.h"
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
{L"-sfo", TypeFlag},
{NULL, TypeMax}
};
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
{ L"-sfo", TypeFlag },
{ NULL, TypeMax }
};
/**
Function for 'cls' command.
@ -40,35 +40,35 @@ ShellCommandRunCls (
//
// Initialize variables
//
ShellStatus = SHELL_SUCCESS;
ProblemParam = NULL;
Background = 0;
Foreground = 0;
ShellStatus = SHELL_SUCCESS;
ProblemParam = NULL;
Background = 0;
Foreground = 0;
//
// initialize the shell lib (we must be in non-auto-init...)
//
Status = ShellInitialize();
ASSERT_EFI_ERROR(Status);
Status = ShellInitialize ();
ASSERT_EFI_ERROR (Status);
//
// parse the command line
//
Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);
if (EFI_ERROR(Status)) {
if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel3HiiHandle, L"cls", ProblemParam);
FreePool(ProblemParam);
if (EFI_ERROR (Status)) {
if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel3HiiHandle, L"cls", ProblemParam);
FreePool (ProblemParam);
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
ASSERT(FALSE);
ASSERT (FALSE);
}
} else {
//
// check for "-?"
//
if (ShellCommandLineGetFlag(Package, L"-?")) {
ASSERT(FALSE);
if (ShellCommandLineGetFlag (Package, L"-?")) {
ASSERT (FALSE);
} else if (ShellCommandLineGetFlag (Package, L"-sfo")) {
if (ShellCommandLineGetCount (Package) > 1) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel3HiiHandle, L"cls");
@ -95,7 +95,7 @@ ShellCommandRunCls (
BackColorStr = ShellCommandLineGetRawValue (Package, 1);
ForeColorStr = ShellCommandLineGetRawValue (Package, 2);
if (BackColorStr == NULL && ForeColorStr == NULL) {
if ((BackColorStr == NULL) && (ForeColorStr == NULL)) {
//
// clear screen
//
@ -211,6 +211,7 @@ ShellCommandRunCls (
}
}
}
//
// free the command line package
//
@ -221,4 +222,3 @@ ShellCommandRunCls (
//
return (ShellStatus);
}

View File

@ -11,11 +11,11 @@
#include <Library/ShellLib.h>
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
{L"-on", TypeFlag},
{L"-off", TypeFlag},
{NULL, TypeMax}
};
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
{ L"-on", TypeFlag },
{ L"-off", TypeFlag },
{ NULL, TypeMax }
};
/**
Function for 'echo' command.
@ -30,78 +30,81 @@ ShellCommandRunEcho (
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
LIST_ENTRY *Package;
SHELL_STATUS ShellStatus;
UINTN ParamCount;
CHAR16 *ProblemParam;
UINTN Size;
CHAR16 *PrintString;
EFI_STATUS Status;
LIST_ENTRY *Package;
SHELL_STATUS ShellStatus;
UINTN ParamCount;
CHAR16 *ProblemParam;
UINTN Size;
CHAR16 *PrintString;
Size = 0;
ProblemParam = NULL;
PrintString = NULL;
ShellStatus = SHELL_SUCCESS;
Size = 0;
ProblemParam = NULL;
PrintString = NULL;
ShellStatus = SHELL_SUCCESS;
//
// initialize the shell lib (we must be in non-auto-init...)
//
Status = ShellInitialize();
ASSERT_EFI_ERROR(Status);
Status = ShellInitialize ();
ASSERT_EFI_ERROR (Status);
//
// parse the command line
//
Status = ShellCommandLineParseEx (ParamList, &Package, &ProblemParam, TRUE, TRUE);
if (EFI_ERROR(Status)) {
if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel3HiiHandle, L"echo", ProblemParam);
FreePool(ProblemParam);
if (EFI_ERROR (Status)) {
if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel3HiiHandle, L"echo", ProblemParam);
FreePool (ProblemParam);
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
ASSERT(FALSE);
ASSERT (FALSE);
}
} else {
//
// check for "-?"
//
if (ShellCommandLineGetFlag(Package, L"-?")) {
ASSERT(FALSE);
if (ShellCommandLineGetFlag (Package, L"-?")) {
ASSERT (FALSE);
}
if (ShellCommandLineGetFlag(Package, L"-on")) {
if (ShellCommandLineGetFlag (Package, L"-on")) {
//
// Turn it on
//
ShellCommandSetEchoState(TRUE);
} else if (ShellCommandLineGetFlag(Package, L"-off")) {
ShellCommandSetEchoState (TRUE);
} else if (ShellCommandLineGetFlag (Package, L"-off")) {
//
// turn it off
//
ShellCommandSetEchoState(FALSE);
} else if (ShellCommandLineGetRawValue(Package, 1) == NULL) {
ShellCommandSetEchoState (FALSE);
} else if (ShellCommandLineGetRawValue (Package, 1) == NULL) {
//
// output its current state
//
if (ShellCommandGetEchoState()) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_ECHO_ON), gShellLevel3HiiHandle);
if (ShellCommandGetEchoState ()) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_ECHO_ON), gShellLevel3HiiHandle);
} else {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_ECHO_OFF), gShellLevel3HiiHandle);
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_ECHO_OFF), gShellLevel3HiiHandle);
}
} else {
//
// print the line
//
for ( ParamCount = 1
; ShellCommandLineGetRawValue(Package, ParamCount) != NULL
; ParamCount++
) {
StrnCatGrow(&PrintString, &Size, ShellCommandLineGetRawValue(Package, ParamCount), 0);
if (ShellCommandLineGetRawValue(Package, ParamCount+1) != NULL) {
StrnCatGrow(&PrintString, &Size, L" ", 0);
; ShellCommandLineGetRawValue (Package, ParamCount) != NULL
; ParamCount++
)
{
StrnCatGrow (&PrintString, &Size, ShellCommandLineGetRawValue (Package, ParamCount), 0);
if (ShellCommandLineGetRawValue (Package, ParamCount+1) != NULL) {
StrnCatGrow (&PrintString, &Size, L" ", 0);
}
}
ShellPrintEx(-1, -1, L"%s\r\n", PrintString);
SHELL_FREE_NON_NULL(PrintString);
ShellPrintEx (-1, -1, L"%s\r\n", PrintString);
SHELL_FREE_NON_NULL (PrintString);
}
//
@ -112,4 +115,3 @@ ShellCommandRunEcho (
return (ShellStatus);
}

View File

@ -24,52 +24,52 @@ ShellCommandRunGetMtc (
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
LIST_ENTRY *Package;
CHAR16 *ProblemParam;
SHELL_STATUS ShellStatus;
UINT64 Mtc;
EFI_STATUS Status;
LIST_ENTRY *Package;
CHAR16 *ProblemParam;
SHELL_STATUS ShellStatus;
UINT64 Mtc;
ProblemParam = NULL;
ShellStatus = SHELL_SUCCESS;
ProblemParam = NULL;
ShellStatus = SHELL_SUCCESS;
//
// initialize the shell lib (we must be in non-auto-init...)
//
Status = ShellInitialize();
ASSERT_EFI_ERROR(Status);
Status = ShellInitialize ();
ASSERT_EFI_ERROR (Status);
//
// parse the command line
//
Status = ShellCommandLineParse (EmptyParamList, &Package, &ProblemParam, TRUE);
if (EFI_ERROR(Status)) {
if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel3HiiHandle, L"getmtc", ProblemParam);
FreePool(ProblemParam);
if (EFI_ERROR (Status)) {
if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel3HiiHandle, L"getmtc", ProblemParam);
FreePool (ProblemParam);
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
ASSERT(FALSE);
ASSERT (FALSE);
}
} else {
//
// check for "-?"
//
if (ShellCommandLineGetFlag(Package, L"-?")) {
ASSERT(FALSE);
} else if (ShellCommandLineGetRawValue(Package, 1) != NULL) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel3HiiHandle, L"getmtc");
if (ShellCommandLineGetFlag (Package, L"-?")) {
ASSERT (FALSE);
} else if (ShellCommandLineGetRawValue (Package, 1) != NULL) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel3HiiHandle, L"getmtc");
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
//
// Get the monotonic counter count
//
Status = gBS->GetNextMonotonicCount(&Mtc);
Status = gBS->GetNextMonotonicCount (&Mtc);
if (Status == EFI_DEVICE_ERROR) {
ShellStatus = SHELL_DEVICE_ERROR;
} else if (Status == EFI_SECURITY_VIOLATION) {
ShellStatus = SHELL_SECURITY_VIOLATION;
} else if (EFI_ERROR(Status)) {
} else if (EFI_ERROR (Status)) {
ShellStatus = SHELL_DEVICE_ERROR;
}
@ -77,9 +77,10 @@ ShellCommandRunGetMtc (
// print it...
//
if (ShellStatus == SHELL_SUCCESS) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GET_MTC_OUTPUT), gShellLevel3HiiHandle, Mtc);
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GET_MTC_OUTPUT), gShellLevel3HiiHandle, Mtc);
}
}
//
// free the command line package
//
@ -88,4 +89,3 @@ ShellCommandRunGetMtc (
return (ShellStatus);
}

View File

@ -31,64 +31,65 @@
@retval EFI_SUCCESS the operation was successful.
**/
EFI_STATUS
LexicalInsertIntoList(
IN OUT CHAR16 **DestList,
IN OUT UINTN *DestSize,
IN CONST CHAR16 *Item
LexicalInsertIntoList (
IN OUT CHAR16 **DestList,
IN OUT UINTN *DestSize,
IN CONST CHAR16 *Item
)
{
CHAR16 *NewList;
INTN LexicalMatchValue;
CHAR16 *LexicalSpot;
UINTN SizeOfAddedNameInBytes;
CHAR16 *NewList;
INTN LexicalMatchValue;
CHAR16 *LexicalSpot;
UINTN SizeOfAddedNameInBytes;
//
// If there are none, then just return with success
//
if (Item == NULL || *Item == CHAR_NULL || StrLen(Item)==0) {
if ((Item == NULL) || (*Item == CHAR_NULL) || (StrLen (Item) == 0)) {
return (EFI_SUCCESS);
}
NewList = *DestList;
SizeOfAddedNameInBytes = StrSize(Item);
NewList = ReallocatePool(*DestSize, (*DestSize) + SizeOfAddedNameInBytes, NewList);
(*DestSize) = (*DestSize) + SizeOfAddedNameInBytes;
SizeOfAddedNameInBytes = StrSize (Item);
NewList = ReallocatePool (*DestSize, (*DestSize) + SizeOfAddedNameInBytes, NewList);
(*DestSize) = (*DestSize) + SizeOfAddedNameInBytes;
//
// Find the correct spot in the list
//
for (LexicalSpot = NewList
; LexicalSpot != NULL && LexicalSpot < NewList + (*DestSize)
; LexicalSpot += StrLen(LexicalSpot) + 1
) {
; LexicalSpot != NULL && LexicalSpot < NewList + (*DestSize)
; LexicalSpot += StrLen (LexicalSpot) + 1
)
{
//
// Get Lexical Comparison Value between PrevCommand and Command list entry
//
LexicalMatchValue = gUnicodeCollation->StriColl (
gUnicodeCollation,
(CHAR16 *)LexicalSpot,
(CHAR16 *)Item
);
gUnicodeCollation,
(CHAR16 *)LexicalSpot,
(CHAR16 *)Item
);
//
// The new item goes before this one.
//
if (LexicalMatchValue > 0 || StrLen(LexicalSpot) == 0) {
if (StrLen(LexicalSpot) != 0) {
if ((LexicalMatchValue > 0) || (StrLen (LexicalSpot) == 0)) {
if (StrLen (LexicalSpot) != 0) {
//
// Move this and all other items out of the way
//
CopyMem(
LexicalSpot + (SizeOfAddedNameInBytes/sizeof(CHAR16)),
CopyMem (
LexicalSpot + (SizeOfAddedNameInBytes/sizeof (CHAR16)),
LexicalSpot,
(*DestSize) - SizeOfAddedNameInBytes - ((LexicalSpot - NewList) * sizeof(CHAR16))
(*DestSize) - SizeOfAddedNameInBytes - ((LexicalSpot - NewList) * sizeof (CHAR16))
);
}
//
// Stick this one in place
//
StrCpyS(LexicalSpot, SizeOfAddedNameInBytes/sizeof(CHAR16), Item);
StrCpyS (LexicalSpot, SizeOfAddedNameInBytes/sizeof (CHAR16), Item);
break;
}
}
@ -109,20 +110,22 @@ LexicalInsertIntoList(
@retval EFI_SUCCESS the operation was successful.
**/
EFI_STATUS
CopyListOfCommandNames(
IN OUT CHAR16 **DestList,
IN OUT UINTN *DestSize,
IN CONST COMMAND_LIST *SourceList
CopyListOfCommandNames (
IN OUT CHAR16 **DestList,
IN OUT UINTN *DestSize,
IN CONST COMMAND_LIST *SourceList
)
{
CONST COMMAND_LIST *Node;
for ( Node = (COMMAND_LIST*)GetFirstNode(&SourceList->Link)
; SourceList != NULL && !IsListEmpty(&SourceList->Link) && !IsNull(&SourceList->Link, &Node->Link)
; Node = (COMMAND_LIST*)GetNextNode(&SourceList->Link, &Node->Link)
) {
LexicalInsertIntoList(DestList, DestSize, Node->CommandString);
for ( Node = (COMMAND_LIST *)GetFirstNode (&SourceList->Link)
; SourceList != NULL && !IsListEmpty (&SourceList->Link) && !IsNull (&SourceList->Link, &Node->Link)
; Node = (COMMAND_LIST *)GetNextNode (&SourceList->Link, &Node->Link)
)
{
LexicalInsertIntoList (DestList, DestSize, Node->CommandString);
}
return (EFI_SUCCESS);
}
@ -139,9 +142,9 @@ CopyListOfCommandNames(
**/
STATIC
EFI_STATUS
CopyListOfCommandNamesWithDynamic(
IN OUT CHAR16** DestList,
IN OUT UINTN *DestSize
CopyListOfCommandNamesWithDynamic (
IN OUT CHAR16 **DestList,
IN OUT UINTN *DestSize
)
{
EFI_HANDLE *CommandHandleList;
@ -149,7 +152,7 @@ CopyListOfCommandNamesWithDynamic(
EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *DynamicCommand;
EFI_STATUS Status;
CommandHandleList = GetHandleListByProtocol(&gEfiShellDynamicCommandProtocolGuid);
CommandHandleList = GetHandleListByProtocol (&gEfiShellDynamicCommandProtocolGuid);
//
// If there are none, then just return with success
@ -163,25 +166,24 @@ CopyListOfCommandNamesWithDynamic(
//
// Append those to the list.
//
for (NextCommand = CommandHandleList ; *NextCommand != NULL && !EFI_ERROR(Status) ; NextCommand++) {
Status = gBS->HandleProtocol(
*NextCommand,
&gEfiShellDynamicCommandProtocolGuid,
(VOID **)&DynamicCommand
);
for (NextCommand = CommandHandleList; *NextCommand != NULL && !EFI_ERROR (Status); NextCommand++) {
Status = gBS->HandleProtocol (
*NextCommand,
&gEfiShellDynamicCommandProtocolGuid,
(VOID **)&DynamicCommand
);
if (EFI_ERROR(Status)) {
if (EFI_ERROR (Status)) {
continue;
}
Status = LexicalInsertIntoList(DestList, DestSize, DynamicCommand->CommandName);
Status = LexicalInsertIntoList (DestList, DestSize, DynamicCommand->CommandName);
}
SHELL_FREE_NON_NULL(CommandHandleList);
SHELL_FREE_NON_NULL (CommandHandleList);
return (Status);
}
/**
Attempt to print help from a dynamically added command.
@ -196,11 +198,11 @@ CopyListOfCommandNamesWithDynamic(
@retval EFI_DEVICE_ERROR The help data format was incorrect.
**/
EFI_STATUS
PrintDynamicCommandHelp(
PrintDynamicCommandHelp (
IN CONST CHAR16 *CommandToGetHelpOn,
IN CONST CHAR16 *SectionToGetHelpOn,
IN BOOLEAN PrintCommandText
)
)
{
EFI_STATUS Status;
BOOLEAN Found;
@ -208,11 +210,11 @@ PrintDynamicCommandHelp(
EFI_HANDLE *NextCommand;
EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *DynamicCommand;
Status = EFI_NOT_FOUND;
Found = FALSE;
Status = EFI_NOT_FOUND;
Found = FALSE;
CommandHandleList = NULL;
CommandHandleList = GetHandleListByProtocol(&gEfiShellDynamicCommandProtocolGuid);
CommandHandleList = GetHandleListByProtocol (&gEfiShellDynamicCommandProtocolGuid);
if (CommandHandleList == NULL) {
//
@ -222,13 +224,13 @@ PrintDynamicCommandHelp(
}
for (NextCommand = CommandHandleList; *NextCommand != NULL; NextCommand++) {
Status = gBS->HandleProtocol(
*NextCommand,
&gEfiShellDynamicCommandProtocolGuid,
(VOID **)&DynamicCommand
);
Status = gBS->HandleProtocol (
*NextCommand,
&gEfiShellDynamicCommandProtocolGuid,
(VOID **)&DynamicCommand
);
if (EFI_ERROR(Status)) {
if (EFI_ERROR (Status)) {
continue;
}
@ -239,36 +241,51 @@ PrintDynamicCommandHelp(
break;
}
if ((gUnicodeCollation->MetaiMatch (gUnicodeCollation, (CHAR16 *)DynamicCommand->CommandName, (CHAR16*)CommandToGetHelpOn)) ||
(gEfiShellProtocol->GetAlias (CommandToGetHelpOn, NULL) != NULL && (gUnicodeCollation->MetaiMatch (gUnicodeCollation, (CHAR16 *)DynamicCommand->CommandName, (CHAR16*)(gEfiShellProtocol->GetAlias(CommandToGetHelpOn, NULL)))))) {
if ((gUnicodeCollation->MetaiMatch (gUnicodeCollation, (CHAR16 *)DynamicCommand->CommandName, (CHAR16 *)CommandToGetHelpOn)) ||
((gEfiShellProtocol->GetAlias (CommandToGetHelpOn, NULL) != NULL) && (gUnicodeCollation->MetaiMatch (gUnicodeCollation, (CHAR16 *)DynamicCommand->CommandName, (CHAR16 *)(gEfiShellProtocol->GetAlias (CommandToGetHelpOn, NULL))))))
{
// Print as Shell Help if in ManPage format.
Status = ShellPrintHelp (DynamicCommand->CommandName, SectionToGetHelpOn,
PrintCommandText);
Status = ShellPrintHelp (
DynamicCommand->CommandName,
SectionToGetHelpOn,
PrintCommandText
);
if (Status == EFI_DEVICE_ERROR) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_HELP_INV),
gShellLevel3HiiHandle, DynamicCommand->CommandName);
} else if (EFI_ERROR(Status)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_HELP_NF),
gShellLevel3HiiHandle, DynamicCommand->CommandName);
ShellPrintHiiEx (
-1,
-1,
NULL,
STRING_TOKEN (STR_HELP_INV),
gShellLevel3HiiHandle,
DynamicCommand->CommandName
);
} else if (EFI_ERROR (Status)) {
ShellPrintHiiEx (
-1,
-1,
NULL,
STRING_TOKEN (STR_HELP_NF),
gShellLevel3HiiHandle,
DynamicCommand->CommandName
);
} else {
Found = TRUE;
}
}
}
SHELL_FREE_NON_NULL(CommandHandleList);
SHELL_FREE_NON_NULL (CommandHandleList);
return (Found ? EFI_SUCCESS : Status);
}
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
{L"-usage", TypeFlag},
{L"-section", TypeMaxValue},
{L"-verbose", TypeFlag},
{L"-v", TypeFlag},
{NULL, TypeMax}
};
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
{ L"-usage", TypeFlag },
{ L"-section", TypeMaxValue },
{ L"-verbose", TypeFlag },
{ L"-v", TypeFlag },
{ NULL, TypeMax }
};
/**
Function for 'help' command.
@ -283,90 +300,91 @@ ShellCommandRunHelp (
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
LIST_ENTRY *Package;
CHAR16 *ProblemParam;
SHELL_STATUS ShellStatus;
CHAR16 *SortedCommandList;
CONST CHAR16 *CurrentCommand;
CHAR16 *CommandToGetHelpOn;
CHAR16 *SectionToGetHelpOn;
CHAR16 *HiiString;
BOOLEAN Found;
BOOLEAN PrintCommandText;
UINTN SortedCommandListSize;
EFI_STATUS Status;
LIST_ENTRY *Package;
CHAR16 *ProblemParam;
SHELL_STATUS ShellStatus;
CHAR16 *SortedCommandList;
CONST CHAR16 *CurrentCommand;
CHAR16 *CommandToGetHelpOn;
CHAR16 *SectionToGetHelpOn;
CHAR16 *HiiString;
BOOLEAN Found;
BOOLEAN PrintCommandText;
UINTN SortedCommandListSize;
PrintCommandText = TRUE;
ProblemParam = NULL;
ShellStatus = SHELL_SUCCESS;
CommandToGetHelpOn = NULL;
SectionToGetHelpOn = NULL;
SortedCommandList = NULL;
Found = FALSE;
PrintCommandText = TRUE;
ProblemParam = NULL;
ShellStatus = SHELL_SUCCESS;
CommandToGetHelpOn = NULL;
SectionToGetHelpOn = NULL;
SortedCommandList = NULL;
Found = FALSE;
//
// initialize the shell lib (we must be in non-auto-init...)
//
Status = ShellInitialize();
ASSERT_EFI_ERROR(Status);
Status = ShellInitialize ();
ASSERT_EFI_ERROR (Status);
Status = CommandInit();
ASSERT_EFI_ERROR(Status);
Status = CommandInit ();
ASSERT_EFI_ERROR (Status);
//
// parse the command line
//
Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);
if (EFI_ERROR(Status)) {
if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel3HiiHandle, L"help", ProblemParam);
FreePool(ProblemParam);
if (EFI_ERROR (Status)) {
if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel3HiiHandle, L"help", ProblemParam);
FreePool (ProblemParam);
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
ASSERT(FALSE);
ASSERT (FALSE);
}
} else {
//
// Check for conflicting parameters.
//
if (ShellCommandLineGetFlag(Package, L"-usage")
&&ShellCommandLineGetFlag(Package, L"-section")
&&(ShellCommandLineGetFlag(Package, L"-verbose") || ShellCommandLineGetFlag(Package, L"-v"))
){
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_CON), gShellLevel3HiiHandle, L"help");
if ( ShellCommandLineGetFlag (Package, L"-usage")
&& ShellCommandLineGetFlag (Package, L"-section")
&& (ShellCommandLineGetFlag (Package, L"-verbose") || ShellCommandLineGetFlag (Package, L"-v"))
)
{
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_CON), gShellLevel3HiiHandle, L"help");
ShellStatus = SHELL_INVALID_PARAMETER;
} else if (ShellCommandLineGetRawValue(Package, 2) != NULL) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel3HiiHandle, L"help");
} else if (ShellCommandLineGetRawValue (Package, 2) != NULL) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel3HiiHandle, L"help");
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
//
// Get the command name we are getting help on
//
ASSERT(CommandToGetHelpOn == NULL);
StrnCatGrow(&CommandToGetHelpOn, NULL, ShellCommandLineGetRawValue(Package, 1), 0);
if (CommandToGetHelpOn == NULL && ShellCommandLineGetFlag(Package, L"-?")) {
ASSERT (CommandToGetHelpOn == NULL);
StrnCatGrow (&CommandToGetHelpOn, NULL, ShellCommandLineGetRawValue (Package, 1), 0);
if ((CommandToGetHelpOn == NULL) && ShellCommandLineGetFlag (Package, L"-?")) {
//
// If we dont have a command and we got a simple -?
// we are looking for help on help command.
//
StrnCatGrow(&CommandToGetHelpOn, NULL, L"help", 0);
StrnCatGrow (&CommandToGetHelpOn, NULL, L"help", 0);
}
if (CommandToGetHelpOn == NULL) {
StrnCatGrow(&CommandToGetHelpOn, NULL, L"*", 0);
ASSERT(SectionToGetHelpOn == NULL);
StrnCatGrow(&SectionToGetHelpOn, NULL, L"NAME", 0);
StrnCatGrow (&CommandToGetHelpOn, NULL, L"*", 0);
ASSERT (SectionToGetHelpOn == NULL);
StrnCatGrow (&SectionToGetHelpOn, NULL, L"NAME", 0);
} else {
PrintCommandText = FALSE;
ASSERT(SectionToGetHelpOn == NULL);
ASSERT (SectionToGetHelpOn == NULL);
//
// Get the section name for the given command name
//
if (ShellCommandLineGetFlag(Package, L"-section")) {
StrnCatGrow(&SectionToGetHelpOn, NULL, ShellCommandLineGetValue(Package, L"-section"), 0);
} else if (ShellCommandLineGetFlag(Package, L"-usage")) {
StrnCatGrow(&SectionToGetHelpOn, NULL, L"NAME,SYNOPSIS", 0);
} else if (ShellCommandLineGetFlag(Package, L"-verbose") || ShellCommandLineGetFlag(Package, L"-v")) {
if (ShellCommandLineGetFlag (Package, L"-section")) {
StrnCatGrow (&SectionToGetHelpOn, NULL, ShellCommandLineGetValue (Package, L"-section"), 0);
} else if (ShellCommandLineGetFlag (Package, L"-usage")) {
StrnCatGrow (&SectionToGetHelpOn, NULL, L"NAME,SYNOPSIS", 0);
} else if (ShellCommandLineGetFlag (Package, L"-verbose") || ShellCommandLineGetFlag (Package, L"-v")) {
} else {
//
// The output of help <command> will display NAME, SYNOPSIS, OPTIONS, DESCRIPTION, and EXAMPLES sections.
@ -375,25 +393,26 @@ ShellCommandRunHelp (
}
}
if (gUnicodeCollation->StriColl(gUnicodeCollation, CommandToGetHelpOn, L"special") == 0) {
if (gUnicodeCollation->StriColl (gUnicodeCollation, CommandToGetHelpOn, L"special") == 0) {
//
// we need info on the special characters
//
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_HELP_SC_HEADER), gShellLevel3HiiHandle);
HiiString = HiiGetString(gShellLevel3HiiHandle, STRING_TOKEN(STR_HELP_SC_DATA), NULL);
ShellPrintEx(-1, -1, L"%s", HiiString);
FreePool(HiiString);
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_HELP_SC_HEADER), gShellLevel3HiiHandle);
HiiString = HiiGetString (gShellLevel3HiiHandle, STRING_TOKEN (STR_HELP_SC_DATA), NULL);
ShellPrintEx (-1, -1, L"%s", HiiString);
FreePool (HiiString);
Found = TRUE;
} else {
SortedCommandList = NULL;
SortedCommandList = NULL;
SortedCommandListSize = 0;
CopyListOfCommandNames(&SortedCommandList, &SortedCommandListSize, ShellCommandGetCommandList(TRUE));
CopyListOfCommandNamesWithDynamic(&SortedCommandList, &SortedCommandListSize);
CopyListOfCommandNames (&SortedCommandList, &SortedCommandListSize, ShellCommandGetCommandList (TRUE));
CopyListOfCommandNamesWithDynamic (&SortedCommandList, &SortedCommandListSize);
for (CurrentCommand = SortedCommandList
; CurrentCommand != NULL && CurrentCommand < SortedCommandList + SortedCommandListSize/sizeof(CHAR16) && *CurrentCommand != CHAR_NULL
; CurrentCommand += StrLen(CurrentCommand) + 1
) {
; CurrentCommand != NULL && CurrentCommand < SortedCommandList + SortedCommandListSize/sizeof (CHAR16) && *CurrentCommand != CHAR_NULL
; CurrentCommand += StrLen (CurrentCommand) + 1
)
{
//
// Checking execution break flag when print multiple command help information.
//
@ -401,24 +420,26 @@ ShellCommandRunHelp (
break;
}
if ((gUnicodeCollation->MetaiMatch(gUnicodeCollation, (CHAR16*)CurrentCommand, CommandToGetHelpOn)) ||
(gEfiShellProtocol->GetAlias(CommandToGetHelpOn, NULL) != NULL && (gUnicodeCollation->MetaiMatch(gUnicodeCollation, (CHAR16*)CurrentCommand, (CHAR16*)(gEfiShellProtocol->GetAlias(CommandToGetHelpOn, NULL)))))) {
if ((gUnicodeCollation->MetaiMatch (gUnicodeCollation, (CHAR16 *)CurrentCommand, CommandToGetHelpOn)) ||
((gEfiShellProtocol->GetAlias (CommandToGetHelpOn, NULL) != NULL) && (gUnicodeCollation->MetaiMatch (gUnicodeCollation, (CHAR16 *)CurrentCommand, (CHAR16 *)(gEfiShellProtocol->GetAlias (CommandToGetHelpOn, NULL))))))
{
//
// We have a command to look for help on.
//
Status = ShellPrintHelp(CurrentCommand, SectionToGetHelpOn, PrintCommandText);
if (EFI_ERROR(Status)) {
Status = ShellPrintHelp (CurrentCommand, SectionToGetHelpOn, PrintCommandText);
if (EFI_ERROR (Status)) {
//
// now try to match against the dynamic command list and print help
//
Status = PrintDynamicCommandHelp (CurrentCommand, SectionToGetHelpOn, PrintCommandText);
}
if (Status == EFI_DEVICE_ERROR) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_HELP_INV), gShellLevel3HiiHandle, CurrentCommand);
} else if (EFI_ERROR(Status)) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_HELP_NF), gShellLevel3HiiHandle, CurrentCommand);
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_HELP_INV), gShellLevel3HiiHandle, CurrentCommand);
} else if (EFI_ERROR (Status)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_HELP_NF), gShellLevel3HiiHandle, CurrentCommand);
} else {
Found = TRUE;
Found = TRUE;
}
}
}
@ -427,11 +448,11 @@ ShellCommandRunHelp (
// Search the .man file for Shell applications (Shell external commands).
//
if (!Found) {
Status = ShellPrintHelp(CommandToGetHelpOn, SectionToGetHelpOn, FALSE);
Status = ShellPrintHelp (CommandToGetHelpOn, SectionToGetHelpOn, FALSE);
if (Status == EFI_DEVICE_ERROR) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_HELP_INV), gShellLevel3HiiHandle, CommandToGetHelpOn);
} else if (EFI_ERROR(Status)) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_HELP_NF), gShellLevel3HiiHandle, CommandToGetHelpOn);
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_HELP_INV), gShellLevel3HiiHandle, CommandToGetHelpOn);
} else if (EFI_ERROR (Status)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_HELP_NF), gShellLevel3HiiHandle, CommandToGetHelpOn);
} else {
Found = TRUE;
}
@ -449,20 +470,23 @@ ShellCommandRunHelp (
}
}
if (CommandToGetHelpOn != NULL && StrCmp(CommandToGetHelpOn, L"*") == 0){
if ((CommandToGetHelpOn != NULL) && (StrCmp (CommandToGetHelpOn, L"*") == 0)) {
//
// If '*' then the command entered was 'Help' without qualifiers, This footer
// provides additional info on help switches
//
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_HELP_FOOTER), gShellLevel3HiiHandle);
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_HELP_FOOTER), gShellLevel3HiiHandle);
}
if (CommandToGetHelpOn != NULL) {
FreePool(CommandToGetHelpOn);
FreePool (CommandToGetHelpOn);
}
if (SectionToGetHelpOn != NULL) {
FreePool(SectionToGetHelpOn);
FreePool (SectionToGetHelpOn);
}
SHELL_FREE_NON_NULL(SortedCommandList);
SHELL_FREE_NON_NULL (SortedCommandList);
return (ShellStatus);
}

View File

@ -9,10 +9,10 @@
#include "UefiShellLevel3CommandsLib.h"
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
{L"-q", TypeFlag},
{NULL, TypeMax}
};
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
{ L"-q", TypeFlag },
{ NULL, TypeMax }
};
/**
Function for 'pause' command.
@ -27,27 +27,27 @@ ShellCommandRunPause (
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
LIST_ENTRY *Package;
CHAR16 *ProblemParam;
SHELL_STATUS ShellStatus;
SHELL_PROMPT_RESPONSE *Resp;
EFI_STATUS Status;
LIST_ENTRY *Package;
CHAR16 *ProblemParam;
SHELL_STATUS ShellStatus;
SHELL_PROMPT_RESPONSE *Resp;
ProblemParam = NULL;
ShellStatus = SHELL_SUCCESS;
Resp = NULL;
ProblemParam = NULL;
ShellStatus = SHELL_SUCCESS;
Resp = NULL;
//
// initialize the shell lib (we must be in non-auto-init...)
//
Status = ShellInitialize();
ASSERT_EFI_ERROR(Status);
Status = ShellInitialize ();
ASSERT_EFI_ERROR (Status);
Status = CommandInit();
ASSERT_EFI_ERROR(Status);
Status = CommandInit ();
ASSERT_EFI_ERROR (Status);
if (!gEfiShellProtocol->BatchIsActive()) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_NO_SCRIPT), gShellLevel3HiiHandle, L"pause");
if (!gEfiShellProtocol->BatchIsActive ()) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_NO_SCRIPT), gShellLevel3HiiHandle, L"pause");
return (SHELL_UNSUPPORTED);
}
@ -55,37 +55,37 @@ ShellCommandRunPause (
// parse the command line
//
Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);
if (EFI_ERROR(Status)) {
if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel3HiiHandle, L"pause", ProblemParam);
FreePool(ProblemParam);
if (EFI_ERROR (Status)) {
if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel3HiiHandle, L"pause", ProblemParam);
FreePool (ProblemParam);
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
ASSERT(FALSE);
ASSERT (FALSE);
}
} else {
//
// check for "-?"
//
if (ShellCommandLineGetFlag(Package, L"-?")) {
ASSERT(FALSE);
} else if (ShellCommandLineGetRawValue(Package, 1) != NULL) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel3HiiHandle, L"pause");
if (ShellCommandLineGetFlag (Package, L"-?")) {
ASSERT (FALSE);
} else if (ShellCommandLineGetRawValue (Package, 1) != NULL) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel3HiiHandle, L"pause");
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
if (!ShellCommandLineGetFlag(Package, L"-q")) {
Status = ShellPromptForResponseHii(ShellPromptResponseTypeQuitContinue, STRING_TOKEN (STR_PAUSE_PROMPT), gShellLevel3HiiHandle, (VOID**)&Resp);
if (!ShellCommandLineGetFlag (Package, L"-q")) {
Status = ShellPromptForResponseHii (ShellPromptResponseTypeQuitContinue, STRING_TOKEN (STR_PAUSE_PROMPT), gShellLevel3HiiHandle, (VOID **)&Resp);
} else {
Status = ShellPromptForResponse(ShellPromptResponseTypeQuitContinue, NULL, (VOID**)&Resp);
Status = ShellPromptForResponse (ShellPromptResponseTypeQuitContinue, NULL, (VOID **)&Resp);
}
if (EFI_ERROR(Status) || Resp == NULL || *Resp == ShellPromptResponseQuit) {
ShellCommandRegisterExit(TRUE, 0);
if (EFI_ERROR (Status) || (Resp == NULL) || (*Resp == ShellPromptResponseQuit)) {
ShellCommandRegisterExit (TRUE, 0);
ShellStatus = SHELL_ABORTED;
}
if (Resp != NULL) {
FreePool(Resp);
FreePool (Resp);
}
}
@ -95,7 +95,5 @@ ShellCommandRunPause (
ShellCommandLineFreeVarList (Package);
}
return (ShellStatus);
}

View File

@ -21,27 +21,28 @@
**/
EFI_STATUS
TouchFileByHandle (
IN SHELL_FILE_HANDLE Handle
IN SHELL_FILE_HANDLE Handle
)
{
EFI_STATUS Status;
EFI_FILE_INFO *FileInfo;
EFI_STATUS Status;
EFI_FILE_INFO *FileInfo;
FileInfo = gEfiShellProtocol->GetFileInfo(Handle);
if ((FileInfo->Attribute & EFI_FILE_READ_ONLY) != 0){
FileInfo = gEfiShellProtocol->GetFileInfo (Handle);
if ((FileInfo->Attribute & EFI_FILE_READ_ONLY) != 0) {
return (EFI_ACCESS_DENIED);
}
Status = gRT->GetTime(&FileInfo->ModificationTime, NULL);
if (EFI_ERROR(Status)) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel3HiiHandle, L"gRT->GetTime", Status);
Status = gRT->GetTime (&FileInfo->ModificationTime, NULL);
if (EFI_ERROR (Status)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel3HiiHandle, L"gRT->GetTime", Status);
return (SHELL_DEVICE_ERROR);
}
CopyMem(&FileInfo->LastAccessTime, &FileInfo->ModificationTime, sizeof(EFI_TIME));
CopyMem (&FileInfo->LastAccessTime, &FileInfo->ModificationTime, sizeof (EFI_TIME));
Status = gEfiShellProtocol->SetFileInfo(Handle, FileInfo);
Status = gEfiShellProtocol->SetFileInfo (Handle, FileInfo);
FreePool(FileInfo);
FreePool (FileInfo);
return (Status);
}
@ -65,24 +66,25 @@ DoTouchByHandle (
IN BOOLEAN Rec
)
{
EFI_STATUS Status;
EFI_SHELL_FILE_INFO *FileList;
EFI_SHELL_FILE_INFO *Walker;
CHAR16 *TempSpot;
EFI_STATUS Status;
EFI_SHELL_FILE_INFO *FileList;
EFI_SHELL_FILE_INFO *Walker;
CHAR16 *TempSpot;
Status = EFI_SUCCESS;
FileList = NULL;
Walker = NULL;
Status = EFI_SUCCESS;
FileList = NULL;
Walker = NULL;
if (FS == NULL) {
FS = StrnCatGrow(&FS, NULL, Name, 0);
FS = StrnCatGrow (&FS, NULL, Name, 0);
if (FS != NULL) {
TempSpot = StrStr(FS, L"\\");
TempSpot = StrStr (FS, L"\\");
if (TempSpot != NULL) {
*TempSpot = CHAR_NULL;
}
}
}
if (FS == NULL) {
return (EFI_INVALID_PARAMETER);
}
@ -90,43 +92,45 @@ DoTouchByHandle (
//
// do it
//
Status = TouchFileByHandle(Handle);
if (EFI_ERROR(Status)) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellLevel3HiiHandle, L"touch", Name);
Status = TouchFileByHandle (Handle);
if (EFI_ERROR (Status)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellLevel3HiiHandle, L"touch", Name);
return (Status);
}
//
// if it's a directory recurse...
//
if (FileHandleIsDirectory(Handle) == EFI_SUCCESS && Rec) {
if ((FileHandleIsDirectory (Handle) == EFI_SUCCESS) && Rec) {
//
// get each file under this directory
//
if (EFI_ERROR(gEfiShellProtocol->FindFilesInDir(Handle, &FileList))) {
if (EFI_ERROR (gEfiShellProtocol->FindFilesInDir (Handle, &FileList))) {
Status = EFI_INVALID_PARAMETER;
}
//
// recurse on each
//
for (Walker = (EFI_SHELL_FILE_INFO *)GetFirstNode(&FileList->Link)
; FileList != NULL && !IsNull(&FileList->Link, &Walker->Link) && !EFI_ERROR(Status)
; Walker = (EFI_SHELL_FILE_INFO *)GetNextNode(&FileList->Link, &Walker->Link)
){
if ( (StrCmp(Walker->FileName, L".") != 0)
&& (StrCmp(Walker->FileName, L"..") != 0)
){
for (Walker = (EFI_SHELL_FILE_INFO *)GetFirstNode (&FileList->Link)
; FileList != NULL && !IsNull (&FileList->Link, &Walker->Link) && !EFI_ERROR (Status)
; Walker = (EFI_SHELL_FILE_INFO *)GetNextNode (&FileList->Link, &Walker->Link)
)
{
if ( (StrCmp (Walker->FileName, L".") != 0)
&& (StrCmp (Walker->FileName, L"..") != 0)
)
{
//
// Open the file since we need that handle.
//
Status = gEfiShellProtocol->OpenFileByName (Walker->FullName, &Walker->Handle, EFI_FILE_MODE_READ|EFI_FILE_MODE_WRITE);
if (EFI_ERROR(Status)) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellLevel3HiiHandle, L"touch", Walker->FullName);
if (EFI_ERROR (Status)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellLevel3HiiHandle, L"touch", Walker->FullName);
Status = EFI_ACCESS_DENIED;
} else {
Status = DoTouchByHandle(Walker->FullName, FS, Walker->Handle, TRUE);
gEfiShellProtocol->CloseFile(Walker->Handle);
Status = DoTouchByHandle (Walker->FullName, FS, Walker->Handle, TRUE);
gEfiShellProtocol->CloseFile (Walker->Handle);
Walker->Handle = NULL;
}
}
@ -135,7 +139,7 @@ DoTouchByHandle (
//
// free stuff
//
if (FileList != NULL && EFI_ERROR(gEfiShellProtocol->FreeFileList(&FileList))) {
if ((FileList != NULL) && EFI_ERROR (gEfiShellProtocol->FreeFileList (&FileList))) {
Status = EFI_INVALID_PARAMETER;
}
}
@ -143,10 +147,10 @@ DoTouchByHandle (
return (Status);
}
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
{L"-r", TypeFlag},
{NULL, TypeMax}
};
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
{ L"-r", TypeFlag },
{ NULL, TypeMax }
};
/**
Function for 'touch' command.
@ -161,69 +165,72 @@ ShellCommandRunTouch (
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
LIST_ENTRY *Package;
CHAR16 *ProblemParam;
CONST CHAR16 *Param;
SHELL_STATUS ShellStatus;
UINTN ParamCount;
EFI_SHELL_FILE_INFO *FileList;
EFI_SHELL_FILE_INFO *Node;
EFI_STATUS Status;
LIST_ENTRY *Package;
CHAR16 *ProblemParam;
CONST CHAR16 *Param;
SHELL_STATUS ShellStatus;
UINTN ParamCount;
EFI_SHELL_FILE_INFO *FileList;
EFI_SHELL_FILE_INFO *Node;
ProblemParam = NULL;
ShellStatus = SHELL_SUCCESS;
ParamCount = 0;
FileList = NULL;
ProblemParam = NULL;
ShellStatus = SHELL_SUCCESS;
ParamCount = 0;
FileList = NULL;
//
// initialize the shell lib (we must be in non-auto-init...)
//
Status = ShellInitialize();
ASSERT_EFI_ERROR(Status);
Status = ShellInitialize ();
ASSERT_EFI_ERROR (Status);
Status = CommandInit();
ASSERT_EFI_ERROR(Status);
Status = CommandInit ();
ASSERT_EFI_ERROR (Status);
//
// parse the command line
//
Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);
if (EFI_ERROR(Status)) {
if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel3HiiHandle, L"touch", ProblemParam);
FreePool(ProblemParam);
if (EFI_ERROR (Status)) {
if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel3HiiHandle, L"touch", ProblemParam);
FreePool (ProblemParam);
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
ASSERT(FALSE);
ASSERT (FALSE);
}
} else {
//
// check for "-?"
//
if (ShellCommandLineGetFlag(Package, L"-?")) {
ASSERT(FALSE);
if (ShellCommandLineGetFlag (Package, L"-?")) {
ASSERT (FALSE);
}
if (ShellCommandLineGetRawValue(Package, 1) == NULL) {
if (ShellCommandLineGetRawValue (Package, 1) == NULL) {
//
// we insufficient parameters
//
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellLevel3HiiHandle, L"touch");
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellLevel3HiiHandle, L"touch");
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
//
// get a list with each file specified by parameters
// if parameter is a directory then add all the files below it to the list
//
for ( ParamCount = 1, Param = ShellCommandLineGetRawValue(Package, ParamCount)
; Param != NULL
; ParamCount++, Param = ShellCommandLineGetRawValue(Package, ParamCount)
){
Status = ShellOpenFileMetaArg((CHAR16*)Param, EFI_FILE_MODE_READ|EFI_FILE_MODE_WRITE, &FileList);
if (EFI_ERROR(Status)) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellLevel3HiiHandle, L"touch", (CHAR16*)Param);
for ( ParamCount = 1, Param = ShellCommandLineGetRawValue (Package, ParamCount)
; Param != NULL
; ParamCount++, Param = ShellCommandLineGetRawValue (Package, ParamCount)
)
{
Status = ShellOpenFileMetaArg ((CHAR16 *)Param, EFI_FILE_MODE_READ|EFI_FILE_MODE_WRITE, &FileList);
if (EFI_ERROR (Status)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellLevel3HiiHandle, L"touch", (CHAR16 *)Param);
ShellStatus = SHELL_NOT_FOUND;
break;
}
//
// make sure we completed the param parsing sucessfully...
// Also make sure that any previous action was sucessful
@ -232,41 +239,44 @@ ShellCommandRunTouch (
//
// check that we have at least 1 file
//
if (FileList == NULL || IsListEmpty(&FileList->Link)) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_NF), gShellLevel3HiiHandle, L"touch", Param);
if ((FileList == NULL) || IsListEmpty (&FileList->Link)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_NF), gShellLevel3HiiHandle, L"touch", Param);
continue;
} else {
//
// loop through the list and make sure we are not aborting...
//
for ( Node = (EFI_SHELL_FILE_INFO*)GetFirstNode(&FileList->Link)
; !IsNull(&FileList->Link, &Node->Link) && !ShellGetExecutionBreakFlag()
; Node = (EFI_SHELL_FILE_INFO*)GetNextNode(&FileList->Link, &Node->Link)
){
for ( Node = (EFI_SHELL_FILE_INFO *)GetFirstNode (&FileList->Link)
; !IsNull (&FileList->Link, &Node->Link) && !ShellGetExecutionBreakFlag ()
; Node = (EFI_SHELL_FILE_INFO *)GetNextNode (&FileList->Link, &Node->Link)
)
{
//
// make sure the file opened ok
//
if (EFI_ERROR(Node->Status)){
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellLevel3HiiHandle, L"touch", Node->FileName);
if (EFI_ERROR (Node->Status)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellLevel3HiiHandle, L"touch", Node->FileName);
ShellStatus = SHELL_NOT_FOUND;
continue;
}
Status = DoTouchByHandle(Node->FullName, NULL, Node->Handle, ShellCommandLineGetFlag(Package, L"-r"));
if (EFI_ERROR(Status) && Status != EFI_ACCESS_DENIED) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellLevel3HiiHandle, L"touch", Node->FileName);
Status = DoTouchByHandle (Node->FullName, NULL, Node->Handle, ShellCommandLineGetFlag (Package, L"-r"));
if (EFI_ERROR (Status) && (Status != EFI_ACCESS_DENIED)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellLevel3HiiHandle, L"touch", Node->FileName);
ShellStatus = SHELL_NOT_FOUND;
}
}
}
}
//
// Free the fileList
//
if (FileList != NULL && !IsListEmpty(&FileList->Link)) {
Status = ShellCloseFileMetaArg(&FileList);
ASSERT_EFI_ERROR(Status);
if ((FileList != NULL) && !IsListEmpty (&FileList->Link)) {
Status = ShellCloseFileMetaArg (&FileList);
ASSERT_EFI_ERROR (Status);
}
FileList = NULL;
}
}
@ -277,10 +287,9 @@ ShellCommandRunTouch (
ShellCommandLineFreeVarList (Package);
}
if (ShellGetExecutionBreakFlag()) {
if (ShellGetExecutionBreakFlag ()) {
return (SHELL_ABORTED);
}
return (ShellStatus);
}

View File

@ -25,9 +25,9 @@
**/
EFI_STATUS
TypeFileByHandle (
IN SHELL_FILE_HANDLE Handle,
IN BOOLEAN Ascii,
IN BOOLEAN UCS2
IN SHELL_FILE_HANDLE Handle,
IN BOOLEAN Ascii,
IN BOOLEAN UCS2
)
{
UINTN ReadSize;
@ -39,25 +39,25 @@ TypeFileByHandle (
CHAR16 AsciiChar;
CHAR16 Ucs2Char;
ReadSize = PcdGet32(PcdShellFileOperationSize);
AllocatedBuffer = AllocateZeroPool(ReadSize);
ReadSize = PcdGet32 (PcdShellFileOperationSize);
AllocatedBuffer = AllocateZeroPool (ReadSize);
if (AllocatedBuffer == NULL) {
return (EFI_OUT_OF_RESOURCES);
}
Status = ShellSetFilePosition(Handle, 0);
ASSERT_EFI_ERROR(Status);
Status = ShellSetFilePosition (Handle, 0);
ASSERT_EFI_ERROR (Status);
while (ReadSize == ((UINTN)PcdGet32(PcdShellFileOperationSize))) {
while (ReadSize == ((UINTN)PcdGet32 (PcdShellFileOperationSize))) {
Buffer = AllocatedBuffer;
ZeroMem(Buffer, ReadSize);
Status = ShellReadFile(Handle, &ReadSize, Buffer);
if (EFI_ERROR(Status)){
ZeroMem (Buffer, ReadSize);
Status = ShellReadFile (Handle, &ReadSize, Buffer);
if (EFI_ERROR (Status)) {
break;
}
if (!(Ascii|UCS2)) {
if (*(UINT16*)Buffer == gUnicodeFileTag) {
if (*(UINT16 *)Buffer == gUnicodeFileTag) {
UCS2 = TRUE;
} else {
Ascii = TRUE;
@ -66,20 +66,21 @@ TypeFileByHandle (
if (Ascii) {
LoopSize = ReadSize;
for (LoopVar = 0 ; LoopVar < LoopSize ; LoopVar++) {
for (LoopVar = 0; LoopVar < LoopSize; LoopVar++) {
//
// The valid range of ASCII characters is 0x20-0x7E.
// Display "." when there is an invalid character.
//
AsciiChar = CHAR_NULL;
AsciiChar = ((CHAR8*)Buffer)[LoopVar];
if (AsciiChar == '\r' || AsciiChar == '\n') {
AsciiChar = ((CHAR8 *)Buffer)[LoopVar];
if ((AsciiChar == '\r') || (AsciiChar == '\n')) {
//
// Allow Line Feed (LF) (0xA) & Carriage Return (CR) (0xD)
// characters to be displayed as is.
//
if ((AsciiChar == '\n' && LoopVar == 0) ||
(AsciiChar == '\n' && ((CHAR8*)Buffer)[LoopVar-1] != '\r')) {
if (((AsciiChar == '\n') && (LoopVar == 0)) ||
((AsciiChar == '\n') && (((CHAR8 *)Buffer)[LoopVar-1] != '\r')))
{
//
// In case file begin with single line Feed or Line Feed (0xA) is
// encountered & Carriage Return (0xD) was not previous character,
@ -93,37 +94,39 @@ TypeFileByHandle (
//
// For all other characters which are not printable, display '.'
//
if (AsciiChar < 0x20 || AsciiChar >= 0x7F) {
if ((AsciiChar < 0x20) || (AsciiChar >= 0x7F)) {
AsciiChar = '.';
}
}
ShellPrintEx (-1, -1, L"%c", AsciiChar);
}
} else {
if (*(UINT16*)Buffer == gUnicodeFileTag) {
if (*(UINT16 *)Buffer == gUnicodeFileTag) {
//
// For unicode files, skip displaying the byte order marker.
//
Buffer = ((UINT16*)Buffer) + 1;
Buffer = ((UINT16 *)Buffer) + 1;
LoopSize = (ReadSize / (sizeof (CHAR16))) - 1;
} else {
LoopSize = ReadSize / (sizeof (CHAR16));
}
for (LoopVar = 0 ; LoopVar < LoopSize ; LoopVar++) {
for (LoopVar = 0; LoopVar < LoopSize; LoopVar++) {
//
// An invalid range of characters is 0x0-0x1F.
// Display "." when there is an invalid character.
//
Ucs2Char = CHAR_NULL;
Ucs2Char = ((CHAR16*)Buffer)[LoopVar];
if (Ucs2Char == '\r' || Ucs2Char == '\n') {
Ucs2Char = ((CHAR16 *)Buffer)[LoopVar];
if ((Ucs2Char == '\r') || (Ucs2Char == '\n')) {
//
// Allow Line Feed (LF) (0xA) & Carriage Return (CR) (0xD)
// characters to be displayed as is.
//
if ((Ucs2Char == '\n' && LoopVar == 0) ||
(Ucs2Char == '\n' && ((CHAR16*)Buffer)[LoopVar-1] != '\r')) {
if (((Ucs2Char == '\n') && (LoopVar == 0)) ||
((Ucs2Char == '\n') && (((CHAR16 *)Buffer)[LoopVar-1] != '\r')))
{
//
// In case file begin with single line Feed or Line Feed (0xA) is
// encountered & Carriage Return (0xD) was not previous character,
@ -133,31 +136,32 @@ TypeFileByHandle (
ShellPrintEx (-1, -1, L"\r\n");
continue;
}
}
else if (Ucs2Char < 0x20) {
} else if (Ucs2Char < 0x20) {
//
// For all other characters which are not printable, display '.'
//
Ucs2Char = L'.';
}
ShellPrintEx (-1, -1, L"%c", Ucs2Char);
}
}
if (ShellGetExecutionBreakFlag()) {
if (ShellGetExecutionBreakFlag ()) {
break;
}
}
FreePool (AllocatedBuffer);
ShellPrintEx (-1, -1, L"\r\n");
return (Status);
}
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
{L"-a", TypeFlag},
{L"-u", TypeFlag},
{NULL, TypeMax}
};
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
{ L"-a", TypeFlag },
{ L"-u", TypeFlag },
{ NULL, TypeMax }
};
/**
Function for 'type' command.
@ -172,77 +176,80 @@ ShellCommandRunType (
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
LIST_ENTRY *Package;
CHAR16 *ProblemParam;
CONST CHAR16 *Param;
SHELL_STATUS ShellStatus;
UINTN ParamCount;
EFI_SHELL_FILE_INFO *FileList;
EFI_SHELL_FILE_INFO *Node;
BOOLEAN AsciiMode;
BOOLEAN UnicodeMode;
EFI_STATUS Status;
LIST_ENTRY *Package;
CHAR16 *ProblemParam;
CONST CHAR16 *Param;
SHELL_STATUS ShellStatus;
UINTN ParamCount;
EFI_SHELL_FILE_INFO *FileList;
EFI_SHELL_FILE_INFO *Node;
BOOLEAN AsciiMode;
BOOLEAN UnicodeMode;
ProblemParam = NULL;
ShellStatus = SHELL_SUCCESS;
ParamCount = 0;
FileList = NULL;
ProblemParam = NULL;
ShellStatus = SHELL_SUCCESS;
ParamCount = 0;
FileList = NULL;
//
// initialize the shell lib (we must be in non-auto-init...)
//
Status = ShellInitialize();
ASSERT_EFI_ERROR(Status);
Status = ShellInitialize ();
ASSERT_EFI_ERROR (Status);
Status = CommandInit();
ASSERT_EFI_ERROR(Status);
Status = CommandInit ();
ASSERT_EFI_ERROR (Status);
//
// parse the command line
//
Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);
if (EFI_ERROR(Status)) {
if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel3HiiHandle, L"type", ProblemParam);
FreePool(ProblemParam);
if (EFI_ERROR (Status)) {
if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel3HiiHandle, L"type", ProblemParam);
FreePool (ProblemParam);
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
ASSERT(FALSE);
ASSERT (FALSE);
}
} else {
//
// check for "-?"
//
if (ShellCommandLineGetFlag(Package, L"-?")) {
ASSERT(FALSE);
if (ShellCommandLineGetFlag (Package, L"-?")) {
ASSERT (FALSE);
}
AsciiMode = ShellCommandLineGetFlag(Package, L"-a");
UnicodeMode = ShellCommandLineGetFlag(Package, L"-u");
AsciiMode = ShellCommandLineGetFlag (Package, L"-a");
UnicodeMode = ShellCommandLineGetFlag (Package, L"-u");
if (AsciiMode && UnicodeMode) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellLevel3HiiHandle, L"type", L"-a & -u");
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellLevel3HiiHandle, L"type", L"-a & -u");
ShellStatus = SHELL_INVALID_PARAMETER;
} else if (ShellCommandLineGetRawValue(Package, 1) == NULL) {
} else if (ShellCommandLineGetRawValue (Package, 1) == NULL) {
//
// we insufficient parameters
//
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellLevel3HiiHandle, L"type");
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellLevel3HiiHandle, L"type");
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
//
// get a list with each file specified by parameters
// if parameter is a directory then add all the files below it to the list
//
for ( ParamCount = 1, Param = ShellCommandLineGetRawValue(Package, ParamCount)
; Param != NULL
; ParamCount++, Param = ShellCommandLineGetRawValue(Package, ParamCount)
){
Status = ShellOpenFileMetaArg((CHAR16*)Param, EFI_FILE_MODE_READ, &FileList);
if (EFI_ERROR(Status)) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellLevel3HiiHandle, L"type", (CHAR16*)Param);
for ( ParamCount = 1, Param = ShellCommandLineGetRawValue (Package, ParamCount)
; Param != NULL
; ParamCount++, Param = ShellCommandLineGetRawValue (Package, ParamCount)
)
{
Status = ShellOpenFileMetaArg ((CHAR16 *)Param, EFI_FILE_MODE_READ, &FileList);
if (EFI_ERROR (Status)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellLevel3HiiHandle, L"type", (CHAR16 *)Param);
ShellStatus = SHELL_NOT_FOUND;
break;
}
//
// make sure we completed the param parsing sucessfully...
// Also make sure that any previous action was sucessful
@ -251,27 +258,27 @@ ShellCommandRunType (
//
// check that we have at least 1 file
//
if (FileList == NULL || IsListEmpty(&FileList->Link)) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_NF), gShellLevel3HiiHandle, L"type", Param);
if ((FileList == NULL) || IsListEmpty (&FileList->Link)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_NF), gShellLevel3HiiHandle, L"type", Param);
continue;
} else {
//
// loop through the list and make sure we are not aborting...
//
for ( Node = (EFI_SHELL_FILE_INFO*)GetFirstNode(&FileList->Link)
; !IsNull(&FileList->Link, &Node->Link) && !ShellGetExecutionBreakFlag()
; Node = (EFI_SHELL_FILE_INFO*)GetNextNode(&FileList->Link, &Node->Link)
){
if (ShellGetExecutionBreakFlag()) {
for ( Node = (EFI_SHELL_FILE_INFO *)GetFirstNode (&FileList->Link)
; !IsNull (&FileList->Link, &Node->Link) && !ShellGetExecutionBreakFlag ()
; Node = (EFI_SHELL_FILE_INFO *)GetNextNode (&FileList->Link, &Node->Link)
)
{
if (ShellGetExecutionBreakFlag ()) {
break;
}
//
// make sure the file opened ok
//
if (EFI_ERROR(Node->Status)){
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellLevel3HiiHandle, L"type", Node->FileName);
if (EFI_ERROR (Node->Status)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellLevel3HiiHandle, L"type", Node->FileName);
ShellStatus = SHELL_NOT_FOUND;
continue;
}
@ -279,8 +286,8 @@ ShellCommandRunType (
//
// make sure its not a directory
//
if (FileHandleIsDirectory(Node->Handle) == EFI_SUCCESS) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_IS_DIR), gShellLevel3HiiHandle, L"type", Node->FileName);
if (FileHandleIsDirectory (Node->Handle) == EFI_SUCCESS) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_IS_DIR), gShellLevel3HiiHandle, L"type", Node->FileName);
ShellStatus = SHELL_NOT_FOUND;
continue;
}
@ -289,21 +296,24 @@ ShellCommandRunType (
// do it
//
Status = TypeFileByHandle (Node->Handle, AsciiMode, UnicodeMode);
if (EFI_ERROR(Status)) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_TYP_ERROR), gShellLevel3HiiHandle, L"type", Node->FileName);
if (EFI_ERROR (Status)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_TYP_ERROR), gShellLevel3HiiHandle, L"type", Node->FileName);
ShellStatus = SHELL_INVALID_PARAMETER;
}
ASSERT(ShellStatus == SHELL_SUCCESS);
ASSERT (ShellStatus == SHELL_SUCCESS);
}
}
}
//
// Free the fileList
//
if (FileList != NULL && !IsListEmpty(&FileList->Link)) {
Status = ShellCloseFileMetaArg(&FileList);
if ((FileList != NULL) && !IsListEmpty (&FileList->Link)) {
Status = ShellCloseFileMetaArg (&FileList);
}
ASSERT_EFI_ERROR(Status);
ASSERT_EFI_ERROR (Status);
FileList = NULL;
}
}
@ -314,10 +324,9 @@ ShellCommandRunType (
ShellCommandLineFreeVarList (Package);
}
if (ShellGetExecutionBreakFlag()) {
if (ShellGetExecutionBreakFlag ()) {
return (SHELL_ABORTED);
}
return (ShellStatus);
}

View File

@ -8,15 +8,15 @@
**/
#include "UefiShellLevel3CommandsLib.h"
CONST CHAR16 gShellLevel3FileName[] = L"ShellCommands";
EFI_HII_HANDLE gShellLevel3HiiHandle = NULL;
CONST CHAR16 gShellLevel3FileName[] = L"ShellCommands";
EFI_HII_HANDLE gShellLevel3HiiHandle = NULL;
/**
return the filename to get help from is not using HII.
@retval The filename.
**/
CONST CHAR16*
CONST CHAR16 *
EFIAPI
ShellCommandGetManFileNameLevel3 (
VOID
@ -47,7 +47,7 @@ ShellLevel3CommandsLibConstructor (
//
// if shell level is less than 3 do nothing
//
if (PcdGet8(PcdShellSupportLevel) < 3) {
if (PcdGet8 (PcdShellSupportLevel) < 3) {
return (EFI_SUCCESS);
}
@ -55,22 +55,23 @@ ShellLevel3CommandsLibConstructor (
if (gShellLevel3HiiHandle == NULL) {
return (EFI_DEVICE_ERROR);
}
//
// install our shell command handlers that are always installed
//
// Note: that Time, Timezone, and Date are part of level 2 library
//
ShellCommandRegisterCommandName(L"type", ShellCommandRunType , ShellCommandGetManFileNameLevel3, 3, L"", TRUE , gShellLevel3HiiHandle, STRING_TOKEN(STR_GET_HELP_TYPE));
ShellCommandRegisterCommandName(L"touch", ShellCommandRunTouch , ShellCommandGetManFileNameLevel3, 3, L"", TRUE , gShellLevel3HiiHandle, STRING_TOKEN(STR_GET_HELP_TOUCH));
ShellCommandRegisterCommandName(L"ver", ShellCommandRunVer , ShellCommandGetManFileNameLevel3, 3, L"", TRUE , gShellLevel3HiiHandle, STRING_TOKEN(STR_GET_HELP_VER));
ShellCommandRegisterCommandName(L"alias", ShellCommandRunAlias , ShellCommandGetManFileNameLevel3, 3, L"", TRUE , gShellLevel3HiiHandle, STRING_TOKEN(STR_GET_HELP_ALIAS));
ShellCommandRegisterCommandName(L"cls", ShellCommandRunCls , ShellCommandGetManFileNameLevel3, 3, L"", TRUE , gShellLevel3HiiHandle, STRING_TOKEN(STR_GET_HELP_CLS));
ShellCommandRegisterCommandName(L"echo", ShellCommandRunEcho , ShellCommandGetManFileNameLevel3, 3, L"", FALSE, gShellLevel3HiiHandle, STRING_TOKEN(STR_GET_HELP_ECHO));
ShellCommandRegisterCommandName(L"pause", ShellCommandRunPause , ShellCommandGetManFileNameLevel3, 3, L"", TRUE , gShellLevel3HiiHandle, STRING_TOKEN(STR_GET_HELP_PAUSE));
ShellCommandRegisterCommandName(L"getmtc", ShellCommandRunGetMtc , ShellCommandGetManFileNameLevel3, 3, L"", TRUE , gShellLevel3HiiHandle, STRING_TOKEN(STR_GET_HELP_GETMTC));
ShellCommandRegisterCommandName(L"help", ShellCommandRunHelp , ShellCommandGetManFileNameLevel3, 3, L"", TRUE , gShellLevel3HiiHandle, STRING_TOKEN(STR_GET_HELP_HELP));
ShellCommandRegisterCommandName (L"type", ShellCommandRunType, ShellCommandGetManFileNameLevel3, 3, L"", TRUE, gShellLevel3HiiHandle, STRING_TOKEN (STR_GET_HELP_TYPE));
ShellCommandRegisterCommandName (L"touch", ShellCommandRunTouch, ShellCommandGetManFileNameLevel3, 3, L"", TRUE, gShellLevel3HiiHandle, STRING_TOKEN (STR_GET_HELP_TOUCH));
ShellCommandRegisterCommandName (L"ver", ShellCommandRunVer, ShellCommandGetManFileNameLevel3, 3, L"", TRUE, gShellLevel3HiiHandle, STRING_TOKEN (STR_GET_HELP_VER));
ShellCommandRegisterCommandName (L"alias", ShellCommandRunAlias, ShellCommandGetManFileNameLevel3, 3, L"", TRUE, gShellLevel3HiiHandle, STRING_TOKEN (STR_GET_HELP_ALIAS));
ShellCommandRegisterCommandName (L"cls", ShellCommandRunCls, ShellCommandGetManFileNameLevel3, 3, L"", TRUE, gShellLevel3HiiHandle, STRING_TOKEN (STR_GET_HELP_CLS));
ShellCommandRegisterCommandName (L"echo", ShellCommandRunEcho, ShellCommandGetManFileNameLevel3, 3, L"", FALSE, gShellLevel3HiiHandle, STRING_TOKEN (STR_GET_HELP_ECHO));
ShellCommandRegisterCommandName (L"pause", ShellCommandRunPause, ShellCommandGetManFileNameLevel3, 3, L"", TRUE, gShellLevel3HiiHandle, STRING_TOKEN (STR_GET_HELP_PAUSE));
ShellCommandRegisterCommandName (L"getmtc", ShellCommandRunGetMtc, ShellCommandGetManFileNameLevel3, 3, L"", TRUE, gShellLevel3HiiHandle, STRING_TOKEN (STR_GET_HELP_GETMTC));
ShellCommandRegisterCommandName (L"help", ShellCommandRunHelp, ShellCommandGetManFileNameLevel3, 3, L"", TRUE, gShellLevel3HiiHandle, STRING_TOKEN (STR_GET_HELP_HELP));
ShellCommandRegisterAlias(L"type", L"cat");
ShellCommandRegisterAlias (L"type", L"cat");
return (EFI_SUCCESS);
}
@ -89,7 +90,8 @@ ShellLevel3CommandsLibDestructor (
)
{
if (gShellLevel3HiiHandle != NULL) {
HiiRemovePackages(gShellLevel3HiiHandle);
HiiRemovePackages (gShellLevel3HiiHandle);
}
return (EFI_SUCCESS);
}

View File

@ -32,7 +32,7 @@
#include <Library/HiiLib.h>
#include <Library/FileHandleLib.h>
extern EFI_HII_HANDLE gShellLevel3HiiHandle;
extern EFI_HII_HANDLE gShellLevel3HiiHandle;
/**
Function for 'type' command.
@ -152,4 +152,3 @@ ShellCommandRunHelp (
);
#endif

View File

@ -12,13 +12,13 @@
#include <Library/ShellLib.h>
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
{L"-s", TypeFlag},
{L"-terse", TypeFlag},
{L"-t", TypeFlag},
{L"-_pa", TypeFlag},
{NULL, TypeMax}
};
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
{ L"-s", TypeFlag },
{ L"-terse", TypeFlag },
{ L"-t", TypeFlag },
{ L"-_pa", TypeFlag },
{ NULL, TypeMax }
};
/**
Function for 'ver' command.
@ -33,54 +33,55 @@ ShellCommandRunVer (
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
LIST_ENTRY *Package;
CHAR16 *ProblemParam;
SHELL_STATUS ShellStatus;
UINT8 Level;
EFI_STATUS Status;
LIST_ENTRY *Package;
CHAR16 *ProblemParam;
SHELL_STATUS ShellStatus;
UINT8 Level;
Level = PcdGet8(PcdShellSupportLevel);
ProblemParam = NULL;
ShellStatus = SHELL_SUCCESS;
Level = PcdGet8 (PcdShellSupportLevel);
ProblemParam = NULL;
ShellStatus = SHELL_SUCCESS;
//
// initialize the shell lib (we must be in non-auto-init...)
//
Status = ShellInitialize();
ASSERT_EFI_ERROR(Status);
Status = ShellInitialize ();
ASSERT_EFI_ERROR (Status);
Status = CommandInit();
ASSERT_EFI_ERROR(Status);
Status = CommandInit ();
ASSERT_EFI_ERROR (Status);
//
// parse the command line
//
Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);
if (EFI_ERROR(Status)) {
if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel3HiiHandle, L"ver", ProblemParam);
FreePool(ProblemParam);
if (EFI_ERROR (Status)) {
if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel3HiiHandle, L"ver", ProblemParam);
FreePool (ProblemParam);
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
ASSERT(FALSE);
ASSERT (FALSE);
}
} else {
//
// check for "-?"
//
if (ShellCommandLineGetFlag(Package, L"-?")) {
ASSERT(FALSE);
if (ShellCommandLineGetFlag (Package, L"-?")) {
ASSERT (FALSE);
}
if (ShellCommandLineGetRawValue(Package, 1) != NULL) {
if (ShellCommandLineGetRawValue (Package, 1) != NULL) {
//
// we have too many parameters
//
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel3HiiHandle, L"ver");
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel3HiiHandle, L"ver");
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
if (ShellCommandLineGetFlag(Package, L"-s")) {
if (ShellCommandLineGetFlag(Package, L"-terse") || ShellCommandLineGetFlag(Package, L"-t")){
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_CONFLICT), gShellLevel3HiiHandle, L"ver", L"-t or -terse", L"-s");
if (ShellCommandLineGetFlag (Package, L"-s")) {
if (ShellCommandLineGetFlag (Package, L"-terse") || ShellCommandLineGetFlag (Package, L"-t")) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_CONFLICT), gShellLevel3HiiHandle, L"ver", L"-t or -terse", L"-s");
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
ShellPrintHiiEx (
@ -91,7 +92,7 @@ ShellCommandRunVer (
gShellLevel3HiiHandle,
gEfiShellProtocol->MajorVersion,
gEfiShellProtocol->MinorVersion
);
);
}
} else {
ShellPrintHiiEx (
@ -103,17 +104,16 @@ ShellCommandRunVer (
SupportLevel[Level],
gEfiShellProtocol->MajorVersion,
gEfiShellProtocol->MinorVersion
);
if (!ShellCommandLineGetFlag(Package, L"-terse") && !ShellCommandLineGetFlag(Package, L"-t")){
ShellPrintHiiEx(
);
if (!ShellCommandLineGetFlag (Package, L"-terse") && !ShellCommandLineGetFlag (Package, L"-t")) {
ShellPrintHiiEx (
-1,
-1,
NULL,
STRING_TOKEN (STR_VER_OUTPUT_SUPPLIER),
gShellLevel3HiiHandle,
(CHAR16 *) PcdGetPtr (PcdShellSupplier)
);
(CHAR16 *)PcdGetPtr (PcdShellSupplier)
);
ShellPrintHiiEx (
-1,
@ -125,14 +125,15 @@ ShellCommandRunVer (
(gST->Hdr.Revision&0x0000ffff),
gST->FirmwareVendor,
gST->FirmwareRevision
);
);
}
}
//
// implementation specific support for displaying processor architecture
//
if (ShellCommandLineGetFlag(Package, L"-_pa")) {
ShellPrintEx(-1, -1, L"%d\r\n", sizeof(UINTN)==sizeof(UINT64)?64:32);
if (ShellCommandLineGetFlag (Package, L"-_pa")) {
ShellPrintEx (-1, -1, L"%d\r\n", sizeof (UINTN) == sizeof (UINT64) ? 64 : 32);
}
}
@ -144,4 +145,3 @@ ShellCommandRunVer (
return (ShellStatus);
}