]> git.proxmox.com Git - mirror_edk2.git/blame - ShellPkg/Library/UefiShellDriver1CommandsLib/Devices.c
ShellPkg: Fix several GCC compiler warnings
[mirror_edk2.git] / ShellPkg / Library / UefiShellDriver1CommandsLib / Devices.c
CommitLineData
a405b86d 1/** @file\r
2 Main file for devices shell Driver1 function.\r
3\r
4 Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>\r
5 This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution. The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
9\r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
15#include "UefiShellDriver1CommandsLib.h"\r
16\r
17EFI_STATUS\r
18EFIAPI\r
19GetDeviceHandleInfo (\r
20 IN EFI_HANDLE TheHandle,\r
21 IN CHAR16 *Type,\r
22 IN BOOLEAN *Cfg,\r
23 IN BOOLEAN *Diag,\r
24 IN UINT8 *Parents,\r
25 IN UINT8 *Devices,\r
26 IN UINT8 *Children,\r
27 OUT CHAR16 **Name,\r
28 IN CONST CHAR8 *Language\r
29 ){\r
30 *Name = NULL;\r
31\r
32 gEfiShellProtocol->GetDeviceName(TheHandle, EFI_DEVICE_NAME_USE_COMPONENT_NAME|EFI_DEVICE_NAME_USE_DEVICE_PATH, (CHAR8*)Language, Name);\r
33\r
34\r
35\r
36\r
37\r
38\r
39\r
40\r
41\r
42\r
43\r
44\r
45\r
46 return (EFI_SUCCESS);\r
47}\r
48\r
49STATIC CONST SHELL_PARAM_ITEM ParamList[] = {\r
50 {L"-l", TypeValue},\r
51 {NULL, TypeMax}\r
52 };\r
53\r
54SHELL_STATUS\r
55EFIAPI\r
56ShellCommandRunDevices (\r
57 VOID *RESERVED\r
58 ) {\r
59 EFI_STATUS Status;\r
60 LIST_ENTRY *Package;\r
61 CHAR16 *ProblemParam;\r
62 SHELL_STATUS ShellStatus;\r
63 CHAR8 *Language;\r
64 EFI_HANDLE *HandleList;\r
65 EFI_HANDLE *HandleListWalker;\r
66 CHAR16 Type;\r
67 BOOLEAN Cfg;\r
68 BOOLEAN Diag;\r
69 UINT8 Parents;\r
70 UINT8 Devices;\r
71 UINT8 Children;\r
72 CHAR16 *Name;\r
73\r
74 ShellStatus = SHELL_SUCCESS;\r
75 Language = NULL;\r
76\r
77 //\r
78 // initialize the shell lib (we must be in non-auto-init...)\r
79 //\r
80 Status = ShellInitialize();\r
81 ASSERT_EFI_ERROR(Status);\r
82\r
83 Status = CommandInit();\r
84 ASSERT_EFI_ERROR(Status);\r
85\r
86 //\r
87 // parse the command line\r
88 //\r
89 Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);\r
90 if EFI_ERROR(Status) {\r
91 if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {\r
92 ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDriver1HiiHandle, ProblemParam);\r
93 FreePool(ProblemParam);\r
94 ShellStatus = SHELL_INVALID_PARAMETER;\r
95 } else {\r
96 ASSERT(FALSE);\r
97 }\r
98 } else {\r
99 //\r
100 // if more than 0 'value' parameters we have too many parameters\r
101 //\r
102 if (ShellCommandLineGetRawValue(Package, 1) != NULL){\r
103 //\r
104 // error for too many parameters\r
105 //\r
106 ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDriver1HiiHandle);\r
107 ShellStatus = SHELL_INVALID_PARAMETER;\r
108 } else {\r
109 //\r
110 // get the language if necessary\r
111 //\r
112 if (ShellCommandLineGetFlag(Package, L"-l") != FALSE) {\r
113 Language = AllocateZeroPool(StrSize(ShellCommandLineGetValue(Package, L"-l")));\r
114 AsciiSPrint(Language, StrSize(ShellCommandLineGetValue(Package, L"-l")), "%S", ShellCommandLineGetValue(Package, L"-l"));\r
115 }\r
116\r
117 //\r
118 // Print Header\r
119 //\r
120 ShellPrintHiiEx(-1, -1, Language, STRING_TOKEN (STR_DEVICES_HEADER_LINES), gShellDriver1HiiHandle);\r
121\r
122 //\r
123 // loop through each handle\r
124 //\r
125 HandleList = GetHandleListByPotocol(NULL);\r
126 ASSERT(HandleList != NULL);\r
127 for (HandleListWalker = HandleList\r
128 ; HandleListWalker != NULL && *HandleListWalker != NULL && !EFI_ERROR(Status)\r
129 ; HandleListWalker++\r
130 ){\r
131 //\r
132 // get all the info on each handle\r
133 //\r
134 Status = GetDeviceHandleInfo(*HandleListWalker, &Type, &Cfg, &Diag, &Parents, &Devices, &Children, &Name, Language);\r
135 if (Parents != 0 || Devices != 0 || Children != 0) {\r
136 ShellPrintHiiEx(\r
137 -1,\r
138 -1,\r
139 Language,\r
140 STRING_TOKEN (STR_DEVICES_ITEM_LINE),\r
141 gShellDriver1HiiHandle,\r
142 *HandleListWalker,\r
143 Type,\r
144 Cfg!=FALSE?L'X':L'-',\r
145 Diag!=FALSE?L'X':L'-',\r
146 Parents,\r
147 Devices,\r
148 Children,\r
149 Name);\r
150 }\r
151 if (Name != NULL) {\r
152 FreePool(Name);\r
153 }\r
154 }\r
155\r
156 if (HandleList != NULL) {\r
157 FreePool(HandleList);\r
158 }\r
159 }\r
160 ShellCommandLineFreeVarList (Package);\r
161 }\r
162 return (ShellStatus);\r
163}\r
164\r