]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/SetupBrowserDxe/Setup.c
ECC Cleanup: Remove variable initialization in declaration.
[mirror_edk2.git] / MdeModulePkg / Universal / SetupBrowserDxe / Setup.c
index fd5aee4ca1e8b096ccdc060310228cefd7335051..847679fce5d3f01631ef23b2558d7022453b8881 100644 (file)
@@ -24,7 +24,12 @@ SETUP_DRIVER_PRIVATE_DATA  mPrivateData = {
     BrowserCallback\r
   },\r
   {\r
-    UnicodeVSPrint\r
+    UnicodeVSPrint,\r
+    UnicodeVSPrintAsciiFormat,\r
+    UnicodeValueToString,                         \r
+    AsciiVSPrint,          \r
+    AsciiVSPrintUnicodeFormat,\r
+    AsciiValueToString\r
   }\r
 };\r
 \r
@@ -39,7 +44,6 @@ UINTN                 gFunctionKeySetting;
 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
@@ -54,6 +58,7 @@ CHAR16            *gFunctionNineString;
 CHAR16            *gFunctionTenString;\r
 CHAR16            *gEnterString;\r
 CHAR16            *gEnterCommitString;\r
+CHAR16            *gEnterEscapeString;\r
 CHAR16            *gEscapeString;\r
 CHAR16            *gSaveFailed;\r
 CHAR16            *gMoveHighlight;\r
@@ -76,6 +81,8 @@ CHAR16            *gMiniString;
 CHAR16            *gPlusString;\r
 CHAR16            *gMinusString;\r
 CHAR16            *gAdjustNumber;\r
+CHAR16            *gSaveChanges;\r
+CHAR16            *gOptionMismatch;\r
 \r
 CHAR16            gPromptBlockWidth;\r
 CHAR16            gOptionBlockWidth;\r
@@ -274,11 +281,8 @@ SendForm (
   //\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
@@ -576,7 +580,6 @@ InitializeSetup (
   //\r
   // Initialize Driver private data\r
   //\r
-  gFirstIn = TRUE;\r
   BannerData = AllocateZeroPool (sizeof (BANNER_DATA));\r
   ASSERT (BannerData != NULL);\r
 \r
@@ -595,6 +598,19 @@ InitializeSetup (
   //\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
@@ -710,7 +726,9 @@ NewStringCpy (
   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
@@ -851,7 +869,9 @@ SetValueByName (
     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
@@ -1032,6 +1052,7 @@ GetQuestionValue (
   CHAR16              *Progress;\r
   CHAR16              *Result;\r
   CHAR16              *Value;\r
+  CHAR16              *StringPtr;\r
   UINTN               Length;\r
   BOOLEAN             IsBufferStorage;\r
   BOOLEAN             IsString;\r
@@ -1227,6 +1248,16 @@ GetQuestionValue (
     // 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
@@ -1877,6 +1908,16 @@ ExtractFormDefault (
     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
@@ -2128,7 +2169,7 @@ GetIfrBinaryData (
     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