]> git.proxmox.com Git - mirror_edk2.git/blame - ShellPkg/Library/UefiShellDriver1CommandsLib/Reconnect.c
ShellPkg/UefiShellLib: clarify workaround for unfixable EdkShell bug
[mirror_edk2.git] / ShellPkg / Library / UefiShellDriver1CommandsLib / Reconnect.c
CommitLineData
4ba49616 1/** @file\r
2 Main file for Reconnect shell Driver1 function.\r
3\r
ba0014b9 4 Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>\r
c9e24031 5 (C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>\r
ba0014b9 6 (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>\r
56ba3746 7 SPDX-License-Identifier: BSD-2-Clause-Patent\r
4ba49616 8\r
9**/\r
10\r
11#include "UefiShellDriver1CommandsLib.h"\r
12\r
d86b04fb
QS
13STATIC CONST SHELL_PARAM_ITEM ParamList[] = {\r
14 {L"-r", TypeFlag},\r
15 {NULL, TypeMax}\r
16 };\r
17\r
18/**\r
19 Connect all the possible console devices.\r
20\r
21**/\r
22VOID\r
23ConnectAllConsoles (\r
24 VOID\r
25 )\r
ba0014b9 26{\r
d86b04fb
QS
27 ShellConnectFromDevPaths(L"ConInDev");\r
28 ShellConnectFromDevPaths(L"ConOutDev");\r
29 ShellConnectFromDevPaths(L"ErrOutDev");\r
ba0014b9 30\r
d86b04fb
QS
31 ShellConnectFromDevPaths(L"ErrOut");\r
32 ShellConnectFromDevPaths(L"ConIn");\r
33 ShellConnectFromDevPaths(L"ConOut");\r
34}\r
35\r
36\r
361a8267 37/**\r
38 Function for 'reconnect' command.\r
39\r
40 @param[in] ImageHandle Handle to the Image (NULL if Internal).\r
41 @param[in] SystemTable Pointer to the System Table (NULL if Internal).\r
42**/\r
4ba49616 43SHELL_STATUS\r
44EFIAPI\r
45ShellCommandRunReconnect (\r
46 IN EFI_HANDLE ImageHandle,\r
47 IN EFI_SYSTEM_TABLE *SystemTable\r
48 )\r
49{\r
50 SHELL_STATUS ShellStatus;\r
d86b04fb
QS
51 LIST_ENTRY *Package;\r
52 CHAR16 *ProblemParam;\r
53 EFI_STATUS Status;\r
4ba49616 54\r
6878e7a7 55 gInReconnect = TRUE;\r
d86b04fb 56 ShellStatus = SHELL_SUCCESS;\r
ba0014b9 57\r
d86b04fb
QS
58 //\r
59 // initialize the shell lib (we must be in non-auto-init...)\r
60 //\r
61 Status = ShellInitialize();\r
62 ASSERT_EFI_ERROR(Status);\r
6878e7a7 63\r
d86b04fb
QS
64 Status = CommandInit();\r
65 ASSERT_EFI_ERROR(Status);\r
66\r
67 //\r
68 // parse the command line\r
69 //\r
70 Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);\r
71 if (EFI_ERROR(Status)) {\r
72 if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {\r
c9e24031 73 ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDriver1HiiHandle, L"reconnect", ProblemParam);\r
d86b04fb
QS
74 FreePool(ProblemParam);\r
75 ShellStatus = SHELL_INVALID_PARAMETER;\r
76 } else {\r
77 ASSERT(FALSE);\r
78 }\r
79 } else {\r
80 ShellStatus = ShellCommandRunDisconnect(ImageHandle, SystemTable);\r
81 if (ShellStatus == SHELL_SUCCESS) {\r
82 if (ShellCommandLineGetFlag(Package, L"-r")) {\r
83 ConnectAllConsoles();\r
84 }\r
85 ShellStatus = ShellCommandRunConnect(ImageHandle, SystemTable);\r
86 }\r
ba0014b9 87 }\r
6878e7a7 88\r
89 gInReconnect = FALSE;\r
90\r
4ba49616 91 return (ShellStatus);\r
92}\r
d86b04fb 93\r