/** @file\r
Main file for Parse shell level 2 function.\r
\r
+ (C) Copyright 2013-2014, Hewlett-Packard Development Company, L.P.\r
Copyright (c) 2009 - 2012, 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
if (EFI_ERROR(Status)) {\r
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellLevel2HiiHandle, FileName);\r
ShellStatus = SHELL_NOT_FOUND;\r
+ } else if (!EFI_ERROR (FileHandleIsDirectory (FileHandle))) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_NOT_FILE), gShellLevel2HiiHandle, FileName);\r
+ ShellStatus = SHELL_NOT_FOUND;\r
} else {\r
for (LoopVariable = 0 ; LoopVariable < ShellCommandInstance && !ShellFileHandleEof(FileHandle);) {\r
TempLine = ShellFileHandleReturnLine(FileHandle, &Ascii);\r
if (TempLine == NULL) {\r
break;\r
}\r
- if (StrStr(TempLine, L"ShellCommand, \"") == TempLine) {\r
+\r
+ //\r
+ // Search for "ShellCommand," in the file to start the SFO table\r
+ // for a given ShellCommand. The UEFI Shell spec does not specify\r
+ // a space after the comma.\r
+ //\r
+ if (StrStr (TempLine, L"ShellCommand,") == TempLine) {\r
LoopVariable++;\r
}\r
SHELL_FREE_NON_NULL(TempLine);\r
LoopVariable = 0;\r
while(1) {\r
TempLine = ShellFileHandleReturnLine(FileHandle, &Ascii);\r
- if ( TempLine == NULL\r
- || *TempLine == CHAR_NULL\r
- || StrStr(TempLine, L"ShellCommand, \"") == TempLine\r
- ){\r
+ if (TempLine == NULL\r
+ || *TempLine == CHAR_NULL\r
+ || StrStr (TempLine, L"ShellCommand,") == TempLine) {\r
SHELL_FREE_NON_NULL(TempLine);\r
break;\r
}\r
- if (StrStr(TempLine, TableName) == TempLine) {\r
+ if (StrStr (TempLine, TableName) == TempLine) {\r
LoopVariable++;\r
- }\r
- if ( LoopVariable == TableNameInstance\r
- || (TableNameInstance == (UINTN)-1 && StrStr(TempLine, TableName) == TempLine)\r
- ){\r
- for (ColumnLoop = 1, ColumnPointer = TempLine; ColumnLoop < ColumnIndex && ColumnPointer != NULL && *ColumnPointer != CHAR_NULL; ColumnLoop++) {\r
- ColumnPointer = StrStr(ColumnPointer, L",");\r
- if (ColumnPointer != NULL && *ColumnPointer != CHAR_NULL){\r
- ColumnPointer++;\r
- }\r
- }\r
- if (ColumnLoop == ColumnIndex) {\r
- if (ColumnPointer == NULL) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_VAL), gShellLevel2HiiHandle, L"Column Index");\r
- ShellStatus = SHELL_INVALID_PARAMETER;\r
- } else {\r
- TempSpot = StrStr(ColumnPointer, L",");\r
- if (TempSpot != NULL) {\r
- *TempSpot = CHAR_NULL;\r
- }\r
- while (ColumnPointer != NULL && *ColumnPointer != CHAR_NULL && ColumnPointer[0] == L' '){\r
- ColumnPointer++;\r
- }\r
- if (ColumnPointer != NULL && *ColumnPointer != CHAR_NULL && ColumnPointer[0] == L'\"'){\r
+ if (LoopVariable == TableNameInstance\r
+ || (TableNameInstance == (UINTN)-1)) {\r
+ for (ColumnLoop = 1, ColumnPointer = TempLine; ColumnLoop < ColumnIndex && ColumnPointer != NULL && *ColumnPointer != CHAR_NULL; ColumnLoop++) {\r
+ ColumnPointer = StrStr (ColumnPointer, L",");\r
+ if (ColumnPointer != NULL && *ColumnPointer != CHAR_NULL){\r
ColumnPointer++;\r
}\r
- if (ColumnPointer != NULL && *ColumnPointer != CHAR_NULL && ColumnPointer[StrLen(ColumnPointer)-1] == L'\"'){\r
- ColumnPointer[StrLen(ColumnPointer)-1] = CHAR_NULL;\r
+ }\r
+ if (ColumnLoop == ColumnIndex) {\r
+ if (ColumnPointer == NULL) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_VAL), gShellLevel2HiiHandle, L"Column Index");\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ } else {\r
+ TempSpot = StrStr (ColumnPointer, L",");\r
+ if (TempSpot != NULL) {\r
+ *TempSpot = CHAR_NULL;\r
+ }\r
+ while (ColumnPointer != NULL && *ColumnPointer != CHAR_NULL && ColumnPointer[0] == L' '){\r
+ ColumnPointer++;\r
+ }\r
+ if (ColumnPointer != NULL && *ColumnPointer != CHAR_NULL && ColumnPointer[0] == L'\"'){\r
+ ColumnPointer++;\r
+ }\r
+ if (ColumnPointer != NULL && *ColumnPointer != CHAR_NULL && ColumnPointer[StrLen (ColumnPointer) - 1] == L'\"'){\r
+ ColumnPointer[StrLen (ColumnPointer) - 1] = CHAR_NULL;\r
+ }\r
+\r
+ ShellPrintEx (-1, -1, L"%s\r\n", ColumnPointer);\r
}\r
-\r
- ShellPrintEx(-1, -1, L"%s\r\n", ColumnPointer);\r
}\r
}\r
}\r