]> git.proxmox.com Git - mirror_edk2.git/blame - ShellPkg/Library/UefiShellLevel3CommandsLib/Ver.c
BaseTools: Enhance Bin Cache database to support save the cache
[mirror_edk2.git] / ShellPkg / Library / UefiShellLevel3CommandsLib / Ver.c
CommitLineData
a405b86d 1/** @file\r
2 Main file for Ver shell level 3 function.\r
3\r
9d54bf4e 4 (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
c011b6c9 5 (C) Copyright 2013-2015 Hewlett-Packard Development Company, L.P.<BR>\r
ba0014b9 6 Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
56ba3746 7 SPDX-License-Identifier: BSD-2-Clause-Patent\r
a405b86d 8\r
9**/\r
10\r
11#include "UefiShellLevel3CommandsLib.h"\r
12\r
13#include <Library/ShellLib.h>\r
14\r
15STATIC CONST SHELL_PARAM_ITEM ParamList[] = {\r
16 {L"-s", TypeFlag},\r
17 {L"-terse", TypeFlag},\r
18 {L"-t", TypeFlag},\r
19 {L"-_pa", TypeFlag},\r
20 {NULL, TypeMax}\r
21 };\r
22\r
23/**\r
24 Function for 'ver' command.\r
25\r
26 @param[in] ImageHandle Handle to the Image (NULL if Internal).\r
27 @param[in] SystemTable Pointer to the System Table (NULL if Internal).\r
28**/\r
29SHELL_STATUS\r
30EFIAPI\r
31ShellCommandRunVer (\r
32 IN EFI_HANDLE ImageHandle,\r
33 IN EFI_SYSTEM_TABLE *SystemTable\r
34 )\r
35{\r
36 EFI_STATUS Status;\r
37 LIST_ENTRY *Package;\r
38 CHAR16 *ProblemParam;\r
39 SHELL_STATUS ShellStatus;\r
40 UINT8 Level;\r
41\r
42 Level = PcdGet8(PcdShellSupportLevel);\r
43 ProblemParam = NULL;\r
44 ShellStatus = SHELL_SUCCESS;\r
45\r
46 //\r
47 // initialize the shell lib (we must be in non-auto-init...)\r
48 //\r
49 Status = ShellInitialize();\r
50 ASSERT_EFI_ERROR(Status);\r
51\r
52 Status = CommandInit();\r
53 ASSERT_EFI_ERROR(Status);\r
54\r
55 //\r
56 // parse the command line\r
57 //\r
58 Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);\r
59 if (EFI_ERROR(Status)) {\r
60 if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {\r
ba0014b9 61 ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel3HiiHandle, L"ver", ProblemParam);\r
a405b86d 62 FreePool(ProblemParam);\r
63 ShellStatus = SHELL_INVALID_PARAMETER;\r
64 } else {\r
65 ASSERT(FALSE);\r
66 }\r
67 } else {\r
68 //\r
69 // check for "-?"\r
70 //\r
71 if (ShellCommandLineGetFlag(Package, L"-?")) {\r
72 ASSERT(FALSE);\r
73 }\r
74 if (ShellCommandLineGetRawValue(Package, 1) != NULL) {\r
75 //\r
76 // we have too many parameters\r
77 //\r
ba0014b9 78 ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel3HiiHandle, L"ver");\r
a405b86d 79 ShellStatus = SHELL_INVALID_PARAMETER;\r
80 } else {\r
81 if (ShellCommandLineGetFlag(Package, L"-s")) {\r
9d54bf4e
TS
82 if (ShellCommandLineGetFlag(Package, L"-terse") || ShellCommandLineGetFlag(Package, L"-t")){\r
83 ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_CONFLICT), gShellLevel3HiiHandle, L"ver", L"-t or -terse", L"-s");\r
84 ShellStatus = SHELL_INVALID_PARAMETER;\r
85 } else {\r
86 ShellPrintHiiEx (\r
87 0,\r
88 gST->ConOut->Mode->CursorRow,\r
89 NULL,\r
90 STRING_TOKEN (STR_VER_OUTPUT_SIMPLE),\r
91 gShellLevel3HiiHandle,\r
92 gEfiShellProtocol->MajorVersion,\r
93 gEfiShellProtocol->MinorVersion\r
94 );\r
95 }\r
a405b86d 96 } else {\r
97 ShellPrintHiiEx (\r
98 0,\r
99 gST->ConOut->Mode->CursorRow,\r
100 NULL,\r
101 STRING_TOKEN (STR_VER_OUTPUT_SHELL),\r
102 gShellLevel3HiiHandle,\r
103 SupportLevel[Level],\r
104 gEfiShellProtocol->MajorVersion,\r
105 gEfiShellProtocol->MinorVersion\r
106 );\r
107 if (!ShellCommandLineGetFlag(Package, L"-terse") && !ShellCommandLineGetFlag(Package, L"-t")){\r
108 ShellPrintHiiEx(\r
109 -1,\r
110 -1,\r
111 NULL,\r
284e034f
CP
112 STRING_TOKEN (STR_VER_OUTPUT_SUPPLIER),\r
113 gShellLevel3HiiHandle,\r
114 (CHAR16 *) PcdGetPtr (PcdShellSupplier)\r
a405b86d 115 );\r
116\r
117\r
118 ShellPrintHiiEx (\r
119 -1,\r
120 -1,\r
121 NULL,\r
122 STRING_TOKEN (STR_VER_OUTPUT_UEFI),\r
123 gShellLevel3HiiHandle,\r
124 (gST->Hdr.Revision&0xffff0000)>>16,\r
125 (gST->Hdr.Revision&0x0000ffff),\r
126 gST->FirmwareVendor,\r
127 gST->FirmwareRevision\r
128 );\r
129 }\r
130 }\r
131 //\r
132 // implementation specific support for displaying processor architecture\r
133 //\r
134 if (ShellCommandLineGetFlag(Package, L"-_pa")) {\r
135 ShellPrintEx(-1, -1, L"%d\r\n", sizeof(UINTN)==sizeof(UINT64)?64:32);\r
136 }\r
137 }\r
138\r
139 //\r
140 // free the command line package\r
141 //\r
142 ShellCommandLineFreeVarList (Package);\r
143 }\r
144\r
145 return (ShellStatus);\r
146}\r
147\r