]> git.proxmox.com Git - mirror_edk2.git/blame - ShellPkg/Library/UefiShellLevel3CommandsLib/Pause.c
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / ShellPkg / Library / UefiShellLevel3CommandsLib / Pause.c
CommitLineData
a405b86d 1/** @file\r
2 Main file for Pause shell level 3 function.\r
3\r
c011b6c9 4 (C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>\r
ba0014b9 5 Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved. <BR>\r
56ba3746 6 SPDX-License-Identifier: BSD-2-Clause-Patent\r
a405b86d 7\r
8**/\r
9\r
10#include "UefiShellLevel3CommandsLib.h"\r
11\r
47d20b54
MK
12STATIC CONST SHELL_PARAM_ITEM ParamList[] = {\r
13 { L"-q", TypeFlag },\r
14 { NULL, TypeMax }\r
15};\r
a405b86d 16\r
17/**\r
18 Function for 'pause' command.\r
19\r
20 @param[in] ImageHandle Handle to the Image (NULL if Internal).\r
21 @param[in] SystemTable Pointer to the System Table (NULL if Internal).\r
22**/\r
23SHELL_STATUS\r
24EFIAPI\r
25ShellCommandRunPause (\r
26 IN EFI_HANDLE ImageHandle,\r
27 IN EFI_SYSTEM_TABLE *SystemTable\r
28 )\r
29{\r
47d20b54
MK
30 EFI_STATUS Status;\r
31 LIST_ENTRY *Package;\r
32 CHAR16 *ProblemParam;\r
33 SHELL_STATUS ShellStatus;\r
34 SHELL_PROMPT_RESPONSE *Resp;\r
a405b86d 35\r
47d20b54
MK
36 ProblemParam = NULL;\r
37 ShellStatus = SHELL_SUCCESS;\r
38 Resp = NULL;\r
a405b86d 39\r
40 //\r
41 // initialize the shell lib (we must be in non-auto-init...)\r
42 //\r
47d20b54
MK
43 Status = ShellInitialize ();\r
44 ASSERT_EFI_ERROR (Status);\r
a405b86d 45\r
47d20b54
MK
46 Status = CommandInit ();\r
47 ASSERT_EFI_ERROR (Status);\r
a405b86d 48\r
47d20b54
MK
49 if (!gEfiShellProtocol->BatchIsActive ()) {\r
50 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_NO_SCRIPT), gShellLevel3HiiHandle, L"pause");\r
a405b86d 51 return (SHELL_UNSUPPORTED);\r
52 }\r
53\r
54 //\r
55 // parse the command line\r
56 //\r
57 Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);\r
47d20b54
MK
58 if (EFI_ERROR (Status)) {\r
59 if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {\r
60 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel3HiiHandle, L"pause", ProblemParam);\r
61 FreePool (ProblemParam);\r
a405b86d 62 ShellStatus = SHELL_INVALID_PARAMETER;\r
63 } else {\r
47d20b54 64 ASSERT (FALSE);\r
a405b86d 65 }\r
66 } else {\r
67 //\r
68 // check for "-?"\r
69 //\r
47d20b54
MK
70 if (ShellCommandLineGetFlag (Package, L"-?")) {\r
71 ASSERT (FALSE);\r
72 } else if (ShellCommandLineGetRawValue (Package, 1) != NULL) {\r
73 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel3HiiHandle, L"pause");\r
a405b86d 74 ShellStatus = SHELL_INVALID_PARAMETER;\r
75 } else {\r
47d20b54
MK
76 if (!ShellCommandLineGetFlag (Package, L"-q")) {\r
77 Status = ShellPromptForResponseHii (ShellPromptResponseTypeQuitContinue, STRING_TOKEN (STR_PAUSE_PROMPT), gShellLevel3HiiHandle, (VOID **)&Resp);\r
a405b86d 78 } else {\r
47d20b54 79 Status = ShellPromptForResponse (ShellPromptResponseTypeQuitContinue, NULL, (VOID **)&Resp);\r
a405b86d 80 }\r
a405b86d 81\r
47d20b54
MK
82 if (EFI_ERROR (Status) || (Resp == NULL) || (*Resp == ShellPromptResponseQuit)) {\r
83 ShellCommandRegisterExit (TRUE, 0);\r
a405b86d 84 ShellStatus = SHELL_ABORTED;\r
85 }\r
86\r
87 if (Resp != NULL) {\r
47d20b54 88 FreePool (Resp);\r
a405b86d 89 }\r
90 }\r
91\r
92 //\r
93 // free the command line package\r
94 //\r
95 ShellCommandLineFreeVarList (Package);\r
96 }\r
97\r
a405b86d 98 return (ShellStatus);\r
99}\r