X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=EdkModulePkg%2FUniversal%2FUserInterface%2FSetupBrowser%2FDxe%2FInputHandler.c;h=332898f8ad87bc6d919832df787ab79601872919;hp=d84fcf02b11ea64e37a16877de49a42b21740fad;hb=ce8bd86e8f49f17fd2b11e14bbc3b3e816d82c1b;hpb=878ddf1fc3540a715f63594ed22b6929e881afb4 diff --git a/EdkModulePkg/Universal/UserInterface/SetupBrowser/Dxe/InputHandler.c b/EdkModulePkg/Universal/UserInterface/SetupBrowser/Dxe/InputHandler.c index d84fcf02b1..332898f8ad 100644 --- a/EdkModulePkg/Universal/UserInterface/SetupBrowser/Dxe/InputHandler.c +++ b/EdkModulePkg/Universal/UserInterface/SetupBrowser/Dxe/InputHandler.c @@ -1,13 +1,13 @@ /*++ -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +Copyright (c) 2006 - 2007, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. Module Name: @@ -25,12 +25,10 @@ Revision History #include "Ui.h" #include "Colors.h" -#ifndef EFI_MAX #define EFI_MAX(_a, _b) ((_a) > (_b) ? (_a) : (_b)) -#endif EFI_STATUS -ReadString ( +ReadString( IN UI_MENU_OPTION *MenuOption, OUT CHAR16 *StringPtr ) @@ -215,7 +213,6 @@ ReadPassword ( ) { EFI_STATUS Status; - UINTN PasswordSize; UINTN ScreenSize; CHAR16 NullCharacter; CHAR16 Space[2]; @@ -234,12 +231,12 @@ ReadPassword ( UINTN DimensionsWidth; UINTN DimensionsHeight; EFI_IFR_DATA_ENTRY *DataEntry; + UINTN WidthOfString; DimensionsWidth = gScreenDimensions.RightColumn - gScreenDimensions.LeftColumn; DimensionsHeight = gScreenDimensions.BottomRow - gScreenDimensions.TopRow; VariableDefinition = NULL; - PasswordSize = 0; NullCharacter = CHAR_NULL; Space[0] = L' '; Space[1] = CHAR_NULL; @@ -309,7 +306,8 @@ Error: // Upon error, we will likely receive a string to print out // Display error popup // - ScreenSize = EFI_MAX(GetStringWidth (Packet->String), GetStringWidth (gPressEnter)) / 2; + WidthOfString = GetStringWidth (Packet->String); + ScreenSize = EFI_MAX(WidthOfString, GetStringWidth (gPressEnter)) / 2; CreatePopUp (ScreenSize, 4, &NullCharacter, Packet->String, gPressEnter, &NullCharacter); gBS->FreePool (Packet); @@ -318,9 +316,8 @@ Error: } while (Key.UnicodeChar != CHAR_CARRIAGE_RETURN); } - gBS->FreePool (TempString); - gBS->FreePool (TempString2); - return EFI_NOT_READY; + Status = EFI_NOT_READY; + goto Done; } } @@ -418,10 +415,12 @@ Error: if (Confirmation) { if (EFI_ERROR (Status)) { if (Packet->String == NULL) { - ScreenSize = EFI_MAX (GetStringWidth (gConfirmError), GetStringWidth (gPressEnter)) / 2; + WidthOfString = GetStringWidth (gConfirmError); + ScreenSize = EFI_MAX (WidthOfString, GetStringWidth (gPressEnter)) / 2; CreatePopUp (ScreenSize, 4, &NullCharacter, gConfirmError, gPressEnter, &NullCharacter); } else { - ScreenSize = EFI_MAX (GetStringWidth (Packet->String), GetStringWidth (gPressEnter)) / 2; + WidthOfString = GetStringWidth (Packet->String); + ScreenSize = EFI_MAX (WidthOfString, GetStringWidth (gPressEnter)) / 2; CreatePopUp (ScreenSize, 4, &NullCharacter, Packet->String, gPressEnter, &NullCharacter); gBS->FreePool (Packet); } @@ -431,15 +430,13 @@ Error: Status = WaitForKeyStroke (&Key); if (Key.UnicodeChar == CHAR_CARRIAGE_RETURN) { - gBS->FreePool (TempString); - gBS->FreePool (TempString2); - return EFI_NOT_READY; + Status = EFI_NOT_READY; + goto Done; } } while (1); } else { - gBS->FreePool (TempString); - gBS->FreePool (TempString2); - return EFI_NOT_READY; + Status = EFI_NOT_READY; + goto Done; } } else { // @@ -451,9 +448,8 @@ Error: } if (PromptForPassword && EFI_ERROR (Status)) { - gBS->FreePool (TempString); - gBS->FreePool (TempString2); - return EFI_DEVICE_ERROR; + Status = EFI_DEVICE_ERROR; + goto Done; } } } @@ -464,19 +460,18 @@ Error: // Otherwise, kick and error box, and return an error // if (StrCmp (TempString, TempString2) == 0) { - gBS->FreePool (TempString); - gBS->FreePool (TempString2); - return EFI_SUCCESS; + Status = EFI_SUCCESS; + goto Done; } else { - ScreenSize = EFI_MAX (GetStringWidth (gConfirmError), GetStringWidth (gPressEnter)) / 2; + WidthOfString = GetStringWidth (gConfirmError); + ScreenSize = EFI_MAX (WidthOfString, GetStringWidth (gPressEnter)) / 2; CreatePopUp (ScreenSize, 4, &NullCharacter, gConfirmError, gPressEnter, &NullCharacter); StringPtr[0] = CHAR_NULL; do { Status = WaitForKeyStroke (&Key); if (Key.UnicodeChar == CHAR_CARRIAGE_RETURN) { - gBS->FreePool (TempString); - gBS->FreePool (TempString2); - return EFI_DEVICE_ERROR; + Status = EFI_DEVICE_ERROR; + goto Done; } } while (1); } @@ -486,9 +481,8 @@ Error: // // I was asked for a password, return it back in StringPtr // - gBS->FreePool (TempString); - gBS->FreePool (TempString2); - return EFI_SUCCESS; + Status = EFI_SUCCESS; + goto Done; } else { // // If the two passwords were not the same kick an error popup @@ -575,6 +569,8 @@ Error: } while (!ConfirmationComplete); } while (1); + +Done: gBS->FreePool (TempString); gBS->FreePool (TempString2); return Status; @@ -621,7 +617,7 @@ GetNumericInput ( Routine Description: - This routine reads a numeric value from the user input. + This routine reads a numeric value from the user input. Arguments: @@ -632,14 +628,14 @@ Arguments: ManualInput - If the input is manual or not. Tag - Pointer to all the attributes and values associated with a tag. - + Value - Pointer to the numeric value that is going to be read. -Returns: +Returns: EFI_SUCCESS - If numerical input is read successfully EFI_DEVICE_ERROR - If operation fails - + --*/ { EFI_INPUT_KEY Key; @@ -655,7 +651,6 @@ Returns: CHAR16 NullCharacter; CHAR16 *StringPtr; EFI_FILE_FORM_TAGS *FileFormTags; - EFI_STATUS Status; EFI_VARIABLE_DEFINITION *VariableDefinition; UINTN Loop; @@ -689,7 +684,7 @@ Returns: goto TheKey2; } - Status = WaitForKeyStroke (&Key); + WaitForKeyStroke (&Key); TheKey2: switch (Key.UnicodeChar) { @@ -738,9 +733,9 @@ TheKey2: Tag->Value = (UINT16) Number; *Value = (UINT16) Number; UnicodeValueToString ( - FormattedNumber, - FALSE, - (UINTN) Number, + FormattedNumber, + FALSE, + (UINTN) Number, (sizeof (FormattedNumber) / sizeof (FormattedNumber[0])) ); Number = (UINT16) GetStringWidth (FormattedNumber); @@ -879,7 +874,7 @@ EnterCarriageReturn: CreatePopUp (GetStringWidth (StringPtr) / 2, 3, &NullCharacter, StringPtr, &NullCharacter); do { - Status = WaitForKeyStroke (&Key); + WaitForKeyStroke (&Key); switch (Key.UnicodeChar) { @@ -985,7 +980,6 @@ GetSelectionInputPopUp ( OUT UINT16 *KeyValue ) { - EFI_STATUS Status; EFI_INPUT_KEY Key; UINTN Index; UINTN TempIndex; @@ -1005,7 +999,6 @@ GetSelectionInputPopUp ( UINTN MenuLinesInView; UINTN PopUpWidth; CHAR16 Character; - UINTN FirstOption; BOOLEAN FirstOptionFoundFlag; INT32 SavedAttribute; EFI_TAG TagBackup; @@ -1017,10 +1010,8 @@ GetSelectionInputPopUp ( BOOLEAN ShowDownArrow; BOOLEAN ShowUpArrow; UINTN DimensionsWidth; - UINTN DimensionsHeight; DimensionsWidth = gScreenDimensions.RightColumn - gScreenDimensions.LeftColumn; - DimensionsHeight = gScreenDimensions.BottomRow - gScreenDimensions.TopRow; TempValue = 0; TempIndex = 0; @@ -1050,7 +1041,6 @@ GetSelectionInputPopUp ( Count = 0; PopUpWidth = 0; - FirstOption = MenuOption->TagIndex; FirstOptionFoundFlag = FALSE; StringPtr = AllocateZeroPool ((gOptionBlockWidth + 1) * 2); @@ -1066,7 +1056,6 @@ GetSelectionInputPopUp ( if (MenuOption->Tags[Index].Operand == EFI_IFR_ONE_OF_OPTION_OP && !MenuOption->Tags[Index].Suppress) { if (!FirstOptionFoundFlag) { - FirstOption = Index; FirstOptionFoundFlag = TRUE; } @@ -1233,6 +1222,7 @@ GetSelectionInputPopUp ( // if (StrLen (StringPtr) > (PopUpWidth - 1)) { TempStringPtr = AllocateZeroPool (sizeof (CHAR16) * (PopUpWidth - 1)); + ASSERT (TempStringPtr != NULL); CopyMem (TempStringPtr, StringPtr, (sizeof (CHAR16) * (PopUpWidth - 5))); gBS->FreePool (StringPtr); StringPtr = TempStringPtr; @@ -1308,7 +1298,7 @@ GetSelectionInputPopUp ( KeyInitialized = TRUE; } - Status = WaitForKeyStroke (&Key); + WaitForKeyStroke (&Key); TheKey: switch (Key.UnicodeChar) { @@ -1479,7 +1469,7 @@ TheKey: } else { if (Key.ScanCode == SCAN_UP) { TempIndex = Index - 1; - + // // Keep going until meets meaningful tag. // @@ -1552,14 +1542,14 @@ TheKey: *Value = TempValue; } - gST->ConOut->SetAttribute (gST->ConOut, SavedAttribute); - return EFI_SUCCESS; + goto Done; default: break; } } while (1); +Done: gST->ConOut->SetAttribute (gST->ConOut, SavedAttribute); return EFI_SUCCESS; }