diff options
author | vanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524> | 2009-04-17 05:40:21 +0000 |
---|---|---|
committer | vanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524> | 2009-04-17 05:40:21 +0000 |
commit | e672aebac6f0acbe8c9000cd1857b7a4a9e5080a (patch) | |
tree | 967dd29538d1b3c2498fc86378d933a76620464d | |
parent | 75bf9d0ecca38dfec9b645a6eb1119c025892304 (diff) | |
download | edk2-platforms-e672aebac6f0acbe8c9000cd1857b7a4a9e5080a.tar.xz |
fixed one bug when "reconnect -r"
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8116 6f19259b-4bc3-4df7-8a09-765794883524
-rw-r--r-- | EdkShellPkg/ShellHotFix.patch | 565 |
1 files changed, 288 insertions, 277 deletions
diff --git a/EdkShellPkg/ShellHotFix.patch b/EdkShellPkg/ShellHotFix.patch index e4aa54bb78..23ca26c3df 100644 --- a/EdkShellPkg/ShellHotFix.patch +++ b/EdkShellPkg/ShellHotFix.patch @@ -168,65 +168,65 @@ Index: edit/libEditor.c --- edit/libEditor.c (revision 30)
+++ edit/libEditor.c (working copy)
@@ -88,8 +88,6 @@
- )
- {
- EFI_STATUS Status;
-- EFI_HANDLE *HandleBuffer;
-- UINTN HandleCount;
-
- //
- // basic initialization
+ ) + { + EFI_STATUS Status; +- EFI_HANDLE *HandleBuffer; +- UINTN HandleCount; + + // + // basic initialization @@ -117,38 +115,22 @@
- );
-
- //
-- // Find mouse
-+ // Find mouse in System Table ConsoleInHandle
- //
-- HandleBuffer = NULL;
-- Status = LibLocateHandle (
-- ByProtocol,
-- &gEfiPrimaryConsoleInDeviceGuid,
-- NULL,
-- &HandleCount,
-- &HandleBuffer
-- );
-+ Status = BS->HandleProtocol (
-+ In,
-+ &gEfiSimplePointerProtocolGuid,
-+ &MainEditor.MouseInterface
-+ );
-
-- if (!EFI_ERROR (Status)) {
-- if (HandleCount > 0) {
-- Status = BS->HandleProtocol (
-- HandleBuffer[0],
-- &gEfiSimplePointerProtocolGuid,
-- &MainEditor.MouseInterface
-- );
--
-- if (EFI_ERROR (Status)) {
-- MainEditor.MouseInterface = NULL;
-- } else {
-- MainEditor.MouseAccumulatorX = 0;
-- MainEditor.MouseAccumulatorY = 0;
-- MainEditor.MouseSupported = TRUE;
-- }
-- }
-+ if (EFI_ERROR (Status)) {
-+ MainEditor.MouseInterface = NULL;
-+ } else {
-+ MainEditor.MouseAccumulatorX = 0;
-+ MainEditor.MouseAccumulatorY = 0;
-+ MainEditor.MouseSupported = TRUE;
- }
-
-- if (HandleBuffer) {
-- FreePool (HandleBuffer);
-- }
- //
- // below will call the five components' init function
- //
+ ); + + // +- // Find mouse ++ // Find mouse in System Table ConsoleInHandle + // +- HandleBuffer = NULL; +- Status = LibLocateHandle ( +- ByProtocol, +- &gEfiPrimaryConsoleInDeviceGuid, +- NULL, +- &HandleCount, +- &HandleBuffer +- ); ++ Status = BS->HandleProtocol ( ++ In, ++ &gEfiSimplePointerProtocolGuid, ++ &MainEditor.MouseInterface ++ ); + +- if (!EFI_ERROR (Status)) { +- if (HandleCount > 0) { +- Status = BS->HandleProtocol ( +- HandleBuffer[0], +- &gEfiSimplePointerProtocolGuid, +- &MainEditor.MouseInterface +- ); +- +- if (EFI_ERROR (Status)) { +- MainEditor.MouseInterface = NULL; +- } else { +- MainEditor.MouseAccumulatorX = 0; +- MainEditor.MouseAccumulatorY = 0; +- MainEditor.MouseSupported = TRUE; +- } +- } ++ if (EFI_ERROR (Status)) { ++ MainEditor.MouseInterface = NULL; ++ } else { ++ MainEditor.MouseAccumulatorX = 0; ++ MainEditor.MouseAccumulatorY = 0; ++ MainEditor.MouseSupported = TRUE; + } + +- if (HandleBuffer) { +- FreePool (HandleBuffer); +- } + // + // below will call the five components' init function + // Index: edit/libFileBuffer.c
===================================================================
--- edit/libFileBuffer.c (revision 30)
@@ -248,67 +248,67 @@ Index: edit/libFileBuffer.c + if ((FileSize >= 2) && (*((UINT16 *) Buffer) == EFI_UNICODE_BYTE_ORDER_MARK)) { // // Unicode file's size should be even - //
+ // Index: hexedit/libEditor.c
===================================================================
--- hexedit/libEditor.c (revision 30)
+++ hexedit/libEditor.c (working copy)
@@ -100,8 +100,6 @@
- --*/
- {
- EFI_STATUS Status;
-- EFI_HANDLE *HandleBuffer;
-- UINTN HandleCount;
-
- //
- // basic initialization
+ --*/ + { + EFI_STATUS Status; +- EFI_HANDLE *HandleBuffer; +- UINTN HandleCount; + + // + // basic initialization @@ -129,36 +127,19 @@
- &(HMainEditor.ScreenSize.Row)
- );
-
-- HandleBuffer = NULL;
-- Status = LibLocateHandle (
-- ByProtocol,
-- &gEfiPrimaryConsoleInDeviceGuid,
-- NULL,
-- &HandleCount,
-- &HandleBuffer
-- );
--
-- if (!EFI_ERROR (Status)) {
--
-- if (HandleCount > 0) {
-- Status = BS->HandleProtocol (
-- HandleBuffer[0],
-- &gEfiSimplePointerProtocolGuid,
-- &HMainEditor.MouseInterface
-- );
-- if (EFI_ERROR (Status)) {
-- HMainEditor.MouseInterface = NULL;
-- } else {
-- HMainEditor.MouseAccumulatorX = 0;
-- HMainEditor.MouseAccumulatorY = 0;
-- HMainEditor.MouseSupported = TRUE;
-- }
-- }
-+ Status = BS->HandleProtocol (
-+ In,
-+ &gEfiSimplePointerProtocolGuid,
-+ &HMainEditor.MouseInterface
-+ );
-+ if (EFI_ERROR (Status)) {
-+ HMainEditor.MouseInterface = NULL;
-+ } else {
-+ HMainEditor.MouseAccumulatorX = 0;
-+ HMainEditor.MouseAccumulatorY = 0;
-+ HMainEditor.MouseSupported = TRUE;
- }
-
-- if (HandleBuffer != NULL) {
-- FreePool (HandleBuffer);
-- }
- //
- // below will call the five components' init function
+ &(HMainEditor.ScreenSize.Row) + ); + +- HandleBuffer = NULL; +- Status = LibLocateHandle ( +- ByProtocol, +- &gEfiPrimaryConsoleInDeviceGuid, +- NULL, +- &HandleCount, +- &HandleBuffer +- ); +- +- if (!EFI_ERROR (Status)) { +- +- if (HandleCount > 0) { +- Status = BS->HandleProtocol ( +- HandleBuffer[0], +- &gEfiSimplePointerProtocolGuid, +- &HMainEditor.MouseInterface +- ); +- if (EFI_ERROR (Status)) { +- HMainEditor.MouseInterface = NULL; +- } else { +- HMainEditor.MouseAccumulatorX = 0; +- HMainEditor.MouseAccumulatorY = 0; +- HMainEditor.MouseSupported = TRUE; +- } +- } ++ Status = BS->HandleProtocol ( ++ In, ++ &gEfiSimplePointerProtocolGuid, ++ &HMainEditor.MouseInterface ++ ); ++ if (EFI_ERROR (Status)) { ++ HMainEditor.MouseInterface = NULL; ++ } else { ++ HMainEditor.MouseAccumulatorX = 0; ++ HMainEditor.MouseAccumulatorY = 0; ++ HMainEditor.MouseSupported = TRUE; + } + +- if (HandleBuffer != NULL) { +- FreePool (HandleBuffer); +- } + // + // below will call the five components' init function // Index: Library/EfiShellLib.h
===================================================================
@@ -504,171 +504,182 @@ Index: shellenv/Connect.c --- shellenv/Connect.c (revision 30)
+++ shellenv/Connect.c (working copy)
@@ -831,6 +831,16 @@
- return Status;
- }
-
-+ //
-+ // Close proxy console before disconnect all devices.
-+ //
-+ SEnvCloseConsoleProxy (
-+ ST->ConsoleInHandle,
-+ &ST->ConIn,
-+ ST->ConsoleOutHandle,
-+ &ST->ConOut
-+ );
-+
- for (Index = 0; Index < AllHandleCount; Index++) {
- //
- // Check whether the handle is still in handle database
+ return Status; + } + ++ // ++ // Close proxy console before disconnect all devices. ++ // ++ SEnvCloseConsoleProxy ( ++ ST->ConsoleInHandle, ++ &ST->ConIn, ++ ST->ConsoleOutHandle, ++ &ST->ConOut ++ ); ++ + for (Index = 0; Index < AllHandleCount; Index++) { + // + // Check whether the handle is still in handle database @@ -1004,7 +1014,6 @@
- VOID
- SEnvConnectConsole (
- CHAR16 *VariableName,
-- EFI_GUID *PrimaryGuid,
- EFI_GUID *ConsoleGuid,
- EFI_HANDLE *ConsoleHandle,
- VOID **ConsoleInterface
-@@ -1018,9 +1027,8 @@
- EFI_HANDLE *AllHandleBuffer;
- VOID *Interface;
-
-- *ConsoleHandle = NULL;
-- *ConsoleInterface = NULL;
- ConsoleIndex = 0;
-+ AllHandleBuffer = NULL;
-
- DevicePath = LibGetVariable (VariableName, &gEfiGlobalVariableGuid);
- if (DevicePath != NULL) {
-@@ -1028,17 +1036,19 @@
- FreePool (DevicePath);
- }
-
-- AllHandleBuffer = NULL;
-- Status = BS->LocateHandleBuffer (
-- ByProtocol,
-- PrimaryGuid,
-- NULL,
-- &AllHandleCount,
-- &AllHandleBuffer
-- );
-- if (!EFI_ERROR (Status) && AllHandleCount > 0) {
-- *ConsoleHandle = AllHandleBuffer[0];
-- } else if (*ConsoleHandle == NULL) {
-+ Status = EFI_NOT_FOUND;
-+ //
-+ // Check ConsoleHandle validation whatever it was updated or not.
-+ //
-+ if (*ConsoleHandle != NULL) {
-+ Status = BS->HandleProtocol (
-+ *ConsoleHandle,
-+ ConsoleGuid,
-+ &Interface
-+ );
-+ }
-+
-+ if (EFI_ERROR (Status)) {
- AllHandleBuffer = NULL;
- Status = BS->LocateHandleBuffer (
- ByProtocol,
-@@ -1063,16 +1073,16 @@
- &gEfiDevicePathProtocolGuid,
- &Interface
- );
-- if (EFI_ERROR (Status)) {
-+ if (!EFI_ERROR (Status)) {
- ConsoleIndex = Index;
- break;
- }
- }
-+
-+ *ConsoleHandle = AllHandleBuffer[ConsoleIndex];
- }
- }
-
-- *ConsoleHandle = AllHandleBuffer[ConsoleIndex];
--
- if (*ConsoleHandle != NULL) {
- BS->HandleProtocol (
- *ConsoleHandle,
-@@ -1081,7 +1091,7 @@
- );
- }
-
-- if (AllHandleBuffer) {
-+ if (AllHandleBuffer != NULL) {
- FreePool (AllHandleBuffer);
- }
- }
-@@ -1189,8 +1199,7 @@
- EFI_STATUS Status;
-
- //
-- // Check current ConIn and ConOut to ensure it is the ConsoleProxy
-- // Otherwise, the Console should not be close
-+ // Check current ConIn and ConOut to judge it is the ConsoleProxy
- //
- Status = SEnvCheckConsoleProxy (
- ST->ConsoleInHandle,
-@@ -1203,23 +1212,21 @@
- // Indicate the Console is replaced by redirection operation
- // It is not safe to connect Console here
- //
-- if (EFI_ERROR (Status)) {
-- return ;
-+ if (!EFI_ERROR (Status)) {
-+ //
-+ // It is proxy console, to prevent the proxy console form being restored to original console,
-+ // close it temporary before connect all console
-+ //
-+ SEnvCloseConsoleProxy (
-+ ST->ConsoleInHandle,
-+ &ST->ConIn,
-+ ST->ConsoleOutHandle,
-+ &ST->ConOut
-+ );
- }
-- //
-- // To prevent the proxy console form being restored to original console,
-- // close it temporary before connect all console
-- //
-- SEnvCloseConsoleProxy (
-- ST->ConsoleInHandle,
-- &ST->ConIn,
-- ST->ConsoleOutHandle,
-- &ST->ConOut
-- );
-
- SEnvConnectConsole (
- VarErrorOut,
-- &gEfiPrimaryStandardErrorDeviceGuid,
- &gEfiSimpleTextOutProtocolGuid,
- &ST->StandardErrorHandle,
- (VOID **) &ST->StdErr
-@@ -1227,7 +1234,6 @@
-
- SEnvConnectConsole (
- VarConsoleOut,
-- &gEfiPrimaryConsoleOutDeviceGuid,
- &gEfiSimpleTextOutProtocolGuid,
- &ST->ConsoleOutHandle,
- (VOID **) &ST->ConOut
-@@ -1235,7 +1241,6 @@
-
- SEnvConnectConsole (
- VarConsoleIn,
-- &gEfiPrimaryConsoleInDeviceGuid,
- &gEfiSimpleTextInProtocolGuid,
- &ST->ConsoleInHandle,
- (VOID **) &ST->ConIn
-@@ -1254,6 +1259,8 @@
- SetCrc (&ST->Hdr);
- }
-
-+
-+
- EFI_STATUS
- EFIAPI
- SEnvCmdReconnect (
+ VOID + SEnvConnectConsole ( + CHAR16 *VariableName, +- EFI_GUID *PrimaryGuid, + EFI_GUID *ConsoleGuid, + EFI_HANDLE *ConsoleHandle, + VOID **ConsoleInterface +@@ -1018,27 +1027,36 @@
+ EFI_HANDLE *AllHandleBuffer; + VOID *Interface; + +- *ConsoleHandle = NULL; +- *ConsoleInterface = NULL; + ConsoleIndex = 0; ++ AllHandleBuffer = NULL; + + DevicePath = LibGetVariable (VariableName, &gEfiGlobalVariableGuid); +- if (DevicePath != NULL) { +- SEnvConnectDevicePath (DevicePath); +- FreePool (DevicePath); ++ if (DevicePath == NULL) { ++ // ++ // If no any device defined in EFI variable, do nothing ++ // ++ return; + } + +- AllHandleBuffer = NULL; +- Status = BS->LocateHandleBuffer ( +- ByProtocol, +- PrimaryGuid, +- NULL, +- &AllHandleCount, +- &AllHandleBuffer +- ); +- if (!EFI_ERROR (Status) && AllHandleCount > 0) { +- *ConsoleHandle = AllHandleBuffer[0]; +- } else if (*ConsoleHandle == NULL) { ++ // ++ // Connect all console devices ++ // ++ SEnvConnectDevicePath (DevicePath); ++ FreePool (DevicePath); ++ ++ Status = EFI_NOT_FOUND; ++ // ++ // Check ConsoleHandle validation whatever it was updated or not. ++ // ++ if (*ConsoleHandle != NULL) { ++ Status = BS->HandleProtocol ( ++ *ConsoleHandle, ++ ConsoleGuid, ++ &Interface ++ ); ++ } ++ ++ if (EFI_ERROR (Status)) { + AllHandleBuffer = NULL; + Status = BS->LocateHandleBuffer ( + ByProtocol, +@@ -1063,16 +1081,16 @@
+ &gEfiDevicePathProtocolGuid, + &Interface + ); +- if (EFI_ERROR (Status)) { ++ if (!EFI_ERROR (Status)) { + ConsoleIndex = Index; + break; + } + } ++ ++ *ConsoleHandle = AllHandleBuffer[ConsoleIndex]; + } + } + +- *ConsoleHandle = AllHandleBuffer[ConsoleIndex]; +- + if (*ConsoleHandle != NULL) { + BS->HandleProtocol ( + *ConsoleHandle, +@@ -1081,7 +1099,7 @@
+ ); + } + +- if (AllHandleBuffer) { ++ if (AllHandleBuffer != NULL) { + FreePool (AllHandleBuffer); + } + } +@@ -1189,8 +1207,7 @@
+ EFI_STATUS Status; + + // +- // Check current ConIn and ConOut to ensure it is the ConsoleProxy +- // Otherwise, the Console should not be close ++ // Check current ConIn and ConOut to judge it is the ConsoleProxy + // + Status = SEnvCheckConsoleProxy ( + ST->ConsoleInHandle, +@@ -1203,23 +1220,21 @@
+ // Indicate the Console is replaced by redirection operation + // It is not safe to connect Console here + // +- if (EFI_ERROR (Status)) { +- return ; ++ if (!EFI_ERROR (Status)) { ++ // ++ // It is proxy console, to prevent the proxy console form being restored to original console, ++ // close it temporary before connect all console ++ // ++ SEnvCloseConsoleProxy ( ++ ST->ConsoleInHandle, ++ &ST->ConIn, ++ ST->ConsoleOutHandle, ++ &ST->ConOut ++ ); + } +- // +- // To prevent the proxy console form being restored to original console, +- // close it temporary before connect all console +- // +- SEnvCloseConsoleProxy ( +- ST->ConsoleInHandle, +- &ST->ConIn, +- ST->ConsoleOutHandle, +- &ST->ConOut +- ); + + SEnvConnectConsole ( + VarErrorOut, +- &gEfiPrimaryStandardErrorDeviceGuid, + &gEfiSimpleTextOutProtocolGuid, + &ST->StandardErrorHandle, + (VOID **) &ST->StdErr +@@ -1227,7 +1242,6 @@
+ + SEnvConnectConsole ( + VarConsoleOut, +- &gEfiPrimaryConsoleOutDeviceGuid, + &gEfiSimpleTextOutProtocolGuid, + &ST->ConsoleOutHandle, + (VOID **) &ST->ConOut +@@ -1235,7 +1249,6 @@
+ + SEnvConnectConsole ( + VarConsoleIn, +- &gEfiPrimaryConsoleInDeviceGuid, + &gEfiSimpleTextInProtocolGuid, + &ST->ConsoleInHandle, + (VOID **) &ST->ConIn +@@ -1254,6 +1267,8 @@
+ SetCrc (&ST->Hdr); + } + ++ ++ + EFI_STATUS + EFIAPI + SEnvCmdReconnect ( Index: SmbiosView/PrintInfo.c
===================================================================
--- SmbiosView/PrintInfo.c (revision 30)
|