/** @file\r
Main file for endfor and for shell level 1 functions.\r
\r
- Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2009 - 2011, 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
#include "UefiShellLevel1CommandsLib.h"\r
#include <Library/PrintLib.h>\r
\r
+/**\r
+ Determine if a valid string is a valid number for the 'for' command.\r
+\r
+ @param[in] Number The pointer to the string representation of the number to test.\r
+\r
+ @retval TRUE The number is valid.\r
+ @retval FALSE The number is not valid.\r
+**/\r
BOOLEAN\r
EFIAPI\r
ShellIsValidForNumber (\r
Found = MoveToTag(GetPreviousNode, L"for", L"endfor", NULL, ShellCommandGetCurrentScriptFile(), FALSE, FALSE, FALSE);\r
\r
if (!Found) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_NO_MATCHING), gShellLevel1HiiHandle, L"For", L"EndFor", ShellCommandGetCurrentScriptFile()->CurrentCommand->Line);\r
+ ShellPrintHiiEx(\r
+ -1, \r
+ -1, \r
+ NULL, \r
+ STRING_TOKEN (STR_SYNTAX_NO_MATCHING), \r
+ gShellLevel1HiiHandle, \r
+ L"For", \r
+ L"EndFor", \r
+ ShellCommandGetCurrentScriptFile()!=NULL\r
+ &&ShellCommandGetCurrentScriptFile()->CurrentCommand!=NULL\r
+ ?ShellCommandGetCurrentScriptFile()->CurrentCommand->Line:0);\r
return (SHELL_NOT_FOUND);\r
}\r
return (SHELL_SUCCESS);\r
@param[in] Alias The alias to test for.\r
@param[in] CommandString The updated command string.\r
@param[in,out] List The list to search.\r
+\r
+ @retval EFI_SUCCESS The operation was completed successfully.\r
+ @retval EFI_OUT_OF_RESOURCES There was not enough free memory.\r
**/\r
-VOID\r
+EFI_STATUS\r
EFIAPI\r
InternalUpdateAliasOnList(\r
IN CONST CHAR16 *Alias,\r
}\r
if (!Found) {\r
Node = AllocateZeroPool(sizeof(ALIAS_LIST));\r
+ if (Node == NULL) {\r
+ return (EFI_OUT_OF_RESOURCES);\r
+ }\r
ASSERT(Node->Alias == NULL);\r
Node->Alias = StrnCatGrow(&Node->Alias, NULL, Alias, 0);\r
ASSERT(Node->CommandString == NULL);\r
Node->CommandString = StrnCatGrow(&Node->CommandString, NULL, CommandString, 0);\r
InsertTailList(List, &Node->Link);\r
}\r
+ return (EFI_SUCCESS);\r
}\r
\r
/**\r
// Make sure that an End exists.\r
//\r
if (!MoveToTag(GetNextNode, L"endfor", L"for", NULL, CurrentScriptFile, TRUE, TRUE, FALSE)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_NO_MATCHING), gShellLevel1HiiHandle, L"EndFor", L"For", ShellCommandGetCurrentScriptFile()->CurrentCommand->Line);\r
+ ShellPrintHiiEx(\r
+ -1, \r
+ -1, \r
+ NULL, \r
+ STRING_TOKEN (STR_SYNTAX_NO_MATCHING), \r
+ gShellLevel1HiiHandle, \r
+ L"EndFor", \r
+ L"For", \r
+ CurrentScriptFile->CurrentCommand!=NULL\r
+ ?CurrentScriptFile->CurrentCommand->Line:0);\r
return (SHELL_DEVICE_ERROR);\r
}\r
\r
||!((gEfiShellParametersProtocol->Argv[1][1] >= L'a' && gEfiShellParametersProtocol->Argv[1][1] <= L'z')\r
||(gEfiShellParametersProtocol->Argv[1][1] >= L'A' && gEfiShellParametersProtocol->Argv[1][1] <= L'Z'))\r
) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_VAR), gShellLevel1HiiHandle, gEfiShellParametersProtocol->Argv[2]);\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_VAR), gShellLevel1HiiHandle, gEfiShellParametersProtocol->Argv[1]);\r
return (SHELL_INVALID_PARAMETER);\r
}\r
\r
if (ArgSet == NULL) {\r
// ArgSet = StrnCatGrow(&ArgSet, &ArgSize, L"\"", 0);\r
} else {\r
- ArgSet = StrnCatGrow(&ArgSet, &ArgSize, L" ", 0);\r
+ ArgSet = StrnCatGrow(&ArgSet, &ArgSize, L" ", 0);\r
}\r
ArgSet = StrnCatGrow(&ArgSet, &ArgSize, gEfiShellParametersProtocol->Argv[LoopVar], 0);\r
// ArgSet = StrnCatGrow(&ArgSet, &ArgSize, L" ", 0);\r
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_SCRIPT), gShellLevel1HiiHandle, ArgSet, ShellCommandGetCurrentScriptFile()->CurrentCommand->Line);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
- ArgSetWalker++;\r
- while (ArgSetWalker != NULL && ArgSetWalker[0] == L' ') {\r
- ArgSetWalker++;\r
+ TempSpot = StrStr(ArgSetWalker, L")");\r
+ if (TempSpot != NULL) {\r
+ TempString = TempSpot+1;\r
+ if (*(TempString) != CHAR_NULL) {\r
+ while(TempString != NULL && *TempString == L' ') {\r
+ TempString++;\r
+ }\r
+ if (StrLen(TempString) > 0) {\r
+ TempSpot = NULL;\r
+ }\r
+ }\r
}\r
- if (!ShellIsValidForNumber(ArgSetWalker)) {\r
+ if (TempSpot == NULL) {\r
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_SCRIPT), gShellLevel1HiiHandle, ArgSet, ShellCommandGetCurrentScriptFile()->CurrentCommand->Line);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
- if (ArgSetWalker[0] == L'-') {\r
- Info->Current = 0 - (INTN)ShellStrToUintn(ArgSetWalker+1);\r
- } else {\r
- Info->Current = (INTN)ShellStrToUintn(ArgSetWalker);\r
- }\r
- ArgSetWalker = StrStr(ArgSetWalker, L" ");\r
+ *TempSpot = CHAR_NULL;\r
+ ArgSetWalker++;\r
while (ArgSetWalker != NULL && ArgSetWalker[0] == L' ') {\r
ArgSetWalker++;\r
}\r
- if (ArgSetWalker == NULL || *ArgSetWalker == CHAR_NULL || !ShellIsValidForNumber(ArgSetWalker)){\r
+ if (!ShellIsValidForNumber(ArgSetWalker)) {\r
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_SCRIPT), gShellLevel1HiiHandle, ArgSet, ShellCommandGetCurrentScriptFile()->CurrentCommand->Line);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
if (ArgSetWalker[0] == L'-') {\r
- Info->End = 0 - (INTN)ShellStrToUintn(ArgSetWalker+1);\r
+ Info->Current = 0 - (INTN)ShellStrToUintn(ArgSetWalker+1);\r
} else {\r
- Info->End = (INTN)ShellStrToUintn(ArgSetWalker);\r
+ Info->Current = (INTN)ShellStrToUintn(ArgSetWalker);\r
}\r
- if (Info->Current < Info->End) {\r
- Info->Step = 1;\r
- } else {\r
- Info->Step = -1;\r
- }\r
-\r
ArgSetWalker = StrStr(ArgSetWalker, L" ");\r
while (ArgSetWalker != NULL && ArgSetWalker[0] == L' ') {\r
ArgSetWalker++;\r
}\r
- if (ArgSetWalker != NULL && *ArgSetWalker != CHAR_NULL) {\r
- TempSpot = StrStr(ArgSetWalker, L")");\r
- if (TempSpot == NULL) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_SCRIPT), gShellLevel1HiiHandle, ArgSet, ShellCommandGetCurrentScriptFile()->CurrentCommand->Line);\r
- ShellStatus = SHELL_INVALID_PARAMETER;\r
+ if (ArgSetWalker == NULL || *ArgSetWalker == CHAR_NULL || !ShellIsValidForNumber(ArgSetWalker)){\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_SCRIPT), gShellLevel1HiiHandle, ArgSet, ShellCommandGetCurrentScriptFile()->CurrentCommand->Line);\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ } else {\r
+ if (ArgSetWalker[0] == L'-') {\r
+ Info->End = 0 - (INTN)ShellStrToUintn(ArgSetWalker+1);\r
} else {\r
- *TempSpot = CHAR_NULL;\r
+ Info->End = (INTN)ShellStrToUintn(ArgSetWalker);\r
+ }\r
+ if (Info->Current < Info->End) {\r
+ Info->Step = 1;\r
+ } else {\r
+ Info->Step = -1;\r
+ }\r
+\r
+ ArgSetWalker = StrStr(ArgSetWalker, L" ");\r
+ while (ArgSetWalker != NULL && ArgSetWalker[0] == L' ') {\r
+ ArgSetWalker++;\r
+ }\r
+ if (ArgSetWalker != NULL && *ArgSetWalker != CHAR_NULL) {\r
if (ArgSetWalker == NULL || *ArgSetWalker == CHAR_NULL || !ShellIsValidForNumber(ArgSetWalker)){\r
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_SCRIPT), gShellLevel1HiiHandle, ArgSet, ShellCommandGetCurrentScriptFile()->CurrentCommand->Line);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
Info->Step = (INTN)ShellStrToUintn(ArgSetWalker);\r
}\r
+\r
+ if (StrStr(ArgSetWalker, L" ") != NULL) {\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_SCRIPT), gShellLevel1HiiHandle, ArgSet, ShellCommandGetCurrentScriptFile()->CurrentCommand->Line);\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ }\r
}\r
}\r
+ \r
}\r
}\r
}\r
if (Info->CurrentValue[0] == L'\"') {\r
Info->CurrentValue++;\r
}\r
- while (Info->CurrentValue[0] == L' ') {\r
- Info->CurrentValue++;\r
- }\r
+// while (Info->CurrentValue[0] == L' ') {\r
+// Info->CurrentValue++;\r
+// }\r
if (Info->CurrentValue[0] == L'\"') {\r
Info->CurrentValue++;\r
}\r