BrowserCallback\r
},\r
{\r
- UnicodeVSPrint\r
+ UnicodeVSPrint,\r
+ UnicodeVSPrintAsciiFormat,\r
+ UnicodeValueToString, \r
+ AsciiVSPrint, \r
+ AsciiVSPrintUnicodeFormat,\r
+ AsciiValueToString\r
}\r
};\r
\r
BOOLEAN gResetRequired;\r
BOOLEAN gNvUpdateRequired;\r
EFI_HII_HANDLE gHiiHandle;\r
-BOOLEAN gFirstIn;\r
UINT16 gDirection;\r
EFI_SCREEN_DESCRIPTOR gScreenDimensions;\r
BOOLEAN gUpArrow;\r
CHAR16 *gFunctionTenString;\r
CHAR16 *gEnterString;\r
CHAR16 *gEnterCommitString;\r
+CHAR16 *gEnterEscapeString;\r
CHAR16 *gEscapeString;\r
CHAR16 *gSaveFailed;\r
CHAR16 *gMoveHighlight;\r
CHAR16 *gPlusString;\r
CHAR16 *gMinusString;\r
CHAR16 *gAdjustNumber;\r
+CHAR16 *gSaveChanges;\r
+CHAR16 *gOptionMismatch;\r
\r
CHAR16 gPromptBlockWidth;\r
CHAR16 gOptionBlockWidth;\r
//\r
// Ensure we are in Text mode\r
//\r
- if (gFirstIn) {\r
- gFirstIn = FALSE;\r
- gST->ConOut->SetAttribute (gST->ConOut, EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK));\r
- DisableQuietBoot ();\r
- }\r
+ gST->ConOut->SetAttribute (gST->ConOut, EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK));\r
+ DisableQuietBoot ();\r
\r
for (Index = 0; Index < HandleCount; Index++) {\r
Selection = AllocateZeroPool (sizeof (UI_MENU_SELECTION));\r
//\r
// Initialize Driver private data\r
//\r
- gFirstIn = TRUE;\r
BannerData = AllocateZeroPool (sizeof (BANNER_DATA));\r
ASSERT (BannerData != NULL);\r
\r
//\r
// Install Print protocol\r
//\r
+ Status = gBS->InstallProtocolInterface (\r
+ &mPrivateData.Handle,\r
+ &gEfiPrint2ProtocolGuid,\r
+ EFI_NATIVE_INTERFACE,\r
+ &mPrivateData.Print\r
+ );\r
+\r
+ //\r
+ // Install Ecp Print protocol, which is defined in\r
+ // Edk\Foundation\Protocol\Print\Print.h with protocol\r
+ // GUID of { 0xdf2d868e, 0x32fc, 0x4cf0, {0x8e, 0x6b, 0xff, 0xd9, 0x5d, 0x13, 0x43, 0xd0 }}\r
+ // This is support previous module that written to consume this protocol.\r
+ // \r
Status = gBS->InstallProtocolInterface (\r
&mPrivateData.Handle,\r
&gEfiPrintProtocolGuid,\r
IN CHAR16 *Src\r
)\r
{\r
- SafeFreePool (*Dest);\r
+ if (*Dest != NULL) {\r
+ FreePool (*Dest);\r
+ }\r
*Dest = AllocateCopyPool (StrSize (Src), Src);\r
ASSERT (*Dest != NULL);\r
}\r
Node = NAME_VALUE_NODE_FROM_LINK (Link);\r
\r
if (StrCmp (Name, Node->Name) == 0) {\r
- SafeFreePool (Node->EditValue);\r
+ if (Node->EditValue != NULL) {\r
+ FreePool (Node->EditValue);\r
+ }\r
Node->EditValue = AllocateCopyPool (StrSize (Value), Value);\r
ASSERT (Node->EditValue != NULL);\r
return EFI_SUCCESS;\r
CHAR16 *Progress;\r
CHAR16 *Result;\r
CHAR16 *Value;\r
+ CHAR16 *StringPtr;\r
UINTN Length;\r
BOOLEAN IsBufferStorage;\r
BOOLEAN IsString;\r
// Skip '=', point to value\r
//\r
Value = Value + 1;\r
+\r
+ //\r
+ // Suppress <AltResp> if any\r
+ //\r
+ StringPtr = Value;\r
+ while (*StringPtr != L'\0' && *StringPtr != L'&') {\r
+ StringPtr++;\r
+ }\r
+ *StringPtr = L'\0';\r
+\r
if (!IsBufferStorage && IsString) {\r
//\r
// Convert Config String to Unicode String, e.g "0041004200430044" => "ABCD"\r
Question = FORM_BROWSER_STATEMENT_FROM_LINK (Link);\r
Link = GetNextNode (&Form->StatementListHead, Link);\r
\r
+ //\r
+ // If Question is suppressed, don't reset it to default\r
+ //\r
+ if (Question->SuppressExpression != NULL) {\r
+ Status = EvaluateExpression (FormSet, Form, Question->SuppressExpression);\r
+ if (!EFI_ERROR (Status) && Question->SuppressExpression->Result.Value.b) {\r
+ continue;\r
+ }\r
+ }\r
+\r
//\r
// Reset Question to its default value\r
//\r
Package = ((UINT8 *) HiiPackageList) + Offset;\r
CopyMem (&PackageHeader, Package, sizeof (EFI_HII_PACKAGE_HEADER));\r
\r
- if (PackageHeader.Type == EFI_HII_PACKAGE_FORM) {\r
+ if (PackageHeader.Type == EFI_HII_PACKAGE_FORMS) {\r
//\r
// Search FormSet in this Form Package\r
//\r