- CHAR16 *Walker;\r
- CHAR16 *TempParameter;\r
- BOOLEAN OnFlag;\r
- BOOLEAN OffFlag;\r
- UINTN Count;\r
-\r
- RawCmdLine = ShellGetRawCmdLine ();\r
- if (RawCmdLine == NULL) {\r
- return SHELL_OUT_OF_RESOURCES;\r
- }\r
-\r
- OnFlag = FALSE;\r
- OffFlag = FALSE;\r
-\r
- Size = StrSize (RawCmdLine);\r
- TempParameter = AllocateZeroPool(Size);\r
- if (TempParameter == NULL) {\r
- Status = SHELL_OUT_OF_RESOURCES;\r
- goto Done;\r
- }\r
-\r
- for ( Count = 0\r
- , Walker = RawCmdLine\r
- ; Walker != NULL && *Walker != CHAR_NULL\r
- ; Count++\r
- ) {\r
- if (EFI_ERROR (ShellGetNextParameter (&Walker, TempParameter, Size, FALSE))) {\r
- break;\r
+ CHAR16 *PrintString;\r
+\r
+ Size = 0;\r
+ ProblemParam = NULL;\r
+ PrintString = NULL;\r
+ ShellStatus = SHELL_SUCCESS;\r
+\r
+ //\r
+ // initialize the shell lib (we must be in non-auto-init...)\r
+ //\r
+ Status = ShellInitialize();\r
+ ASSERT_EFI_ERROR(Status);\r
+\r
+ //\r
+ // parse the command line\r
+ //\r
+ Status = ShellCommandLineParseEx (ParamList, &Package, &ProblemParam, TRUE, TRUE);\r
+ if (EFI_ERROR(Status)) {\r
+ if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {\r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel3HiiHandle, L"echo", ProblemParam); \r
+ FreePool(ProblemParam);\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ } else {\r
+ ASSERT(FALSE);\r