summaryrefslogtreecommitdiff
path: root/ShellPkg/Library/UefiShellLevel2CommandsLib/Parse.c
diff options
context:
space:
mode:
Diffstat (limited to 'ShellPkg/Library/UefiShellLevel2CommandsLib/Parse.c')
-rw-r--r--ShellPkg/Library/UefiShellLevel2CommandsLib/Parse.c205
1 files changed, 111 insertions, 94 deletions
diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/Parse.c b/ShellPkg/Library/UefiShellLevel2CommandsLib/Parse.c
index 47cb332..955e082 100644
--- a/ShellPkg/Library/UefiShellLevel2CommandsLib/Parse.c
+++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/Parse.c
@@ -22,24 +22,25 @@ IsStdInDataAvailable (
VOID
)
{
- SHELL_FILE_HANDLE FileHandle;
- EFI_STATUS Status;
- CHAR16 CharBuffer;
- UINTN CharSize;
- UINT64 OriginalFilePosition;
+ SHELL_FILE_HANDLE FileHandle;
+ EFI_STATUS Status;
+ CHAR16 CharBuffer;
+ UINTN CharSize;
+ UINT64 OriginalFilePosition;
Status = EFI_SUCCESS;
FileHandle = NULL;
OriginalFilePosition = 0;
if (ShellOpenFileByName (L">i", &FileHandle, EFI_FILE_MODE_READ, 0) == EFI_SUCCESS) {
- CharSize = sizeof(CHAR16);
+ CharSize = sizeof (CHAR16);
gEfiShellProtocol->GetFilePosition (FileHandle, &OriginalFilePosition);
Status = gEfiShellProtocol->ReadFile (FileHandle, &CharSize, &CharBuffer);
- if (EFI_ERROR (Status) || (CharSize != sizeof(CHAR16))) {
+ if (EFI_ERROR (Status) || (CharSize != sizeof (CHAR16))) {
return FALSE;
}
- gEfiShellProtocol->SetFilePosition(FileHandle, OriginalFilePosition);
+
+ gEfiShellProtocol->SetFilePosition (FileHandle, OriginalFilePosition);
}
if (FileHandle == NULL) {
@@ -78,15 +79,17 @@ HandleStringWithEscapeCharForParse (
if (NewStr == NULL) {
return NULL;
}
+
ReturnStr = NewStr;
StrWalker = String;
while (*StrWalker != CHAR_NULL) {
- if (*StrWalker == L'^' && (*(StrWalker + 1) == L'^' || *(StrWalker + 1) == L'"')) {
+ if ((*StrWalker == L'^') && ((*(StrWalker + 1) == L'^') || (*(StrWalker + 1) == L'"'))) {
*NewStr = *(StrWalker + 1);
StrWalker++;
} else {
*NewStr = *StrWalker;
}
+
StrWalker++;
NewStr++;
}
@@ -94,7 +97,6 @@ HandleStringWithEscapeCharForParse (
return ReturnStr;
}
-
/**
Do the actual parsing of the file. the file should be SFO output from a
shell command or a similar format.
@@ -110,44 +112,44 @@ HandleStringWithEscapeCharForParse (
@retval SHELL_SUCCESS The operation was successful.
**/
SHELL_STATUS
-PerformParsing(
- IN CONST CHAR16 *FileName,
- IN CONST CHAR16 *TableName,
- IN CONST UINTN ColumnIndex,
- IN CONST UINTN TableNameInstance,
- IN CONST UINTN ShellCommandInstance,
- IN BOOLEAN StreamingUnicode
+PerformParsing (
+ IN CONST CHAR16 *FileName,
+ IN CONST CHAR16 *TableName,
+ IN CONST UINTN ColumnIndex,
+ IN CONST UINTN TableNameInstance,
+ IN CONST UINTN ShellCommandInstance,
+ IN BOOLEAN StreamingUnicode
)
{
- SHELL_FILE_HANDLE FileHandle;
- EFI_STATUS Status;
- BOOLEAN Ascii;
- UINTN LoopVariable;
- UINTN ColumnLoop;
- CHAR16 *TempLine;
- CHAR16 *ColumnPointer;
- SHELL_STATUS ShellStatus;
- CHAR16 *TempSpot;
- CHAR16 *SfoString;
-
- ASSERT(FileName != NULL);
- ASSERT(TableName != NULL);
-
- ShellStatus = SHELL_SUCCESS;
-
- Status = ShellOpenFileByName(FileName, &FileHandle, EFI_FILE_MODE_READ, 0);
- if (EFI_ERROR(Status)) {
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellLevel2HiiHandle, L"parse", FileName);
+ SHELL_FILE_HANDLE FileHandle;
+ EFI_STATUS Status;
+ BOOLEAN Ascii;
+ UINTN LoopVariable;
+ UINTN ColumnLoop;
+ CHAR16 *TempLine;
+ CHAR16 *ColumnPointer;
+ SHELL_STATUS ShellStatus;
+ CHAR16 *TempSpot;
+ CHAR16 *SfoString;
+
+ ASSERT (FileName != NULL);
+ ASSERT (TableName != NULL);
+
+ ShellStatus = SHELL_SUCCESS;
+
+ Status = ShellOpenFileByName (FileName, &FileHandle, EFI_FILE_MODE_READ, 0);
+ if (EFI_ERROR (Status)) {
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellLevel2HiiHandle, L"parse", FileName);
ShellStatus = SHELL_NOT_FOUND;
} else if (!EFI_ERROR (FileHandleIsDirectory (FileHandle))) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_NOT_FILE), gShellLevel2HiiHandle, L"parse", FileName);
ShellStatus = SHELL_NOT_FOUND;
} else {
- for (LoopVariable = 0 ; LoopVariable < ShellCommandInstance && !ShellFileHandleEof(FileHandle);) {
- TempLine = ShellFileHandleReturnLine (FileHandle, &Ascii);
+ for (LoopVariable = 0; LoopVariable < ShellCommandInstance && !ShellFileHandleEof (FileHandle);) {
+ TempLine = ShellFileHandleReturnLine (FileHandle, &Ascii);
- if ((TempLine == NULL) || (*TempLine == CHAR_NULL && StreamingUnicode)) {
- break;
+ if ((TempLine == NULL) || ((*TempLine == CHAR_NULL) && StreamingUnicode)) {
+ break;
}
//
@@ -158,46 +160,56 @@ PerformParsing(
if (StrStr (TempLine, L"ShellCommand,") == TempLine) {
LoopVariable++;
}
- SHELL_FREE_NON_NULL(TempLine);
+
+ SHELL_FREE_NON_NULL (TempLine);
}
+
if (LoopVariable == ShellCommandInstance) {
LoopVariable = 0;
- while(1) {
+ while (1) {
TempLine = ShellFileHandleReturnLine (FileHandle, &Ascii);
- if (TempLine == NULL
- || *TempLine == CHAR_NULL
- || StrStr (TempLine, L"ShellCommand,") == TempLine) {
- SHELL_FREE_NON_NULL(TempLine);
+ if ( (TempLine == NULL)
+ || (*TempLine == CHAR_NULL)
+ || (StrStr (TempLine, L"ShellCommand,") == TempLine))
+ {
+ SHELL_FREE_NON_NULL (TempLine);
break;
}
+
if (StrStr (TempLine, TableName) == TempLine) {
LoopVariable++;
- if (LoopVariable == TableNameInstance
- || (TableNameInstance == (UINTN)-1)) {
+ if ( (LoopVariable == TableNameInstance)
+ || (TableNameInstance == (UINTN)-1))
+ {
for (ColumnLoop = 1, ColumnPointer = TempLine; ColumnLoop < ColumnIndex && ColumnPointer != NULL && *ColumnPointer != CHAR_NULL; ColumnLoop++) {
ColumnPointer = StrStr (ColumnPointer, L",\"");
- if (ColumnPointer != NULL && *ColumnPointer != CHAR_NULL){
+ if ((ColumnPointer != NULL) && (*ColumnPointer != CHAR_NULL)) {
ColumnPointer++;
}
}
+
if (ColumnLoop == ColumnIndex) {
if (ColumnPointer == NULL) {
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellLevel2HiiHandle, L"parse", L"Column Index");
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellLevel2HiiHandle, L"parse", L"Column Index");
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
TempSpot = StrStr (ColumnPointer, L",\"");
if (TempSpot != NULL) {
*TempSpot = CHAR_NULL;
}
- while (ColumnPointer != NULL && *ColumnPointer != CHAR_NULL && ColumnPointer[0] == L' '){
+
+ while (ColumnPointer != NULL && *ColumnPointer != CHAR_NULL && ColumnPointer[0] == L' ') {
ColumnPointer++;
}
- if (ColumnPointer != NULL && *ColumnPointer != CHAR_NULL && ColumnPointer[0] == L'\"'){
+
+ if ((ColumnPointer != NULL) && (*ColumnPointer != CHAR_NULL) && (ColumnPointer[0] == L'\"')) {
ColumnPointer++;
}
- if (ColumnPointer != NULL && *ColumnPointer != CHAR_NULL && ColumnPointer[StrLen (ColumnPointer) - 1] == L'\"'){
+
+ if ((ColumnPointer != NULL) && (*ColumnPointer != CHAR_NULL) && (ColumnPointer[StrLen (ColumnPointer) - 1] == L'\"')) {
ColumnPointer[StrLen (ColumnPointer) - 1] = CHAR_NULL;
}
+
SfoString = HandleStringWithEscapeCharForParse (ColumnPointer);
if (SfoString != NULL) {
ShellPrintEx (-1, -1, L"%s\r\n", SfoString);
@@ -207,18 +219,20 @@ PerformParsing(
}
}
}
- SHELL_FREE_NON_NULL(TempLine);
+
+ SHELL_FREE_NON_NULL (TempLine);
}
}
}
+
return (ShellStatus);
}
-STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
- {L"-i", TypeValue},
- {L"-s", TypeValue},
- {NULL, TypeMax}
- };
+STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
+ { L"-i", TypeValue },
+ { L"-s", TypeValue },
+ { NULL, TypeMax }
+};
/**
Function for 'parse' command.
@@ -233,16 +247,16 @@ ShellCommandRunParse (
IN EFI_SYSTEM_TABLE *SystemTable
)
{
- EFI_STATUS Status;
- LIST_ENTRY *Package;
- CHAR16 *ProblemParam;
- CONST CHAR16 *FileName;
- CONST CHAR16 *TableName;
- CONST CHAR16 *ColumnString;
- SHELL_STATUS ShellStatus;
- UINTN ShellCommandInstance;
- UINTN TableNameInstance;
- BOOLEAN StreamingUnicode;
+ EFI_STATUS Status;
+ LIST_ENTRY *Package;
+ CHAR16 *ProblemParam;
+ CONST CHAR16 *FileName;
+ CONST CHAR16 *TableName;
+ CONST CHAR16 *ColumnString;
+ SHELL_STATUS ShellStatus;
+ UINTN ShellCommandInstance;
+ UINTN TableNameInstance;
+ BOOLEAN StreamingUnicode;
ShellStatus = SHELL_SUCCESS;
ProblemParam = NULL;
@@ -251,53 +265,57 @@ ShellCommandRunParse (
//
// 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, FALSE);
- if (EFI_ERROR(Status)) {
- if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel2HiiHandle, L"parse", ProblemParam);
- FreePool(ProblemParam);
+ if (EFI_ERROR (Status)) {
+ if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel2HiiHandle, L"parse", ProblemParam);
+ FreePool (ProblemParam);
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
- ASSERT(FALSE);
+ ASSERT (FALSE);
}
} else {
StreamingUnicode = IsStdInDataAvailable ();
- if ((!StreamingUnicode && (ShellCommandLineGetCount(Package) < 4)) ||
- (ShellCommandLineGetCount(Package) < 3)) {
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellLevel2HiiHandle, L"parse");
+ if ((!StreamingUnicode && (ShellCommandLineGetCount (Package) < 4)) ||
+ (ShellCommandLineGetCount (Package) < 3))
+ {
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellLevel2HiiHandle, L"parse");
ShellStatus = SHELL_INVALID_PARAMETER;
- } else if ((StreamingUnicode && (ShellCommandLineGetCount(Package) > 3)) ||
- (ShellCommandLineGetCount(Package) > 4)) {
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel2HiiHandle, L"parse");
+ } else if ((StreamingUnicode && (ShellCommandLineGetCount (Package) > 3)) ||
+ (ShellCommandLineGetCount (Package) > 4))
+ {
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel2HiiHandle, L"parse");
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
if (StreamingUnicode) {
- FileName = L">i";
- TableName = ShellCommandLineGetRawValue(Package, 1);
- ColumnString = ShellCommandLineGetRawValue(Package, 2);
+ FileName = L">i";
+ TableName = ShellCommandLineGetRawValue (Package, 1);
+ ColumnString = ShellCommandLineGetRawValue (Package, 2);
} else {
- FileName = ShellCommandLineGetRawValue(Package, 1);
- TableName = ShellCommandLineGetRawValue(Package, 2);
- ColumnString = ShellCommandLineGetRawValue(Package, 3);
+ FileName = ShellCommandLineGetRawValue (Package, 1);
+ TableName = ShellCommandLineGetRawValue (Package, 2);
+ ColumnString = ShellCommandLineGetRawValue (Package, 3);
}
- if (ShellCommandLineGetValue(Package, L"-i") == NULL) {
+
+ if (ShellCommandLineGetValue (Package, L"-i") == NULL) {
TableNameInstance = (UINTN)-1;
} else {
- TableNameInstance = ShellStrToUintn(ShellCommandLineGetValue(Package, L"-i"));
+ TableNameInstance = ShellStrToUintn (ShellCommandLineGetValue (Package, L"-i"));
}
- if (ShellCommandLineGetValue(Package, L"-s") == NULL) {
+
+ if (ShellCommandLineGetValue (Package, L"-s") == NULL) {
ShellCommandInstance = 1;
} else {
- ShellCommandInstance = ShellStrToUintn(ShellCommandLineGetValue(Package, L"-s"));
+ ShellCommandInstance = ShellStrToUintn (ShellCommandLineGetValue (Package, L"-s"));
}
- ShellStatus = PerformParsing(FileName, TableName, ShellStrToUintn(ColumnString), TableNameInstance, ShellCommandInstance, StreamingUnicode);
+ ShellStatus = PerformParsing (FileName, TableName, ShellStrToUintn (ColumnString), TableNameInstance, ShellCommandInstance, StreamingUnicode);
}
}
@@ -308,4 +326,3 @@ ShellCommandRunParse (
return (ShellStatus);
}
-