diff options
author | Michael Kubacki <michael.kubacki@microsoft.com> | 2021-12-05 14:54:02 -0800 |
---|---|---|
committer | mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> | 2021-12-07 17:24:28 +0000 |
commit | 1436aea4d5707e672672a11bda72be2c63c936c3 (patch) | |
tree | 370c9d5bd8823aa8ea7bce71a0f29bff71feff67 /MdeModulePkg/Universal/HiiDatabaseDxe | |
parent | 7c7184e201a90a1d2376e615e55e3f4074731468 (diff) | |
download | edk2-1436aea4d5707e672672a11bda72be2c63c936c3.tar.gz |
MdeModulePkg: Apply uncrustify changes
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737
Apply uncrustify changes to .c/.h files in the MdeModulePkg package
Cc: Andrew Fish <afish@apple.com>
Cc: Leif Lindholm <leif@nuviainc.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
Diffstat (limited to 'MdeModulePkg/Universal/HiiDatabaseDxe')
-rw-r--r-- | MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c | 1825 | ||||
-rw-r--r-- | MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c | 3576 | ||||
-rw-r--r-- | MdeModulePkg/Universal/HiiDatabaseDxe/Database.c | 2443 | ||||
-rw-r--r-- | MdeModulePkg/Universal/HiiDatabaseDxe/Font.c | 1610 | ||||
-rw-r--r-- | MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h | 779 | ||||
-rw-r--r-- | MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseEntry.c | 55 | ||||
-rw-r--r-- | MdeModulePkg/Universal/HiiDatabaseDxe/Image.c | 870 | ||||
-rw-r--r-- | MdeModulePkg/Universal/HiiDatabaseDxe/ImageEx.c | 258 | ||||
-rw-r--r-- | MdeModulePkg/Universal/HiiDatabaseDxe/String.c | 1239 |
9 files changed, 6584 insertions, 6071 deletions
diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c b/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c index 69bff5148e..96e05d4cf9 100644 --- a/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c @@ -6,10 +6,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/
-
#include "HiiDatabase.h"
-extern HII_DATABASE_PRIVATE_DATA mPrivate;
+extern HII_DATABASE_PRIVATE_DATA mPrivate;
/**
Convert the hex UNICODE %02x encoding of a UEFI device path to binary
@@ -29,18 +28,18 @@ extern HII_DATABASE_PRIVATE_DATA mPrivate; **/
EFI_STATUS
ExtractDevicePath (
- IN EFI_STRING String,
- OUT UINT8 **DevicePathData,
- OUT EFI_STRING *NextString
+ IN EFI_STRING String,
+ OUT UINT8 **DevicePathData,
+ OUT EFI_STRING *NextString
)
{
- UINTN Length;
- EFI_STRING PathHdr;
- UINT8 *DevicePathBuffer;
- CHAR16 TemStr[2];
- UINTN Index;
- UINT8 DigitUint8;
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+ UINTN Length;
+ EFI_STRING PathHdr;
+ UINT8 *DevicePathBuffer;
+ CHAR16 TemStr[2];
+ UINTN Index;
+ UINT8 DigitUint8;
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
ASSERT (NextString != NULL && DevicePathData != NULL);
@@ -49,7 +48,7 @@ ExtractDevicePath ( //
if (String == NULL) {
*DevicePathData = NULL;
- *NextString = NULL;
+ *NextString = NULL;
return EFI_SUCCESS;
}
@@ -57,7 +56,7 @@ ExtractDevicePath ( // Skip '&' if exist.
//
if (*String == L'&') {
- String ++;
+ String++;
}
//
@@ -71,7 +70,7 @@ ExtractDevicePath ( // Not include PathHdr, return success and DevicePath = NULL.
//
*DevicePathData = NULL;
- *NextString = String;
+ *NextString = String;
return EFI_SUCCESS;
}
}
@@ -83,6 +82,7 @@ ExtractDevicePath ( if (*String == 0) {
return EFI_INVALID_PARAMETER;
}
+
PathHdr = String;
//
@@ -90,7 +90,8 @@ ExtractDevicePath ( // or '\0' (end of configuration string) is the UNICODE %02x bytes encoding
// of UEFI device path.
//
- for (Length = 0; *String != 0 && *String != L'&'; String++, Length++);
+ for (Length = 0; *String != 0 && *String != L'&'; String++, Length++) {
+ }
//
// Save the return next keyword string value.
@@ -109,7 +110,7 @@ ExtractDevicePath ( // as the device path resides in RAM memory.
// Translate the data into binary.
//
- DevicePathBuffer = (UINT8 *) AllocateZeroPool ((Length + 1) / 2);
+ DevicePathBuffer = (UINT8 *)AllocateZeroPool ((Length + 1) / 2);
if (DevicePathBuffer == NULL) {
return EFI_OUT_OF_RESOURCES;
}
@@ -118,20 +119,20 @@ ExtractDevicePath ( // Convert DevicePath
//
ZeroMem (TemStr, sizeof (TemStr));
- for (Index = 0; Index < Length; Index ++) {
- TemStr[0] = PathHdr[Index];
- DigitUint8 = (UINT8) StrHexToUint64 (TemStr);
+ for (Index = 0; Index < Length; Index++) {
+ TemStr[0] = PathHdr[Index];
+ DigitUint8 = (UINT8)StrHexToUint64 (TemStr);
if ((Index & 1) == 0) {
- DevicePathBuffer [Index/2] = DigitUint8;
+ DevicePathBuffer[Index/2] = DigitUint8;
} else {
- DevicePathBuffer [Index/2] = (UINT8) ((DevicePathBuffer [Index/2] << 4) + DigitUint8);
+ DevicePathBuffer[Index/2] = (UINT8)((DevicePathBuffer[Index/2] << 4) + DigitUint8);
}
}
//
// Validate DevicePath
//
- DevicePath = (EFI_DEVICE_PATH_PROTOCOL *) DevicePathBuffer;
+ DevicePath = (EFI_DEVICE_PATH_PROTOCOL *)DevicePathBuffer;
while (!IsDevicePathEnd (DevicePath)) {
if ((DevicePath->Type == 0) || (DevicePath->SubType == 0) || (DevicePathNodeLength (DevicePath) < sizeof (EFI_DEVICE_PATH_PROTOCOL))) {
//
@@ -140,6 +141,7 @@ ExtractDevicePath ( FreePool (DevicePathBuffer);
return EFI_INVALID_PARAMETER;
}
+
DevicePath = NextDevicePathNode (DevicePath);
}
@@ -166,13 +168,13 @@ ExtractDevicePath ( **/
EFI_STATUS
ExtractNameSpace (
- IN EFI_STRING String,
- OUT CHAR8 **NameSpace,
- OUT EFI_STRING *NextString
+ IN EFI_STRING String,
+ OUT CHAR8 **NameSpace,
+ OUT EFI_STRING *NextString
)
{
- CHAR16 *TmpPtr;
- UINTN NameSpaceSize;
+ CHAR16 *TmpPtr;
+ UINTN NameSpaceSize;
ASSERT (NameSpace != NULL);
@@ -186,6 +188,7 @@ ExtractNameSpace ( if (NextString != NULL) {
*NextString = NULL;
}
+
return EFI_SUCCESS;
}
@@ -199,12 +202,14 @@ ExtractNameSpace ( if (StrnCmp (String, L"NAMESPACE=", StrLen (L"NAMESPACE=")) != 0) {
return EFI_INVALID_PARAMETER;
}
+
String += StrLen (L"NAMESPACE=");
TmpPtr = StrStr (String, L"&");
if (TmpPtr != NULL) {
*TmpPtr = 0;
}
+
if (NextString != NULL) {
*NextString = String + StrLen (String);
}
@@ -214,10 +219,11 @@ ExtractNameSpace ( // Here will convert the unicode string to ascii and save it.
//
NameSpaceSize = StrLen (String) + 1;
- *NameSpace = AllocatePool (NameSpaceSize);
+ *NameSpace = AllocatePool (NameSpaceSize);
if (*NameSpace == NULL) {
return EFI_OUT_OF_RESOURCES;
}
+
UnicodeStrToAsciiStrS (String, *NameSpace, NameSpaceSize);
if (TmpPtr != NULL) {
@@ -242,9 +248,9 @@ ExtractNameSpace ( **/
EFI_STATUS
ExtractKeyword (
- IN EFI_STRING String,
- OUT EFI_STRING *Keyword,
- OUT EFI_STRING *NextString
+ IN EFI_STRING String,
+ OUT EFI_STRING *Keyword,
+ OUT EFI_STRING *NextString
)
{
EFI_STRING TmpPtr;
@@ -257,7 +263,7 @@ ExtractKeyword ( // KeywordRequest == NULL case.
//
if (String == NULL) {
- *Keyword = NULL;
+ *Keyword = NULL;
*NextString = NULL;
return EFI_SUCCESS;
}
@@ -279,6 +285,7 @@ ExtractKeyword ( if (TmpPtr != NULL) {
*TmpPtr = 0;
}
+
*NextString = String + StrLen (String);
*Keyword = AllocateCopyPool (StrSize (String), String);
@@ -308,9 +315,9 @@ ExtractKeyword ( **/
EFI_STATUS
ExtractValue (
- IN EFI_STRING String,
- OUT EFI_STRING *Value,
- OUT EFI_STRING *NextString
+ IN EFI_STRING String,
+ OUT EFI_STRING *Value,
+ OUT EFI_STRING *NextString
)
{
EFI_STRING TmpPtr;
@@ -334,6 +341,7 @@ ExtractValue ( if (TmpPtr != NULL) {
*TmpPtr = 0;
}
+
*NextString = String + StrLen (String);
*Value = AllocateCopyPool (StrSize (String), String);
@@ -363,14 +371,14 @@ ExtractValue ( **/
BOOLEAN
ExtractFilter (
- IN EFI_STRING String,
- OUT UINT8 *FilterFlags,
- OUT EFI_STRING *NextString
+ IN EFI_STRING String,
+ OUT UINT8 *FilterFlags,
+ OUT EFI_STRING *NextString
)
{
- CHAR16 *PathPtr;
- CHAR16 *KeywordPtr;
- BOOLEAN RetVal;
+ CHAR16 *PathPtr;
+ CHAR16 *KeywordPtr;
+ BOOLEAN RetVal;
ASSERT ((FilterFlags != NULL) && (NextString != NULL));
@@ -383,7 +391,7 @@ ExtractFilter ( }
*FilterFlags = 0;
- RetVal = TRUE;
+ RetVal = TRUE;
//
// Skip '&' if exist.
@@ -397,19 +405,19 @@ ExtractFilter ( // Find ReadOnly filter.
//
*FilterFlags |= EFI_KEYWORD_FILTER_READONY;
- String += StrLen (L"ReadOnly");
+ String += StrLen (L"ReadOnly");
} else if (StrnCmp (String, L"ReadWrite", StrLen (L"ReadWrite")) == 0) {
//
// Find ReadWrite filter.
//
*FilterFlags |= EFI_KEYWORD_FILTER_REAWRITE;
- String += StrLen (L"ReadWrite");
+ String += StrLen (L"ReadWrite");
} else if (StrnCmp (String, L"Buffer", StrLen (L"Buffer")) == 0) {
//
// Find Buffer Filter.
//
*FilterFlags |= EFI_KEYWORD_FILTER_BUFFER;
- String += StrLen (L"Buffer");
+ String += StrLen (L"Buffer");
} else if (StrnCmp (String, L"Numeric", StrLen (L"Numeric")) == 0) {
//
// Find Numeric Filter
@@ -420,22 +428,23 @@ ExtractFilter ( } else {
String++;
switch (*String) {
- case L'1':
- *FilterFlags |= EFI_KEYWORD_FILTER_NUMERIC_1;
- break;
- case L'2':
- *FilterFlags |= EFI_KEYWORD_FILTER_NUMERIC_2;
- break;
- case L'4':
- *FilterFlags |= EFI_KEYWORD_FILTER_NUMERIC_4;
- break;
- case L'8':
- *FilterFlags |= EFI_KEYWORD_FILTER_NUMERIC_8;
- break;
- default:
- ASSERT (FALSE);
- break;
+ case L'1':
+ *FilterFlags |= EFI_KEYWORD_FILTER_NUMERIC_1;
+ break;
+ case L'2':
+ *FilterFlags |= EFI_KEYWORD_FILTER_NUMERIC_2;
+ break;
+ case L'4':
+ *FilterFlags |= EFI_KEYWORD_FILTER_NUMERIC_4;
+ break;
+ case L'8':
+ *FilterFlags |= EFI_KEYWORD_FILTER_NUMERIC_8;
+ break;
+ default:
+ ASSERT (FALSE);
+ break;
}
+
String++;
}
} else {
@@ -443,7 +452,8 @@ ExtractFilter ( // Check whether other filter item defined by Platform.
//
if ((StrnCmp (String, L"&PATH", StrLen (L"&PATH")) == 0) ||
- (StrnCmp (String, L"&KEYWORD", StrLen (L"&KEYWORD")) == 0)) {
+ (StrnCmp (String, L"&KEYWORD", StrLen (L"&KEYWORD")) == 0))
+ {
//
// New KeywordRequest start, no platform defined filter.
//
@@ -452,9 +462,9 @@ ExtractFilter ( // Platform defined filter rule.
// Just skip platform defined filter rule, return success.
//
- PathPtr = StrStr(String, L"&PATH");
- KeywordPtr = StrStr(String, L"&KEYWORD");
- if (PathPtr != NULL && KeywordPtr != NULL) {
+ PathPtr = StrStr (String, L"&PATH");
+ KeywordPtr = StrStr (String, L"&KEYWORD");
+ if ((PathPtr != NULL) && (KeywordPtr != NULL)) {
//
// If both sections exist, return the first follow string.
//
@@ -476,6 +486,7 @@ ExtractFilter ( String += StrLen (String);
}
}
+
RetVal = FALSE;
}
@@ -497,14 +508,14 @@ ExtractFilter ( **/
BOOLEAN
ExtractReadOnlyFromOpCode (
- IN UINT8 *OpCodeData
+ IN UINT8 *OpCodeData
)
{
- EFI_IFR_QUESTION_HEADER *QuestionHdr;
+ EFI_IFR_QUESTION_HEADER *QuestionHdr;
ASSERT (OpCodeData != NULL);
- QuestionHdr = (EFI_IFR_QUESTION_HEADER *) (OpCodeData + sizeof (EFI_IFR_OP_HEADER));
+ QuestionHdr = (EFI_IFR_QUESTION_HEADER *)(OpCodeData + sizeof (EFI_IFR_OP_HEADER));
return (QuestionHdr->Flags & EFI_IFR_FLAG_READ_ONLY) != 0;
}
@@ -525,26 +536,26 @@ ExtractReadOnlyFromOpCode ( **/
UINT32
ValidateFilter (
- IN UINT8 *OpCodeData,
- IN CHAR16 *KeywordRequest,
- OUT CHAR16 **NextString,
- OUT BOOLEAN *ReadOnly
+ IN UINT8 *OpCodeData,
+ IN CHAR16 *KeywordRequest,
+ OUT CHAR16 **NextString,
+ OUT BOOLEAN *ReadOnly
)
{
- CHAR16 *NextFilter;
- CHAR16 *StringPtr;
- UINT8 FilterFlags;
- EFI_IFR_QUESTION_HEADER *QuestionHdr;
- EFI_IFR_OP_HEADER *OpCodeHdr;
- UINT8 Flags;
- UINT32 RetVal;
-
- RetVal = KEYWORD_HANDLER_NO_ERROR;
+ CHAR16 *NextFilter;
+ CHAR16 *StringPtr;
+ UINT8 FilterFlags;
+ EFI_IFR_QUESTION_HEADER *QuestionHdr;
+ EFI_IFR_OP_HEADER *OpCodeHdr;
+ UINT8 Flags;
+ UINT32 RetVal;
+
+ RetVal = KEYWORD_HANDLER_NO_ERROR;
StringPtr = KeywordRequest;
- OpCodeHdr = (EFI_IFR_OP_HEADER *) OpCodeData;
- QuestionHdr = (EFI_IFR_QUESTION_HEADER *) (OpCodeData + sizeof (EFI_IFR_OP_HEADER));
- if (OpCodeHdr->OpCode == EFI_IFR_ONE_OF_OP || OpCodeHdr->OpCode == EFI_IFR_NUMERIC_OP) {
+ OpCodeHdr = (EFI_IFR_OP_HEADER *)OpCodeData;
+ QuestionHdr = (EFI_IFR_QUESTION_HEADER *)(OpCodeData + sizeof (EFI_IFR_OP_HEADER));
+ if ((OpCodeHdr->OpCode == EFI_IFR_ONE_OF_OP) || (OpCodeHdr->OpCode == EFI_IFR_NUMERIC_OP)) {
Flags = *(OpCodeData + sizeof (EFI_IFR_OP_HEADER) + sizeof (EFI_IFR_QUESTION_HEADER));
} else {
Flags = 0;
@@ -553,93 +564,102 @@ ValidateFilter ( //
// Get ReadOnly flag from Question.
//
- *ReadOnly = ExtractReadOnlyFromOpCode(OpCodeData);
+ *ReadOnly = ExtractReadOnlyFromOpCode (OpCodeData);
while (ExtractFilter (StringPtr, &FilterFlags, &NextFilter)) {
switch (FilterFlags) {
- case EFI_KEYWORD_FILTER_READONY:
- if ((QuestionHdr->Flags & EFI_IFR_FLAG_READ_ONLY) == 0) {
- RetVal = KEYWORD_HANDLER_INCOMPATIBLE_VALUE_DETECTED;
- goto Done;
- }
- break;
+ case EFI_KEYWORD_FILTER_READONY:
+ if ((QuestionHdr->Flags & EFI_IFR_FLAG_READ_ONLY) == 0) {
+ RetVal = KEYWORD_HANDLER_INCOMPATIBLE_VALUE_DETECTED;
+ goto Done;
+ }
- case EFI_KEYWORD_FILTER_REAWRITE:
- if ((QuestionHdr->Flags & EFI_IFR_FLAG_READ_ONLY) != 0) {
- RetVal = KEYWORD_HANDLER_INCOMPATIBLE_VALUE_DETECTED;
- goto Done;
- }
- break;
+ break;
- case EFI_KEYWORD_FILTER_BUFFER:
- //
- // Only these three opcode use numeric value type.
- //
- if (OpCodeHdr->OpCode == EFI_IFR_ONE_OF_OP || OpCodeHdr->OpCode == EFI_IFR_NUMERIC_OP || OpCodeHdr->OpCode == EFI_IFR_CHECKBOX_OP) {
- RetVal = KEYWORD_HANDLER_INCOMPATIBLE_VALUE_DETECTED;
- goto Done;
- }
- break;
+ case EFI_KEYWORD_FILTER_REAWRITE:
+ if ((QuestionHdr->Flags & EFI_IFR_FLAG_READ_ONLY) != 0) {
+ RetVal = KEYWORD_HANDLER_INCOMPATIBLE_VALUE_DETECTED;
+ goto Done;
+ }
- case EFI_KEYWORD_FILTER_NUMERIC:
- if (OpCodeHdr->OpCode != EFI_IFR_ONE_OF_OP && OpCodeHdr->OpCode != EFI_IFR_NUMERIC_OP && OpCodeHdr->OpCode != EFI_IFR_CHECKBOX_OP) {
- RetVal = KEYWORD_HANDLER_INCOMPATIBLE_VALUE_DETECTED;
- goto Done;
- }
- break;
+ break;
- case EFI_KEYWORD_FILTER_NUMERIC_1:
- case EFI_KEYWORD_FILTER_NUMERIC_2:
- case EFI_KEYWORD_FILTER_NUMERIC_4:
- case EFI_KEYWORD_FILTER_NUMERIC_8:
- if (OpCodeHdr->OpCode != EFI_IFR_ONE_OF_OP && OpCodeHdr->OpCode != EFI_IFR_NUMERIC_OP && OpCodeHdr->OpCode != EFI_IFR_CHECKBOX_OP) {
- RetVal = KEYWORD_HANDLER_INCOMPATIBLE_VALUE_DETECTED;
- goto Done;
- }
+ case EFI_KEYWORD_FILTER_BUFFER:
+ //
+ // Only these three opcode use numeric value type.
+ //
+ if ((OpCodeHdr->OpCode == EFI_IFR_ONE_OF_OP) || (OpCodeHdr->OpCode == EFI_IFR_NUMERIC_OP) || (OpCodeHdr->OpCode == EFI_IFR_CHECKBOX_OP)) {
+ RetVal = KEYWORD_HANDLER_INCOMPATIBLE_VALUE_DETECTED;
+ goto Done;
+ }
- //
- // For numeric and oneof, it has flags field to specify the detail numeric type.
- //
- if (OpCodeHdr->OpCode == EFI_IFR_ONE_OF_OP || OpCodeHdr->OpCode == EFI_IFR_NUMERIC_OP) {
- switch (Flags & EFI_IFR_NUMERIC_SIZE) {
- case EFI_IFR_NUMERIC_SIZE_1:
- if (FilterFlags != EFI_KEYWORD_FILTER_NUMERIC_1) {
- RetVal = KEYWORD_HANDLER_INCOMPATIBLE_VALUE_DETECTED;
- goto Done;
- }
- break;
+ break;
- case EFI_IFR_NUMERIC_SIZE_2:
- if (FilterFlags != EFI_KEYWORD_FILTER_NUMERIC_2) {
- RetVal = KEYWORD_HANDLER_INCOMPATIBLE_VALUE_DETECTED;
- goto Done;
- }
- break;
+ case EFI_KEYWORD_FILTER_NUMERIC:
+ if ((OpCodeHdr->OpCode != EFI_IFR_ONE_OF_OP) && (OpCodeHdr->OpCode != EFI_IFR_NUMERIC_OP) && (OpCodeHdr->OpCode != EFI_IFR_CHECKBOX_OP)) {
+ RetVal = KEYWORD_HANDLER_INCOMPATIBLE_VALUE_DETECTED;
+ goto Done;
+ }
- case EFI_IFR_NUMERIC_SIZE_4:
- if (FilterFlags != EFI_KEYWORD_FILTER_NUMERIC_4) {
- RetVal = KEYWORD_HANDLER_INCOMPATIBLE_VALUE_DETECTED;
- goto Done;
- }
- break;
+ break;
- case EFI_IFR_NUMERIC_SIZE_8:
- if (FilterFlags != EFI_KEYWORD_FILTER_NUMERIC_8) {
- RetVal = KEYWORD_HANDLER_INCOMPATIBLE_VALUE_DETECTED;
- goto Done;
- }
- break;
+ case EFI_KEYWORD_FILTER_NUMERIC_1:
+ case EFI_KEYWORD_FILTER_NUMERIC_2:
+ case EFI_KEYWORD_FILTER_NUMERIC_4:
+ case EFI_KEYWORD_FILTER_NUMERIC_8:
+ if ((OpCodeHdr->OpCode != EFI_IFR_ONE_OF_OP) && (OpCodeHdr->OpCode != EFI_IFR_NUMERIC_OP) && (OpCodeHdr->OpCode != EFI_IFR_CHECKBOX_OP)) {
+ RetVal = KEYWORD_HANDLER_INCOMPATIBLE_VALUE_DETECTED;
+ goto Done;
+ }
- default:
- ASSERT (FALSE);
- break;
+ //
+ // For numeric and oneof, it has flags field to specify the detail numeric type.
+ //
+ if ((OpCodeHdr->OpCode == EFI_IFR_ONE_OF_OP) || (OpCodeHdr->OpCode == EFI_IFR_NUMERIC_OP)) {
+ switch (Flags & EFI_IFR_NUMERIC_SIZE) {
+ case EFI_IFR_NUMERIC_SIZE_1:
+ if (FilterFlags != EFI_KEYWORD_FILTER_NUMERIC_1) {
+ RetVal = KEYWORD_HANDLER_INCOMPATIBLE_VALUE_DETECTED;
+ goto Done;
+ }
+
+ break;
+
+ case EFI_IFR_NUMERIC_SIZE_2:
+ if (FilterFlags != EFI_KEYWORD_FILTER_NUMERIC_2) {
+ RetVal = KEYWORD_HANDLER_INCOMPATIBLE_VALUE_DETECTED;
+ goto Done;
+ }
+
+ break;
+
+ case EFI_IFR_NUMERIC_SIZE_4:
+ if (FilterFlags != EFI_KEYWORD_FILTER_NUMERIC_4) {
+ RetVal = KEYWORD_HANDLER_INCOMPATIBLE_VALUE_DETECTED;
+ goto Done;
+ }
+
+ break;
+
+ case EFI_IFR_NUMERIC_SIZE_8:
+ if (FilterFlags != EFI_KEYWORD_FILTER_NUMERIC_8) {
+ RetVal = KEYWORD_HANDLER_INCOMPATIBLE_VALUE_DETECTED;
+ goto Done;
+ }
+
+ break;
+
+ default:
+ ASSERT (FALSE);
+ break;
+ }
}
- }
- break;
- default:
- ASSERT (FALSE);
- break;
+ break;
+
+ default:
+ ASSERT (FALSE);
+ break;
}
//
@@ -669,23 +689,23 @@ Done: **/
HII_DATABASE_RECORD *
GetRecordFromDevicePath (
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
)
{
- LIST_ENTRY *Link;
- UINT8 *DevicePathPkg;
- UINT8 *CurrentDevicePath;
- UINTN DevicePathSize;
- HII_DATABASE_RECORD *TempDatabase;
+ LIST_ENTRY *Link;
+ UINT8 *DevicePathPkg;
+ UINT8 *CurrentDevicePath;
+ UINTN DevicePathSize;
+ HII_DATABASE_RECORD *TempDatabase;
ASSERT (DevicePath != NULL);
for (Link = mPrivate.DatabaseList.ForwardLink; Link != &mPrivate.DatabaseList; Link = Link->ForwardLink) {
- TempDatabase = CR (Link, HII_DATABASE_RECORD, DatabaseEntry, HII_DATABASE_RECORD_SIGNATURE);
+ TempDatabase = CR (Link, HII_DATABASE_RECORD, DatabaseEntry, HII_DATABASE_RECORD_SIGNATURE);
DevicePathPkg = TempDatabase->PackageList->DevicePathPkg;
if (DevicePathPkg != NULL) {
CurrentDevicePath = DevicePathPkg + sizeof (EFI_HII_PACKAGE_HEADER);
- DevicePathSize = GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) CurrentDevicePath);
+ DevicePathSize = GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *)CurrentDevicePath);
if ((CompareMem (DevicePath, CurrentDevicePath, DevicePathSize) == 0)) {
return TempDatabase;
}
@@ -711,9 +731,9 @@ GetRecordFromDevicePath ( **/
EFI_STATUS
GetUnicodeStringTextAndSize (
- IN UINT8 *StringSrc,
- OUT UINTN *BufferSize,
- OUT EFI_STRING *StringDest
+ IN UINT8 *StringSrc,
+ OUT UINTN *BufferSize,
+ OUT EFI_STRING *StringDest
)
{
UINTN StringSize;
@@ -723,9 +743,9 @@ GetUnicodeStringTextAndSize ( StringSize = sizeof (CHAR16);
StringPtr = StringSrc;
- while (ReadUnaligned16 ((UINT16 *) StringPtr) != 0) {
+ while (ReadUnaligned16 ((UINT16 *)StringPtr) != 0) {
StringSize += sizeof (CHAR16);
- StringPtr += sizeof (CHAR16);
+ StringPtr += sizeof (CHAR16);
}
*StringDest = AllocatePool (StringSize);
@@ -756,237 +776,254 @@ GetUnicodeStringTextAndSize ( **/
EFI_STATUS
GetStringIdFromString (
- IN HII_STRING_PACKAGE_INSTANCE *StringPackage,
- IN CHAR16 *KeywordValue,
- OUT EFI_STRING_ID *StringId
+ IN HII_STRING_PACKAGE_INSTANCE *StringPackage,
+ IN CHAR16 *KeywordValue,
+ OUT EFI_STRING_ID *StringId
)
{
- UINT8 *BlockHdr;
- EFI_STRING_ID CurrentStringId;
- UINTN BlockSize;
- UINTN Index;
- UINT8 *StringTextPtr;
- UINTN Offset;
- UINT16 StringCount;
- UINT16 SkipCount;
- UINT8 Length8;
- EFI_HII_SIBT_EXT2_BLOCK Ext2;
- UINT32 Length32;
- UINTN StringSize;
- CHAR16 *String;
- CHAR8 *AsciiKeywordValue;
- UINTN KeywordValueSize;
- EFI_STATUS Status;
+ UINT8 *BlockHdr;
+ EFI_STRING_ID CurrentStringId;
+ UINTN BlockSize;
+ UINTN Index;
+ UINT8 *StringTextPtr;
+ UINTN Offset;
+ UINT16 StringCount;
+ UINT16 SkipCount;
+ UINT8 Length8;
+ EFI_HII_SIBT_EXT2_BLOCK Ext2;
+ UINT32 Length32;
+ UINTN StringSize;
+ CHAR16 *String;
+ CHAR8 *AsciiKeywordValue;
+ UINTN KeywordValueSize;
+ EFI_STATUS Status;
ASSERT (StringPackage != NULL && KeywordValue != NULL && StringId != NULL);
ASSERT (StringPackage->Signature == HII_STRING_PACKAGE_SIGNATURE);
CurrentStringId = 1;
- Status = EFI_SUCCESS;
- String = NULL;
- BlockHdr = StringPackage->StringBlock;
- BlockSize = 0;
- Offset = 0;
+ Status = EFI_SUCCESS;
+ String = NULL;
+ BlockHdr = StringPackage->StringBlock;
+ BlockSize = 0;
+ Offset = 0;
//
// Make a ascii keyword value for later use.
//
- KeywordValueSize = StrLen (KeywordValue) + 1;
+ KeywordValueSize = StrLen (KeywordValue) + 1;
AsciiKeywordValue = AllocatePool (KeywordValueSize);
if (AsciiKeywordValue == NULL) {
return EFI_OUT_OF_RESOURCES;
}
+
UnicodeStrToAsciiStrS (KeywordValue, AsciiKeywordValue, KeywordValueSize);
while (*BlockHdr != EFI_HII_SIBT_END) {
switch (*BlockHdr) {
- case EFI_HII_SIBT_STRING_SCSU:
- Offset = sizeof (EFI_HII_STRING_BLOCK);
- StringTextPtr = BlockHdr + Offset;
- BlockSize += Offset + AsciiStrSize ((CHAR8 *) StringTextPtr);
- if (AsciiStrCmp(AsciiKeywordValue, (CHAR8 *) StringTextPtr) == 0) {
- *StringId = CurrentStringId;
- goto Done;
- }
- CurrentStringId++;
- break;
-
- case EFI_HII_SIBT_STRING_SCSU_FONT:
- Offset = sizeof (EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK) - sizeof (UINT8);
- StringTextPtr = BlockHdr + Offset;
- if (AsciiStrCmp(AsciiKeywordValue, (CHAR8 *) StringTextPtr) == 0) {
- *StringId = CurrentStringId;
- goto Done;
- }
- BlockSize += Offset + AsciiStrSize ((CHAR8 *) StringTextPtr);
- CurrentStringId++;
- break;
-
- case EFI_HII_SIBT_STRINGS_SCSU:
- CopyMem (&StringCount, BlockHdr + sizeof (EFI_HII_STRING_BLOCK), sizeof (UINT16));
- StringTextPtr = (UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_SIBT_STRINGS_SCSU_BLOCK) - sizeof (UINT8));
- BlockSize += StringTextPtr - BlockHdr;
-
- for (Index = 0; Index < StringCount; Index++) {
- BlockSize += AsciiStrSize ((CHAR8 *) StringTextPtr);
- if (AsciiStrCmp(AsciiKeywordValue, (CHAR8 *) StringTextPtr) == 0) {
+ case EFI_HII_SIBT_STRING_SCSU:
+ Offset = sizeof (EFI_HII_STRING_BLOCK);
+ StringTextPtr = BlockHdr + Offset;
+ BlockSize += Offset + AsciiStrSize ((CHAR8 *)StringTextPtr);
+ if (AsciiStrCmp (AsciiKeywordValue, (CHAR8 *)StringTextPtr) == 0) {
*StringId = CurrentStringId;
goto Done;
}
- StringTextPtr = StringTextPtr + AsciiStrSize ((CHAR8 *) StringTextPtr);
- CurrentStringId++;
- }
- break;
- case EFI_HII_SIBT_STRINGS_SCSU_FONT:
- CopyMem (
- &StringCount,
- (UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),
- sizeof (UINT16)
- );
- StringTextPtr = (UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK) - sizeof (UINT8));
- BlockSize += StringTextPtr - BlockHdr;
+ CurrentStringId++;
+ break;
- for (Index = 0; Index < StringCount; Index++) {
- BlockSize += AsciiStrSize ((CHAR8 *) StringTextPtr);
- if (AsciiStrCmp(AsciiKeywordValue, (CHAR8 *) StringTextPtr) == 0) {
+ case EFI_HII_SIBT_STRING_SCSU_FONT:
+ Offset = sizeof (EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK) - sizeof (UINT8);
+ StringTextPtr = BlockHdr + Offset;
+ if (AsciiStrCmp (AsciiKeywordValue, (CHAR8 *)StringTextPtr) == 0) {
*StringId = CurrentStringId;
goto Done;
}
- StringTextPtr = StringTextPtr + AsciiStrSize ((CHAR8 *) StringTextPtr);
+
+ BlockSize += Offset + AsciiStrSize ((CHAR8 *)StringTextPtr);
CurrentStringId++;
- }
- break;
+ break;
- case EFI_HII_SIBT_STRING_UCS2:
- Offset = sizeof (EFI_HII_STRING_BLOCK);
- StringTextPtr = BlockHdr + Offset;
- //
- // Use StringSize to store the size of the specified string, including the NULL
- // terminator.
- //
- Status = GetUnicodeStringTextAndSize (StringTextPtr, &StringSize, &String);
- if (EFI_ERROR (Status)) {
- goto Done;
- }
- ASSERT (String != NULL);
- if (StrCmp(KeywordValue, String) == 0) {
- *StringId = CurrentStringId;
- goto Done;
- }
- BlockSize += Offset + StringSize;
- CurrentStringId++;
- break;
+ case EFI_HII_SIBT_STRINGS_SCSU:
+ CopyMem (&StringCount, BlockHdr + sizeof (EFI_HII_STRING_BLOCK), sizeof (UINT16));
+ StringTextPtr = (UINT8 *)((UINTN)BlockHdr + sizeof (EFI_HII_SIBT_STRINGS_SCSU_BLOCK) - sizeof (UINT8));
+ BlockSize += StringTextPtr - BlockHdr;
- case EFI_HII_SIBT_STRING_UCS2_FONT:
- Offset = sizeof (EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK) - sizeof (CHAR16);
- StringTextPtr = BlockHdr + Offset;
- //
- // Use StringSize to store the size of the specified string, including the NULL
- // terminator.
- //
- Status = GetUnicodeStringTextAndSize (StringTextPtr, &StringSize, &String);
- if (EFI_ERROR (Status)) {
- goto Done;
- }
- ASSERT (String != NULL);
- if (StrCmp(KeywordValue, String) == 0) {
- *StringId = CurrentStringId;
- goto Done;
- }
- BlockSize += Offset + StringSize;
- CurrentStringId++;
- break;
+ for (Index = 0; Index < StringCount; Index++) {
+ BlockSize += AsciiStrSize ((CHAR8 *)StringTextPtr);
+ if (AsciiStrCmp (AsciiKeywordValue, (CHAR8 *)StringTextPtr) == 0) {
+ *StringId = CurrentStringId;
+ goto Done;
+ }
- case EFI_HII_SIBT_STRINGS_UCS2:
- Offset = sizeof (EFI_HII_SIBT_STRINGS_UCS2_BLOCK) - sizeof (CHAR16);
- StringTextPtr = BlockHdr + Offset;
- BlockSize += Offset;
- CopyMem (&StringCount, BlockHdr + sizeof (EFI_HII_STRING_BLOCK), sizeof (UINT16));
- for (Index = 0; Index < StringCount; Index++) {
+ StringTextPtr = StringTextPtr + AsciiStrSize ((CHAR8 *)StringTextPtr);
+ CurrentStringId++;
+ }
+
+ break;
+
+ case EFI_HII_SIBT_STRINGS_SCSU_FONT:
+ CopyMem (
+ &StringCount,
+ (UINT8 *)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),
+ sizeof (UINT16)
+ );
+ StringTextPtr = (UINT8 *)((UINTN)BlockHdr + sizeof (EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK) - sizeof (UINT8));
+ BlockSize += StringTextPtr - BlockHdr;
+
+ for (Index = 0; Index < StringCount; Index++) {
+ BlockSize += AsciiStrSize ((CHAR8 *)StringTextPtr);
+ if (AsciiStrCmp (AsciiKeywordValue, (CHAR8 *)StringTextPtr) == 0) {
+ *StringId = CurrentStringId;
+ goto Done;
+ }
+
+ StringTextPtr = StringTextPtr + AsciiStrSize ((CHAR8 *)StringTextPtr);
+ CurrentStringId++;
+ }
+
+ break;
+
+ case EFI_HII_SIBT_STRING_UCS2:
+ Offset = sizeof (EFI_HII_STRING_BLOCK);
+ StringTextPtr = BlockHdr + Offset;
+ //
+ // Use StringSize to store the size of the specified string, including the NULL
+ // terminator.
+ //
Status = GetUnicodeStringTextAndSize (StringTextPtr, &StringSize, &String);
if (EFI_ERROR (Status)) {
goto Done;
}
+
ASSERT (String != NULL);
- BlockSize += StringSize;
- if (StrCmp(KeywordValue, String) == 0) {
+ if (StrCmp (KeywordValue, String) == 0) {
*StringId = CurrentStringId;
goto Done;
}
- StringTextPtr = StringTextPtr + StringSize;
+
+ BlockSize += Offset + StringSize;
CurrentStringId++;
- }
- break;
+ break;
- case EFI_HII_SIBT_STRINGS_UCS2_FONT:
- Offset = sizeof (EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK) - sizeof (CHAR16);
- StringTextPtr = BlockHdr + Offset;
- BlockSize += Offset;
- CopyMem (
- &StringCount,
- (UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),
- sizeof (UINT16)
- );
- for (Index = 0; Index < StringCount; Index++) {
+ case EFI_HII_SIBT_STRING_UCS2_FONT:
+ Offset = sizeof (EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK) - sizeof (CHAR16);
+ StringTextPtr = BlockHdr + Offset;
+ //
+ // Use StringSize to store the size of the specified string, including the NULL
+ // terminator.
+ //
Status = GetUnicodeStringTextAndSize (StringTextPtr, &StringSize, &String);
if (EFI_ERROR (Status)) {
goto Done;
}
+
ASSERT (String != NULL);
- BlockSize += StringSize;
- if (StrCmp(KeywordValue, String) == 0) {
+ if (StrCmp (KeywordValue, String) == 0) {
*StringId = CurrentStringId;
goto Done;
}
- StringTextPtr = StringTextPtr + StringSize;
+
+ BlockSize += Offset + StringSize;
CurrentStringId++;
- }
- break;
+ break;
- case EFI_HII_SIBT_DUPLICATE:
- BlockSize += sizeof (EFI_HII_SIBT_DUPLICATE_BLOCK);
- CurrentStringId++;
- break;
+ case EFI_HII_SIBT_STRINGS_UCS2:
+ Offset = sizeof (EFI_HII_SIBT_STRINGS_UCS2_BLOCK) - sizeof (CHAR16);
+ StringTextPtr = BlockHdr + Offset;
+ BlockSize += Offset;
+ CopyMem (&StringCount, BlockHdr + sizeof (EFI_HII_STRING_BLOCK), sizeof (UINT16));
+ for (Index = 0; Index < StringCount; Index++) {
+ Status = GetUnicodeStringTextAndSize (StringTextPtr, &StringSize, &String);
+ if (EFI_ERROR (Status)) {
+ goto Done;
+ }
- case EFI_HII_SIBT_SKIP1:
- SkipCount = (UINT16) (*(UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK)));
- CurrentStringId = (UINT16) (CurrentStringId + SkipCount);
- BlockSize += sizeof (EFI_HII_SIBT_SKIP1_BLOCK);
- break;
+ ASSERT (String != NULL);
+ BlockSize += StringSize;
+ if (StrCmp (KeywordValue, String) == 0) {
+ *StringId = CurrentStringId;
+ goto Done;
+ }
- case EFI_HII_SIBT_SKIP2:
- CopyMem (&SkipCount, BlockHdr + sizeof (EFI_HII_STRING_BLOCK), sizeof (UINT16));
- CurrentStringId = (UINT16) (CurrentStringId + SkipCount);
- BlockSize += sizeof (EFI_HII_SIBT_SKIP2_BLOCK);
- break;
+ StringTextPtr = StringTextPtr + StringSize;
+ CurrentStringId++;
+ }
- case EFI_HII_SIBT_EXT1:
- CopyMem (
- &Length8,
- (UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),
- sizeof (UINT8)
- );
- BlockSize += Length8;
- break;
+ break;
- case EFI_HII_SIBT_EXT2:
- CopyMem (&Ext2, BlockHdr, sizeof (EFI_HII_SIBT_EXT2_BLOCK));
- BlockSize += Ext2.Length;
- break;
+ case EFI_HII_SIBT_STRINGS_UCS2_FONT:
+ Offset = sizeof (EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK) - sizeof (CHAR16);
+ StringTextPtr = BlockHdr + Offset;
+ BlockSize += Offset;
+ CopyMem (
+ &StringCount,
+ (UINT8 *)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),
+ sizeof (UINT16)
+ );
+ for (Index = 0; Index < StringCount; Index++) {
+ Status = GetUnicodeStringTextAndSize (StringTextPtr, &StringSize, &String);
+ if (EFI_ERROR (Status)) {
+ goto Done;
+ }
- case EFI_HII_SIBT_EXT4:
- CopyMem (
- &Length32,
- (UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),
- sizeof (UINT32)
- );
+ ASSERT (String != NULL);
+ BlockSize += StringSize;
+ if (StrCmp (KeywordValue, String) == 0) {
+ *StringId = CurrentStringId;
+ goto Done;
+ }
- BlockSize += Length32;
- break;
+ StringTextPtr = StringTextPtr + StringSize;
+ CurrentStringId++;
+ }
- default:
- break;
+ break;
+
+ case EFI_HII_SIBT_DUPLICATE:
+ BlockSize += sizeof (EFI_HII_SIBT_DUPLICATE_BLOCK);
+ CurrentStringId++;
+ break;
+
+ case EFI_HII_SIBT_SKIP1:
+ SkipCount = (UINT16)(*(UINT8 *)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK)));
+ CurrentStringId = (UINT16)(CurrentStringId + SkipCount);
+ BlockSize += sizeof (EFI_HII_SIBT_SKIP1_BLOCK);
+ break;
+
+ case EFI_HII_SIBT_SKIP2:
+ CopyMem (&SkipCount, BlockHdr + sizeof (EFI_HII_STRING_BLOCK), sizeof (UINT16));
+ CurrentStringId = (UINT16)(CurrentStringId + SkipCount);
+ BlockSize += sizeof (EFI_HII_SIBT_SKIP2_BLOCK);
+ break;
+
+ case EFI_HII_SIBT_EXT1:
+ CopyMem (
+ &Length8,
+ (UINT8 *)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),
+ sizeof (UINT8)
+ );
+ BlockSize += Length8;
+ break;
+
+ case EFI_HII_SIBT_EXT2:
+ CopyMem (&Ext2, BlockHdr, sizeof (EFI_HII_SIBT_EXT2_BLOCK));
+ BlockSize += Ext2.Length;
+ break;
+
+ case EFI_HII_SIBT_EXT4:
+ CopyMem (
+ &Length32,
+ (UINT8 *)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),
+ sizeof (UINT32)
+ );
+
+ BlockSize += Length32;
+ break;
+
+ default:
+ break;
}
if (String != NULL) {
@@ -994,7 +1031,7 @@ GetStringIdFromString ( String = NULL;
}
- BlockHdr = StringPackage->StringBlock + BlockSize;
+ BlockHdr = StringPackage->StringBlock + BlockSize;
}
Status = EFI_NOT_FOUND;
@@ -1003,9 +1040,11 @@ Done: if (AsciiKeywordValue != NULL) {
FreePool (AsciiKeywordValue);
}
+
if (String != NULL) {
FreePool (String);
}
+
return Status;
}
@@ -1023,32 +1062,32 @@ Done: **/
EFI_STRING_ID
GetNextStringId (
- IN HII_STRING_PACKAGE_INSTANCE *StringPackage,
- IN EFI_STRING_ID StringId,
- OUT EFI_STRING *KeywordValue
+ IN HII_STRING_PACKAGE_INSTANCE *StringPackage,
+ IN EFI_STRING_ID StringId,
+ OUT EFI_STRING *KeywordValue
)
{
- UINT8 *BlockHdr;
- EFI_STRING_ID CurrentStringId;
- UINTN BlockSize;
- UINTN Index;
- UINT8 *StringTextPtr;
- UINTN Offset;
- UINT16 StringCount;
- UINT16 SkipCount;
- UINT8 Length8;
- EFI_HII_SIBT_EXT2_BLOCK Ext2;
- UINT32 Length32;
- BOOLEAN FindString;
- UINTN StringSize;
- CHAR16 *String;
+ UINT8 *BlockHdr;
+ EFI_STRING_ID CurrentStringId;
+ UINTN BlockSize;
+ UINTN Index;
+ UINT8 *StringTextPtr;
+ UINTN Offset;
+ UINT16 StringCount;
+ UINT16 SkipCount;
+ UINT8 Length8;
+ EFI_HII_SIBT_EXT2_BLOCK Ext2;
+ UINT32 Length32;
+ BOOLEAN FindString;
+ UINTN StringSize;
+ CHAR16 *String;
ASSERT (StringPackage != NULL);
ASSERT (StringPackage->Signature == HII_STRING_PACKAGE_SIGNATURE);
CurrentStringId = 1;
- FindString = FALSE;
- String = NULL;
+ FindString = FALSE;
+ String = NULL;
//
// Parse the string blocks to get the string text and font.
@@ -1058,172 +1097,135 @@ GetNextStringId ( Offset = 0;
while (*BlockHdr != EFI_HII_SIBT_END) {
switch (*BlockHdr) {
- case EFI_HII_SIBT_STRING_SCSU:
- Offset = sizeof (EFI_HII_STRING_BLOCK);
- StringTextPtr = BlockHdr + Offset;
-
- if (FindString) {
- StringSize = AsciiStrSize ((CHAR8 *) StringTextPtr);
- *KeywordValue = AllocatePool (StringSize * sizeof (CHAR16));
- if (*KeywordValue == NULL) {
- return 0;
- }
- AsciiStrToUnicodeStrS ((CHAR8 *) StringTextPtr, *KeywordValue, StringSize);
- return CurrentStringId;
- } else if (CurrentStringId == StringId) {
- FindString = TRUE;
- }
-
- BlockSize += Offset + AsciiStrSize ((CHAR8 *) StringTextPtr);
- CurrentStringId++;
- break;
-
- case EFI_HII_SIBT_STRING_SCSU_FONT:
- Offset = sizeof (EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK) - sizeof (UINT8);
- StringTextPtr = BlockHdr + Offset;
-
- if (FindString) {
- StringSize = AsciiStrSize ((CHAR8 *) StringTextPtr);
- *KeywordValue = AllocatePool (StringSize * sizeof (CHAR16));
- if (*KeywordValue == NULL) {
- return 0;
- }
- AsciiStrToUnicodeStrS ((CHAR8 *) StringTextPtr, *KeywordValue, StringSize);
- return CurrentStringId;
- } else if (CurrentStringId == StringId) {
- FindString = TRUE;
- }
-
- BlockSize += Offset + AsciiStrSize ((CHAR8 *) StringTextPtr);
- CurrentStringId++;
- break;
-
- case EFI_HII_SIBT_STRINGS_SCSU:
- CopyMem (&StringCount, BlockHdr + sizeof (EFI_HII_STRING_BLOCK), sizeof (UINT16));
- StringTextPtr = (UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_SIBT_STRINGS_SCSU_BLOCK) - sizeof (UINT8));
- BlockSize += StringTextPtr - BlockHdr;
+ case EFI_HII_SIBT_STRING_SCSU:
+ Offset = sizeof (EFI_HII_STRING_BLOCK);
+ StringTextPtr = BlockHdr + Offset;
- for (Index = 0; Index < StringCount; Index++) {
if (FindString) {
- StringSize = AsciiStrSize ((CHAR8 *) StringTextPtr);
+ StringSize = AsciiStrSize ((CHAR8 *)StringTextPtr);
*KeywordValue = AllocatePool (StringSize * sizeof (CHAR16));
if (*KeywordValue == NULL) {
return 0;
}
- AsciiStrToUnicodeStrS ((CHAR8 *) StringTextPtr, *KeywordValue, StringSize);
+
+ AsciiStrToUnicodeStrS ((CHAR8 *)StringTextPtr, *KeywordValue, StringSize);
return CurrentStringId;
} else if (CurrentStringId == StringId) {
FindString = TRUE;
}
- BlockSize += AsciiStrSize ((CHAR8 *) StringTextPtr);
- StringTextPtr = StringTextPtr + AsciiStrSize ((CHAR8 *) StringTextPtr);
+ BlockSize += Offset + AsciiStrSize ((CHAR8 *)StringTextPtr);
CurrentStringId++;
- }
- break;
+ break;
- case EFI_HII_SIBT_STRINGS_SCSU_FONT:
- CopyMem (
- &StringCount,
- (UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),
- sizeof (UINT16)
- );
- StringTextPtr = (UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK) - sizeof (UINT8));
- BlockSize += StringTextPtr - BlockHdr;
+ case EFI_HII_SIBT_STRING_SCSU_FONT:
+ Offset = sizeof (EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK) - sizeof (UINT8);
+ StringTextPtr = BlockHdr + Offset;
- for (Index = 0; Index < StringCount; Index++) {
if (FindString) {
- StringSize = AsciiStrSize ((CHAR8 *) StringTextPtr);
+ StringSize = AsciiStrSize ((CHAR8 *)StringTextPtr);
*KeywordValue = AllocatePool (StringSize * sizeof (CHAR16));
if (*KeywordValue == NULL) {
return 0;
}
- AsciiStrToUnicodeStrS ((CHAR8 *) StringTextPtr, *KeywordValue, StringSize);
+
+ AsciiStrToUnicodeStrS ((CHAR8 *)StringTextPtr, *KeywordValue, StringSize);
return CurrentStringId;
} else if (CurrentStringId == StringId) {
FindString = TRUE;
}
- BlockSize += AsciiStrSize ((CHAR8 *) StringTextPtr);
- StringTextPtr = StringTextPtr + AsciiStrSize ((CHAR8 *) StringTextPtr);
+ BlockSize += Offset + AsciiStrSize ((CHAR8 *)StringTextPtr);
CurrentStringId++;
- }
- break;
+ break;
- case EFI_HII_SIBT_STRING_UCS2:
- Offset = sizeof (EFI_HII_STRING_BLOCK);
- StringTextPtr = BlockHdr + Offset;
- //
- // Use StringSize to store the size of the specified string, including the NULL
- // terminator.
- //
- GetUnicodeStringTextAndSize (StringTextPtr, &StringSize, &String);
- if (FindString && (String != NULL) && (*String != L'\0')) {
- //
- // String protocol use this type for the string id which has value for other package.
- // It will allocate an empty string block for this string id. so here we also check
- // *String != L'\0' to prohibit this case.
- //
- *KeywordValue = String;
- return CurrentStringId;
- } else if (CurrentStringId == StringId) {
- FindString = TRUE;
- }
+ case EFI_HII_SIBT_STRINGS_SCSU:
+ CopyMem (&StringCount, BlockHdr + sizeof (EFI_HII_STRING_BLOCK), sizeof (UINT16));
+ StringTextPtr = (UINT8 *)((UINTN)BlockHdr + sizeof (EFI_HII_SIBT_STRINGS_SCSU_BLOCK) - sizeof (UINT8));
+ BlockSize += StringTextPtr - BlockHdr;
+
+ for (Index = 0; Index < StringCount; Index++) {
+ if (FindString) {
+ StringSize = AsciiStrSize ((CHAR8 *)StringTextPtr);
+ *KeywordValue = AllocatePool (StringSize * sizeof (CHAR16));
+ if (*KeywordValue == NULL) {
+ return 0;
+ }
- BlockSize += Offset + StringSize;
- CurrentStringId++;
- break;
+ AsciiStrToUnicodeStrS ((CHAR8 *)StringTextPtr, *KeywordValue, StringSize);
+ return CurrentStringId;
+ } else if (CurrentStringId == StringId) {
+ FindString = TRUE;
+ }
- case EFI_HII_SIBT_STRING_UCS2_FONT:
- Offset = sizeof (EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK) - sizeof (CHAR16);
- StringTextPtr = BlockHdr + Offset;
- //
- // Use StringSize to store the size of the specified string, including the NULL
- // terminator.
- //
- GetUnicodeStringTextAndSize (StringTextPtr, &StringSize, &String);
- if (FindString) {
- *KeywordValue = String;
- return CurrentStringId;
- } else if (CurrentStringId == StringId) {
- FindString = TRUE;
- }
+ BlockSize += AsciiStrSize ((CHAR8 *)StringTextPtr);
+ StringTextPtr = StringTextPtr + AsciiStrSize ((CHAR8 *)StringTextPtr);
+ CurrentStringId++;
+ }
- BlockSize += Offset + StringSize;
- CurrentStringId++;
- break;
+ break;
- case EFI_HII_SIBT_STRINGS_UCS2:
- Offset = sizeof (EFI_HII_SIBT_STRINGS_UCS2_BLOCK) - sizeof (CHAR16);
- StringTextPtr = BlockHdr + Offset;
- BlockSize += Offset;
- CopyMem (&StringCount, BlockHdr + sizeof (EFI_HII_STRING_BLOCK), sizeof (UINT16));
- for (Index = 0; Index < StringCount; Index++) {
- GetUnicodeStringTextAndSize (StringTextPtr, &StringSize, &String);
+ case EFI_HII_SIBT_STRINGS_SCSU_FONT:
+ CopyMem (
+ &StringCount,
+ (UINT8 *)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),
+ sizeof (UINT16)
+ );
+ StringTextPtr = (UINT8 *)((UINTN)BlockHdr + sizeof (EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK) - sizeof (UINT8));
+ BlockSize += StringTextPtr - BlockHdr;
+
+ for (Index = 0; Index < StringCount; Index++) {
+ if (FindString) {
+ StringSize = AsciiStrSize ((CHAR8 *)StringTextPtr);
+ *KeywordValue = AllocatePool (StringSize * sizeof (CHAR16));
+ if (*KeywordValue == NULL) {
+ return 0;
+ }
- if (FindString) {
+ AsciiStrToUnicodeStrS ((CHAR8 *)StringTextPtr, *KeywordValue, StringSize);
+ return CurrentStringId;
+ } else if (CurrentStringId == StringId) {
+ FindString = TRUE;
+ }
+
+ BlockSize += AsciiStrSize ((CHAR8 *)StringTextPtr);
+ StringTextPtr = StringTextPtr + AsciiStrSize ((CHAR8 *)StringTextPtr);
+ CurrentStringId++;
+ }
+
+ break;
+
+ case EFI_HII_SIBT_STRING_UCS2:
+ Offset = sizeof (EFI_HII_STRING_BLOCK);
+ StringTextPtr = BlockHdr + Offset;
+ //
+ // Use StringSize to store the size of the specified string, including the NULL
+ // terminator.
+ //
+ GetUnicodeStringTextAndSize (StringTextPtr, &StringSize, &String);
+ if (FindString && (String != NULL) && (*String != L'\0')) {
+ //
+ // String protocol use this type for the string id which has value for other package.
+ // It will allocate an empty string block for this string id. so here we also check
+ // *String != L'\0' to prohibit this case.
+ //
*KeywordValue = String;
return CurrentStringId;
} else if (CurrentStringId == StringId) {
FindString = TRUE;
}
- BlockSize += StringSize;
- StringTextPtr = StringTextPtr + StringSize;
+ BlockSize += Offset + StringSize;
CurrentStringId++;
- }
- break;
+ break;
- case EFI_HII_SIBT_STRINGS_UCS2_FONT:
- Offset = sizeof (EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK) - sizeof (CHAR16);
- StringTextPtr = BlockHdr + Offset;
- BlockSize += Offset;
- CopyMem (
- &StringCount,
- (UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),
- sizeof (UINT16)
- );
- for (Index = 0; Index < StringCount; Index++) {
+ case EFI_HII_SIBT_STRING_UCS2_FONT:
+ Offset = sizeof (EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK) - sizeof (CHAR16);
+ StringTextPtr = BlockHdr + Offset;
+ //
+ // Use StringSize to store the size of the specified string, including the NULL
+ // terminator.
+ //
GetUnicodeStringTextAndSize (StringTextPtr, &StringSize, &String);
if (FindString) {
*KeywordValue = String;
@@ -1232,55 +1234,100 @@ GetNextStringId ( FindString = TRUE;
}
- BlockSize += StringSize;
- StringTextPtr = StringTextPtr + StringSize;
+ BlockSize += Offset + StringSize;
CurrentStringId++;
- }
- break;
+ break;
- case EFI_HII_SIBT_DUPLICATE:
- BlockSize += sizeof (EFI_HII_SIBT_DUPLICATE_BLOCK);
- CurrentStringId++;
- break;
+ case EFI_HII_SIBT_STRINGS_UCS2:
+ Offset = sizeof (EFI_HII_SIBT_STRINGS_UCS2_BLOCK) - sizeof (CHAR16);
+ StringTextPtr = BlockHdr + Offset;
+ BlockSize += Offset;
+ CopyMem (&StringCount, BlockHdr + sizeof (EFI_HII_STRING_BLOCK), sizeof (UINT16));
+ for (Index = 0; Index < StringCount; Index++) {
+ GetUnicodeStringTextAndSize (StringTextPtr, &StringSize, &String);
+
+ if (FindString) {
+ *KeywordValue = String;
+ return CurrentStringId;
+ } else if (CurrentStringId == StringId) {
+ FindString = TRUE;
+ }
- case EFI_HII_SIBT_SKIP1:
- SkipCount = (UINT16) (*(UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK)));
- CurrentStringId = (UINT16) (CurrentStringId + SkipCount);
- BlockSize += sizeof (EFI_HII_SIBT_SKIP1_BLOCK);
- break;
+ BlockSize += StringSize;
+ StringTextPtr = StringTextPtr + StringSize;
+ CurrentStringId++;
+ }
- case EFI_HII_SIBT_SKIP2:
- CopyMem (&SkipCount, BlockHdr + sizeof (EFI_HII_STRING_BLOCK), sizeof (UINT16));
- CurrentStringId = (UINT16) (CurrentStringId + SkipCount);
- BlockSize += sizeof (EFI_HII_SIBT_SKIP2_BLOCK);
- break;
+ break;
- case EFI_HII_SIBT_EXT1:
- CopyMem (
- &Length8,
- (UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),
- sizeof (UINT8)
- );
- BlockSize += Length8;
- break;
+ case EFI_HII_SIBT_STRINGS_UCS2_FONT:
+ Offset = sizeof (EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK) - sizeof (CHAR16);
+ StringTextPtr = BlockHdr + Offset;
+ BlockSize += Offset;
+ CopyMem (
+ &StringCount,
+ (UINT8 *)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),
+ sizeof (UINT16)
+ );
+ for (Index = 0; Index < StringCount; Index++) {
+ GetUnicodeStringTextAndSize (StringTextPtr, &StringSize, &String);
+ if (FindString) {
+ *KeywordValue = String;
+ return CurrentStringId;
+ } else if (CurrentStringId == StringId) {
+ FindString = TRUE;
+ }
- case EFI_HII_SIBT_EXT2:
- CopyMem (&Ext2, BlockHdr, sizeof (EFI_HII_SIBT_EXT2_BLOCK));
- BlockSize += Ext2.Length;
- break;
+ BlockSize += StringSize;
+ StringTextPtr = StringTextPtr + StringSize;
+ CurrentStringId++;
+ }
- case EFI_HII_SIBT_EXT4:
- CopyMem (
- &Length32,
- (UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),
- sizeof (UINT32)
- );
+ break;
- BlockSize += Length32;
- break;
+ case EFI_HII_SIBT_DUPLICATE:
+ BlockSize += sizeof (EFI_HII_SIBT_DUPLICATE_BLOCK);
+ CurrentStringId++;
+ break;
- default:
- break;
+ case EFI_HII_SIBT_SKIP1:
+ SkipCount = (UINT16)(*(UINT8 *)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK)));
+ CurrentStringId = (UINT16)(CurrentStringId + SkipCount);
+ BlockSize += sizeof (EFI_HII_SIBT_SKIP1_BLOCK);
+ break;
+
+ case EFI_HII_SIBT_SKIP2:
+ CopyMem (&SkipCount, BlockHdr + sizeof (EFI_HII_STRING_BLOCK), sizeof (UINT16));
+ CurrentStringId = (UINT16)(CurrentStringId + SkipCount);
+ BlockSize += sizeof (EFI_HII_SIBT_SKIP2_BLOCK);
+ break;
+
+ case EFI_HII_SIBT_EXT1:
+ CopyMem (
+ &Length8,
+ (UINT8 *)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),
+ sizeof (UINT8)
+ );
+ BlockSize += Length8;
+ break;
+
+ case EFI_HII_SIBT_EXT2:
+ CopyMem (&Ext2, BlockHdr, sizeof (EFI_HII_SIBT_EXT2_BLOCK));
+ BlockSize += Ext2.Length;
+ break;
+
+ case EFI_HII_SIBT_EXT4:
+ CopyMem (
+ &Length32,
+ (UINT8 *)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),
+ sizeof (UINT32)
+ );
+
+ BlockSize += Length32;
+ break;
+
+ default:
+ break;
}
if (String != NULL) {
@@ -1288,7 +1335,7 @@ GetNextStringId ( String = NULL;
}
- BlockHdr = StringPackage->StringBlock + BlockSize;
+ BlockHdr = StringPackage->StringBlock + BlockSize;
}
return 0;
@@ -1312,10 +1359,10 @@ GetNextStringId ( **/
UINT32
GetStringIdFromRecord (
- IN HII_DATABASE_RECORD *DatabaseRecord,
- IN CHAR8 **NameSpace,
- IN CHAR16 *KeywordValue,
- OUT EFI_STRING_ID *StringId
+ IN HII_DATABASE_RECORD *DatabaseRecord,
+ IN CHAR8 **NameSpace,
+ IN CHAR16 *KeywordValue,
+ OUT EFI_STRING_ID *StringId
)
{
LIST_ENTRY *Link;
@@ -1328,7 +1375,7 @@ GetStringIdFromRecord ( ASSERT (DatabaseRecord != NULL && NameSpace != NULL && KeywordValue != NULL);
PackageListNode = DatabaseRecord->PackageList;
- RetVal = KEYWORD_HANDLER_NAMESPACE_ID_NOT_FOUND;
+ RetVal = KEYWORD_HANDLER_NAMESPACE_ID_NOT_FOUND;
if (*NameSpace != NULL) {
Name = *NameSpace;
@@ -1339,7 +1386,7 @@ GetStringIdFromRecord ( for (Link = PackageListNode->StringPkgHdr.ForwardLink; Link != &PackageListNode->StringPkgHdr; Link = Link->ForwardLink) {
StringPackage = CR (Link, HII_STRING_PACKAGE_INSTANCE, StringEntry, HII_STRING_PACKAGE_SIGNATURE);
- if (AsciiStrnCmp(Name, StringPackage->StringPkgHdr->Language, AsciiStrLen (Name)) == 0) {
+ if (AsciiStrnCmp (Name, StringPackage->StringPkgHdr->Language, AsciiStrLen (Name)) == 0) {
Status = GetStringIdFromString (StringPackage, KeywordValue, StringId);
if (EFI_ERROR (Status)) {
return KEYWORD_HANDLER_KEYWORD_NOT_FOUND;
@@ -1350,6 +1397,7 @@ GetStringIdFromRecord ( return KEYWORD_HANDLER_UNDEFINED_PROCESSING_ERROR;
}
}
+
return KEYWORD_HANDLER_NO_ERROR;
}
}
@@ -1369,7 +1417,7 @@ GetStringIdFromRecord ( **/
BOOLEAN
IsStatementOpCode (
- IN UINT8 Operand
+ IN UINT8 Operand
)
{
if ((Operand == EFI_IFR_SUBTITLE_OP) ||
@@ -1385,7 +1433,8 @@ IsStatementOpCode ( (Operand == EFI_IFR_DATE_OP) ||
(Operand == EFI_IFR_TIME_OP) ||
(Operand == EFI_IFR_GUID_OP) ||
- (Operand == EFI_IFR_ONE_OF_OP)) {
+ (Operand == EFI_IFR_ONE_OF_OP))
+ {
return TRUE;
}
@@ -1403,12 +1452,13 @@ IsStatementOpCode ( **/
BOOLEAN
IsStorageOpCode (
- IN UINT8 Operand
+ IN UINT8 Operand
)
{
if ((Operand == EFI_IFR_VARSTORE_OP) ||
(Operand == EFI_IFR_VARSTORE_NAME_VALUE_OP) ||
- (Operand == EFI_IFR_VARSTORE_EFI_OP)) {
+ (Operand == EFI_IFR_VARSTORE_EFI_OP))
+ {
return TRUE;
}
@@ -1426,26 +1476,26 @@ IsStorageOpCode ( **/
UINT8 *
FindQuestionFromStringId (
- IN HII_IFR_PACKAGE_INSTANCE *FormPackage,
- IN EFI_STRING_ID KeywordStrId
+ IN HII_IFR_PACKAGE_INSTANCE *FormPackage,
+ IN EFI_STRING_ID KeywordStrId
)
{
- UINT8 *OpCodeData;
- UINT32 Offset;
- EFI_IFR_STATEMENT_HEADER *StatementHeader;
- EFI_IFR_OP_HEADER *OpCodeHeader;
- UINT32 FormDataLen;
+ UINT8 *OpCodeData;
+ UINT32 Offset;
+ EFI_IFR_STATEMENT_HEADER *StatementHeader;
+ EFI_IFR_OP_HEADER *OpCodeHeader;
+ UINT32 FormDataLen;
ASSERT (FormPackage != NULL);
FormDataLen = FormPackage->FormPkgHdr.Length - sizeof (EFI_HII_PACKAGE_HEADER);
- Offset = 0;
+ Offset = 0;
while (Offset < FormDataLen) {
- OpCodeData = FormPackage->IfrData + Offset;
- OpCodeHeader = (EFI_IFR_OP_HEADER *) OpCodeData;
+ OpCodeData = FormPackage->IfrData + Offset;
+ OpCodeHeader = (EFI_IFR_OP_HEADER *)OpCodeData;
- if (IsStatementOpCode(OpCodeHeader->OpCode)) {
- StatementHeader = (EFI_IFR_STATEMENT_HEADER *) (OpCodeData + sizeof (EFI_IFR_OP_HEADER));
+ if (IsStatementOpCode (OpCodeHeader->OpCode)) {
+ StatementHeader = (EFI_IFR_STATEMENT_HEADER *)(OpCodeData + sizeof (EFI_IFR_OP_HEADER));
if (StatementHeader->Prompt == KeywordStrId) {
return OpCodeData;
}
@@ -1468,45 +1518,48 @@ FindQuestionFromStringId ( **/
UINT8 *
FindStorageFromVarId (
- IN HII_IFR_PACKAGE_INSTANCE *FormPackage,
- IN EFI_VARSTORE_ID VarStoreId
+ IN HII_IFR_PACKAGE_INSTANCE *FormPackage,
+ IN EFI_VARSTORE_ID VarStoreId
)
{
- UINT8 *OpCodeData;
- UINT32 Offset;
- EFI_IFR_OP_HEADER *OpCodeHeader;
- UINT32 FormDataLen;
+ UINT8 *OpCodeData;
+ UINT32 Offset;
+ EFI_IFR_OP_HEADER *OpCodeHeader;
+ UINT32 FormDataLen;
ASSERT (FormPackage != NULL);
FormDataLen = FormPackage->FormPkgHdr.Length - sizeof (EFI_HII_PACKAGE_HEADER);
- Offset = 0;
+ Offset = 0;
while (Offset < FormDataLen) {
- OpCodeData = FormPackage->IfrData + Offset;
- OpCodeHeader = (EFI_IFR_OP_HEADER *) OpCodeData;
+ OpCodeData = FormPackage->IfrData + Offset;
+ OpCodeHeader = (EFI_IFR_OP_HEADER *)OpCodeData;
- if (IsStorageOpCode(OpCodeHeader->OpCode)) {
+ if (IsStorageOpCode (OpCodeHeader->OpCode)) {
switch (OpCodeHeader->OpCode) {
- case EFI_IFR_VARSTORE_OP:
- if (VarStoreId == ((EFI_IFR_VARSTORE *) OpCodeData)->VarStoreId) {
- return OpCodeData;
- }
- break;
+ case EFI_IFR_VARSTORE_OP:
+ if (VarStoreId == ((EFI_IFR_VARSTORE *)OpCodeData)->VarStoreId) {
+ return OpCodeData;
+ }
- case EFI_IFR_VARSTORE_NAME_VALUE_OP:
- if (VarStoreId == ((EFI_IFR_VARSTORE_NAME_VALUE *) OpCodeData)->VarStoreId) {
- return OpCodeData;
- }
- break;
+ break;
- case EFI_IFR_VARSTORE_EFI_OP:
- if (VarStoreId == ((EFI_IFR_VARSTORE_EFI *) OpCodeData)->VarStoreId) {
- return OpCodeData;
- }
- break;
+ case EFI_IFR_VARSTORE_NAME_VALUE_OP:
+ if (VarStoreId == ((EFI_IFR_VARSTORE_NAME_VALUE *)OpCodeData)->VarStoreId) {
+ return OpCodeData;
+ }
- default:
- break;
+ break;
+
+ case EFI_IFR_VARSTORE_EFI_OP:
+ if (VarStoreId == ((EFI_IFR_VARSTORE_EFI *)OpCodeData)->VarStoreId) {
+ return OpCodeData;
+ }
+
+ break;
+
+ default:
+ break;
}
}
@@ -1526,79 +1579,79 @@ FindStorageFromVarId ( **/
UINT16
GetWidth (
- IN UINT8 *OpCodeData
+ IN UINT8 *OpCodeData
)
{
- UINT8 *NextOpCodeData;
+ UINT8 *NextOpCodeData;
ASSERT (OpCodeData != NULL);
- switch (((EFI_IFR_OP_HEADER *) OpCodeData)->OpCode) {
- case EFI_IFR_REF_OP:
- return (UINT16) sizeof (EFI_HII_REF);
+ switch (((EFI_IFR_OP_HEADER *)OpCodeData)->OpCode) {
+ case EFI_IFR_REF_OP:
+ return (UINT16)sizeof (EFI_HII_REF);
- case EFI_IFR_ONE_OF_OP:
- case EFI_IFR_NUMERIC_OP:
- switch (((EFI_IFR_ONE_OF *) OpCodeData)->Flags & EFI_IFR_NUMERIC_SIZE) {
- case EFI_IFR_NUMERIC_SIZE_1:
- return (UINT16) sizeof (UINT8);
+ case EFI_IFR_ONE_OF_OP:
+ case EFI_IFR_NUMERIC_OP:
+ switch (((EFI_IFR_ONE_OF *)OpCodeData)->Flags & EFI_IFR_NUMERIC_SIZE) {
+ case EFI_IFR_NUMERIC_SIZE_1:
+ return (UINT16)sizeof (UINT8);
- case EFI_IFR_NUMERIC_SIZE_2:
- return (UINT16) sizeof (UINT16);
+ case EFI_IFR_NUMERIC_SIZE_2:
+ return (UINT16)sizeof (UINT16);
- case EFI_IFR_NUMERIC_SIZE_4:
- return (UINT16) sizeof (UINT32);
+ case EFI_IFR_NUMERIC_SIZE_4:
+ return (UINT16)sizeof (UINT32);
- case EFI_IFR_NUMERIC_SIZE_8:
- return (UINT16) sizeof (UINT64);
+ case EFI_IFR_NUMERIC_SIZE_8:
+ return (UINT16)sizeof (UINT64);
- default:
- ASSERT (FALSE);
- return 0;
- }
+ default:
+ ASSERT (FALSE);
+ return 0;
+ }
- case EFI_IFR_ORDERED_LIST_OP:
- NextOpCodeData = OpCodeData + ((EFI_IFR_ORDERED_LIST *) OpCodeData)->Header.Length;
- //
- // OneOfOption must follow the orderedlist opcode.
- //
- ASSERT (((EFI_IFR_OP_HEADER *) NextOpCodeData)->OpCode == EFI_IFR_ONE_OF_OPTION_OP);
- switch (((EFI_IFR_ONE_OF_OPTION *) NextOpCodeData)->Type) {
- case EFI_IFR_TYPE_NUM_SIZE_8:
- return (UINT16) sizeof (UINT8) * ((EFI_IFR_ORDERED_LIST *) OpCodeData)->MaxContainers;
+ case EFI_IFR_ORDERED_LIST_OP:
+ NextOpCodeData = OpCodeData + ((EFI_IFR_ORDERED_LIST *)OpCodeData)->Header.Length;
+ //
+ // OneOfOption must follow the orderedlist opcode.
+ //
+ ASSERT (((EFI_IFR_OP_HEADER *)NextOpCodeData)->OpCode == EFI_IFR_ONE_OF_OPTION_OP);
+ switch (((EFI_IFR_ONE_OF_OPTION *)NextOpCodeData)->Type) {
+ case EFI_IFR_TYPE_NUM_SIZE_8:
+ return (UINT16)sizeof (UINT8) * ((EFI_IFR_ORDERED_LIST *)OpCodeData)->MaxContainers;
- case EFI_IFR_TYPE_NUM_SIZE_16:
- return (UINT16) sizeof (UINT16) * ((EFI_IFR_ORDERED_LIST *) OpCodeData)->MaxContainers ;
+ case EFI_IFR_TYPE_NUM_SIZE_16:
+ return (UINT16)sizeof (UINT16) * ((EFI_IFR_ORDERED_LIST *)OpCodeData)->MaxContainers;
- case EFI_IFR_TYPE_NUM_SIZE_32:
- return (UINT16) sizeof (UINT32) * ((EFI_IFR_ORDERED_LIST *) OpCodeData)->MaxContainers;
+ case EFI_IFR_TYPE_NUM_SIZE_32:
+ return (UINT16)sizeof (UINT32) * ((EFI_IFR_ORDERED_LIST *)OpCodeData)->MaxContainers;
- case EFI_IFR_TYPE_NUM_SIZE_64:
- return (UINT16) sizeof (UINT64) * ((EFI_IFR_ORDERED_LIST *) OpCodeData)->MaxContainers;
+ case EFI_IFR_TYPE_NUM_SIZE_64:
+ return (UINT16)sizeof (UINT64) * ((EFI_IFR_ORDERED_LIST *)OpCodeData)->MaxContainers;
- default:
- ASSERT (FALSE);
- return 0;
- }
+ default:
+ ASSERT (FALSE);
+ return 0;
+ }
- case EFI_IFR_CHECKBOX_OP:
- return (UINT16) sizeof (BOOLEAN);
+ case EFI_IFR_CHECKBOX_OP:
+ return (UINT16)sizeof (BOOLEAN);
- case EFI_IFR_PASSWORD_OP:
- return (UINT16)((UINTN) ((EFI_IFR_PASSWORD *) OpCodeData)->MaxSize * sizeof (CHAR16));
+ case EFI_IFR_PASSWORD_OP:
+ return (UINT16)((UINTN)((EFI_IFR_PASSWORD *)OpCodeData)->MaxSize * sizeof (CHAR16));
- case EFI_IFR_STRING_OP:
- return (UINT16)((UINTN) ((EFI_IFR_STRING *) OpCodeData)->MaxSize * sizeof (CHAR16));
+ case EFI_IFR_STRING_OP:
+ return (UINT16)((UINTN)((EFI_IFR_STRING *)OpCodeData)->MaxSize * sizeof (CHAR16));
- case EFI_IFR_DATE_OP:
- return (UINT16) sizeof (EFI_HII_DATE);
+ case EFI_IFR_DATE_OP:
+ return (UINT16)sizeof (EFI_HII_DATE);
- case EFI_IFR_TIME_OP:
- return (UINT16) sizeof (EFI_HII_TIME);
+ case EFI_IFR_TIME_OP:
+ return (UINT16)sizeof (EFI_HII_TIME);
- default:
- ASSERT (FALSE);
- return 0;
+ default:
+ ASSERT (FALSE);
+ return 0;
}
}
@@ -1632,8 +1685,8 @@ InternalLowerConfigString ( Lower = TRUE;
} else if (*String == L'&') {
Lower = FALSE;
- } else if (Lower && *String >= L'A' && *String <= L'F') {
- *String = (CHAR16) (*String - L'A' + L'a');
+ } else if (Lower && (*String >= L'A') && (*String <= L'F')) {
+ *String = (CHAR16)(*String - L'A' + L'a');
}
}
@@ -1659,8 +1712,8 @@ InternalLowerConfigString ( **/
EFI_STRING
ConstructConfigHdr (
- IN UINT8 *OpCodeData,
- IN EFI_HANDLE DriverHandle
+ IN UINT8 *OpCodeData,
+ IN EFI_HANDLE DriverHandle
)
{
UINTN NameLength;
@@ -1679,31 +1732,31 @@ ConstructConfigHdr ( ASSERT (OpCodeData != NULL);
switch (((EFI_IFR_OP_HEADER *)OpCodeData)->OpCode) {
- case EFI_IFR_VARSTORE_OP:
- Guid = (EFI_GUID *)(UINTN *)&((EFI_IFR_VARSTORE *) OpCodeData)->Guid;
- AsciiName = (CHAR8 *) ((EFI_IFR_VARSTORE *) OpCodeData)->Name;
- break;
+ case EFI_IFR_VARSTORE_OP:
+ Guid = (EFI_GUID *)(UINTN *)&((EFI_IFR_VARSTORE *)OpCodeData)->Guid;
+ AsciiName = (CHAR8 *)((EFI_IFR_VARSTORE *)OpCodeData)->Name;
+ break;
- case EFI_IFR_VARSTORE_NAME_VALUE_OP:
- Guid = (EFI_GUID *)(UINTN *)&((EFI_IFR_VARSTORE_NAME_VALUE *) OpCodeData)->Guid;
- AsciiName = NULL;
- break;
+ case EFI_IFR_VARSTORE_NAME_VALUE_OP:
+ Guid = (EFI_GUID *)(UINTN *)&((EFI_IFR_VARSTORE_NAME_VALUE *)OpCodeData)->Guid;
+ AsciiName = NULL;
+ break;
- case EFI_IFR_VARSTORE_EFI_OP:
- Guid = (EFI_GUID *)(UINTN *)&((EFI_IFR_VARSTORE_EFI *) OpCodeData)->Guid;
- AsciiName = (CHAR8 *) ((EFI_IFR_VARSTORE_EFI *) OpCodeData)->Name;
- break;
+ case EFI_IFR_VARSTORE_EFI_OP:
+ Guid = (EFI_GUID *)(UINTN *)&((EFI_IFR_VARSTORE_EFI *)OpCodeData)->Guid;
+ AsciiName = (CHAR8 *)((EFI_IFR_VARSTORE_EFI *)OpCodeData)->Name;
+ break;
- default:
- ASSERT (FALSE);
- Guid = NULL;
- AsciiName = NULL;
- break;
+ default:
+ ASSERT (FALSE);
+ Guid = NULL;
+ AsciiName = NULL;
+ break;
}
if (AsciiName != NULL) {
NameSize = AsciiStrSize (AsciiName);
- Name = AllocateZeroPool (NameSize * sizeof (CHAR16));
+ Name = AllocateZeroPool (NameSize * sizeof (CHAR16));
ASSERT (Name != NULL);
AsciiStrToUnicodeStrS (AsciiName, Name, NameSize);
} else {
@@ -1719,7 +1772,7 @@ ConstructConfigHdr ( NameLength = StrLen (Name);
}
- DevicePath = NULL;
+ DevicePath = NULL;
DevicePathSize = 0;
//
// Retrieve DevicePath Protocol associated with DriverHandle
@@ -1729,6 +1782,7 @@ ConstructConfigHdr ( if (DevicePath == NULL) {
return NULL;
}
+
//
// Compute the size of the device path in bytes
//
@@ -1750,7 +1804,7 @@ ConstructConfigHdr ( //
StrCpyS (String, MaxLen, L"GUID=");
ReturnString = String;
- String += StrLen (String);
+ String += StrLen (String);
if (Guid != NULL) {
//
@@ -1778,7 +1832,7 @@ ConstructConfigHdr ( //
// Append Name converted to <Char>NameLength
//
- for (; *Name != L'\0'; Name++) {
+ for ( ; *Name != L'\0'; Name++) {
UnicodeValueToStringS (
String,
MaxLen * sizeof (CHAR16) - ((UINTN)String - (UINTN)ReturnString),
@@ -1833,13 +1887,13 @@ ConstructConfigHdr ( **/
EFI_STRING
ConstructRequestElement (
- IN CHAR16 *Name,
- IN UINT16 Offset,
- IN UINT16 Width
+ IN CHAR16 *Name,
+ IN UINT16 Offset,
+ IN UINT16 Width
)
{
- CHAR16 *StringPtr;
- UINTN Length;
+ CHAR16 *StringPtr;
+ UINTN Length;
if (Name != NULL) {
//
@@ -1874,7 +1928,7 @@ ConstructRequestElement ( (StrLen (Name) + 1) * sizeof (CHAR16),
L"%s",
Name
- );
+ );
} else {
//
// Append OFFSET=XXXX&WIDTH=YYYY\0
@@ -1885,7 +1939,7 @@ ConstructRequestElement ( L"OFFSET=%04X&WIDTH=%04X",
Offset,
Width
- );
+ );
}
return StringPtr;
@@ -1902,8 +1956,8 @@ ConstructRequestElement ( **/
CHAR16 *
GetNameFromId (
- IN HII_DATABASE_RECORD *DatabaseRecord,
- IN EFI_STRING_ID NameId
+ IN HII_DATABASE_RECORD *DatabaseRecord,
+ IN EFI_STRING_ID NameId
)
{
CHAR16 *Name;
@@ -1914,13 +1968,13 @@ GetNameFromId ( CHAR16 TempString;
EFI_STATUS Status;
- Name = NULL;
- BestLanguage = NULL;
- PlatformLanguage = NULL;
+ Name = NULL;
+ BestLanguage = NULL;
+ PlatformLanguage = NULL;
SupportedLanguages = NULL;
- GetEfiGlobalVariable2 (L"PlatformLang", (VOID**)&PlatformLanguage, NULL);
- SupportedLanguages = GetSupportedLanguages(DatabaseRecord->Handle);
+ GetEfiGlobalVariable2 (L"PlatformLang", (VOID **)&PlatformLanguage, NULL);
+ SupportedLanguages = GetSupportedLanguages (DatabaseRecord->Handle);
//
// Get the best matching language from SupportedLanguages
@@ -1938,15 +1992,15 @@ GetNameFromId ( }
StringSize = 0;
- Status = mPrivate.HiiString.GetString (
- &mPrivate.HiiString,
- BestLanguage,
- DatabaseRecord->Handle,
- NameId,
- &TempString,
- &StringSize,
- NULL
- );
+ Status = mPrivate.HiiString.GetString (
+ &mPrivate.HiiString,
+ BestLanguage,
+ DatabaseRecord->Handle,
+ NameId,
+ &TempString,
+ &StringSize,
+ NULL
+ );
if (Status != EFI_BUFFER_TOO_SMALL) {
goto Done;
}
@@ -1957,14 +2011,14 @@ GetNameFromId ( }
Status = mPrivate.HiiString.GetString (
- &mPrivate.HiiString,
- BestLanguage,
- DatabaseRecord->Handle,
- NameId,
- Name,
- &StringSize,
- NULL
- );
+ &mPrivate.HiiString,
+ BestLanguage,
+ DatabaseRecord->Handle,
+ NameId,
+ Name,
+ &StringSize,
+ NULL
+ );
if (EFI_ERROR (Status)) {
FreePool (Name);
@@ -1974,11 +2028,13 @@ GetNameFromId ( Done:
if (SupportedLanguages != NULL) {
- FreePool(SupportedLanguages);
+ FreePool (SupportedLanguages);
}
+
if (BestLanguage != NULL) {
FreePool (BestLanguage);
}
+
if (PlatformLanguage != NULL) {
FreePool (PlatformLanguage);
}
@@ -2003,10 +2059,10 @@ Done: **/
EFI_STATUS
ExtractConfigRequest (
- IN HII_DATABASE_RECORD *DatabaseRecord,
- IN EFI_STRING_ID KeywordStrId,
- OUT UINT8 **OpCodeData,
- OUT EFI_STRING *ConfigRequest
+ IN HII_DATABASE_RECORD *DatabaseRecord,
+ IN EFI_STRING_ID KeywordStrId,
+ OUT UINT8 **OpCodeData,
+ OUT EFI_STRING *ConfigRequest
)
{
LIST_ENTRY *Link;
@@ -2041,7 +2097,7 @@ ExtractConfigRequest ( OpCode = FindQuestionFromStringId (FormPackage, KeywordStrId);
if (OpCode != NULL) {
*OpCodeData = OpCode;
- Header = (EFI_IFR_QUESTION_HEADER *) (OpCode + sizeof (EFI_IFR_OP_HEADER));
+ Header = (EFI_IFR_QUESTION_HEADER *)(OpCode + sizeof (EFI_IFR_OP_HEADER));
//
// Header->VarStoreId == 0 means no storage for this question.
//
@@ -2051,23 +2107,25 @@ ExtractConfigRequest ( Storage = FindStorageFromVarId (FormPackage, Header->VarStoreId);
ASSERT (Storage != NULL);
- if (((EFI_IFR_OP_HEADER *) Storage)->OpCode == EFI_IFR_VARSTORE_NAME_VALUE_OP) {
+ if (((EFI_IFR_OP_HEADER *)Storage)->OpCode == EFI_IFR_VARSTORE_NAME_VALUE_OP) {
Name = GetNameFromId (DatabaseRecord, Header->VarStoreInfo.VarName);
} else {
Offset = Header->VarStoreInfo.VarOffset;
- Width = GetWidth (OpCode);
+ Width = GetWidth (OpCode);
}
- RequestElement = ConstructRequestElement(Name, Offset, Width);
- ConfigHdr = ConstructConfigHdr(Storage, DatabaseRecord->DriverHandle);
+
+ RequestElement = ConstructRequestElement (Name, Offset, Width);
+ ConfigHdr = ConstructConfigHdr (Storage, DatabaseRecord->DriverHandle);
ASSERT (ConfigHdr != NULL);
- MaxLen = StrLen (ConfigHdr) + 1 + StrLen(RequestElement) + 1;
+ MaxLen = StrLen (ConfigHdr) + 1 + StrLen (RequestElement) + 1;
*ConfigRequest = AllocatePool (MaxLen * sizeof (CHAR16));
if (*ConfigRequest == NULL) {
FreePool (ConfigHdr);
FreePool (RequestElement);
return EFI_OUT_OF_RESOURCES;
}
+
StringPtr = *ConfigRequest;
StrCpyS (StringPtr, MaxLen, ConfigHdr);
@@ -2105,11 +2163,11 @@ ExtractConfigRequest ( **/
EFI_STATUS
ExtractConfigResp (
- IN HII_DATABASE_RECORD *DatabaseRecord,
- IN EFI_STRING_ID KeywordStrId,
- IN EFI_STRING ValueElement,
- OUT UINT8 **OpCodeData,
- OUT EFI_STRING *ConfigResp
+ IN HII_DATABASE_RECORD *DatabaseRecord,
+ IN EFI_STRING_ID KeywordStrId,
+ IN EFI_STRING ValueElement,
+ OUT UINT8 **OpCodeData,
+ OUT EFI_STRING *ConfigResp
)
{
LIST_ENTRY *Link;
@@ -2144,7 +2202,7 @@ ExtractConfigResp ( OpCode = FindQuestionFromStringId (FormPackage, KeywordStrId);
if (OpCode != NULL) {
*OpCodeData = OpCode;
- Header = (EFI_IFR_QUESTION_HEADER *) (OpCode + sizeof (EFI_IFR_OP_HEADER));
+ Header = (EFI_IFR_QUESTION_HEADER *)(OpCode + sizeof (EFI_IFR_OP_HEADER));
//
// Header->VarStoreId == 0 means no storage for this question.
//
@@ -2154,31 +2212,32 @@ ExtractConfigResp ( Storage = FindStorageFromVarId (FormPackage, Header->VarStoreId);
ASSERT (Storage != NULL);
- if (((EFI_IFR_OP_HEADER *) Storage)->OpCode == EFI_IFR_VARSTORE_NAME_VALUE_OP) {
+ if (((EFI_IFR_OP_HEADER *)Storage)->OpCode == EFI_IFR_VARSTORE_NAME_VALUE_OP) {
Name = GetNameFromId (DatabaseRecord, Header->VarStoreInfo.VarName);
} else {
Offset = Header->VarStoreInfo.VarOffset;
Width = GetWidth (OpCode);
}
- RequestElement = ConstructRequestElement(Name, Offset, Width);
- ConfigHdr = ConstructConfigHdr(Storage, DatabaseRecord->DriverHandle);
+ RequestElement = ConstructRequestElement (Name, Offset, Width);
+
+ ConfigHdr = ConstructConfigHdr (Storage, DatabaseRecord->DriverHandle);
ASSERT (ConfigHdr != NULL);
- MaxLen = StrLen (ConfigHdr) + 1 + StrLen(RequestElement) + 1 + StrLen (L"VALUE=") + StrLen(ValueElement) + 1;
+ MaxLen = StrLen (ConfigHdr) + 1 + StrLen (RequestElement) + 1 + StrLen (L"VALUE=") + StrLen (ValueElement) + 1;
*ConfigResp = AllocatePool (MaxLen * sizeof (CHAR16));
if (*ConfigResp == NULL) {
FreePool (ConfigHdr);
FreePool (RequestElement);
return EFI_OUT_OF_RESOURCES;
}
+
StringPtr = *ConfigResp;
StrCpyS (StringPtr, MaxLen, ConfigHdr);
StrCatS (StringPtr, MaxLen, L"&");
-
StrCatS (StringPtr, MaxLen, RequestElement);
StrCatS (StringPtr, MaxLen, L"&");
@@ -2212,24 +2271,24 @@ ExtractConfigResp ( **/
EFI_STATUS
ExtractValueFromDriver (
- IN CHAR16 *ConfigRequest,
- OUT CHAR16 **ValueElement
+ IN CHAR16 *ConfigRequest,
+ OUT CHAR16 **ValueElement
)
{
- EFI_STATUS Status;
- EFI_STRING Result;
- EFI_STRING Progress;
- CHAR16 *StringPtr;
- CHAR16 *StringEnd;
+ EFI_STATUS Status;
+ EFI_STRING Result;
+ EFI_STRING Progress;
+ CHAR16 *StringPtr;
+ CHAR16 *StringEnd;
ASSERT ((ConfigRequest != NULL) && (ValueElement != NULL));
Status = mPrivate.ConfigRouting.ExtractConfig (
- &mPrivate.ConfigRouting,
- (EFI_STRING) ConfigRequest,
- &Progress,
- &Result
- );
+ &mPrivate.ConfigRouting,
+ (EFI_STRING)ConfigRequest,
+ &Progress,
+ &Result
+ );
if (EFI_ERROR (Status)) {
return Status;
}
@@ -2252,6 +2311,7 @@ ExtractValueFromDriver ( if (StringEnd != NULL) {
*StringEnd = L'&';
}
+
FreePool (Result);
return EFI_SUCCESS;
@@ -2276,20 +2336,20 @@ ExtractValueFromDriver ( **/
EFI_STATUS
GetStringIdFromDatabase (
- IN EFI_DEVICE_PATH_PROTOCOL **DevicePath,
- IN CHAR8 **NameSpace,
- IN CHAR16 *KeywordData,
- OUT UINT32 *ProgressErr,
- OUT EFI_STRING_ID *KeywordStringId,
- OUT HII_DATABASE_RECORD **DataBaseRecord
- )
+ IN EFI_DEVICE_PATH_PROTOCOL **DevicePath,
+ IN CHAR8 **NameSpace,
+ IN CHAR16 *KeywordData,
+ OUT UINT32 *ProgressErr,
+ OUT EFI_STRING_ID *KeywordStringId,
+ OUT HII_DATABASE_RECORD **DataBaseRecord
+ )
{
- HII_DATABASE_RECORD *Record;
- LIST_ENTRY *Link;
- BOOLEAN FindNameSpace;
- EFI_DEVICE_PATH_PROTOCOL *DestDevicePath;
- UINT8 *DevicePathPkg;
- UINTN DevicePathSize;
+ HII_DATABASE_RECORD *Record;
+ LIST_ENTRY *Link;
+ BOOLEAN FindNameSpace;
+ EFI_DEVICE_PATH_PROTOCOL *DestDevicePath;
+ UINT8 *DevicePathPkg;
+ UINTN DevicePathSize;
ASSERT ((NameSpace != NULL) && (KeywordData != NULL) && (ProgressErr != NULL) && (KeywordStringId != NULL) && (DataBaseRecord != NULL));
@@ -2299,7 +2359,7 @@ GetStringIdFromDatabase ( //
// Get DataBaseRecord from device path protocol.
//
- Record = GetRecordFromDevicePath(*DevicePath);
+ Record = GetRecordFromDevicePath (*DevicePath);
if (Record == NULL) {
//
// Can't find the DatabaseRecord base on the input device path info.
@@ -2314,16 +2374,16 @@ GetStringIdFromDatabase ( //
*ProgressErr = GetStringIdFromRecord (Record, NameSpace, KeywordData, KeywordStringId);
switch (*ProgressErr) {
- case KEYWORD_HANDLER_NO_ERROR:
- *DataBaseRecord = Record;
- return EFI_SUCCESS;
+ case KEYWORD_HANDLER_NO_ERROR:
+ *DataBaseRecord = Record;
+ return EFI_SUCCESS;
- case KEYWORD_HANDLER_NAMESPACE_ID_NOT_FOUND:
- return EFI_INVALID_PARAMETER;
+ case KEYWORD_HANDLER_NAMESPACE_ID_NOT_FOUND:
+ return EFI_INVALID_PARAMETER;
- default:
- ASSERT (*ProgressErr == KEYWORD_HANDLER_KEYWORD_NOT_FOUND);
- return EFI_NOT_FOUND;
+ default:
+ ASSERT (*ProgressErr == KEYWORD_HANDLER_KEYWORD_NOT_FOUND);
+ return EFI_NOT_FOUND;
}
} else {
//
@@ -2337,9 +2397,9 @@ GetStringIdFromDatabase ( *DataBaseRecord = Record;
if ((DevicePathPkg = Record->PackageList->DevicePathPkg) != NULL) {
- DestDevicePath = (EFI_DEVICE_PATH_PROTOCOL *) (DevicePathPkg + sizeof (EFI_HII_PACKAGE_HEADER));
- DevicePathSize = GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) DestDevicePath);
- *DevicePath = AllocateCopyPool (DevicePathSize, DestDevicePath);
+ DestDevicePath = (EFI_DEVICE_PATH_PROTOCOL *)(DevicePathPkg + sizeof (EFI_HII_PACKAGE_HEADER));
+ DevicePathSize = GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *)DestDevicePath);
+ *DevicePath = AllocateCopyPool (DevicePathSize, DestDevicePath);
if (*DevicePath == NULL) {
return EFI_OUT_OF_RESOURCES;
}
@@ -2388,19 +2448,19 @@ GetStringIdFromDatabase ( **/
EFI_STATUS
GenerateKeywordResp (
- IN CHAR8 *NameSpace,
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
- IN EFI_STRING KeywordData,
- IN EFI_STRING ValueStr,
- IN BOOLEAN ReadOnly,
- OUT EFI_STRING *KeywordResp
+ IN CHAR8 *NameSpace,
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
+ IN EFI_STRING KeywordData,
+ IN EFI_STRING ValueStr,
+ IN BOOLEAN ReadOnly,
+ OUT EFI_STRING *KeywordResp
)
{
- UINTN RespStrLen;
- CHAR16 *RespStr;
- CHAR16 *PathHdr;
- CHAR16 *UnicodeNameSpace;
- UINTN NameSpaceLength;
+ UINTN RespStrLen;
+ CHAR16 *RespStr;
+ CHAR16 *PathHdr;
+ CHAR16 *UnicodeNameSpace;
+ UINTN NameSpaceLength;
ASSERT ((NameSpace != NULL) && (DevicePath != NULL) && (KeywordData != NULL) && (ValueStr != NULL) && (KeywordResp != NULL));
@@ -2411,12 +2471,13 @@ GenerateKeywordResp ( // 1.1 NameSpaceId size.
// 'NAMESPACE='<String>
//
- NameSpaceLength = AsciiStrLen (NameSpace);
- RespStrLen = 10 + NameSpaceLength;
+ NameSpaceLength = AsciiStrLen (NameSpace);
+ RespStrLen = 10 + NameSpaceLength;
UnicodeNameSpace = AllocatePool ((NameSpaceLength + 1) * sizeof (CHAR16));
if (UnicodeNameSpace == NULL) {
return EFI_OUT_OF_RESOURCES;
}
+
AsciiStrToUnicodeStrS (NameSpace, UnicodeNameSpace, NameSpaceLength + 1);
//
@@ -2426,8 +2487,8 @@ GenerateKeywordResp ( //
GenerateSubStr (
L"&PATH=",
- GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) DevicePath),
- (VOID *) DevicePath,
+ GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *)DevicePath),
+ (VOID *)DevicePath,
1,
&PathHdr
);
@@ -2456,7 +2517,7 @@ GenerateKeywordResp ( //
// 2. Allocate the buffer and create the KeywordResp string include '\0'.
//
- RespStrLen += 1;
+ RespStrLen += 1;
*KeywordResp = AllocatePool (RespStrLen * sizeof (CHAR16));
if (*KeywordResp == NULL) {
if (UnicodeNameSpace != NULL) {
@@ -2465,6 +2526,7 @@ GenerateKeywordResp ( return EFI_OUT_OF_RESOURCES;
}
+
RespStr = *KeywordResp;
//
@@ -2501,6 +2563,7 @@ GenerateKeywordResp ( if (UnicodeNameSpace != NULL) {
FreePool (UnicodeNameSpace);
}
+
if (PathHdr != NULL) {
FreePool (PathHdr);
}
@@ -2522,8 +2585,8 @@ GenerateKeywordResp ( **/
EFI_STATUS
MergeToMultiKeywordResp (
- IN OUT EFI_STRING *MultiKeywordResp,
- IN EFI_STRING *KeywordResp
+ IN OUT EFI_STRING *MultiKeywordResp,
+ IN EFI_STRING *KeywordResp
)
{
UINTN MultiKeywordRespLen;
@@ -2531,7 +2594,7 @@ MergeToMultiKeywordResp ( if (*MultiKeywordResp == NULL) {
*MultiKeywordResp = *KeywordResp;
- *KeywordResp = NULL;
+ *KeywordResp = NULL;
return EFI_SUCCESS;
}
@@ -2573,9 +2636,9 @@ MergeToMultiKeywordResp ( **/
EFI_STATUS
EnumerateAllKeywords (
- IN CHAR8 *NameSpace,
- OUT EFI_STRING *MultiResp,
- OUT UINT32 *ProgressErr
+ IN CHAR8 *NameSpace,
+ OUT EFI_STRING *MultiResp,
+ OUT UINT32 *ProgressErr
)
{
LIST_ENTRY *Link;
@@ -2597,14 +2660,14 @@ EnumerateAllKeywords ( BOOLEAN ReadOnly;
BOOLEAN FindKeywordPackages;
- DataBaseRecord = NULL;
- Status = EFI_SUCCESS;
- MultiKeywordResp = NULL;
- DevicePath = NULL;
- LocalNameSpace = NULL;
- ConfigRequest = NULL;
- ValueElement = NULL;
- KeywordResp = NULL;
+ DataBaseRecord = NULL;
+ Status = EFI_SUCCESS;
+ MultiKeywordResp = NULL;
+ DevicePath = NULL;
+ LocalNameSpace = NULL;
+ ConfigRequest = NULL;
+ ValueElement = NULL;
+ KeywordResp = NULL;
FindKeywordPackages = FALSE;
if (NameSpace == NULL) {
@@ -2619,6 +2682,7 @@ EnumerateAllKeywords ( if ((DevicePathPkg = DataBaseRecord->PackageList->DevicePathPkg) != NULL) {
DevicePath = DevicePathPkg + sizeof (EFI_HII_PACKAGE_HEADER);
}
+
PackageListNode = DataBaseRecord->PackageList;
for (StringLink = PackageListNode->StringPkgHdr.ForwardLink; StringLink != &PackageListNode->StringPkgHdr; StringLink = StringLink->ForwardLink) {
@@ -2627,7 +2691,7 @@ EnumerateAllKeywords ( //
// Check whether has keyword string package.
//
- if (AsciiStrnCmp(NameSpace, StringPackage->StringPkgHdr->Language, AsciiStrLen (NameSpace)) == 0) {
+ if (AsciiStrnCmp (NameSpace, StringPackage->StringPkgHdr->Language, AsciiStrLen (NameSpace)) == 0) {
FindKeywordPackages = TRUE;
//
// Keep the NameSpace string.
@@ -2662,7 +2726,7 @@ EnumerateAllKeywords ( //
// 3.4 Extract Value for the input keyword.
//
- Status = ExtractValueFromDriver(ConfigRequest, &ValueElement);
+ Status = ExtractValueFromDriver (ConfigRequest, &ValueElement);
if (EFI_ERROR (Status)) {
if (Status != EFI_OUT_OF_RESOURCES) {
//
@@ -2670,6 +2734,7 @@ EnumerateAllKeywords ( //
goto Error;
}
+
//
// If EFI_OUT_OF_RESOURCES error occur, no need to continue.
//
@@ -2679,13 +2744,13 @@ EnumerateAllKeywords ( //
// Extract readonly flag from opcode.
//
- ReadOnly = ExtractReadOnlyFromOpCode(OpCode);
+ ReadOnly = ExtractReadOnlyFromOpCode (OpCode);
//
// 5. Generate KeywordResp string.
//
ASSERT (DevicePath != NULL);
- Status = GenerateKeywordResp(LocalNameSpace, (EFI_DEVICE_PATH_PROTOCOL *)DevicePath, KeywordData, ValueElement, ReadOnly, &KeywordResp);
+ Status = GenerateKeywordResp (LocalNameSpace, (EFI_DEVICE_PATH_PROTOCOL *)DevicePath, KeywordData, ValueElement, ReadOnly, &KeywordResp);
if (Status != EFI_SUCCESS) {
//
// If EFI_OUT_OF_RESOURCES error occur, no need to continue.
@@ -2696,10 +2761,11 @@ EnumerateAllKeywords ( //
// 6. Merge to the MultiKeywordResp string.
//
- Status = MergeToMultiKeywordResp(&MultiKeywordResp, &KeywordResp);
+ Status = MergeToMultiKeywordResp (&MultiKeywordResp, &KeywordResp);
if (EFI_ERROR (Status)) {
goto Done;
}
+
Error:
//
// Clean the temp buffer to later use again.
@@ -2708,10 +2774,12 @@ Error: FreePool (ConfigRequest);
ConfigRequest = NULL;
}
+
if (ValueElement != NULL) {
FreePool (ValueElement);
ValueElement = NULL;
}
+
if (KeywordResp != NULL) {
FreePool (KeywordResp);
KeywordResp = NULL;
@@ -2739,15 +2807,18 @@ Error: } else {
Status = EFI_SUCCESS;
}
+
*MultiResp = MultiKeywordResp;
Done:
if (LocalNameSpace != NULL) {
FreePool (LocalNameSpace);
}
+
if (ConfigRequest != NULL) {
FreePool (ConfigRequest);
}
+
if (ValueElement != NULL) {
FreePool (ValueElement);
}
@@ -2817,37 +2888,37 @@ Done: EFI_STATUS
EFIAPI
EfiConfigKeywordHandlerSetData (
- IN EFI_CONFIG_KEYWORD_HANDLER_PROTOCOL *This,
- IN CONST EFI_STRING KeywordString,
- OUT EFI_STRING *Progress,
- OUT UINT32 *ProgressErr
+ IN EFI_CONFIG_KEYWORD_HANDLER_PROTOCOL *This,
+ IN CONST EFI_STRING KeywordString,
+ OUT EFI_STRING *Progress,
+ OUT UINT32 *ProgressErr
)
{
- CHAR8 *NameSpace;
- EFI_STATUS Status;
- CHAR16 *StringPtr;
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;
- CHAR16 *NextStringPtr;
- CHAR16 *KeywordData;
- EFI_STRING_ID KeywordStringId;
- UINT32 RetVal;
- HII_DATABASE_RECORD *DataBaseRecord;
- UINT8 *OpCode;
- CHAR16 *ConfigResp;
- CHAR16 *MultiConfigResp;
- CHAR16 *ValueElement;
- BOOLEAN ReadOnly;
- EFI_STRING InternalProgress;
- CHAR16 *TempString;
- CHAR16 *KeywordStartPos;
-
- if (This == NULL || Progress == NULL || ProgressErr == NULL || KeywordString == NULL) {
+ CHAR8 *NameSpace;
+ EFI_STATUS Status;
+ CHAR16 *StringPtr;
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+ CHAR16 *NextStringPtr;
+ CHAR16 *KeywordData;
+ EFI_STRING_ID KeywordStringId;
+ UINT32 RetVal;
+ HII_DATABASE_RECORD *DataBaseRecord;
+ UINT8 *OpCode;
+ CHAR16 *ConfigResp;
+ CHAR16 *MultiConfigResp;
+ CHAR16 *ValueElement;
+ BOOLEAN ReadOnly;
+ EFI_STRING InternalProgress;
+ CHAR16 *TempString;
+ CHAR16 *KeywordStartPos;
+
+ if ((This == NULL) || (Progress == NULL) || (ProgressErr == NULL) || (KeywordString == NULL)) {
return EFI_INVALID_PARAMETER;
}
- *Progress = KeywordString;
- *ProgressErr = KEYWORD_HANDLER_UNDEFINED_PROCESSING_ERROR;
- Status = EFI_SUCCESS;
+ *Progress = KeywordString;
+ *ProgressErr = KEYWORD_HANDLER_UNDEFINED_PROCESSING_ERROR;
+ Status = EFI_SUCCESS;
MultiConfigResp = NULL;
NameSpace = NULL;
DevicePath = NULL;
@@ -2873,13 +2944,14 @@ EfiConfigKeywordHandlerSetData ( *ProgressErr = KEYWORD_HANDLER_MALFORMED_STRING;
goto Done;
}
+
ASSERT (NameSpace != NULL);
//
// 1.1 Check whether the input namespace is valid.
//
- if (AsciiStrnCmp(NameSpace, UEFI_CONFIG_LANG, AsciiStrLen (UEFI_CONFIG_LANG)) != 0) {
+ if (AsciiStrnCmp (NameSpace, UEFI_CONFIG_LANG, AsciiStrLen (UEFI_CONFIG_LANG)) != 0) {
*ProgressErr = KEYWORD_HANDLER_MALFORMED_STRING;
- Status = EFI_INVALID_PARAMETER;
+ Status = EFI_INVALID_PARAMETER;
goto Done;
}
@@ -2893,21 +2965,23 @@ EfiConfigKeywordHandlerSetData ( *ProgressErr = KEYWORD_HANDLER_MALFORMED_STRING;
goto Done;
}
+
StringPtr = NextStringPtr;
//
// 3. Extract keyword from the KeywordRequest string.
//
KeywordStartPos = StringPtr;
- Status = ExtractKeyword(StringPtr, &KeywordData, &NextStringPtr);
+ Status = ExtractKeyword (StringPtr, &KeywordData, &NextStringPtr);
if (EFI_ERROR (Status)) {
//
// Can't find Keyword base on the input device path info.
//
*ProgressErr = KEYWORD_HANDLER_MALFORMED_STRING;
- Status = EFI_INVALID_PARAMETER;
+ Status = EFI_INVALID_PARAMETER;
goto Done;
}
+
StringPtr = NextStringPtr;
//
@@ -2919,16 +2993,17 @@ EfiConfigKeywordHandlerSetData ( // Can't find Value base on the input device path info.
//
*ProgressErr = KEYWORD_HANDLER_MALFORMED_STRING;
- Status = EFI_INVALID_PARAMETER;
+ Status = EFI_INVALID_PARAMETER;
goto Done;
}
+
StringPtr = NextStringPtr;
//
// 5. Find READONLY tag.
//
- if ((StringPtr != NULL) && StrnCmp (StringPtr, L"&READONLY", StrLen (L"&READONLY")) == 0) {
- ReadOnly = TRUE;
+ if ((StringPtr != NULL) && (StrnCmp (StringPtr, L"&READONLY", StrLen (L"&READONLY")) == 0)) {
+ ReadOnly = TRUE;
StringPtr += StrLen (L"&READONLY");
} else {
ReadOnly = FALSE;
@@ -2960,19 +3035,20 @@ EfiConfigKeywordHandlerSetData ( // If not, the input KeywordString must be incorrect, return the error status to caller.
//
*ProgressErr = KEYWORD_HANDLER_INCOMPATIBLE_VALUE_DETECTED;
- Status = EFI_INVALID_PARAMETER;
+ Status = EFI_INVALID_PARAMETER;
goto Done;
}
+
if (ReadOnly) {
*ProgressErr = KEYWORD_HANDLER_ACCESS_NOT_PERMITTED;
- Status = EFI_ACCESS_DENIED;
+ Status = EFI_ACCESS_DENIED;
goto Done;
}
//
// 9. Merge to the MultiKeywordResp string.
//
- Status = MergeToMultiKeywordResp(&MultiConfigResp, &ConfigResp);
+ Status = MergeToMultiKeywordResp (&MultiConfigResp, &ConfigResp);
if (EFI_ERROR (Status)) {
goto Done;
}
@@ -2984,25 +3060,26 @@ EfiConfigKeywordHandlerSetData ( FreePool (DevicePath);
FreePool (KeywordData);
FreePool (ValueElement);
- NameSpace = NULL;
- DevicePath = NULL;
- KeywordData = NULL;
+ NameSpace = NULL;
+ DevicePath = NULL;
+ KeywordData = NULL;
ValueElement = NULL;
if (ConfigResp != NULL) {
FreePool (ConfigResp);
ConfigResp = NULL;
}
+
KeywordStartPos = NULL;
}
//
// 11. Set value to driver.
//
- Status = mPrivate.ConfigRouting.RouteConfig(
- &mPrivate.ConfigRouting,
- (EFI_STRING) MultiConfigResp,
- &InternalProgress
- );
+ Status = mPrivate.ConfigRouting.RouteConfig (
+ &mPrivate.ConfigRouting,
+ (EFI_STRING)MultiConfigResp,
+ &InternalProgress
+ );
if (EFI_ERROR (Status)) {
Status = EFI_DEVICE_ERROR;
goto Done;
@@ -3022,19 +3099,24 @@ Done: if (NameSpace != NULL) {
FreePool (NameSpace);
}
+
if (DevicePath != NULL) {
FreePool (DevicePath);
}
+
if (KeywordData != NULL) {
FreePool (KeywordData);
}
+
if (ValueElement != NULL) {
FreePool (ValueElement);
}
+
if (ConfigResp != NULL) {
FreePool (ConfigResp);
}
- if (MultiConfigResp != NULL && MultiConfigResp != ConfigResp) {
+
+ if ((MultiConfigResp != NULL) && (MultiConfigResp != ConfigResp)) {
FreePool (MultiConfigResp);
}
@@ -3121,38 +3203,38 @@ EfiConfigKeywordHandlerGetData ( OUT EFI_STRING *Results
)
{
- CHAR8 *NameSpace;
- EFI_STATUS Status;
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;
- HII_DATABASE_RECORD *DataBaseRecord;
- CHAR16 *StringPtr;
- CHAR16 *NextStringPtr;
- CHAR16 *KeywordData;
- EFI_STRING_ID KeywordStringId;
- UINT8 *OpCode;
- CHAR16 *ConfigRequest;
- CHAR16 *ValueElement;
- UINT32 RetVal;
- BOOLEAN ReadOnly;
- CHAR16 *KeywordResp;
- CHAR16 *MultiKeywordResp;
- CHAR16 *TempString;
+ CHAR8 *NameSpace;
+ EFI_STATUS Status;
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+ HII_DATABASE_RECORD *DataBaseRecord;
+ CHAR16 *StringPtr;
+ CHAR16 *NextStringPtr;
+ CHAR16 *KeywordData;
+ EFI_STRING_ID KeywordStringId;
+ UINT8 *OpCode;
+ CHAR16 *ConfigRequest;
+ CHAR16 *ValueElement;
+ UINT32 RetVal;
+ BOOLEAN ReadOnly;
+ CHAR16 *KeywordResp;
+ CHAR16 *MultiKeywordResp;
+ CHAR16 *TempString;
- if (This == NULL || Progress == NULL || ProgressErr == NULL || Results == NULL) {
+ if ((This == NULL) || (Progress == NULL) || (ProgressErr == NULL) || (Results == NULL)) {
return EFI_INVALID_PARAMETER;
}
- *ProgressErr = KEYWORD_HANDLER_UNDEFINED_PROCESSING_ERROR;
- Status = EFI_SUCCESS;
- DevicePath = NULL;
- NameSpace = NULL;
- KeywordData = NULL;
- ConfigRequest= NULL;
- StringPtr = KeywordString;
- ReadOnly = FALSE;
+ *ProgressErr = KEYWORD_HANDLER_UNDEFINED_PROCESSING_ERROR;
+ Status = EFI_SUCCESS;
+ DevicePath = NULL;
+ NameSpace = NULL;
+ KeywordData = NULL;
+ ConfigRequest = NULL;
+ StringPtr = KeywordString;
+ ReadOnly = FALSE;
MultiKeywordResp = NULL;
KeywordStringId = 0;
- TempString = NULL;
+ TempString = NULL;
//
// Use temp string to avoid changing input string buffer.
@@ -3161,6 +3243,7 @@ EfiConfigKeywordHandlerGetData ( TempString = AllocateCopyPool (StrSize (NameSpaceId), NameSpaceId);
ASSERT (TempString != NULL);
}
+
//
// 1. Get NameSpace from NameSpaceId keyword.
//
@@ -3169,15 +3252,17 @@ EfiConfigKeywordHandlerGetData ( FreePool (TempString);
TempString = NULL;
}
+
if (EFI_ERROR (Status)) {
*ProgressErr = KEYWORD_HANDLER_MALFORMED_STRING;
return Status;
}
+
//
// 1.1 Check whether the input namespace is valid.
//
- if (NameSpace != NULL){
- if (AsciiStrnCmp(NameSpace, UEFI_CONFIG_LANG, AsciiStrLen (UEFI_CONFIG_LANG)) != 0) {
+ if (NameSpace != NULL) {
+ if (AsciiStrnCmp (NameSpace, UEFI_CONFIG_LANG, AsciiStrLen (UEFI_CONFIG_LANG)) != 0) {
*ProgressErr = KEYWORD_HANDLER_MALFORMED_STRING;
return EFI_INVALID_PARAMETER;
}
@@ -3200,21 +3285,21 @@ EfiConfigKeywordHandlerGetData ( *ProgressErr = KEYWORD_HANDLER_MALFORMED_STRING;
goto Done;
}
- StringPtr = NextStringPtr;
+ StringPtr = NextStringPtr;
//
// 3. Process Keyword section from the input keywordRequest string.
//
// 3.1 Extract keyword from the KeywordRequest string.
//
- Status = ExtractKeyword(StringPtr, &KeywordData, &NextStringPtr);
+ Status = ExtractKeyword (StringPtr, &KeywordData, &NextStringPtr);
if (EFI_ERROR (Status)) {
//
// Can't find Keyword base on the input device path info.
//
*ProgressErr = KEYWORD_HANDLER_MALFORMED_STRING;
- Status = EFI_INVALID_PARAMETER;
+ Status = EFI_INVALID_PARAMETER;
goto Done;
}
@@ -3238,13 +3323,15 @@ EfiConfigKeywordHandlerGetData ( //
// 3.4 Extract Value for the input keyword.
//
- Status = ExtractValueFromDriver(ConfigRequest, &ValueElement);
+ Status = ExtractValueFromDriver (ConfigRequest, &ValueElement);
if (EFI_ERROR (Status)) {
if (Status != EFI_OUT_OF_RESOURCES) {
Status = EFI_DEVICE_ERROR;
}
+
goto Done;
}
+
StringPtr = NextStringPtr;
//
@@ -3253,16 +3340,16 @@ EfiConfigKeywordHandlerGetData ( RetVal = ValidateFilter (OpCode, StringPtr, &NextStringPtr, &ReadOnly);
if (RetVal != KEYWORD_HANDLER_NO_ERROR) {
*ProgressErr = RetVal;
- Status = EFI_INVALID_PARAMETER;
+ Status = EFI_INVALID_PARAMETER;
goto Done;
}
- StringPtr = NextStringPtr;
+ StringPtr = NextStringPtr;
//
// 5. Generate KeywordResp string.
//
- Status = GenerateKeywordResp(NameSpace, DevicePath, KeywordData, ValueElement, ReadOnly, &KeywordResp);
+ Status = GenerateKeywordResp (NameSpace, DevicePath, KeywordData, ValueElement, ReadOnly, &KeywordResp);
if (Status != EFI_SUCCESS) {
goto Done;
}
@@ -3270,7 +3357,7 @@ EfiConfigKeywordHandlerGetData ( //
// 6. Merge to the MultiKeywordResp string.
//
- Status = MergeToMultiKeywordResp(&MultiKeywordResp, &KeywordResp);
+ Status = MergeToMultiKeywordResp (&MultiKeywordResp, &KeywordResp);
if (EFI_ERROR (Status)) {
goto Done;
}
@@ -3287,9 +3374,9 @@ EfiConfigKeywordHandlerGetData ( FreePool (KeywordData);
FreePool (ValueElement);
FreePool (ConfigRequest);
- DevicePath = NULL;
- KeywordData = NULL;
- ValueElement = NULL;
+ DevicePath = NULL;
+ KeywordData = NULL;
+ ValueElement = NULL;
ConfigRequest = NULL;
if (KeywordResp != NULL) {
FreePool (KeywordResp);
@@ -3300,10 +3387,11 @@ EfiConfigKeywordHandlerGetData ( //
// Enumerate all keyword in the system.
//
- Status = EnumerateAllKeywords(NameSpace, &MultiKeywordResp, ProgressErr);
+ Status = EnumerateAllKeywords (NameSpace, &MultiKeywordResp, ProgressErr);
if (EFI_ERROR (Status)) {
goto Done;
}
+
*Results = MultiKeywordResp;
}
@@ -3315,12 +3403,15 @@ Done: if (TempString != NULL) {
FreePool (TempString);
}
+
if (NameSpace != NULL) {
FreePool (NameSpace);
}
+
if (DevicePath != NULL) {
FreePool (DevicePath);
}
+
if (KeywordData != NULL) {
FreePool (KeywordData);
}
diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c b/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c index 17a914208c..2f792d2965 100644 --- a/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c @@ -6,9 +6,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/
-
#include "HiiDatabase.h"
-extern HII_DATABASE_PRIVATE_DATA mPrivate;
+extern HII_DATABASE_PRIVATE_DATA mPrivate;
/**
Calculate the number of Unicode characters of the incoming Configuration string,
@@ -24,7 +23,7 @@ extern HII_DATABASE_PRIVATE_DATA mPrivate; **/
UINTN
CalculateConfigStringLen (
- IN EFI_STRING String
+ IN EFI_STRING String
)
{
EFI_STRING TmpPtr;
@@ -47,7 +46,6 @@ CalculateConfigStringLen ( return (TmpPtr - String);
}
-
/**
Convert the hex UNICODE %02x encoding of a UEFI device path to binary
from <PathHdr> of <ConfigHdr>.
@@ -66,30 +64,32 @@ CalculateConfigStringLen ( **/
EFI_STATUS
GetDevicePath (
- IN EFI_STRING String,
- OUT UINT8 **DevicePathData
+ IN EFI_STRING String,
+ OUT UINT8 **DevicePathData
)
{
- UINTN Length;
- EFI_STRING PathHdr;
- UINT8 *DevicePathBuffer;
- CHAR16 TemStr[2];
- UINTN Index;
- UINT8 DigitUint8;
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;
-
-
- if (String == NULL || DevicePathData == NULL) {
+ UINTN Length;
+ EFI_STRING PathHdr;
+ UINT8 *DevicePathBuffer;
+ CHAR16 TemStr[2];
+ UINTN Index;
+ UINT8 DigitUint8;
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+
+ if ((String == NULL) || (DevicePathData == NULL)) {
return EFI_INVALID_PARAMETER;
}
//
// Find the 'PATH=' of <PathHdr> and skip it.
//
- for (; (*String != 0 && StrnCmp (String, L"PATH=", StrLen (L"PATH=")) != 0); String++);
+ for ( ; (*String != 0 && StrnCmp (String, L"PATH=", StrLen (L"PATH=")) != 0); String++) {
+ }
+
if (*String == 0) {
return EFI_INVALID_PARAMETER;
}
+
//
// Check whether path data does exist.
//
@@ -97,6 +97,7 @@ GetDevicePath ( if (*String == 0) {
return EFI_INVALID_PARAMETER;
}
+
PathHdr = String;
//
@@ -104,7 +105,9 @@ GetDevicePath ( // or '\0' (end of configuration string) is the UNICODE %02x bytes encoding
// of UEFI device path.
//
- for (Length = 0; *String != 0 && *String != L'&'; String++, Length++);
+ for (Length = 0; *String != 0 && *String != L'&'; String++, Length++) {
+ }
+
//
// Check DevicePath Length
//
@@ -117,7 +120,7 @@ GetDevicePath ( // as the device path resides in RAM memory.
// Translate the data into binary.
//
- DevicePathBuffer = (UINT8 *) AllocateZeroPool ((Length + 1) / 2);
+ DevicePathBuffer = (UINT8 *)AllocateZeroPool ((Length + 1) / 2);
if (DevicePathBuffer == NULL) {
return EFI_OUT_OF_RESOURCES;
}
@@ -126,20 +129,20 @@ GetDevicePath ( // Convert DevicePath
//
ZeroMem (TemStr, sizeof (TemStr));
- for (Index = 0; Index < Length; Index ++) {
- TemStr[0] = PathHdr[Index];
- DigitUint8 = (UINT8) StrHexToUint64 (TemStr);
+ for (Index = 0; Index < Length; Index++) {
+ TemStr[0] = PathHdr[Index];
+ DigitUint8 = (UINT8)StrHexToUint64 (TemStr);
if ((Index & 1) == 0) {
- DevicePathBuffer [Index/2] = DigitUint8;
+ DevicePathBuffer[Index/2] = DigitUint8;
} else {
- DevicePathBuffer [Index/2] = (UINT8) ((DevicePathBuffer [Index/2] << 4) + DigitUint8);
+ DevicePathBuffer[Index/2] = (UINT8)((DevicePathBuffer[Index/2] << 4) + DigitUint8);
}
}
//
// Validate DevicePath
//
- DevicePath = (EFI_DEVICE_PATH_PROTOCOL *) DevicePathBuffer;
+ DevicePath = (EFI_DEVICE_PATH_PROTOCOL *)DevicePathBuffer;
while (!IsDevicePathEnd (DevicePath)) {
if ((DevicePath->Type == 0) || (DevicePath->SubType == 0) || (DevicePathNodeLength (DevicePath) < sizeof (EFI_DEVICE_PATH_PROTOCOL))) {
//
@@ -148,6 +151,7 @@ GetDevicePath ( FreePool (DevicePathBuffer);
return EFI_NOT_FOUND;
}
+
DevicePath = NextDevicePathNode (DevicePath);
}
@@ -184,8 +188,8 @@ HiiToLower ( Lower = TRUE;
} else if (*String == L'&') {
Lower = FALSE;
- } else if (Lower && *String >= L'A' && *String <= L'F') {
- *String = (CHAR16) (*String - L'A' + L'a');
+ } else if (Lower && (*String >= L'A') && (*String <= L'F')) {
+ *String = (CHAR16)(*String - L'A' + L'a');
}
}
@@ -216,11 +220,11 @@ HiiToLower ( **/
VOID
GenerateSubStr (
- IN CONST EFI_STRING String,
- IN UINTN BufferLen,
- IN VOID *Buffer,
- IN UINT8 Flag,
- OUT EFI_STRING *SubStr
+ IN CONST EFI_STRING String,
+ IN UINTN BufferLen,
+ IN VOID *Buffer,
+ IN UINT8 Flag,
+ OUT EFI_STRING *SubStr
)
{
UINTN Length;
@@ -249,63 +253,66 @@ GenerateSubStr ( StrCpyS (Str, Length, String);
StringHeader = Str + StrLen (String);
- TemString = (CHAR16 *) StringHeader;
+ TemString = (CHAR16 *)StringHeader;
switch (Flag) {
- case 1:
- //
- // Convert Buffer to Hex String in reverse order
- //
- TemBuffer = ((UINT8 *) Buffer);
- for (Index = 0; Index < BufferLen; Index ++, TemBuffer ++) {
- UnicodeValueToStringS (
- TemString,
- sizeof (CHAR16) * (Length - StrnLenS (Str, Length)),
- PREFIX_ZERO | RADIX_HEX,
- *TemBuffer,
- 2
- );
- TemString += StrnLenS (TemString, Length - StrnLenS (Str, Length));
- }
- break;
- case 2:
- //
- // Check buffer is enough
- //
- TemName = (CHAR16 *) Buffer;
- ASSERT ((BufferLen * 2 + 1) >= (StrLen (TemName) * 4 + 1));
- //
- // Convert Unicode String to Config String, e.g. "ABCD" => "0041004200430044"
- //
- for (; *TemName != L'\0'; TemName++) {
- UnicodeValueToStringS (
- TemString,
- sizeof (CHAR16) * (Length - StrnLenS (Str, Length)),
- PREFIX_ZERO | RADIX_HEX,
- *TemName,
- 4
- );
- TemString += StrnLenS (TemString, Length - StrnLenS (Str, Length));
- }
- break;
- case 3:
- //
- // Convert Buffer to Hex String
- //
- TemBuffer = ((UINT8 *) Buffer) + BufferLen - 1;
- for (Index = 0; Index < BufferLen; Index ++, TemBuffer --) {
- UnicodeValueToStringS (
- TemString,
- sizeof (CHAR16) * (Length - StrnLenS (Str, Length)),
- PREFIX_ZERO | RADIX_HEX,
- *TemBuffer,
- 2
- );
- TemString += StrnLenS (TemString, Length - StrnLenS (Str, Length));
- }
- break;
- default:
- break;
+ case 1:
+ //
+ // Convert Buffer to Hex String in reverse order
+ //
+ TemBuffer = ((UINT8 *)Buffer);
+ for (Index = 0; Index < BufferLen; Index++, TemBuffer++) {
+ UnicodeValueToStringS (
+ TemString,
+ sizeof (CHAR16) * (Length - StrnLenS (Str, Length)),
+ PREFIX_ZERO | RADIX_HEX,
+ *TemBuffer,
+ 2
+ );
+ TemString += StrnLenS (TemString, Length - StrnLenS (Str, Length));
+ }
+
+ break;
+ case 2:
+ //
+ // Check buffer is enough
+ //
+ TemName = (CHAR16 *)Buffer;
+ ASSERT ((BufferLen * 2 + 1) >= (StrLen (TemName) * 4 + 1));
+ //
+ // Convert Unicode String to Config String, e.g. "ABCD" => "0041004200430044"
+ //
+ for ( ; *TemName != L'\0'; TemName++) {
+ UnicodeValueToStringS (
+ TemString,
+ sizeof (CHAR16) * (Length - StrnLenS (Str, Length)),
+ PREFIX_ZERO | RADIX_HEX,
+ *TemName,
+ 4
+ );
+ TemString += StrnLenS (TemString, Length - StrnLenS (Str, Length));
+ }
+
+ break;
+ case 3:
+ //
+ // Convert Buffer to Hex String
+ //
+ TemBuffer = ((UINT8 *)Buffer) + BufferLen - 1;
+ for (Index = 0; Index < BufferLen; Index++, TemBuffer--) {
+ UnicodeValueToStringS (
+ TemString,
+ sizeof (CHAR16) * (Length - StrnLenS (Str, Length)),
+ PREFIX_ZERO | RADIX_HEX,
+ *TemBuffer,
+ 2
+ );
+ TemString += StrnLenS (TemString, Length - StrnLenS (Str, Length));
+ }
+
+ break;
+ default:
+ break;
}
//
@@ -317,7 +324,6 @@ GenerateSubStr ( *SubStr = Str;
}
-
/**
Retrieve the <ConfigBody> from String then output it.
@@ -335,15 +341,15 @@ GenerateSubStr ( **/
EFI_STATUS
OutputConfigBody (
- IN EFI_STRING String,
- OUT EFI_STRING *ConfigBody
+ IN EFI_STRING String,
+ OUT EFI_STRING *ConfigBody
)
{
EFI_STRING TmpPtr;
EFI_STRING Result;
UINTN Length;
- if (String == NULL || ConfigBody == NULL) {
+ if ((String == NULL) || (ConfigBody == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -372,13 +378,14 @@ OutputConfigBody ( if (Length == 0) {
return EFI_NOT_FOUND;
}
+
Result = AllocateCopyPool (Length * sizeof (CHAR16), String);
if (Result == NULL) {
return EFI_OUT_OF_RESOURCES;
}
*(Result + Length - 1) = 0;
- *ConfigBody = Result;
+ *ConfigBody = Result;
return EFI_SUCCESS;
}
@@ -400,35 +407,37 @@ OutputConfigBody ( **/
EFI_STATUS
AppendToMultiString (
- IN OUT EFI_STRING *MultiString,
- IN EFI_STRING AppendString
+ IN OUT EFI_STRING *MultiString,
+ IN EFI_STRING AppendString
)
{
- UINTN AppendStringSize;
- UINTN MultiStringSize;
- UINTN MaxLen;
+ UINTN AppendStringSize;
+ UINTN MultiStringSize;
+ UINTN MaxLen;
- if (MultiString == NULL || *MultiString == NULL || AppendString == NULL) {
+ if ((MultiString == NULL) || (*MultiString == NULL) || (AppendString == NULL)) {
return EFI_INVALID_PARAMETER;
}
AppendStringSize = StrSize (AppendString);
MultiStringSize = StrSize (*MultiString);
- MaxLen = MAX_STRING_LENGTH / sizeof (CHAR16);
+ MaxLen = MAX_STRING_LENGTH / sizeof (CHAR16);
//
// Enlarge the buffer each time when length exceeds MAX_STRING_LENGTH.
//
- if (MultiStringSize + AppendStringSize > MAX_STRING_LENGTH ||
- MultiStringSize > MAX_STRING_LENGTH) {
- *MultiString = (EFI_STRING) ReallocatePool (
- MultiStringSize,
- MultiStringSize + AppendStringSize,
- (VOID *) (*MultiString)
- );
+ if ((MultiStringSize + AppendStringSize > MAX_STRING_LENGTH) ||
+ (MultiStringSize > MAX_STRING_LENGTH))
+ {
+ *MultiString = (EFI_STRING)ReallocatePool (
+ MultiStringSize,
+ MultiStringSize + AppendStringSize,
+ (VOID *)(*MultiString)
+ );
MaxLen = (MultiStringSize + AppendStringSize) / sizeof (CHAR16);
ASSERT (*MultiString != NULL);
}
+
//
// Append the incoming string
//
@@ -437,7 +446,6 @@ AppendToMultiString ( return EFI_SUCCESS;
}
-
/**
Get the value of <Number> in <BlockConfig> format, i.e. the value of OFFSET
or WIDTH or VALUE.
@@ -459,21 +467,21 @@ AppendToMultiString ( **/
EFI_STATUS
GetValueOfNumber (
- IN EFI_STRING StringPtr,
- OUT UINT8 **Number,
- OUT UINTN *Len
+ IN EFI_STRING StringPtr,
+ OUT UINT8 **Number,
+ OUT UINTN *Len
)
{
- EFI_STRING TmpPtr;
- UINTN Length;
- EFI_STRING Str;
- UINT8 *Buf;
- EFI_STATUS Status;
- UINT8 DigitUint8;
- UINTN Index;
- CHAR16 TemStr[2];
-
- if (StringPtr == NULL || *StringPtr == L'\0' || Number == NULL || Len == NULL) {
+ EFI_STRING TmpPtr;
+ UINTN Length;
+ EFI_STRING Str;
+ UINT8 *Buf;
+ EFI_STATUS Status;
+ UINT8 DigitUint8;
+ UINTN Index;
+ CHAR16 TemStr[2];
+
+ if ((StringPtr == NULL) || (*StringPtr == L'\0') || (Number == NULL) || (Len == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -483,19 +491,21 @@ GetValueOfNumber ( while (*StringPtr != L'\0' && *StringPtr != L'&') {
StringPtr++;
}
+
*Len = StringPtr - TmpPtr;
Length = *Len + 1;
- Str = (EFI_STRING) AllocateZeroPool (Length * sizeof (CHAR16));
+ Str = (EFI_STRING)AllocateZeroPool (Length * sizeof (CHAR16));
if (Str == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Exit;
}
+
CopyMem (Str, TmpPtr, *Len * sizeof (CHAR16));
*(Str + *Len) = L'\0';
Length = (Length + 1) / 2;
- Buf = (UINT8 *) AllocateZeroPool (Length);
+ Buf = (UINT8 *)AllocateZeroPool (Length);
if (Buf == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Exit;
@@ -503,13 +513,13 @@ GetValueOfNumber ( Length = *Len;
ZeroMem (TemStr, sizeof (TemStr));
- for (Index = 0; Index < Length; Index ++) {
- TemStr[0] = Str[Length - Index - 1];
- DigitUint8 = (UINT8) StrHexToUint64 (TemStr);
+ for (Index = 0; Index < Length; Index++) {
+ TemStr[0] = Str[Length - Index - 1];
+ DigitUint8 = (UINT8)StrHexToUint64 (TemStr);
if ((Index & 1) == 0) {
- Buf [Index/2] = DigitUint8;
+ Buf[Index/2] = DigitUint8;
} else {
- Buf [Index/2] = (UINT8) ((DigitUint8 << 4) + Buf [Index/2]);
+ Buf[Index/2] = (UINT8)((DigitUint8 << 4) + Buf[Index/2]);
}
}
@@ -538,29 +548,30 @@ Exit: **/
EFI_STATUS
-FindSameBlockElement(
- IN EFI_STRING String,
- IN EFI_STRING BlockName,
- IN UINT8 *Buffer,
- OUT BOOLEAN *Found,
- IN UINTN BufferLen
+FindSameBlockElement (
+ IN EFI_STRING String,
+ IN EFI_STRING BlockName,
+ IN UINT8 *Buffer,
+ OUT BOOLEAN *Found,
+ IN UINTN BufferLen
)
{
- EFI_STRING BlockPtr;
- UINTN Length;
- UINT8 *TempBuffer;
- EFI_STATUS Status;
+ EFI_STRING BlockPtr;
+ UINTN Length;
+ UINT8 *TempBuffer;
+ EFI_STATUS Status;
TempBuffer = NULL;
- *Found = FALSE;
- BlockPtr = StrStr (String, BlockName);
+ *Found = FALSE;
+ BlockPtr = StrStr (String, BlockName);
while (BlockPtr != NULL) {
BlockPtr += StrLen (BlockName);
- Status = GetValueOfNumber (BlockPtr, &TempBuffer, &Length);
+ Status = GetValueOfNumber (BlockPtr, &TempBuffer, &Length);
if (EFI_ERROR (Status)) {
return Status;
}
+
ASSERT (TempBuffer != NULL);
if ((BufferLen == Length) && (0 == CompareMem (Buffer, TempBuffer, Length))) {
*Found = TRUE;
@@ -570,9 +581,10 @@ FindSameBlockElement( } else {
FreePool (TempBuffer);
TempBuffer = NULL;
- BlockPtr = StrStr (BlockPtr + 1, BlockName);
+ BlockPtr = StrStr (BlockPtr + 1, BlockName);
}
}
+
return EFI_SUCCESS;
}
@@ -599,19 +611,19 @@ CompareBlockElementDefault ( IN OUT EFI_STRING *ConfigAltResp,
IN EFI_STRING AltConfigHdr,
IN OUT BOOLEAN *ConfigAltRespChanged
-)
+ )
{
- EFI_STATUS Status;
- EFI_STRING BlockPtr;
- EFI_STRING BlockPtrStart;
- EFI_STRING StringPtr;
- EFI_STRING AppendString;
- EFI_STRING AltConfigHdrPtr;
- UINT8 *TempBuffer;
- UINTN OffsetLength;
- UINTN AppendSize;
- UINTN TotalSize;
- BOOLEAN FoundOffset;
+ EFI_STATUS Status;
+ EFI_STRING BlockPtr;
+ EFI_STRING BlockPtrStart;
+ EFI_STRING StringPtr;
+ EFI_STRING AppendString;
+ EFI_STRING AltConfigHdrPtr;
+ UINT8 *TempBuffer;
+ UINTN OffsetLength;
+ UINTN AppendSize;
+ UINTN TotalSize;
+ BOOLEAN FoundOffset;
AppendString = NULL;
TempBuffer = NULL;
@@ -632,12 +644,13 @@ CompareBlockElementDefault ( // Find the "&OFFSET=<Number>" block and get the value of the Number with AltConfigHdr in DefaultAltCfgResp.
//
BlockPtrStart = BlockPtr;
- BlockPtr += StrLen (L"&OFFSET=");
- Status = GetValueOfNumber (BlockPtr, &TempBuffer, &OffsetLength);
+ BlockPtr += StrLen (L"&OFFSET=");
+ Status = GetValueOfNumber (BlockPtr, &TempBuffer, &OffsetLength);
if (EFI_ERROR (Status)) {
Status = EFI_OUT_OF_RESOURCES;
goto Exit;
}
+
//
// To find the same "&OFFSET=<Number>" block in ConfigAltResp.
//
@@ -646,10 +659,12 @@ CompareBlockElementDefault ( FreePool (TempBuffer);
TempBuffer = NULL;
}
+
if (EFI_ERROR (Status)) {
Status = EFI_OUT_OF_RESOURCES;
goto Exit;
}
+
if (!FoundOffset) {
//
// Don't find the same "&OFFSET=<Number>" block in ConfigAltResp.
@@ -662,23 +677,25 @@ CompareBlockElementDefault ( } else {
AppendSize = StrSize (BlockPtrStart);
}
+
//
// Copy the <BlockConfig> to AppendString.
//
if (AppendString == NULL) {
- AppendString = (EFI_STRING) AllocateZeroPool (AppendSize + sizeof (CHAR16));
+ AppendString = (EFI_STRING)AllocateZeroPool (AppendSize + sizeof (CHAR16));
StrnCatS (AppendString, AppendSize / sizeof (CHAR16) + 1, BlockPtrStart, AppendSize / sizeof (CHAR16));
} else {
- TotalSize = StrSize (AppendString) + AppendSize + sizeof (CHAR16);
- AppendString = (EFI_STRING) ReallocatePool (
- StrSize (AppendString),
- TotalSize,
- AppendString
- );
+ TotalSize = StrSize (AppendString) + AppendSize + sizeof (CHAR16);
+ AppendString = (EFI_STRING)ReallocatePool (
+ StrSize (AppendString),
+ TotalSize,
+ AppendString
+ );
if (AppendString == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Exit;
}
+
StrnCatS (AppendString, TotalSize / sizeof (CHAR16), BlockPtrStart, AppendSize / sizeof (CHAR16));
}
} else {
@@ -693,16 +710,17 @@ CompareBlockElementDefault ( //
// Reallocate ConfigAltResp to copy the AppendString.
//
- TotalSize = StrSize (*ConfigAltResp) + StrSize (AppendString) + sizeof (CHAR16);
- *ConfigAltResp = (EFI_STRING) ReallocatePool (
- StrSize (*ConfigAltResp),
- TotalSize,
- *ConfigAltResp
- );
+ TotalSize = StrSize (*ConfigAltResp) + StrSize (AppendString) + sizeof (CHAR16);
+ *ConfigAltResp = (EFI_STRING)ReallocatePool (
+ StrSize (*ConfigAltResp),
+ TotalSize,
+ *ConfigAltResp
+ );
if (*ConfigAltResp == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Exit;
}
+
StrCatS (*ConfigAltResp, TotalSize / sizeof (CHAR16), AppendString);
*ConfigAltRespChanged = TRUE;
}
@@ -740,27 +758,27 @@ CompareNameElementDefault ( IN OUT EFI_STRING *ConfigAltResp,
IN EFI_STRING AltConfigHdr,
IN OUT BOOLEAN *ConfigAltRespChanged
-)
+ )
{
- EFI_STATUS Status;
- EFI_STRING NvConfigPtr;
- EFI_STRING NvConfigStart;
- EFI_STRING NvConfigValuePtr;
- EFI_STRING StringPtr;
- EFI_STRING NvConfigExist;
- EFI_STRING AppendString;
- CHAR16 TempChar;
- UINTN AppendSize;
- UINTN TotalSize;
-
- AppendString = NULL;
+ EFI_STATUS Status;
+ EFI_STRING NvConfigPtr;
+ EFI_STRING NvConfigStart;
+ EFI_STRING NvConfigValuePtr;
+ EFI_STRING StringPtr;
+ EFI_STRING NvConfigExist;
+ EFI_STRING AppendString;
+ CHAR16 TempChar;
+ UINTN AppendSize;
+ UINTN TotalSize;
+
+ AppendString = NULL;
NvConfigExist = NULL;
//
// Make NvConfigPtr point to the first <NvConfig> with AltConfigHdr in DefaultAltCfgResp.
//
NvConfigPtr = StrStr (DefaultAltCfgResp, AltConfigHdr);
ASSERT (NvConfigPtr != NULL);
- NvConfigPtr = StrStr (NvConfigPtr + StrLen(AltConfigHdr),L"&");
+ NvConfigPtr = StrStr (NvConfigPtr + StrLen (AltConfigHdr), L"&");
//
// Make StringPtr point to the first <NvConfig> with AltConfigHdr in ConfigAltResp.
//
@@ -774,10 +792,10 @@ CompareNameElementDefault ( // <NvConfig> ::= <Label>'='<String> | <Label>'='<Number>.
// Get the <Label> with AltConfigHdr in DefaultAltCfgResp.
//
- NvConfigStart = NvConfigPtr;
+ NvConfigStart = NvConfigPtr;
NvConfigValuePtr = StrStr (NvConfigPtr + 1, L"=");
ASSERT (NvConfigValuePtr != NULL);
- TempChar = *NvConfigValuePtr;
+ TempChar = *NvConfigValuePtr;
*NvConfigValuePtr = L'\0';
//
// Get the <Label> with AltConfigHdr in ConfigAltResp.
@@ -789,29 +807,31 @@ CompareNameElementDefault ( // Calculate the size of <NvConfig>.
//
*NvConfigValuePtr = TempChar;
- NvConfigPtr = StrStr (NvConfigPtr + 1, L"&");
+ NvConfigPtr = StrStr (NvConfigPtr + 1, L"&");
if (NvConfigPtr != NULL) {
AppendSize = (NvConfigPtr - NvConfigStart) * sizeof (CHAR16);
} else {
AppendSize = StrSize (NvConfigStart);
}
+
//
// Copy the <NvConfig> to AppendString.
//
if (AppendString == NULL) {
- AppendString = (EFI_STRING) AllocateZeroPool (AppendSize + sizeof (CHAR16));
+ AppendString = (EFI_STRING)AllocateZeroPool (AppendSize + sizeof (CHAR16));
StrnCatS (AppendString, AppendSize / sizeof (CHAR16) + 1, NvConfigStart, AppendSize / sizeof (CHAR16));
} else {
- TotalSize = StrSize (AppendString) + AppendSize + sizeof (CHAR16);
- AppendString = (EFI_STRING) ReallocatePool (
- StrSize (AppendString),
- TotalSize,
- AppendString
- );
+ TotalSize = StrSize (AppendString) + AppendSize + sizeof (CHAR16);
+ AppendString = (EFI_STRING)ReallocatePool (
+ StrSize (AppendString),
+ TotalSize,
+ AppendString
+ );
if (AppendString == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Exit;
}
+
StrnCatS (AppendString, TotalSize / sizeof (CHAR16), NvConfigStart, AppendSize / sizeof (CHAR16));
}
} else {
@@ -819,32 +839,36 @@ CompareNameElementDefault ( // To find next <Label> in DefaultAltCfgResp.
//
*NvConfigValuePtr = TempChar;
- NvConfigPtr = StrStr (NvConfigPtr + 1, L"&");
+ NvConfigPtr = StrStr (NvConfigPtr + 1, L"&");
}
}
+
if (AppendString != NULL) {
//
// Reallocate ConfigAltResp to copy the AppendString.
//
- TotalSize = StrSize (*ConfigAltResp) + StrSize (AppendString) + sizeof (CHAR16);
- *ConfigAltResp = (EFI_STRING) ReallocatePool (
- StrSize (*ConfigAltResp),
- StrSize (*ConfigAltResp) + StrSize (AppendString) + sizeof (CHAR16),
- *ConfigAltResp
- );
+ TotalSize = StrSize (*ConfigAltResp) + StrSize (AppendString) + sizeof (CHAR16);
+ *ConfigAltResp = (EFI_STRING)ReallocatePool (
+ StrSize (*ConfigAltResp),
+ StrSize (*ConfigAltResp) + StrSize (AppendString) + sizeof (CHAR16),
+ *ConfigAltResp
+ );
if (*ConfigAltResp == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Exit;
}
+
StrCatS (*ConfigAltResp, TotalSize / sizeof (CHAR16), AppendString);
*ConfigAltRespChanged = TRUE;
}
+
Status = EFI_SUCCESS;
Exit:
if (AppendString != NULL) {
FreePool (AppendString);
}
+
return Status;
}
@@ -872,20 +896,20 @@ CompareAndMergeDefaultString ( IN EFI_STRING AltConfigHdr
)
{
- EFI_STATUS Status;
- EFI_STRING AltCfgRespBackup;
- EFI_STRING AltConfigHdrPtr;
- EFI_STRING AltConfigHdrPtrNext;
- EFI_STRING ConfigAltResp;
- EFI_STRING StringPtr;
- EFI_STRING StringPtrNext;
- EFI_STRING BlockPtr;
- UINTN ReallocateSize;
- CHAR16 TempChar;
- CHAR16 TempCharA;
- BOOLEAN ConfigAltRespChanged;
-
- Status = EFI_OUT_OF_RESOURCES;
+ EFI_STATUS Status;
+ EFI_STRING AltCfgRespBackup;
+ EFI_STRING AltConfigHdrPtr;
+ EFI_STRING AltConfigHdrPtrNext;
+ EFI_STRING ConfigAltResp;
+ EFI_STRING StringPtr;
+ EFI_STRING StringPtrNext;
+ EFI_STRING BlockPtr;
+ UINTN ReallocateSize;
+ CHAR16 TempChar;
+ CHAR16 TempCharA;
+ BOOLEAN ConfigAltRespChanged;
+
+ Status = EFI_OUT_OF_RESOURCES;
BlockPtr = NULL;
AltConfigHdrPtrNext = NULL;
StringPtrNext = NULL;
@@ -896,15 +920,16 @@ CompareAndMergeDefaultString ( ConfigAltRespChanged = FALSE;
//
- //To find the <AltResp> with AltConfigHdr in DefaultAltCfgResp, ignore other <AltResp> which follow it.
+ // To find the <AltResp> with AltConfigHdr in DefaultAltCfgResp, ignore other <AltResp> which follow it.
//
AltConfigHdrPtr = StrStr (DefaultAltCfgResp, AltConfigHdr);
ASSERT (AltConfigHdrPtr != NULL);
AltConfigHdrPtrNext = StrStr (AltConfigHdrPtr + 1, L"&GUID");
if (AltConfigHdrPtrNext != NULL) {
- TempChar = *AltConfigHdrPtrNext;
+ TempChar = *AltConfigHdrPtrNext;
*AltConfigHdrPtrNext = L'\0';
}
+
//
// To find the <AltResp> with AltConfigHdr in AltCfgResp, ignore other <AltResp> which follow it.
//
@@ -912,9 +937,10 @@ CompareAndMergeDefaultString ( ASSERT (StringPtr != NULL);
StringPtrNext = StrStr (StringPtr + 1, L"&GUID");
if (StringPtrNext != NULL) {
- TempCharA = *StringPtrNext;
+ TempCharA = *StringPtrNext;
*StringPtrNext = L'\0';
}
+
//
// Copy the content of <ConfigAltResp> which contain current AltConfigHdr in AltCfgResp.
//
@@ -922,6 +948,7 @@ CompareAndMergeDefaultString ( if (ConfigAltResp == NULL) {
goto Exit;
}
+
//
// To find the <ConfigBody> with AltConfigHdr in DefaultAltCfgResp.
//
@@ -933,7 +960,7 @@ CompareAndMergeDefaultString ( // The ConfigAltResp which may contain the new <BlockConfig> get from DefaultAltCfgResp.
//
Status = CompareBlockElementDefault (DefaultAltCfgResp, &ConfigAltResp, AltConfigHdr, &ConfigAltRespChanged);
- if (EFI_ERROR(Status)) {
+ if (EFI_ERROR (Status)) {
goto Exit;
}
} else {
@@ -943,10 +970,11 @@ CompareAndMergeDefaultString ( // The ConfigAltResp which may contain the new <NvConfig> get from DefaultAltCfgResp.
//
Status = CompareNameElementDefault (DefaultAltCfgResp, &ConfigAltResp, AltConfigHdr, &ConfigAltRespChanged);
- if (EFI_ERROR(Status)) {
+ if (EFI_ERROR (Status)) {
goto Exit;
}
}
+
//
// Restore the AltCfgResp.
//
@@ -961,6 +989,7 @@ CompareAndMergeDefaultString ( Status = EFI_SUCCESS;
goto Exit;
}
+
//
// ConfigAltResp has been changed, need to update the content in AltCfgResp.
//
@@ -970,7 +999,7 @@ CompareAndMergeDefaultString ( ReallocateSize = StrSize (ConfigAltResp) + sizeof (CHAR16);
}
- AltCfgRespBackup = (EFI_STRING) AllocateZeroPool (ReallocateSize);
+ AltCfgRespBackup = (EFI_STRING)AllocateZeroPool (ReallocateSize);
if (AltCfgRespBackup == NULL) {
goto Exit;
}
@@ -987,14 +1016,15 @@ CompareAndMergeDefaultString ( Exit:
if (ConfigAltResp != NULL) {
- FreePool(ConfigAltResp);
+ FreePool (ConfigAltResp);
}
+
//
// Restore the DefaultAltCfgResp.
//
if ( AltConfigHdrPtrNext != NULL) {
*AltConfigHdrPtrNext = TempChar;
- AltConfigHdrPtrNext = NULL;
+ AltConfigHdrPtrNext = NULL;
}
return Status;
@@ -1022,15 +1052,15 @@ MergeDefaultString ( IN EFI_STRING DefaultAltCfgResp
)
{
- EFI_STRING StringPtrDefault;
- EFI_STRING StringPtrEnd;
- CHAR16 TempChar;
- EFI_STRING StringPtr;
- EFI_STRING AltConfigHdr;
- UINTN HeaderLength;
- UINTN SizeAltCfgResp;
- UINTN MaxLen;
- UINTN TotalSize;
+ EFI_STRING StringPtrDefault;
+ EFI_STRING StringPtrEnd;
+ CHAR16 TempChar;
+ EFI_STRING StringPtr;
+ EFI_STRING AltConfigHdr;
+ UINTN HeaderLength;
+ UINTN SizeAltCfgResp;
+ UINTN MaxLen;
+ UINTN TotalSize;
if (*AltCfgResp == NULL) {
return EFI_INVALID_PARAMETER;
@@ -1039,8 +1069,8 @@ MergeDefaultString ( //
// Get the request ConfigHdr
//
- SizeAltCfgResp = 0;
- StringPtr = *AltCfgResp;
+ SizeAltCfgResp = 0;
+ StringPtr = *AltCfgResp;
//
// Find <ConfigHdr> GUID=...&NAME=...&PATH=...
@@ -1048,30 +1078,36 @@ MergeDefaultString ( if (StrnCmp (StringPtr, L"GUID=", StrLen (L"GUID=")) != 0) {
return EFI_INVALID_PARAMETER;
}
+
while (*StringPtr != L'\0' && StrnCmp (StringPtr, L"&NAME=", StrLen (L"&NAME=")) != 0) {
StringPtr++;
}
+
while (*StringPtr != L'\0' && StrnCmp (StringPtr, L"&PATH=", StrLen (L"&PATH=")) != 0) {
StringPtr++;
}
+
if (*StringPtr == L'\0') {
return EFI_INVALID_PARAMETER;
}
+
StringPtr += StrLen (L"&PATH=");
while (*StringPtr != L'\0' && *StringPtr != L'&') {
- StringPtr ++;
+ StringPtr++;
}
+
HeaderLength = StringPtr - *AltCfgResp;
//
// Construct AltConfigHdr string "&<ConfigHdr>&ALTCFG=XXXX\0"
// |1| StrLen (ConfigHdr) | 8 | 4 | 1 |
//
- MaxLen = 1 + HeaderLength + 8 + 4 + 1;
+ MaxLen = 1 + HeaderLength + 8 + 4 + 1;
AltConfigHdr = AllocateZeroPool (MaxLen * sizeof (CHAR16));
if (AltConfigHdr == NULL) {
return EFI_OUT_OF_RESOURCES;
}
+
StrCpyS (AltConfigHdr, MaxLen, L"&");
StrnCatS (AltConfigHdr, MaxLen, *AltCfgResp, HeaderLength);
StrCatS (AltConfigHdr, MaxLen, L"&ALTCFG=");
@@ -1095,31 +1131,33 @@ MergeDefaultString ( //
// No more default string is found.
//
- TotalSize = SizeAltCfgResp + StrSize (StringPtrDefault);
- *AltCfgResp = (EFI_STRING) ReallocatePool (
- SizeAltCfgResp,
- TotalSize,
- (VOID *) (*AltCfgResp)
- );
+ TotalSize = SizeAltCfgResp + StrSize (StringPtrDefault);
+ *AltCfgResp = (EFI_STRING)ReallocatePool (
+ SizeAltCfgResp,
+ TotalSize,
+ (VOID *)(*AltCfgResp)
+ );
if (*AltCfgResp == NULL) {
FreePool (AltConfigHdr);
return EFI_OUT_OF_RESOURCES;
}
+
StrCatS (*AltCfgResp, TotalSize / sizeof (CHAR16), StringPtrDefault);
break;
} else {
- TempChar = *StringPtrEnd;
+ TempChar = *StringPtrEnd;
*StringPtrEnd = L'\0';
- TotalSize = SizeAltCfgResp + StrSize (StringPtrDefault);
- *AltCfgResp = (EFI_STRING) ReallocatePool (
- SizeAltCfgResp,
- TotalSize,
- (VOID *) (*AltCfgResp)
- );
+ TotalSize = SizeAltCfgResp + StrSize (StringPtrDefault);
+ *AltCfgResp = (EFI_STRING)ReallocatePool (
+ SizeAltCfgResp,
+ TotalSize,
+ (VOID *)(*AltCfgResp)
+ );
if (*AltCfgResp == NULL) {
FreePool (AltConfigHdr);
return EFI_OUT_OF_RESOURCES;
}
+
StrCatS (*AltCfgResp, TotalSize / sizeof (CHAR16), StringPtrDefault);
*StringPtrEnd = TempChar;
}
@@ -1136,7 +1174,7 @@ MergeDefaultString ( // Find next AltCfg String
//
*(AltConfigHdr + HeaderLength) = L'\0';
- StringPtrDefault = StrStr (StringPtrDefault + 1, AltConfigHdr);
+ StringPtrDefault = StrStr (StringPtrDefault + 1, AltConfigHdr);
}
FreePool (AltConfigHdr);
@@ -1152,15 +1190,15 @@ MergeDefaultString ( **/
VOID
InsertDefaultValue (
- IN IFR_BLOCK_DATA *BlockData,
- IN IFR_DEFAULT_DATA *DefaultValueData
+ IN IFR_BLOCK_DATA *BlockData,
+ IN IFR_DEFAULT_DATA *DefaultValueData
)
{
- LIST_ENTRY *Link;
- IFR_DEFAULT_DATA *DefaultValueArray;
- LIST_ENTRY *DefaultLink;
+ LIST_ENTRY *Link;
+ IFR_DEFAULT_DATA *DefaultValueArray;
+ LIST_ENTRY *DefaultLink;
- DefaultLink = &BlockData->DefaultValueEntry;
+ DefaultLink = &BlockData->DefaultValueEntry;
for (Link = DefaultLink->ForwardLink; Link != DefaultLink; Link = Link->ForwardLink) {
DefaultValueArray = BASE_CR (Link, IFR_DEFAULT_DATA, Entry);
@@ -1169,14 +1207,15 @@ InsertDefaultValue ( // DEFAULT_VALUE_FROM_OPCODE has high priority, DEFAULT_VALUE_FROM_DEFAULT has low priority.
// When default types are DEFAULT_VALUE_FROM_OTHER_DEFAULT, the default value can be overrode.
//
- if ((DefaultValueData->Type > DefaultValueArray->Type) || (DefaultValueData->Type == DefaultValueArray->Type && DefaultValueData->Type == DefaultValueFromOtherDefault)) {
+ if ((DefaultValueData->Type > DefaultValueArray->Type) || ((DefaultValueData->Type == DefaultValueArray->Type) && (DefaultValueData->Type == DefaultValueFromOtherDefault))) {
//
// Update the default value array in BlockData.
//
CopyMem (&DefaultValueArray->Value, &DefaultValueData->Value, sizeof (EFI_IFR_TYPE_VALUE));
- DefaultValueArray->Type = DefaultValueData->Type;
+ DefaultValueArray->Type = DefaultValueData->Type;
DefaultValueArray->Cleaned = DefaultValueData->Cleaned;
}
+
return;
}
}
@@ -1199,13 +1238,13 @@ InsertDefaultValue ( **/
VOID
InsertBlockData (
- IN LIST_ENTRY *BlockLink,
- IN IFR_BLOCK_DATA **BlockData
+ IN LIST_ENTRY *BlockLink,
+ IN IFR_BLOCK_DATA **BlockData
)
{
- LIST_ENTRY *Link;
- IFR_BLOCK_DATA *BlockArray;
- IFR_BLOCK_DATA *BlockSingleData;
+ LIST_ENTRY *Link;
+ IFR_BLOCK_DATA *BlockArray;
+ IFR_BLOCK_DATA *BlockSingleData;
BlockSingleData = *BlockData;
@@ -1220,7 +1259,7 @@ InsertBlockData ( for (Link = BlockLink->ForwardLink; Link != BlockLink; Link = Link->ForwardLink) {
BlockArray = BASE_CR (Link, IFR_BLOCK_DATA, Entry);
if (BlockArray->Offset == BlockSingleData->Offset) {
- if ((BlockArray->Width > BlockSingleData->Width) || (BlockSingleData->IsBitVar && BlockArray->Width == BlockSingleData->Width)) {
+ if ((BlockArray->Width > BlockSingleData->Width) || (BlockSingleData->IsBitVar && (BlockArray->Width == BlockSingleData->Width))) {
//
// Insert this block data in the front of block array
//
@@ -1228,7 +1267,7 @@ InsertBlockData ( return;
}
- if ((!BlockSingleData->IsBitVar) && BlockArray->Width == BlockSingleData->Width) {
+ if ((!BlockSingleData->IsBitVar) && (BlockArray->Width == BlockSingleData->Width)) {
//
// The same block array has been added.
//
@@ -1236,6 +1275,7 @@ InsertBlockData ( FreePool (BlockSingleData);
*BlockData = BlockArray;
}
+
return;
}
} else if (BlockArray->Offset > BlockSingleData->Offset) {
@@ -1273,7 +1313,7 @@ InsertBlockData ( **/
CHAR8 *
GetSupportedLanguages (
- IN EFI_HII_HANDLE HiiHandle
+ IN EFI_HII_HANDLE HiiHandle
)
{
EFI_STATUS Status;
@@ -1287,7 +1327,7 @@ GetSupportedLanguages ( // Retrieve the size required for the supported languages buffer.
//
LanguageSize = 0;
- Status = mPrivate.HiiString.GetLanguages (&mPrivate.HiiString, HiiHandle, &TempSupportedLanguages, &LanguageSize);
+ Status = mPrivate.HiiString.GetLanguages (&mPrivate.HiiString, HiiHandle, &TempSupportedLanguages, &LanguageSize);
//
// If GetLanguages() returns EFI_SUCCESS for a zero size,
@@ -1383,7 +1423,7 @@ InternalGetString ( //
// Get the current platform language setting
//
- GetEfiGlobalVariable2 (L"PlatformLang", (VOID**)&PlatformLanguage, NULL);
+ GetEfiGlobalVariable2 (L"PlatformLang", (VOID **)&PlatformLanguage, NULL);
//
// Get the best matching language from SupportedLanguages
@@ -1404,15 +1444,15 @@ InternalGetString ( // Retrieve the size of the string in the string package for the BestLanguage
//
StringSize = 0;
- Status = mPrivate.HiiString.GetString (
- &mPrivate.HiiString,
- BestLanguage,
- HiiHandle,
- StringId,
- &TempString,
- &StringSize,
- NULL
- );
+ Status = mPrivate.HiiString.GetString (
+ &mPrivate.HiiString,
+ BestLanguage,
+ HiiHandle,
+ StringId,
+ &TempString,
+ &StringSize,
+ NULL
+ );
//
// If GetString() returns EFI_SUCCESS for a zero size,
// then there are no supported languages registered for HiiHandle. If GetString()
@@ -1435,14 +1475,14 @@ InternalGetString ( // Retrieve the string from the string package
//
Status = mPrivate.HiiString.GetString (
- &mPrivate.HiiString,
- BestLanguage,
- HiiHandle,
- StringId,
- String,
- &StringSize,
- NULL
- );
+ &mPrivate.HiiString,
+ BestLanguage,
+ HiiHandle,
+ StringId,
+ String,
+ &StringSize,
+ NULL
+ );
if (EFI_ERROR (Status)) {
//
// Free the buffer and return NULL if the supported languages can not be retrieved.
@@ -1458,9 +1498,11 @@ Error: if (SupportedLanguages != NULL) {
FreePool (SupportedLanguages);
}
+
if (PlatformLanguage != NULL) {
FreePool (PlatformLanguage);
}
+
if (BestLanguage != NULL) {
FreePool (BestLanguage);
}
@@ -1492,9 +1534,9 @@ BlockArrayCheck ( IN EFI_HII_HANDLE HiiHandle
)
{
- LIST_ENTRY *Link;
- IFR_BLOCK_DATA *BlockData;
- EFI_STRING Name;
+ LIST_ENTRY *Link;
+ IFR_BLOCK_DATA *BlockData;
+ EFI_STRING Name;
//
// No Request Block array, all vars are got.
@@ -1517,6 +1559,7 @@ BlockArrayCheck ( FreePool (Name);
return TRUE;
}
+
FreePool (Name);
} else {
if ((VarOffset >= BlockData->Offset) && ((VarOffset + VarWidth) <= (BlockData->Offset + BlockData->Width))) {
@@ -1538,16 +1581,16 @@ BlockArrayCheck ( **/
EFI_STATUS
GetFormPackageData (
- IN HII_DATABASE_RECORD *DataBaseRecord,
- IN OUT UINT8 **HiiFormPackage,
- OUT UINTN *PackageSize
+ IN HII_DATABASE_RECORD *DataBaseRecord,
+ IN OUT UINT8 **HiiFormPackage,
+ OUT UINTN *PackageSize
)
{
- EFI_STATUS Status;
- UINTN Size;
- UINTN ResultSize;
+ EFI_STATUS Status;
+ UINTN Size;
+ UINTN ResultSize;
- if (DataBaseRecord == NULL || HiiFormPackage == NULL || PackageSize == NULL) {
+ if ((DataBaseRecord == NULL) || (HiiFormPackage == NULL) || (PackageSize == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -1564,7 +1607,7 @@ GetFormPackageData ( Size,
HiiFormPackage,
&ResultSize
- );
+ );
if (EFI_ERROR (Status)) {
return Status;
}
@@ -1578,17 +1621,17 @@ GetFormPackageData ( //
// Get HiiFormPackage by HiiHandle
//
- Size = ResultSize;
- ResultSize = 0;
- Status = ExportFormPackages (
- &mPrivate,
- DataBaseRecord->Handle,
- DataBaseRecord->PackageList,
- 0,
- Size,
- *HiiFormPackage,
- &ResultSize
- );
+ Size = ResultSize;
+ ResultSize = 0;
+ Status = ExportFormPackages (
+ &mPrivate,
+ DataBaseRecord->Handle,
+ DataBaseRecord->PackageList,
+ 0,
+ Size,
+ *HiiFormPackage,
+ &ResultSize
+ );
if (EFI_ERROR (Status)) {
FreePool (*HiiFormPackage);
}
@@ -1598,7 +1641,6 @@ GetFormPackageData ( return Status;
}
-
/**
This function parses Form Package to get the efi varstore info according to the request ConfigHdr.
@@ -1610,63 +1652,63 @@ GetFormPackageData ( **/
EFI_STATUS
GetVarStoreType (
- IN HII_DATABASE_RECORD *DataBaseRecord,
- IN EFI_STRING ConfigHdr,
- OUT BOOLEAN *IsEfiVarstore,
- OUT EFI_IFR_VARSTORE_EFI **EfiVarStore
+ IN HII_DATABASE_RECORD *DataBaseRecord,
+ IN EFI_STRING ConfigHdr,
+ OUT BOOLEAN *IsEfiVarstore,
+ OUT EFI_IFR_VARSTORE_EFI **EfiVarStore
)
{
- EFI_STATUS Status;
- UINTN IfrOffset;
- UINTN PackageOffset;
- EFI_IFR_OP_HEADER *IfrOpHdr;
- CHAR16 *VarStoreName;
- UINTN NameSize;
- EFI_STRING GuidStr;
- EFI_STRING NameStr;
- EFI_STRING TempStr;
- UINTN LengthString;
- UINT8 *HiiFormPackage;
- UINTN PackageSize;
- EFI_IFR_VARSTORE_EFI *IfrEfiVarStore;
- EFI_HII_PACKAGE_HEADER *PackageHeader;
+ EFI_STATUS Status;
+ UINTN IfrOffset;
+ UINTN PackageOffset;
+ EFI_IFR_OP_HEADER *IfrOpHdr;
+ CHAR16 *VarStoreName;
+ UINTN NameSize;
+ EFI_STRING GuidStr;
+ EFI_STRING NameStr;
+ EFI_STRING TempStr;
+ UINTN LengthString;
+ UINT8 *HiiFormPackage;
+ UINTN PackageSize;
+ EFI_IFR_VARSTORE_EFI *IfrEfiVarStore;
+ EFI_HII_PACKAGE_HEADER *PackageHeader;
HiiFormPackage = NULL;
- LengthString = 0;
- Status = EFI_SUCCESS;
- GuidStr = NULL;
- NameStr = NULL;
- TempStr = NULL;
- *IsEfiVarstore = FALSE;
+ LengthString = 0;
+ Status = EFI_SUCCESS;
+ GuidStr = NULL;
+ NameStr = NULL;
+ TempStr = NULL;
+ *IsEfiVarstore = FALSE;
- Status = GetFormPackageData(DataBaseRecord, &HiiFormPackage, &PackageSize);
+ Status = GetFormPackageData (DataBaseRecord, &HiiFormPackage, &PackageSize);
if (EFI_ERROR (Status)) {
return Status;
}
IfrOffset = sizeof (EFI_HII_PACKAGE_HEADER);
PackageOffset = IfrOffset;
- PackageHeader = (EFI_HII_PACKAGE_HEADER *) HiiFormPackage;
+ PackageHeader = (EFI_HII_PACKAGE_HEADER *)HiiFormPackage;
while (IfrOffset < PackageSize) {
//
// More than one form packages exist.
//
if (PackageOffset >= PackageHeader->Length) {
- //
- // Process the new form package.
- //
- PackageOffset = sizeof (EFI_HII_PACKAGE_HEADER);
- IfrOffset += PackageOffset;
- PackageHeader = (EFI_HII_PACKAGE_HEADER *) (HiiFormPackage + IfrOffset);
+ //
+ // Process the new form package.
+ //
+ PackageOffset = sizeof (EFI_HII_PACKAGE_HEADER);
+ IfrOffset += PackageOffset;
+ PackageHeader = (EFI_HII_PACKAGE_HEADER *)(HiiFormPackage + IfrOffset);
}
- IfrOpHdr = (EFI_IFR_OP_HEADER *) (HiiFormPackage + IfrOffset);
- IfrOffset += IfrOpHdr->Length;
+ IfrOpHdr = (EFI_IFR_OP_HEADER *)(HiiFormPackage + IfrOffset);
+ IfrOffset += IfrOpHdr->Length;
PackageOffset += IfrOpHdr->Length;
if (IfrOpHdr->OpCode == EFI_IFR_VARSTORE_EFI_OP ) {
- IfrEfiVarStore = (EFI_IFR_VARSTORE_EFI *) IfrOpHdr;
+ IfrEfiVarStore = (EFI_IFR_VARSTORE_EFI *)IfrOpHdr;
//
// If the length is small than the structure, this is from old efi
// varstore definition. Old efi varstore get config directly from
@@ -1676,19 +1718,20 @@ GetVarStoreType ( continue;
}
- NameSize = AsciiStrSize ((CHAR8 *)IfrEfiVarStore->Name);
+ NameSize = AsciiStrSize ((CHAR8 *)IfrEfiVarStore->Name);
VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));
if (VarStoreName == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Done;
}
- AsciiStrToUnicodeStrS ((CHAR8 *) IfrEfiVarStore->Name, VarStoreName, NameSize);
- GenerateSubStr (L"GUID=", sizeof (EFI_GUID), (VOID *) &IfrEfiVarStore->Guid, 1, &GuidStr);
- GenerateSubStr (L"NAME=", StrLen (VarStoreName) * sizeof (CHAR16), (VOID *) VarStoreName, 2, &NameStr);
+ AsciiStrToUnicodeStrS ((CHAR8 *)IfrEfiVarStore->Name, VarStoreName, NameSize);
+
+ GenerateSubStr (L"GUID=", sizeof (EFI_GUID), (VOID *)&IfrEfiVarStore->Guid, 1, &GuidStr);
+ GenerateSubStr (L"NAME=", StrLen (VarStoreName) * sizeof (CHAR16), (VOID *)VarStoreName, 2, &NameStr);
LengthString = StrLen (GuidStr);
LengthString = LengthString + StrLen (NameStr) + 1;
- TempStr = AllocateZeroPool (LengthString * sizeof (CHAR16));
+ TempStr = AllocateZeroPool (LengthString * sizeof (CHAR16));
if (TempStr == NULL) {
FreePool (GuidStr);
FreePool (NameStr);
@@ -1696,10 +1739,11 @@ GetVarStoreType ( Status = EFI_OUT_OF_RESOURCES;
goto Done;
}
+
StrCpyS (TempStr, LengthString, GuidStr);
StrCatS (TempStr, LengthString, NameStr);
- if (ConfigHdr == NULL || StrnCmp (ConfigHdr, TempStr, StrLen (TempStr)) == 0) {
- *EfiVarStore = (EFI_IFR_VARSTORE_EFI *) AllocateZeroPool (IfrOpHdr->Length);
+ if ((ConfigHdr == NULL) || (StrnCmp (ConfigHdr, TempStr, StrLen (TempStr)) == 0)) {
+ *EfiVarStore = (EFI_IFR_VARSTORE_EFI *)AllocateZeroPool (IfrOpHdr->Length);
if (*EfiVarStore == NULL) {
FreePool (VarStoreName);
FreePool (GuidStr);
@@ -1708,6 +1752,7 @@ GetVarStoreType ( Status = EFI_OUT_OF_RESOURCES;
goto Done;
}
+
*IsEfiVarstore = TRUE;
CopyMem (*EfiVarStore, IfrEfiVarStore, IfrOpHdr->Length);
}
@@ -1728,6 +1773,7 @@ GetVarStoreType ( }
}
}
+
Done:
if (HiiFormPackage != NULL) {
FreePool (HiiFormPackage);
@@ -1749,10 +1795,10 @@ Done: **/
BOOLEAN
GetElementsFromRequest (
- IN EFI_STRING ConfigRequest
+ IN EFI_STRING ConfigRequest
)
{
- EFI_STRING TmpRequest;
+ EFI_STRING TmpRequest;
TmpRequest = StrStr (ConfigRequest, L"PATH=");
ASSERT (TmpRequest != NULL);
@@ -1777,37 +1823,38 @@ GetElementsFromRequest ( **/
BOOLEAN
IsThisVarstore (
- IN EFI_GUID *VarstoreGuid,
- IN CHAR16 *Name,
- IN CHAR16 *ConfigHdr
+ IN EFI_GUID *VarstoreGuid,
+ IN CHAR16 *Name,
+ IN CHAR16 *ConfigHdr
)
{
- EFI_STRING GuidStr;
- EFI_STRING NameStr;
- EFI_STRING TempStr;
- UINTN LengthString;
- BOOLEAN RetVal;
+ EFI_STRING GuidStr;
+ EFI_STRING NameStr;
+ EFI_STRING TempStr;
+ UINTN LengthString;
+ BOOLEAN RetVal;
- RetVal = FALSE;
- GuidStr = NULL;
- TempStr = NULL;
+ RetVal = FALSE;
+ GuidStr = NULL;
+ TempStr = NULL;
//
// If ConfigHdr has name field and varstore not has name, return FALSE.
//
- if (Name == NULL && ConfigHdr != NULL && StrStr (ConfigHdr, L"NAME=&") == NULL) {
+ if ((Name == NULL) && (ConfigHdr != NULL) && (StrStr (ConfigHdr, L"NAME=&") == NULL)) {
return FALSE;
}
GenerateSubStr (L"GUID=", sizeof (EFI_GUID), (VOID *)VarstoreGuid, 1, &GuidStr);
if (Name != NULL) {
- GenerateSubStr (L"NAME=", StrLen (Name) * sizeof (CHAR16), (VOID *) Name, 2, &NameStr);
+ GenerateSubStr (L"NAME=", StrLen (Name) * sizeof (CHAR16), (VOID *)Name, 2, &NameStr);
} else {
GenerateSubStr (L"NAME=", 0, NULL, 2, &NameStr);
}
+
LengthString = StrLen (GuidStr);
LengthString = LengthString + StrLen (NameStr) + 1;
- TempStr = AllocateZeroPool (LengthString * sizeof (CHAR16));
+ TempStr = AllocateZeroPool (LengthString * sizeof (CHAR16));
if (TempStr == NULL) {
goto Done;
}
@@ -1815,7 +1862,7 @@ IsThisVarstore ( StrCpyS (TempStr, LengthString, GuidStr);
StrCatS (TempStr, LengthString, NameStr);
- if (ConfigHdr == NULL || StrnCmp (ConfigHdr, TempStr, StrLen (TempStr)) == 0) {
+ if ((ConfigHdr == NULL) || (StrnCmp (ConfigHdr, TempStr, StrLen (TempStr)) == 0)) {
RetVal = TRUE;
}
@@ -1846,114 +1893,119 @@ Done: **/
BOOLEAN
IsThisPackageList (
- IN HII_DATABASE_RECORD *DataBaseRecord,
- IN EFI_STRING ConfigHdr
+ IN HII_DATABASE_RECORD *DataBaseRecord,
+ IN EFI_STRING ConfigHdr
)
{
- EFI_STATUS Status;
- UINTN IfrOffset;
- UINTN PackageOffset;
- EFI_IFR_OP_HEADER *IfrOpHdr;
- CHAR16 *VarStoreName;
- UINTN NameSize;
- UINT8 *HiiFormPackage;
- UINTN PackageSize;
- EFI_IFR_VARSTORE_EFI *IfrEfiVarStore;
- EFI_HII_PACKAGE_HEADER *PackageHeader;
- EFI_IFR_VARSTORE *IfrVarStore;
- EFI_IFR_VARSTORE_NAME_VALUE *IfrNameValueVarStore;
- BOOLEAN FindVarstore;
-
- HiiFormPackage = NULL;
- VarStoreName = NULL;
- Status = EFI_SUCCESS;
- FindVarstore = FALSE;
+ EFI_STATUS Status;
+ UINTN IfrOffset;
+ UINTN PackageOffset;
+ EFI_IFR_OP_HEADER *IfrOpHdr;
+ CHAR16 *VarStoreName;
+ UINTN NameSize;
+ UINT8 *HiiFormPackage;
+ UINTN PackageSize;
+ EFI_IFR_VARSTORE_EFI *IfrEfiVarStore;
+ EFI_HII_PACKAGE_HEADER *PackageHeader;
+ EFI_IFR_VARSTORE *IfrVarStore;
+ EFI_IFR_VARSTORE_NAME_VALUE *IfrNameValueVarStore;
+ BOOLEAN FindVarstore;
- Status = GetFormPackageData(DataBaseRecord, &HiiFormPackage, &PackageSize);
+ HiiFormPackage = NULL;
+ VarStoreName = NULL;
+ Status = EFI_SUCCESS;
+ FindVarstore = FALSE;
+
+ Status = GetFormPackageData (DataBaseRecord, &HiiFormPackage, &PackageSize);
if (EFI_ERROR (Status)) {
return FALSE;
}
IfrOffset = sizeof (EFI_HII_PACKAGE_HEADER);
PackageOffset = IfrOffset;
- PackageHeader = (EFI_HII_PACKAGE_HEADER *) HiiFormPackage;
+ PackageHeader = (EFI_HII_PACKAGE_HEADER *)HiiFormPackage;
while (IfrOffset < PackageSize) {
//
// More than one form packages exist.
//
if (PackageOffset >= PackageHeader->Length) {
- //
- // Process the new form package.
- //
- PackageOffset = sizeof (EFI_HII_PACKAGE_HEADER);
- IfrOffset += PackageOffset;
- PackageHeader = (EFI_HII_PACKAGE_HEADER *) (HiiFormPackage + IfrOffset);
+ //
+ // Process the new form package.
+ //
+ PackageOffset = sizeof (EFI_HII_PACKAGE_HEADER);
+ IfrOffset += PackageOffset;
+ PackageHeader = (EFI_HII_PACKAGE_HEADER *)(HiiFormPackage + IfrOffset);
}
- IfrOpHdr = (EFI_IFR_OP_HEADER *) (HiiFormPackage + IfrOffset);
- IfrOffset += IfrOpHdr->Length;
+ IfrOpHdr = (EFI_IFR_OP_HEADER *)(HiiFormPackage + IfrOffset);
+ IfrOffset += IfrOpHdr->Length;
PackageOffset += IfrOpHdr->Length;
switch (IfrOpHdr->OpCode) {
+ case EFI_IFR_VARSTORE_OP:
+ IfrVarStore = (EFI_IFR_VARSTORE *)IfrOpHdr;
- case EFI_IFR_VARSTORE_OP:
- IfrVarStore = (EFI_IFR_VARSTORE *) IfrOpHdr;
+ NameSize = AsciiStrSize ((CHAR8 *)IfrVarStore->Name);
+ VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));
+ if (VarStoreName == NULL) {
+ goto Done;
+ }
- NameSize = AsciiStrSize ((CHAR8 *)IfrVarStore->Name);
- VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));
- if (VarStoreName == NULL) {
- goto Done;
- }
- AsciiStrToUnicodeStrS ((CHAR8 *)IfrVarStore->Name, VarStoreName, NameSize);
+ AsciiStrToUnicodeStrS ((CHAR8 *)IfrVarStore->Name, VarStoreName, NameSize);
- if (IsThisVarstore((VOID *)&IfrVarStore->Guid, VarStoreName, ConfigHdr)) {
- FindVarstore = TRUE;
- goto Done;
- } else {
- FreePool (VarStoreName);
- VarStoreName = NULL;
- }
- break;
+ if (IsThisVarstore ((VOID *)&IfrVarStore->Guid, VarStoreName, ConfigHdr)) {
+ FindVarstore = TRUE;
+ goto Done;
+ } else {
+ FreePool (VarStoreName);
+ VarStoreName = NULL;
+ }
- case EFI_IFR_VARSTORE_EFI_OP:
- IfrEfiVarStore = (EFI_IFR_VARSTORE_EFI *) IfrOpHdr;
- NameSize = AsciiStrSize ((CHAR8 *)IfrEfiVarStore->Name);
- VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));
- if (VarStoreName == NULL) {
- goto Done;
- }
- AsciiStrToUnicodeStrS ((CHAR8 *)IfrEfiVarStore->Name, VarStoreName, NameSize);
+ break;
- if (IsThisVarstore (&IfrEfiVarStore->Guid, VarStoreName, ConfigHdr)) {
- FindVarstore = TRUE;
- goto Done;
- } else {
- FreePool (VarStoreName);
- VarStoreName = NULL;
- }
- break;
+ case EFI_IFR_VARSTORE_EFI_OP:
+ IfrEfiVarStore = (EFI_IFR_VARSTORE_EFI *)IfrOpHdr;
+ NameSize = AsciiStrSize ((CHAR8 *)IfrEfiVarStore->Name);
+ VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));
+ if (VarStoreName == NULL) {
+ goto Done;
+ }
- case EFI_IFR_VARSTORE_NAME_VALUE_OP:
- IfrNameValueVarStore = (EFI_IFR_VARSTORE_NAME_VALUE *) IfrOpHdr;
+ AsciiStrToUnicodeStrS ((CHAR8 *)IfrEfiVarStore->Name, VarStoreName, NameSize);
- if (IsThisVarstore (&IfrNameValueVarStore->Guid, NULL, ConfigHdr)) {
- FindVarstore = TRUE;
- goto Done;
- }
- break;
+ if (IsThisVarstore (&IfrEfiVarStore->Guid, VarStoreName, ConfigHdr)) {
+ FindVarstore = TRUE;
+ goto Done;
+ } else {
+ FreePool (VarStoreName);
+ VarStoreName = NULL;
+ }
- case EFI_IFR_FORM_OP:
- case EFI_IFR_FORM_MAP_OP:
- //
- // No matched varstore is found and directly return.
- //
- goto Done;
+ break;
- default:
- break;
+ case EFI_IFR_VARSTORE_NAME_VALUE_OP:
+ IfrNameValueVarStore = (EFI_IFR_VARSTORE_NAME_VALUE *)IfrOpHdr;
+
+ if (IsThisVarstore (&IfrNameValueVarStore->Guid, NULL, ConfigHdr)) {
+ FindVarstore = TRUE;
+ goto Done;
+ }
+
+ break;
+
+ case EFI_IFR_FORM_OP:
+ case EFI_IFR_FORM_MAP_OP:
+ //
+ // No matched varstore is found and directly return.
+ //
+ goto Done;
+
+ default:
+ break;
}
}
+
Done:
if (HiiFormPackage != NULL) {
FreePool (HiiFormPackage);
@@ -1984,13 +2036,13 @@ Done: **/
EFI_STATUS
IsThisOpcodeRequired (
- IN IFR_BLOCK_DATA *RequestBlockArray,
- IN EFI_HII_HANDLE HiiHandle,
- IN OUT IFR_VARSTORAGE_DATA *VarStorageData,
- IN EFI_IFR_OP_HEADER *IfrOpHdr,
- IN UINT16 VarWidth,
- OUT IFR_BLOCK_DATA **ReturnData,
- IN BOOLEAN IsBitVar
+ IN IFR_BLOCK_DATA *RequestBlockArray,
+ IN EFI_HII_HANDLE HiiHandle,
+ IN OUT IFR_VARSTORAGE_DATA *VarStorageData,
+ IN EFI_IFR_OP_HEADER *IfrOpHdr,
+ IN UINT16 VarWidth,
+ OUT IFR_BLOCK_DATA **ReturnData,
+ IN BOOLEAN IsBitVar
)
{
IFR_BLOCK_DATA *BlockData;
@@ -2001,11 +2053,11 @@ IsThisOpcodeRequired ( UINT16 BitWidth;
UINT16 TotalBits;
- NameId = 0;
- VarOffset = 0;
- BitOffset = 0;
- BitWidth = 0;
- IfrQuestionHdr = (EFI_IFR_QUESTION_HEADER *)((CHAR8 *) IfrOpHdr + sizeof (EFI_IFR_OP_HEADER));
+ NameId = 0;
+ VarOffset = 0;
+ BitOffset = 0;
+ BitWidth = 0;
+ IfrQuestionHdr = (EFI_IFR_QUESTION_HEADER *)((CHAR8 *)IfrOpHdr + sizeof (EFI_IFR_OP_HEADER));
if (VarStorageData->Type == EFI_HII_VARSTORE_NAME_VALUE) {
NameId = IfrQuestionHdr->VarStoreInfo.VarName;
@@ -2025,16 +2077,16 @@ IsThisOpcodeRequired ( //
if (IsBitVar) {
BitOffset = IfrQuestionHdr->VarStoreInfo.VarOffset;
- BitWidth = VarWidth;
+ BitWidth = VarWidth;
VarOffset = BitOffset / 8;
//
// Use current bit width and the bit width before current bit (with same byte offset) to calculate the byte width.
//
TotalBits = BitOffset % 8 + BitWidth;
- VarWidth = (TotalBits % 8 == 0 ? TotalBits / 8: TotalBits / 8 + 1);
+ VarWidth = (TotalBits % 8 == 0 ? TotalBits / 8 : TotalBits / 8 + 1);
} else {
VarOffset = IfrQuestionHdr->VarStoreInfo.VarOffset;
- BitWidth = VarWidth;
+ BitWidth = VarWidth;
BitOffset = VarOffset * 8;
}
@@ -2056,13 +2108,13 @@ IsThisOpcodeRequired ( }
}
- BlockData = (IFR_BLOCK_DATA *) AllocateZeroPool (sizeof (IFR_BLOCK_DATA));
+ BlockData = (IFR_BLOCK_DATA *)AllocateZeroPool (sizeof (IFR_BLOCK_DATA));
if (BlockData == NULL) {
return EFI_OUT_OF_RESOURCES;
}
if (VarStorageData->Type == EFI_HII_VARSTORE_NAME_VALUE) {
- BlockData->Name = InternalGetString(HiiHandle, NameId);
+ BlockData->Name = InternalGetString (HiiHandle, NameId);
} else {
BlockData->Offset = VarOffset;
}
@@ -2105,49 +2157,49 @@ IsThisOpcodeRequired ( EFI_STATUS
EFIAPI
ParseIfrData (
- IN EFI_HII_HANDLE HiiHandle,
- IN UINT8 *Package,
- IN UINT32 PackageLength,
- IN EFI_STRING ConfigHdr,
- IN IFR_BLOCK_DATA *RequestBlockArray,
- IN OUT IFR_VARSTORAGE_DATA *VarStorageData,
- OUT IFR_DEFAULT_DATA *DefaultIdArray
+ IN EFI_HII_HANDLE HiiHandle,
+ IN UINT8 *Package,
+ IN UINT32 PackageLength,
+ IN EFI_STRING ConfigHdr,
+ IN IFR_BLOCK_DATA *RequestBlockArray,
+ IN OUT IFR_VARSTORAGE_DATA *VarStorageData,
+ OUT IFR_DEFAULT_DATA *DefaultIdArray
)
{
- EFI_STATUS Status;
- UINTN IfrOffset;
- UINTN PackageOffset;
- EFI_IFR_VARSTORE *IfrVarStore;
- EFI_IFR_VARSTORE_EFI *IfrEfiVarStore;
- EFI_IFR_OP_HEADER *IfrOpHdr;
- EFI_IFR_ONE_OF *IfrOneOf;
- EFI_IFR_REF4 *IfrRef;
- EFI_IFR_ONE_OF_OPTION *IfrOneOfOption;
- EFI_IFR_DEFAULT *IfrDefault;
- EFI_IFR_ORDERED_LIST *IfrOrderedList;
- EFI_IFR_CHECKBOX *IfrCheckBox;
- EFI_IFR_PASSWORD *IfrPassword;
- EFI_IFR_STRING *IfrString;
- EFI_IFR_DATE *IfrDate;
- EFI_IFR_TIME *IfrTime;
- IFR_DEFAULT_DATA DefaultData;
- IFR_DEFAULT_DATA *DefaultDataPtr;
- IFR_BLOCK_DATA *BlockData;
- CHAR16 *VarStoreName;
- UINTN NameSize;
- UINT16 VarWidth;
- UINT16 VarDefaultId;
- BOOLEAN FirstOneOfOption;
- BOOLEAN FirstOrderedList;
- LIST_ENTRY *LinkData;
- LIST_ENTRY *LinkDefault;
- EFI_IFR_VARSTORE_NAME_VALUE *IfrNameValueVarStore;
- EFI_HII_PACKAGE_HEADER *PackageHeader;
- EFI_VARSTORE_ID VarStoreId;
- UINT16 SmallestDefaultId;
- BOOLEAN SmallestIdFromFlag;
- BOOLEAN FromOtherDefaultOpcode;
- BOOLEAN QuestionReferBitField;
+ EFI_STATUS Status;
+ UINTN IfrOffset;
+ UINTN PackageOffset;
+ EFI_IFR_VARSTORE *IfrVarStore;
+ EFI_IFR_VARSTORE_EFI *IfrEfiVarStore;
+ EFI_IFR_OP_HEADER *IfrOpHdr;
+ EFI_IFR_ONE_OF *IfrOneOf;
+ EFI_IFR_REF4 *IfrRef;
+ EFI_IFR_ONE_OF_OPTION *IfrOneOfOption;
+ EFI_IFR_DEFAULT *IfrDefault;
+ EFI_IFR_ORDERED_LIST *IfrOrderedList;
+ EFI_IFR_CHECKBOX *IfrCheckBox;
+ EFI_IFR_PASSWORD *IfrPassword;
+ EFI_IFR_STRING *IfrString;
+ EFI_IFR_DATE *IfrDate;
+ EFI_IFR_TIME *IfrTime;
+ IFR_DEFAULT_DATA DefaultData;
+ IFR_DEFAULT_DATA *DefaultDataPtr;
+ IFR_BLOCK_DATA *BlockData;
+ CHAR16 *VarStoreName;
+ UINTN NameSize;
+ UINT16 VarWidth;
+ UINT16 VarDefaultId;
+ BOOLEAN FirstOneOfOption;
+ BOOLEAN FirstOrderedList;
+ LIST_ENTRY *LinkData;
+ LIST_ENTRY *LinkDefault;
+ EFI_IFR_VARSTORE_NAME_VALUE *IfrNameValueVarStore;
+ EFI_HII_PACKAGE_HEADER *PackageHeader;
+ EFI_VARSTORE_ID VarStoreId;
+ UINT16 SmallestDefaultId;
+ BOOLEAN SmallestIdFromFlag;
+ BOOLEAN FromOtherDefaultOpcode;
+ BOOLEAN QuestionReferBitField;
Status = EFI_SUCCESS;
BlockData = NULL;
@@ -2157,912 +2209,962 @@ ParseIfrData ( FirstOrderedList = FALSE;
VarStoreName = NULL;
ZeroMem (&DefaultData, sizeof (IFR_DEFAULT_DATA));
- SmallestDefaultId = 0xFFFF;
+ SmallestDefaultId = 0xFFFF;
FromOtherDefaultOpcode = FALSE;
- QuestionReferBitField = FALSE;
+ QuestionReferBitField = FALSE;
//
// Go through the form package to parse OpCode one by one.
//
PackageOffset = sizeof (EFI_HII_PACKAGE_HEADER);
- PackageHeader = (EFI_HII_PACKAGE_HEADER *) Package;
+ PackageHeader = (EFI_HII_PACKAGE_HEADER *)Package;
IfrOffset = PackageOffset;
while (IfrOffset < PackageLength) {
-
//
// More than one form package found.
//
if (PackageOffset >= PackageHeader->Length) {
+ //
+ // Already found varstore for this request, break;
+ //
+ if (VarStoreId != 0) {
+ VarStoreId = 0;
+ }
+
+ //
+ // Get next package header info.
+ //
+ IfrOffset += sizeof (EFI_HII_PACKAGE_HEADER);
+ PackageOffset = sizeof (EFI_HII_PACKAGE_HEADER);
+ PackageHeader = (EFI_HII_PACKAGE_HEADER *)(Package + IfrOffset);
+ }
+
+ IfrOpHdr = (EFI_IFR_OP_HEADER *)(Package + IfrOffset);
+ switch (IfrOpHdr->OpCode) {
+ case EFI_IFR_VARSTORE_OP:
//
- // Already found varstore for this request, break;
+ // VarStore is found. Don't need to search any more.
//
if (VarStoreId != 0) {
- VarStoreId = 0;
+ break;
}
- //
- // Get next package header info.
- //
- IfrOffset += sizeof (EFI_HII_PACKAGE_HEADER);
- PackageOffset = sizeof (EFI_HII_PACKAGE_HEADER);
- PackageHeader = (EFI_HII_PACKAGE_HEADER *) (Package + IfrOffset);
- }
+ IfrVarStore = (EFI_IFR_VARSTORE *)IfrOpHdr;
+
+ NameSize = AsciiStrSize ((CHAR8 *)IfrVarStore->Name);
+ VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));
+ if (VarStoreName == NULL) {
+ Status = EFI_OUT_OF_RESOURCES;
+ goto Done;
+ }
+
+ AsciiStrToUnicodeStrS ((CHAR8 *)IfrVarStore->Name, VarStoreName, NameSize);
+
+ if (IsThisVarstore ((VOID *)&IfrVarStore->Guid, VarStoreName, ConfigHdr)) {
+ //
+ // Find the matched VarStore
+ //
+ CopyGuid (&VarStorageData->Guid, (EFI_GUID *)(VOID *)&IfrVarStore->Guid);
+ VarStorageData->Size = IfrVarStore->Size;
+ VarStorageData->Name = VarStoreName;
+ VarStorageData->Type = EFI_HII_VARSTORE_BUFFER;
+ VarStoreId = IfrVarStore->VarStoreId;
+ } else {
+ FreePool (VarStoreName);
+ VarStoreName = NULL;
+ }
- IfrOpHdr = (EFI_IFR_OP_HEADER *) (Package + IfrOffset);
- switch (IfrOpHdr->OpCode) {
- case EFI_IFR_VARSTORE_OP:
- //
- // VarStore is found. Don't need to search any more.
- //
- if (VarStoreId != 0) {
break;
- }
- IfrVarStore = (EFI_IFR_VARSTORE *) IfrOpHdr;
+ case EFI_IFR_VARSTORE_EFI_OP:
+ //
+ // VarStore is found. Don't need to search any more.
+ //
+ if (VarStoreId != 0) {
+ break;
+ }
- NameSize = AsciiStrSize ((CHAR8 *)IfrVarStore->Name);
- VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));
- if (VarStoreName == NULL) {
- Status = EFI_OUT_OF_RESOURCES;
- goto Done;
- }
- AsciiStrToUnicodeStrS ((CHAR8 *)IfrVarStore->Name, VarStoreName, NameSize);
+ IfrEfiVarStore = (EFI_IFR_VARSTORE_EFI *)IfrOpHdr;
- if (IsThisVarstore((VOID *)&IfrVarStore->Guid, VarStoreName, ConfigHdr)) {
//
- // Find the matched VarStore
+ // If the length is small than the structure, this is from old efi
+ // varstore definition. Old efi varstore get config directly from
+ // GetVariable function.
//
- CopyGuid (&VarStorageData->Guid, (EFI_GUID *) (VOID *) &IfrVarStore->Guid);
- VarStorageData->Size = IfrVarStore->Size;
- VarStorageData->Name = VarStoreName;
- VarStorageData->Type = EFI_HII_VARSTORE_BUFFER;
- VarStoreId = IfrVarStore->VarStoreId;
- } else {
- FreePool (VarStoreName);
- VarStoreName = NULL;
- }
- break;
+ if (IfrOpHdr->Length < sizeof (EFI_IFR_VARSTORE_EFI)) {
+ break;
+ }
- case EFI_IFR_VARSTORE_EFI_OP:
- //
- // VarStore is found. Don't need to search any more.
- //
- if (VarStoreId != 0) {
- break;
- }
+ NameSize = AsciiStrSize ((CHAR8 *)IfrEfiVarStore->Name);
+ VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));
+ if (VarStoreName == NULL) {
+ Status = EFI_OUT_OF_RESOURCES;
+ goto Done;
+ }
- IfrEfiVarStore = (EFI_IFR_VARSTORE_EFI *) IfrOpHdr;
+ AsciiStrToUnicodeStrS ((CHAR8 *)IfrEfiVarStore->Name, VarStoreName, NameSize);
- //
- // If the length is small than the structure, this is from old efi
- // varstore definition. Old efi varstore get config directly from
- // GetVariable function.
- //
- if (IfrOpHdr->Length < sizeof (EFI_IFR_VARSTORE_EFI)) {
- break;
- }
+ if (IsThisVarstore (&IfrEfiVarStore->Guid, VarStoreName, ConfigHdr)) {
+ //
+ // Find the matched VarStore
+ //
+ CopyGuid (&VarStorageData->Guid, (EFI_GUID *)(VOID *)&IfrEfiVarStore->Guid);
+ VarStorageData->Size = IfrEfiVarStore->Size;
+ VarStorageData->Name = VarStoreName;
+ VarStorageData->Type = EFI_HII_VARSTORE_EFI_VARIABLE_BUFFER;
+ VarStoreId = IfrEfiVarStore->VarStoreId;
+ } else {
+ FreePool (VarStoreName);
+ VarStoreName = NULL;
+ }
- NameSize = AsciiStrSize ((CHAR8 *)IfrEfiVarStore->Name);
- VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));
- if (VarStoreName == NULL) {
- Status = EFI_OUT_OF_RESOURCES;
- goto Done;
- }
- AsciiStrToUnicodeStrS ((CHAR8 *)IfrEfiVarStore->Name, VarStoreName, NameSize);
+ break;
- if (IsThisVarstore (&IfrEfiVarStore->Guid, VarStoreName, ConfigHdr)) {
+ case EFI_IFR_VARSTORE_NAME_VALUE_OP:
//
- // Find the matched VarStore
+ // VarStore is found. Don't need to search any more.
//
- CopyGuid (&VarStorageData->Guid, (EFI_GUID *) (VOID *) &IfrEfiVarStore->Guid);
- VarStorageData->Size = IfrEfiVarStore->Size;
- VarStorageData->Name = VarStoreName;
- VarStorageData->Type = EFI_HII_VARSTORE_EFI_VARIABLE_BUFFER;
- VarStoreId = IfrEfiVarStore->VarStoreId;
- } else {
- FreePool (VarStoreName);
- VarStoreName = NULL;
- }
- break;
+ if (VarStoreId != 0) {
+ break;
+ }
- case EFI_IFR_VARSTORE_NAME_VALUE_OP:
- //
- // VarStore is found. Don't need to search any more.
- //
- if (VarStoreId != 0) {
- break;
- }
+ IfrNameValueVarStore = (EFI_IFR_VARSTORE_NAME_VALUE *)IfrOpHdr;
- IfrNameValueVarStore = (EFI_IFR_VARSTORE_NAME_VALUE *) IfrOpHdr;
+ if (IsThisVarstore (&IfrNameValueVarStore->Guid, NULL, ConfigHdr)) {
+ //
+ // Find the matched VarStore
+ //
+ CopyGuid (&VarStorageData->Guid, (EFI_GUID *)(VOID *)&IfrNameValueVarStore->Guid);
+ VarStorageData->Type = EFI_HII_VARSTORE_NAME_VALUE;
+ VarStoreId = IfrNameValueVarStore->VarStoreId;
+ }
+
+ break;
- if (IsThisVarstore (&IfrNameValueVarStore->Guid, NULL, ConfigHdr)) {
+ case EFI_IFR_DEFAULTSTORE_OP:
//
- // Find the matched VarStore
+ // Add new the map between default id and default name.
//
- CopyGuid (&VarStorageData->Guid, (EFI_GUID *) (VOID *) &IfrNameValueVarStore->Guid);
- VarStorageData->Type = EFI_HII_VARSTORE_NAME_VALUE;
- VarStoreId = IfrNameValueVarStore->VarStoreId;
- }
- break;
+ DefaultDataPtr = (IFR_DEFAULT_DATA *)AllocateZeroPool (sizeof (IFR_DEFAULT_DATA));
+ if (DefaultDataPtr == NULL) {
+ Status = EFI_OUT_OF_RESOURCES;
+ goto Done;
+ }
- case EFI_IFR_DEFAULTSTORE_OP:
- //
- // Add new the map between default id and default name.
- //
- DefaultDataPtr = (IFR_DEFAULT_DATA *) AllocateZeroPool (sizeof (IFR_DEFAULT_DATA));
- if (DefaultDataPtr == NULL) {
- Status = EFI_OUT_OF_RESOURCES;
- goto Done;
- }
- DefaultDataPtr->DefaultId = ((EFI_IFR_DEFAULTSTORE *) IfrOpHdr)->DefaultId;
- InsertTailList (&DefaultIdArray->Entry, &DefaultDataPtr->Entry);
- DefaultDataPtr = NULL;
- break;
+ DefaultDataPtr->DefaultId = ((EFI_IFR_DEFAULTSTORE *)IfrOpHdr)->DefaultId;
+ InsertTailList (&DefaultIdArray->Entry, &DefaultDataPtr->Entry);
+ DefaultDataPtr = NULL;
+ break;
- case EFI_IFR_FORM_OP:
- case EFI_IFR_FORM_MAP_OP:
- //
- // No matched varstore is found and directly return.
- //
- if ( VarStoreId == 0) {
- Status = EFI_SUCCESS;
- goto Done;
- }
- break;
+ case EFI_IFR_FORM_OP:
+ case EFI_IFR_FORM_MAP_OP:
+ //
+ // No matched varstore is found and directly return.
+ //
+ if ( VarStoreId == 0) {
+ Status = EFI_SUCCESS;
+ goto Done;
+ }
- case EFI_IFR_REF_OP:
- //
- // Ref question is not in IFR Form. This IFR form is not valid.
- //
- if ( VarStoreId == 0) {
- Status = EFI_INVALID_PARAMETER;
- goto Done;
- }
- //
- // Check whether this question is for the requested varstore.
- //
- IfrRef = (EFI_IFR_REF4 *) IfrOpHdr;
- if (IfrRef->Question.VarStoreId != VarStoreId) {
break;
- }
- VarWidth = (UINT16) (sizeof (EFI_HII_REF));
- //
- // The BlockData may allocate by other opcode,need to clean.
- //
- if (BlockData != NULL){
- BlockData = NULL;
- }
+ case EFI_IFR_REF_OP:
+ //
+ // Ref question is not in IFR Form. This IFR form is not valid.
+ //
+ if ( VarStoreId == 0) {
+ Status = EFI_INVALID_PARAMETER;
+ goto Done;
+ }
- Status = IsThisOpcodeRequired(RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, FALSE);
- if (EFI_ERROR (Status)) {
- if (Status == EFI_NOT_FOUND){
- //
- //The opcode is not required,exit and parse other opcode.
- //
+ //
+ // Check whether this question is for the requested varstore.
+ //
+ IfrRef = (EFI_IFR_REF4 *)IfrOpHdr;
+ if (IfrRef->Question.VarStoreId != VarStoreId) {
break;
}
- goto Done;
- }
- break;
- case EFI_IFR_ONE_OF_OP:
- case EFI_IFR_NUMERIC_OP:
- //
- // Numeric and OneOf has the same opcode structure.
- //
+ VarWidth = (UINT16)(sizeof (EFI_HII_REF));
- //
- // Numeric and OneOf question is not in IFR Form. This IFR form is not valid.
- //
- if (VarStoreId == 0) {
- Status = EFI_INVALID_PARAMETER;
- goto Done;
- }
- //
- // Check whether this question is for the requested varstore.
- //
- IfrOneOf = (EFI_IFR_ONE_OF *) IfrOpHdr;
- if (IfrOneOf->Question.VarStoreId != VarStoreId) {
- break;
- }
-
- if (QuestionReferBitField) {
- VarWidth = IfrOneOf->Flags & EDKII_IFR_NUMERIC_SIZE_BIT;
- } else {
- VarWidth = (UINT16) (1 << (IfrOneOf->Flags & EFI_IFR_NUMERIC_SIZE));
- }
+ //
+ // The BlockData may allocate by other opcode,need to clean.
+ //
+ if (BlockData != NULL) {
+ BlockData = NULL;
+ }
- //
- // The BlockData may allocate by other opcode,need to clean.
- //
- if (BlockData != NULL){
- BlockData = NULL;
- }
+ Status = IsThisOpcodeRequired (RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, FALSE);
+ if (EFI_ERROR (Status)) {
+ if (Status == EFI_NOT_FOUND) {
+ //
+ // The opcode is not required,exit and parse other opcode.
+ //
+ break;
+ }
- Status = IsThisOpcodeRequired(RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, QuestionReferBitField);
- if (EFI_ERROR (Status)) {
- if (Status == EFI_NOT_FOUND){
- //
- //The opcode is not required,exit and parse other opcode.
- //
- break;
+ goto Done;
}
- goto Done;
- }
- //
- //when go to there,BlockData can't be NULLL.
- //
- ASSERT (BlockData != NULL);
+ break;
- if (IfrOpHdr->OpCode == EFI_IFR_ONE_OF_OP) {
+ case EFI_IFR_ONE_OF_OP:
+ case EFI_IFR_NUMERIC_OP:
//
- // Set this flag to TRUE for the first oneof option.
+ // Numeric and OneOf has the same opcode structure.
+ //
+
//
- FirstOneOfOption = TRUE;
- } else if (IfrOpHdr->OpCode == EFI_IFR_NUMERIC_OP) {
+ // Numeric and OneOf question is not in IFR Form. This IFR form is not valid.
//
- // Numeric minimum value will be used as default value when no default is specified.
+ if (VarStoreId == 0) {
+ Status = EFI_INVALID_PARAMETER;
+ goto Done;
+ }
+
//
- DefaultData.Type = DefaultValueFromDefault;
+ // Check whether this question is for the requested varstore.
+ //
+ IfrOneOf = (EFI_IFR_ONE_OF *)IfrOpHdr;
+ if (IfrOneOf->Question.VarStoreId != VarStoreId) {
+ break;
+ }
+
if (QuestionReferBitField) {
- //
- // Since default value in bit field was stored as UINT32 type.
- //
- CopyMem (&DefaultData.Value.u32, &IfrOneOf->data.u32.MinValue, sizeof (UINT32));
+ VarWidth = IfrOneOf->Flags & EDKII_IFR_NUMERIC_SIZE_BIT;
} else {
- switch (IfrOneOf->Flags & EFI_IFR_NUMERIC_SIZE) {
- case EFI_IFR_NUMERIC_SIZE_1:
- DefaultData.Value.u8 = IfrOneOf->data.u8.MinValue;
- break;
-
- case EFI_IFR_NUMERIC_SIZE_2:
- CopyMem (&DefaultData.Value.u16, &IfrOneOf->data.u16.MinValue, sizeof (UINT16));
- break;
+ VarWidth = (UINT16)(1 << (IfrOneOf->Flags & EFI_IFR_NUMERIC_SIZE));
+ }
- case EFI_IFR_NUMERIC_SIZE_4:
- CopyMem (&DefaultData.Value.u32, &IfrOneOf->data.u32.MinValue, sizeof (UINT32));
- break;
+ //
+ // The BlockData may allocate by other opcode,need to clean.
+ //
+ if (BlockData != NULL) {
+ BlockData = NULL;
+ }
- case EFI_IFR_NUMERIC_SIZE_8:
- CopyMem (&DefaultData.Value.u64, &IfrOneOf->data.u64.MinValue, sizeof (UINT64));
+ Status = IsThisOpcodeRequired (RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, QuestionReferBitField);
+ if (EFI_ERROR (Status)) {
+ if (Status == EFI_NOT_FOUND) {
+ //
+ // The opcode is not required,exit and parse other opcode.
+ //
break;
+ }
- default:
- Status = EFI_INVALID_PARAMETER;
- goto Done;
- }
+ goto Done;
}
+
//
- // Set default value base on the DefaultId list get from IFR data.
+ // when go to there,BlockData can't be NULLL.
//
- for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {
- DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);
- DefaultData.DefaultId = DefaultDataPtr->DefaultId;
- InsertDefaultValue (BlockData, &DefaultData);
- }
- }
- break;
+ ASSERT (BlockData != NULL);
- case EFI_IFR_ORDERED_LIST_OP:
- //
- // offset by question header
- // width by EFI_IFR_ORDERED_LIST MaxContainers * OneofOption Type
- //
+ if (IfrOpHdr->OpCode == EFI_IFR_ONE_OF_OP) {
+ //
+ // Set this flag to TRUE for the first oneof option.
+ //
+ FirstOneOfOption = TRUE;
+ } else if (IfrOpHdr->OpCode == EFI_IFR_NUMERIC_OP) {
+ //
+ // Numeric minimum value will be used as default value when no default is specified.
+ //
+ DefaultData.Type = DefaultValueFromDefault;
+ if (QuestionReferBitField) {
+ //
+ // Since default value in bit field was stored as UINT32 type.
+ //
+ CopyMem (&DefaultData.Value.u32, &IfrOneOf->data.u32.MinValue, sizeof (UINT32));
+ } else {
+ switch (IfrOneOf->Flags & EFI_IFR_NUMERIC_SIZE) {
+ case EFI_IFR_NUMERIC_SIZE_1:
+ DefaultData.Value.u8 = IfrOneOf->data.u8.MinValue;
+ break;
+
+ case EFI_IFR_NUMERIC_SIZE_2:
+ CopyMem (&DefaultData.Value.u16, &IfrOneOf->data.u16.MinValue, sizeof (UINT16));
+ break;
+
+ case EFI_IFR_NUMERIC_SIZE_4:
+ CopyMem (&DefaultData.Value.u32, &IfrOneOf->data.u32.MinValue, sizeof (UINT32));
+ break;
+
+ case EFI_IFR_NUMERIC_SIZE_8:
+ CopyMem (&DefaultData.Value.u64, &IfrOneOf->data.u64.MinValue, sizeof (UINT64));
+ break;
+
+ default:
+ Status = EFI_INVALID_PARAMETER;
+ goto Done;
+ }
+ }
+
+ //
+ // Set default value base on the DefaultId list get from IFR data.
+ //
+ for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {
+ DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);
+ DefaultData.DefaultId = DefaultDataPtr->DefaultId;
+ InsertDefaultValue (BlockData, &DefaultData);
+ }
+ }
- FirstOrderedList = TRUE;
- //
- // OrderedList question is not in IFR Form. This IFR form is not valid.
- //
- if (VarStoreId == 0) {
- Status = EFI_INVALID_PARAMETER;
- goto Done;
- }
- //
- // Check whether this question is for the requested varstore.
- //
- IfrOrderedList = (EFI_IFR_ORDERED_LIST *) IfrOpHdr;
- if (IfrOrderedList->Question.VarStoreId != VarStoreId) {
- BlockData = NULL;
break;
- }
- VarWidth = IfrOrderedList->MaxContainers;
- //
- // The BlockData may allocate by other opcode,need to clean.
- //
- if (BlockData != NULL){
- BlockData = NULL;
- }
+ case EFI_IFR_ORDERED_LIST_OP:
+ //
+ // offset by question header
+ // width by EFI_IFR_ORDERED_LIST MaxContainers * OneofOption Type
+ //
- Status = IsThisOpcodeRequired(RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, FALSE);
- if (EFI_ERROR (Status)) {
- if (Status == EFI_NOT_FOUND){
- //
- //The opcode is not required,exit and parse other opcode.
- //
+ FirstOrderedList = TRUE;
+ //
+ // OrderedList question is not in IFR Form. This IFR form is not valid.
+ //
+ if (VarStoreId == 0) {
+ Status = EFI_INVALID_PARAMETER;
+ goto Done;
+ }
+
+ //
+ // Check whether this question is for the requested varstore.
+ //
+ IfrOrderedList = (EFI_IFR_ORDERED_LIST *)IfrOpHdr;
+ if (IfrOrderedList->Question.VarStoreId != VarStoreId) {
+ BlockData = NULL;
break;
}
- goto Done;
- }
- break;
- case EFI_IFR_CHECKBOX_OP:
- //
- // EFI_IFR_DEFAULT_OP
- // offset by question header
- // width is 1 sizeof (BOOLEAN)
- // default id by CheckBox Flags if CheckBox flags (Default or Mau) is set, the default value is 1 to be set.
- // value by DefaultOption
- // default id by DeaultOption DefaultId can override CheckBox Flags and Default value.
- //
+ VarWidth = IfrOrderedList->MaxContainers;
- //
- // CheckBox question is not in IFR Form. This IFR form is not valid.
- //
- if (VarStoreId == 0) {
- Status = EFI_INVALID_PARAMETER;
- goto Done;
- }
- //
- // Check whether this question is for the requested varstore.
- //
- IfrCheckBox = (EFI_IFR_CHECKBOX *) IfrOpHdr;
- if (IfrCheckBox->Question.VarStoreId != VarStoreId) {
- break;
- }
- VarWidth = (UINT16) sizeof (BOOLEAN);
+ //
+ // The BlockData may allocate by other opcode,need to clean.
+ //
+ if (BlockData != NULL) {
+ BlockData = NULL;
+ }
- //
- // The BlockData may allocate by other opcode,need to clean.
- //
- if (BlockData != NULL){
- BlockData = NULL;
- }
+ Status = IsThisOpcodeRequired (RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, FALSE);
+ if (EFI_ERROR (Status)) {
+ if (Status == EFI_NOT_FOUND) {
+ //
+ // The opcode is not required,exit and parse other opcode.
+ //
+ break;
+ }
- if (QuestionReferBitField) {
- VarWidth = 1;
- }
- Status = IsThisOpcodeRequired(RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, QuestionReferBitField);
- if (EFI_ERROR (Status)) {
- if (Status == EFI_NOT_FOUND){
- //
- //The opcode is not required,exit and parse other opcode.
- //
- break;
+ goto Done;
}
- goto Done;
- }
- //
- //when go to there,BlockData can't be NULLL.
- //
- ASSERT (BlockData != NULL);
+ break;
- SmallestIdFromFlag = FALSE;
+ case EFI_IFR_CHECKBOX_OP:
+ //
+ // EFI_IFR_DEFAULT_OP
+ // offset by question header
+ // width is 1 sizeof (BOOLEAN)
+ // default id by CheckBox Flags if CheckBox flags (Default or Mau) is set, the default value is 1 to be set.
+ // value by DefaultOption
+ // default id by DeaultOption DefaultId can override CheckBox Flags and Default value.
+ //
- //
- // Add default value for standard ID by CheckBox Flag
- //
- VarDefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;
- //
- // Prepare new DefaultValue
- //
- DefaultData.DefaultId = VarDefaultId;
- if ((IfrCheckBox->Flags & EFI_IFR_CHECKBOX_DEFAULT) == EFI_IFR_CHECKBOX_DEFAULT) {
//
- // When flag is set, default value is TRUE.
+ // CheckBox question is not in IFR Form. This IFR form is not valid.
//
- DefaultData.Type = DefaultValueFromFlag;
- if (QuestionReferBitField) {
- DefaultData.Value.u32 = TRUE;
- } else {
- DefaultData.Value.b = TRUE;
+ if (VarStoreId == 0) {
+ Status = EFI_INVALID_PARAMETER;
+ goto Done;
}
- InsertDefaultValue (BlockData, &DefaultData);
- if (SmallestDefaultId > EFI_HII_DEFAULT_CLASS_STANDARD) {
- //
- // Record the SmallestDefaultId and update the SmallestIdFromFlag.
- //
- SmallestDefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;
- SmallestIdFromFlag = TRUE;
+ //
+ // Check whether this question is for the requested varstore.
+ //
+ IfrCheckBox = (EFI_IFR_CHECKBOX *)IfrOpHdr;
+ if (IfrCheckBox->Question.VarStoreId != VarStoreId) {
+ break;
}
- }
- //
- // Add default value for Manufacture ID by CheckBox Flag
- //
- VarDefaultId = EFI_HII_DEFAULT_CLASS_MANUFACTURING;
- //
- // Prepare new DefaultValue
- //
- DefaultData.DefaultId = VarDefaultId;
- if ((IfrCheckBox->Flags & EFI_IFR_CHECKBOX_DEFAULT_MFG) == EFI_IFR_CHECKBOX_DEFAULT_MFG) {
+ VarWidth = (UINT16)sizeof (BOOLEAN);
+
//
- // When flag is set, default value is TRUE.
+ // The BlockData may allocate by other opcode,need to clean.
//
- DefaultData.Type = DefaultValueFromFlag;
+ if (BlockData != NULL) {
+ BlockData = NULL;
+ }
+
if (QuestionReferBitField) {
- DefaultData.Value.u32 = TRUE;
- } else {
- DefaultData.Value.b = TRUE;
+ VarWidth = 1;
}
- InsertDefaultValue (BlockData, &DefaultData);
- if (SmallestDefaultId > EFI_HII_DEFAULT_CLASS_MANUFACTURING) {
- //
- // Record the SmallestDefaultId and update the SmallestIdFromFlag.
- //
- SmallestDefaultId = EFI_HII_DEFAULT_CLASS_MANUFACTURING;
- SmallestIdFromFlag = TRUE;
+ Status = IsThisOpcodeRequired (RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, QuestionReferBitField);
+ if (EFI_ERROR (Status)) {
+ if (Status == EFI_NOT_FOUND) {
+ //
+ // The opcode is not required,exit and parse other opcode.
+ //
+ break;
+ }
+
+ goto Done;
}
- }
- if (SmallestIdFromFlag) {
+
//
- // When smallest default Id is given by the flag of CheckBox, set default value with TRUE for other default Id in the DefaultId list.
+ // when go to there,BlockData can't be NULLL.
//
- DefaultData.Type = DefaultValueFromOtherDefault;
- if (QuestionReferBitField) {
- DefaultData.Value.u32 = TRUE;
- } else {
- DefaultData.Value.b = TRUE;
- }
+ ASSERT (BlockData != NULL);
+
+ SmallestIdFromFlag = FALSE;
+
//
- // Set default value for all the default id in the DefaultId list.
+ // Add default value for standard ID by CheckBox Flag
//
- for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {
- DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);
- DefaultData.DefaultId = DefaultDataPtr->DefaultId;
+ VarDefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;
+ //
+ // Prepare new DefaultValue
+ //
+ DefaultData.DefaultId = VarDefaultId;
+ if ((IfrCheckBox->Flags & EFI_IFR_CHECKBOX_DEFAULT) == EFI_IFR_CHECKBOX_DEFAULT) {
+ //
+ // When flag is set, default value is TRUE.
+ //
+ DefaultData.Type = DefaultValueFromFlag;
+ if (QuestionReferBitField) {
+ DefaultData.Value.u32 = TRUE;
+ } else {
+ DefaultData.Value.b = TRUE;
+ }
+
InsertDefaultValue (BlockData, &DefaultData);
+
+ if (SmallestDefaultId > EFI_HII_DEFAULT_CLASS_STANDARD) {
+ //
+ // Record the SmallestDefaultId and update the SmallestIdFromFlag.
+ //
+ SmallestDefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;
+ SmallestIdFromFlag = TRUE;
+ }
}
- } else {
+
//
- // When flag is not set, default value is FASLE.
+ // Add default value for Manufacture ID by CheckBox Flag
//
- DefaultData.Type = DefaultValueFromDefault;
- if (QuestionReferBitField) {
- DefaultData.Value.u32 = FALSE;
- } else {
- DefaultData.Value.b = FALSE;
- }
+ VarDefaultId = EFI_HII_DEFAULT_CLASS_MANUFACTURING;
//
- // Set default value for all the default id in the DefaultId list.
+ // Prepare new DefaultValue
//
- for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {
- DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);
- DefaultData.DefaultId = DefaultDataPtr->DefaultId;
+ DefaultData.DefaultId = VarDefaultId;
+ if ((IfrCheckBox->Flags & EFI_IFR_CHECKBOX_DEFAULT_MFG) == EFI_IFR_CHECKBOX_DEFAULT_MFG) {
+ //
+ // When flag is set, default value is TRUE.
+ //
+ DefaultData.Type = DefaultValueFromFlag;
+ if (QuestionReferBitField) {
+ DefaultData.Value.u32 = TRUE;
+ } else {
+ DefaultData.Value.b = TRUE;
+ }
+
InsertDefaultValue (BlockData, &DefaultData);
- }
- }
- break;
- case EFI_IFR_DATE_OP:
- //
- // offset by question header
- // width MaxSize * sizeof (CHAR16)
- // no default value, only block array
- //
+ if (SmallestDefaultId > EFI_HII_DEFAULT_CLASS_MANUFACTURING) {
+ //
+ // Record the SmallestDefaultId and update the SmallestIdFromFlag.
+ //
+ SmallestDefaultId = EFI_HII_DEFAULT_CLASS_MANUFACTURING;
+ SmallestIdFromFlag = TRUE;
+ }
+ }
- //
- // Date question is not in IFR Form. This IFR form is not valid.
- //
- if (VarStoreId == 0) {
- Status = EFI_INVALID_PARAMETER;
- goto Done;
- }
- //
- // Check whether this question is for the requested varstore.
- //
- IfrDate = (EFI_IFR_DATE *) IfrOpHdr;
- if (IfrDate->Question.VarStoreId != VarStoreId) {
- break;
- }
+ if (SmallestIdFromFlag) {
+ //
+ // When smallest default Id is given by the flag of CheckBox, set default value with TRUE for other default Id in the DefaultId list.
+ //
+ DefaultData.Type = DefaultValueFromOtherDefault;
+ if (QuestionReferBitField) {
+ DefaultData.Value.u32 = TRUE;
+ } else {
+ DefaultData.Value.b = TRUE;
+ }
- //
- // The BlockData may allocate by other opcode,need to clean.
- //
- if (BlockData != NULL){
- BlockData = NULL;
- }
+ //
+ // Set default value for all the default id in the DefaultId list.
+ //
+ for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {
+ DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);
+ DefaultData.DefaultId = DefaultDataPtr->DefaultId;
+ InsertDefaultValue (BlockData, &DefaultData);
+ }
+ } else {
+ //
+ // When flag is not set, default value is FASLE.
+ //
+ DefaultData.Type = DefaultValueFromDefault;
+ if (QuestionReferBitField) {
+ DefaultData.Value.u32 = FALSE;
+ } else {
+ DefaultData.Value.b = FALSE;
+ }
- VarWidth = (UINT16) sizeof (EFI_HII_DATE);
- Status = IsThisOpcodeRequired(RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, FALSE);
- if (EFI_ERROR (Status)) {
- if (Status == EFI_NOT_FOUND){
//
- //The opcode is not required,exit and parse other opcode.
+ // Set default value for all the default id in the DefaultId list.
//
- break;
+ for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {
+ DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);
+ DefaultData.DefaultId = DefaultDataPtr->DefaultId;
+ InsertDefaultValue (BlockData, &DefaultData);
+ }
}
- goto Done;
- }
- break;
- case EFI_IFR_TIME_OP:
- //
- // offset by question header
- // width MaxSize * sizeof (CHAR16)
- // no default value, only block array
- //
-
- //
- // Time question is not in IFR Form. This IFR form is not valid.
- //
- if (VarStoreId == 0) {
- Status = EFI_INVALID_PARAMETER;
- goto Done;
- }
- //
- // Check whether this question is for the requested varstore.
- //
- IfrTime = (EFI_IFR_TIME *) IfrOpHdr;
- if (IfrTime->Question.VarStoreId != VarStoreId) {
break;
- }
- //
- // The BlockData may allocate by other opcode,need to clean.
- //
- if (BlockData != NULL){
- BlockData = NULL;
- }
+ case EFI_IFR_DATE_OP:
+ //
+ // offset by question header
+ // width MaxSize * sizeof (CHAR16)
+ // no default value, only block array
+ //
- VarWidth = (UINT16) sizeof (EFI_HII_TIME);
- Status = IsThisOpcodeRequired(RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, FALSE);
- if (EFI_ERROR (Status)) {
- if (Status == EFI_NOT_FOUND){
- //
- //The opcode is not required,exit and parse other opcode.
- //
- break;
+ //
+ // Date question is not in IFR Form. This IFR form is not valid.
+ //
+ if (VarStoreId == 0) {
+ Status = EFI_INVALID_PARAMETER;
+ goto Done;
}
- goto Done;
- }
- break;
- case EFI_IFR_STRING_OP:
- //
- // offset by question header
- // width MaxSize * sizeof (CHAR16)
- // no default value, only block array
- //
+ //
+ // Check whether this question is for the requested varstore.
+ //
+ IfrDate = (EFI_IFR_DATE *)IfrOpHdr;
+ if (IfrDate->Question.VarStoreId != VarStoreId) {
+ break;
+ }
- //
- // String question is not in IFR Form. This IFR form is not valid.
- //
- if (VarStoreId == 0) {
- Status = EFI_INVALID_PARAMETER;
- goto Done;
- }
- //
- // Check whether this question is for the requested varstore.
- //
- IfrString = (EFI_IFR_STRING *) IfrOpHdr;
- if (IfrString->Question.VarStoreId != VarStoreId) {
- break;
- }
+ //
+ // The BlockData may allocate by other opcode,need to clean.
+ //
+ if (BlockData != NULL) {
+ BlockData = NULL;
+ }
- //
- // The BlockData may allocate by other opcode,need to clean.
- //
- if (BlockData != NULL){
- BlockData = NULL;
- }
+ VarWidth = (UINT16)sizeof (EFI_HII_DATE);
+ Status = IsThisOpcodeRequired (RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, FALSE);
+ if (EFI_ERROR (Status)) {
+ if (Status == EFI_NOT_FOUND) {
+ //
+ // The opcode is not required,exit and parse other opcode.
+ //
+ break;
+ }
- VarWidth = (UINT16) (IfrString->MaxSize * sizeof (UINT16));
- Status = IsThisOpcodeRequired(RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, FALSE);
- if (EFI_ERROR (Status)) {
- if (Status == EFI_NOT_FOUND){
- //
- //The opcode is not required,exit and parse other opcode.
- //
- break;
+ goto Done;
}
- goto Done;
- }
- break;
-
- case EFI_IFR_PASSWORD_OP:
- //
- // offset by question header
- // width MaxSize * sizeof (CHAR16)
- // no default value, only block array
- //
- //
- // Password question is not in IFR Form. This IFR form is not valid.
- //
- if (VarStoreId == 0) {
- Status = EFI_INVALID_PARAMETER;
- goto Done;
- }
- //
- // Check whether this question is for the requested varstore.
- //
- IfrPassword = (EFI_IFR_PASSWORD *) IfrOpHdr;
- if (IfrPassword->Question.VarStoreId != VarStoreId) {
break;
- }
- //
- // The BlockData may allocate by other opcode,need to clean.
- //
- if (BlockData != NULL){
- BlockData = NULL;
- }
+ case EFI_IFR_TIME_OP:
+ //
+ // offset by question header
+ // width MaxSize * sizeof (CHAR16)
+ // no default value, only block array
+ //
- VarWidth = (UINT16) (IfrPassword->MaxSize * sizeof (UINT16));
- Status = IsThisOpcodeRequired(RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, FALSE);
- if (EFI_ERROR (Status)) {
- if (Status == EFI_NOT_FOUND){
- //
- //The opcode is not required,exit and parse other opcode.
- //
+ //
+ // Time question is not in IFR Form. This IFR form is not valid.
+ //
+ if (VarStoreId == 0) {
+ Status = EFI_INVALID_PARAMETER;
+ goto Done;
+ }
+
+ //
+ // Check whether this question is for the requested varstore.
+ //
+ IfrTime = (EFI_IFR_TIME *)IfrOpHdr;
+ if (IfrTime->Question.VarStoreId != VarStoreId) {
break;
}
- goto Done;
- }
- //
- // No default value for string.
- //
- BlockData = NULL;
- break;
+ //
+ // The BlockData may allocate by other opcode,need to clean.
+ //
+ if (BlockData != NULL) {
+ BlockData = NULL;
+ }
+
+ VarWidth = (UINT16)sizeof (EFI_HII_TIME);
+ Status = IsThisOpcodeRequired (RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, FALSE);
+ if (EFI_ERROR (Status)) {
+ if (Status == EFI_NOT_FOUND) {
+ //
+ // The opcode is not required,exit and parse other opcode.
+ //
+ break;
+ }
+
+ goto Done;
+ }
- case EFI_IFR_ONE_OF_OPTION_OP:
- //
- // No matched block data is ignored.
- //
- if (BlockData == NULL || BlockData->Scope == 0) {
break;
- }
- IfrOneOfOption = (EFI_IFR_ONE_OF_OPTION *) IfrOpHdr;
- if (BlockData->OpCode == EFI_IFR_ORDERED_LIST_OP) {
+ case EFI_IFR_STRING_OP:
+ //
+ // offset by question header
+ // width MaxSize * sizeof (CHAR16)
+ // no default value, only block array
+ //
- if (!FirstOrderedList){
- break;
- }
//
- // Get ordered list option data type.
+ // String question is not in IFR Form. This IFR form is not valid.
//
- if (IfrOneOfOption->Type == EFI_IFR_TYPE_NUM_SIZE_8 || IfrOneOfOption->Type == EFI_IFR_TYPE_BOOLEAN) {
- VarWidth = 1;
- } else if (IfrOneOfOption->Type == EFI_IFR_TYPE_NUM_SIZE_16) {
- VarWidth = 2;
- } else if (IfrOneOfOption->Type == EFI_IFR_TYPE_NUM_SIZE_32) {
- VarWidth = 4;
- } else if (IfrOneOfOption->Type == EFI_IFR_TYPE_NUM_SIZE_64) {
- VarWidth = 8;
- } else {
- //
- // Invalid ordered list option data type.
- //
+ if (VarStoreId == 0) {
Status = EFI_INVALID_PARAMETER;
- if (BlockData->Name != NULL) {
- FreePool (BlockData->Name);
- }
- FreePool (BlockData);
goto Done;
}
//
- // Calculate Ordered list QuestionId width.
+ // Check whether this question is for the requested varstore.
//
- BlockData->Width = (UINT16) (BlockData->Width * VarWidth);
+ IfrString = (EFI_IFR_STRING *)IfrOpHdr;
+ if (IfrString->Question.VarStoreId != VarStoreId) {
+ break;
+ }
+
//
- // Check whether this question is in requested block array.
+ // The BlockData may allocate by other opcode,need to clean.
//
- if (!BlockArrayCheck (RequestBlockArray, BlockData->Offset, BlockData->Width, (BOOLEAN)(BlockData->Name != NULL), HiiHandle)) {
- //
- // This question is not in the requested string. Skip it.
- //
- if (BlockData->Name != NULL) {
- FreePool (BlockData->Name);
- }
- FreePool (BlockData);
+ if (BlockData != NULL) {
BlockData = NULL;
- break;
}
+
+ VarWidth = (UINT16)(IfrString->MaxSize * sizeof (UINT16));
+ Status = IsThisOpcodeRequired (RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, FALSE);
+ if (EFI_ERROR (Status)) {
+ if (Status == EFI_NOT_FOUND) {
+ //
+ // The opcode is not required,exit and parse other opcode.
+ //
+ break;
+ }
+
+ goto Done;
+ }
+
+ break;
+
+ case EFI_IFR_PASSWORD_OP:
//
- // Check this var question is in the var storage
+ // offset by question header
+ // width MaxSize * sizeof (CHAR16)
+ // no default value, only block array
+ //
+
//
- if ((BlockData->Name == NULL) && ((BlockData->Offset + BlockData->Width) > VarStorageData->Size)) {
+ // Password question is not in IFR Form. This IFR form is not valid.
+ //
+ if (VarStoreId == 0) {
Status = EFI_INVALID_PARAMETER;
- FreePool (BlockData);
goto Done;
}
+
//
- // Add Block Data into VarStorageData BlockEntry
+ // Check whether this question is for the requested varstore.
//
- InsertBlockData (&VarStorageData->BlockEntry, &BlockData);
+ IfrPassword = (EFI_IFR_PASSWORD *)IfrOpHdr;
+ if (IfrPassword->Question.VarStoreId != VarStoreId) {
+ break;
+ }
+
+ //
+ // The BlockData may allocate by other opcode,need to clean.
+ //
+ if (BlockData != NULL) {
+ BlockData = NULL;
+ }
- FirstOrderedList = FALSE;
+ VarWidth = (UINT16)(IfrPassword->MaxSize * sizeof (UINT16));
+ Status = IsThisOpcodeRequired (RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, FALSE);
+ if (EFI_ERROR (Status)) {
+ if (Status == EFI_NOT_FOUND) {
+ //
+ // The opcode is not required,exit and parse other opcode.
+ //
+ break;
+ }
+ goto Done;
+ }
+
+ //
+ // No default value for string.
+ //
+ BlockData = NULL;
break;
- }
- //
- // 1. Set default value for OneOf option when flag field has default attribute.
- // And set the default value with the smallest default id for other default id in the DefaultId list.
- //
- if (((IfrOneOfOption->Flags & EFI_IFR_OPTION_DEFAULT) == EFI_IFR_OPTION_DEFAULT) ||
- ((IfrOneOfOption->Flags & EFI_IFR_OPTION_DEFAULT_MFG) == EFI_IFR_OPTION_DEFAULT_MFG)) {
+ case EFI_IFR_ONE_OF_OPTION_OP:
//
- // This flag is used to specify whether this option is the first. Set it to FALSE for the following options.
- // The first oneof option value will be used as default value when no default value is specified.
+ // No matched block data is ignored.
//
- FirstOneOfOption = FALSE;
+ if ((BlockData == NULL) || (BlockData->Scope == 0)) {
+ break;
+ }
- SmallestIdFromFlag = FALSE;
+ IfrOneOfOption = (EFI_IFR_ONE_OF_OPTION *)IfrOpHdr;
+ if (BlockData->OpCode == EFI_IFR_ORDERED_LIST_OP) {
+ if (!FirstOrderedList) {
+ break;
+ }
- // Prepare new DefaultValue
- //
- DefaultData.Type = DefaultValueFromFlag;
- CopyMem (&DefaultData.Value, &IfrOneOfOption->Value, IfrOneOfOption->Header.Length - OFFSET_OF (EFI_IFR_ONE_OF_OPTION, Value));
- if ((IfrOneOfOption->Flags & EFI_IFR_OPTION_DEFAULT) == EFI_IFR_OPTION_DEFAULT) {
- DefaultData.DefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;
- InsertDefaultValue (BlockData, &DefaultData);
- if (SmallestDefaultId > EFI_HII_DEFAULT_CLASS_STANDARD) {
+ //
+ // Get ordered list option data type.
+ //
+ if ((IfrOneOfOption->Type == EFI_IFR_TYPE_NUM_SIZE_8) || (IfrOneOfOption->Type == EFI_IFR_TYPE_BOOLEAN)) {
+ VarWidth = 1;
+ } else if (IfrOneOfOption->Type == EFI_IFR_TYPE_NUM_SIZE_16) {
+ VarWidth = 2;
+ } else if (IfrOneOfOption->Type == EFI_IFR_TYPE_NUM_SIZE_32) {
+ VarWidth = 4;
+ } else if (IfrOneOfOption->Type == EFI_IFR_TYPE_NUM_SIZE_64) {
+ VarWidth = 8;
+ } else {
//
- // Record the SmallestDefaultId and update the SmallestIdFromFlag.
+ // Invalid ordered list option data type.
//
- SmallestDefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;
- SmallestIdFromFlag = TRUE;
+ Status = EFI_INVALID_PARAMETER;
+ if (BlockData->Name != NULL) {
+ FreePool (BlockData->Name);
+ }
+
+ FreePool (BlockData);
+ goto Done;
}
- }
- if ((IfrOneOfOption->Flags & EFI_IFR_OPTION_DEFAULT_MFG) == EFI_IFR_OPTION_DEFAULT_MFG) {
- DefaultData.DefaultId = EFI_HII_DEFAULT_CLASS_MANUFACTURING;
- InsertDefaultValue (BlockData, &DefaultData);
- if (SmallestDefaultId > EFI_HII_DEFAULT_CLASS_MANUFACTURING) {
+
+ //
+ // Calculate Ordered list QuestionId width.
+ //
+ BlockData->Width = (UINT16)(BlockData->Width * VarWidth);
+ //
+ // Check whether this question is in requested block array.
+ //
+ if (!BlockArrayCheck (RequestBlockArray, BlockData->Offset, BlockData->Width, (BOOLEAN)(BlockData->Name != NULL), HiiHandle)) {
//
- // Record the SmallestDefaultId and update the SmallestIdFromFlag.
+ // This question is not in the requested string. Skip it.
//
- SmallestDefaultId = EFI_HII_DEFAULT_CLASS_MANUFACTURING;
- SmallestIdFromFlag = TRUE;
+ if (BlockData->Name != NULL) {
+ FreePool (BlockData->Name);
+ }
+
+ FreePool (BlockData);
+ BlockData = NULL;
+ break;
}
+
+ //
+ // Check this var question is in the var storage
+ //
+ if ((BlockData->Name == NULL) && ((BlockData->Offset + BlockData->Width) > VarStorageData->Size)) {
+ Status = EFI_INVALID_PARAMETER;
+ FreePool (BlockData);
+ goto Done;
+ }
+
+ //
+ // Add Block Data into VarStorageData BlockEntry
+ //
+ InsertBlockData (&VarStorageData->BlockEntry, &BlockData);
+
+ FirstOrderedList = FALSE;
+
+ break;
}
- if (SmallestIdFromFlag) {
+ //
+ // 1. Set default value for OneOf option when flag field has default attribute.
+ // And set the default value with the smallest default id for other default id in the DefaultId list.
+ //
+ if (((IfrOneOfOption->Flags & EFI_IFR_OPTION_DEFAULT) == EFI_IFR_OPTION_DEFAULT) ||
+ ((IfrOneOfOption->Flags & EFI_IFR_OPTION_DEFAULT_MFG) == EFI_IFR_OPTION_DEFAULT_MFG))
+ {
//
- // When smallest default Id is given by the flag of oneofOption, set this option value for other default Id in the DefaultId list.
+ // This flag is used to specify whether this option is the first. Set it to FALSE for the following options.
+ // The first oneof option value will be used as default value when no default value is specified.
//
- DefaultData.Type = DefaultValueFromOtherDefault;
+ FirstOneOfOption = FALSE;
+
+ SmallestIdFromFlag = FALSE;
+
+ // Prepare new DefaultValue
//
- // Set default value for other default id in the DefaultId list.
+ DefaultData.Type = DefaultValueFromFlag;
+ CopyMem (&DefaultData.Value, &IfrOneOfOption->Value, IfrOneOfOption->Header.Length - OFFSET_OF (EFI_IFR_ONE_OF_OPTION, Value));
+ if ((IfrOneOfOption->Flags & EFI_IFR_OPTION_DEFAULT) == EFI_IFR_OPTION_DEFAULT) {
+ DefaultData.DefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;
+ InsertDefaultValue (BlockData, &DefaultData);
+ if (SmallestDefaultId > EFI_HII_DEFAULT_CLASS_STANDARD) {
+ //
+ // Record the SmallestDefaultId and update the SmallestIdFromFlag.
+ //
+ SmallestDefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;
+ SmallestIdFromFlag = TRUE;
+ }
+ }
+
+ if ((IfrOneOfOption->Flags & EFI_IFR_OPTION_DEFAULT_MFG) == EFI_IFR_OPTION_DEFAULT_MFG) {
+ DefaultData.DefaultId = EFI_HII_DEFAULT_CLASS_MANUFACTURING;
+ InsertDefaultValue (BlockData, &DefaultData);
+ if (SmallestDefaultId > EFI_HII_DEFAULT_CLASS_MANUFACTURING) {
+ //
+ // Record the SmallestDefaultId and update the SmallestIdFromFlag.
+ //
+ SmallestDefaultId = EFI_HII_DEFAULT_CLASS_MANUFACTURING;
+ SmallestIdFromFlag = TRUE;
+ }
+ }
+
+ if (SmallestIdFromFlag) {
+ //
+ // When smallest default Id is given by the flag of oneofOption, set this option value for other default Id in the DefaultId list.
+ //
+ DefaultData.Type = DefaultValueFromOtherDefault;
+ //
+ // Set default value for other default id in the DefaultId list.
+ //
+ for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {
+ DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);
+ DefaultData.DefaultId = DefaultDataPtr->DefaultId;
+ InsertDefaultValue (BlockData, &DefaultData);
+ }
+ }
+ }
+
+ //
+ // 2. Set as the default value when this is the first option.
+ // The first oneof option value will be used as default value when no default value is specified.
+ //
+ if (FirstOneOfOption) {
+ // This flag is used to specify whether this option is the first. Set it to FALSE for the following options.
+ FirstOneOfOption = FALSE;
+
//
+ // Prepare new DefaultValue
+ //
+ DefaultData.Type = DefaultValueFromDefault;
+ CopyMem (&DefaultData.Value, &IfrOneOfOption->Value, IfrOneOfOption->Header.Length - OFFSET_OF (EFI_IFR_ONE_OF_OPTION, Value));
for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {
- DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);
- DefaultData.DefaultId = DefaultDataPtr->DefaultId;
+ DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);
+ DefaultData.DefaultId = DefaultDataPtr->DefaultId;
InsertDefaultValue (BlockData, &DefaultData);
}
}
- }
- //
- // 2. Set as the default value when this is the first option.
- // The first oneof option value will be used as default value when no default value is specified.
- //
- if (FirstOneOfOption) {
- // This flag is used to specify whether this option is the first. Set it to FALSE for the following options.
- FirstOneOfOption = FALSE;
+ break;
+ case EFI_IFR_DEFAULT_OP:
//
- // Prepare new DefaultValue
+ // Update Current BlockData to the default value.
//
- DefaultData.Type = DefaultValueFromDefault;
- CopyMem (&DefaultData.Value, &IfrOneOfOption->Value, IfrOneOfOption->Header.Length - OFFSET_OF (EFI_IFR_ONE_OF_OPTION, Value));
- for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {
- DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);
- DefaultData.DefaultId = DefaultDataPtr->DefaultId;
- InsertDefaultValue (BlockData, &DefaultData);
+ if ((BlockData == NULL) || (BlockData->Scope == 0)) {
+ //
+ // No matched block data is ignored.
+ //
+ break;
}
- }
- break;
- case EFI_IFR_DEFAULT_OP:
- //
- // Update Current BlockData to the default value.
- //
- if (BlockData == NULL || BlockData->Scope == 0) {
//
- // No matched block data is ignored.
+ // Get the DefaultId
//
- break;
- }
+ IfrDefault = (EFI_IFR_DEFAULT *)IfrOpHdr;
+ VarDefaultId = IfrDefault->DefaultId;
+ //
+ // Prepare new DefaultValue
+ //
+ DefaultData.Type = DefaultValueFromOpcode;
+ DefaultData.DefaultId = VarDefaultId;
+ if (QuestionReferBitField) {
+ CopyMem (&DefaultData.Value.u32, &IfrDefault->Value.u32, sizeof (UINT32));
+ } else {
+ CopyMem (&DefaultData.Value, &IfrDefault->Value, IfrDefault->Header.Length - OFFSET_OF (EFI_IFR_DEFAULT, Value));
+ }
- //
- // Get the DefaultId
- //
- IfrDefault = (EFI_IFR_DEFAULT *) IfrOpHdr;
- VarDefaultId = IfrDefault->DefaultId;
- //
- // Prepare new DefaultValue
- //
- DefaultData.Type = DefaultValueFromOpcode;
- DefaultData.DefaultId = VarDefaultId;
- if (QuestionReferBitField) {
- CopyMem (&DefaultData.Value.u32, &IfrDefault->Value.u32, sizeof (UINT32));
- } else {
- CopyMem (&DefaultData.Value, &IfrDefault->Value, IfrDefault->Header.Length - OFFSET_OF (EFI_IFR_DEFAULT, Value));
- }
+ // If the value field is expression, set the cleaned flag.
+ if (IfrDefault->Type == EFI_IFR_TYPE_OTHER) {
+ DefaultData.Cleaned = TRUE;
+ }
- // If the value field is expression, set the cleaned flag.
- if (IfrDefault->Type == EFI_IFR_TYPE_OTHER) {
- DefaultData.Cleaned = TRUE;
- }
- //
- // Add DefaultValue into current BlockData
- //
- InsertDefaultValue (BlockData, &DefaultData);
+ //
+ // Add DefaultValue into current BlockData
+ //
+ InsertDefaultValue (BlockData, &DefaultData);
- //
- // Set default value for other default id in the DefaultId list.
- // when SmallestDefaultId == VarDefaultId means there are two defaults with same default Id.
- // If the two defaults are both from default opcode, use the first default as the default value of other default Id.
- // If one from flag and the other form default opcode, use the default opcode value as the default value of other default Id.
- //
- if ((SmallestDefaultId > VarDefaultId) || (SmallestDefaultId == VarDefaultId && !FromOtherDefaultOpcode)) {
- FromOtherDefaultOpcode = TRUE;
- SmallestDefaultId = VarDefaultId;
- for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {
- DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);
- if (DefaultDataPtr->DefaultId != DefaultData.DefaultId){
- DefaultData.Type = DefaultValueFromOtherDefault;
- DefaultData.DefaultId = DefaultDataPtr->DefaultId;
- InsertDefaultValue (BlockData, &DefaultData);
+ //
+ // Set default value for other default id in the DefaultId list.
+ // when SmallestDefaultId == VarDefaultId means there are two defaults with same default Id.
+ // If the two defaults are both from default opcode, use the first default as the default value of other default Id.
+ // If one from flag and the other form default opcode, use the default opcode value as the default value of other default Id.
+ //
+ if ((SmallestDefaultId > VarDefaultId) || ((SmallestDefaultId == VarDefaultId) && !FromOtherDefaultOpcode)) {
+ FromOtherDefaultOpcode = TRUE;
+ SmallestDefaultId = VarDefaultId;
+ for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {
+ DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);
+ if (DefaultDataPtr->DefaultId != DefaultData.DefaultId) {
+ DefaultData.Type = DefaultValueFromOtherDefault;
+ DefaultData.DefaultId = DefaultDataPtr->DefaultId;
+ InsertDefaultValue (BlockData, &DefaultData);
+ }
}
}
- }
- //
- // After insert the default value, reset the cleaned value for next
- // time used. If not set here, need to set the value before every time.
- // use it.
- //
- DefaultData.Cleaned = FALSE;
- break;
+ //
+ // After insert the default value, reset the cleaned value for next
+ // time used. If not set here, need to set the value before every time.
+ // use it.
+ //
+ DefaultData.Cleaned = FALSE;
+ break;
- case EFI_IFR_END_OP:
- //
- // End Opcode is for Var question.
- //
- QuestionReferBitField = FALSE;
- if (BlockData != NULL) {
- if (BlockData->Scope > 0) {
- BlockData->Scope--;
+ case EFI_IFR_END_OP:
+ //
+ // End Opcode is for Var question.
+ //
+ QuestionReferBitField = FALSE;
+ if (BlockData != NULL) {
+ if (BlockData->Scope > 0) {
+ BlockData->Scope--;
+ }
+
+ if (BlockData->Scope == 0) {
+ BlockData = NULL;
+ //
+ // when finishing parsing a question, clean the SmallestDefaultId and GetDefaultFromDefaultOpcode.
+ //
+ SmallestDefaultId = 0xFFFF;
+ FromOtherDefaultOpcode = FALSE;
+ }
}
- if (BlockData->Scope == 0) {
- BlockData = NULL;
- //
- // when finishing parsing a question, clean the SmallestDefaultId and GetDefaultFromDefaultOpcode.
- //
- SmallestDefaultId = 0xFFFF;
- FromOtherDefaultOpcode = FALSE;
+
+ break;
+
+ case EFI_IFR_GUID_OP:
+ if (CompareGuid ((EFI_GUID *)((UINT8 *)IfrOpHdr + sizeof (EFI_IFR_OP_HEADER)), &gEdkiiIfrBitVarstoreGuid)) {
+ QuestionReferBitField = TRUE;
}
- }
- break;
+ break;
- case EFI_IFR_GUID_OP:
- if (CompareGuid ((EFI_GUID *)((UINT8 *)IfrOpHdr + sizeof (EFI_IFR_OP_HEADER)), &gEdkiiIfrBitVarstoreGuid)) {
- QuestionReferBitField = TRUE;
- }
- break;
+ default:
+ if (BlockData != NULL) {
+ if (BlockData->Scope > 0) {
+ BlockData->Scope = (UINT8)(BlockData->Scope + IfrOpHdr->Scope);
+ }
- default:
- if (BlockData != NULL) {
- if (BlockData->Scope > 0) {
- BlockData->Scope = (UINT8) (BlockData->Scope + IfrOpHdr->Scope);
+ if (BlockData->Scope == 0) {
+ BlockData = NULL;
+ }
}
- if (BlockData->Scope == 0) {
- BlockData = NULL;
- }
- }
- break;
+ break;
}
IfrOffset += IfrOpHdr->Length;
@@ -3070,10 +3172,10 @@ ParseIfrData ( }
//
- //if Status == EFI_NOT_FOUND, just means the opcode is not required,not contain any error,
- //so set the Status to EFI_SUCCESS.
+ // if Status == EFI_NOT_FOUND, just means the opcode is not required,not contain any error,
+ // so set the Status to EFI_SUCCESS.
//
- if (Status == EFI_NOT_FOUND){
+ if (Status == EFI_NOT_FOUND) {
Status = EFI_SUCCESS;
}
@@ -3082,7 +3184,7 @@ Done: BlockData = BASE_CR (LinkData, IFR_BLOCK_DATA, Entry);
for (LinkDefault = BlockData->DefaultValueEntry.ForwardLink; LinkDefault != &BlockData->DefaultValueEntry; ) {
DefaultDataPtr = BASE_CR (LinkDefault, IFR_DEFAULT_DATA, Entry);
- LinkDefault = LinkDefault->ForwardLink;
+ LinkDefault = LinkDefault->ForwardLink;
if (DefaultDataPtr->Cleaned == TRUE) {
RemoveEntryList (&DefaultDataPtr->Entry);
FreePool (DefaultDataPtr);
@@ -3103,30 +3205,31 @@ Done: **/
IFR_BLOCK_DATA *
GetBlockElement (
- IN EFI_STRING ConfigRequest,
- OUT EFI_STRING *Progress
+ IN EFI_STRING ConfigRequest,
+ OUT EFI_STRING *Progress
)
{
- EFI_STRING StringPtr;
- IFR_BLOCK_DATA *BlockData;
- IFR_BLOCK_DATA *RequestBlockArray;
- EFI_STATUS Status;
- UINT8 *TmpBuffer;
- UINT16 Offset;
- UINT16 Width;
- LIST_ENTRY *Link;
- IFR_BLOCK_DATA *NextBlockData;
- UINTN Length;
+ EFI_STRING StringPtr;
+ IFR_BLOCK_DATA *BlockData;
+ IFR_BLOCK_DATA *RequestBlockArray;
+ EFI_STATUS Status;
+ UINT8 *TmpBuffer;
+ UINT16 Offset;
+ UINT16 Width;
+ LIST_ENTRY *Link;
+ IFR_BLOCK_DATA *NextBlockData;
+ UINTN Length;
TmpBuffer = NULL;
//
// Init RequestBlockArray
//
- RequestBlockArray = (IFR_BLOCK_DATA *) AllocateZeroPool (sizeof (IFR_BLOCK_DATA));
+ RequestBlockArray = (IFR_BLOCK_DATA *)AllocateZeroPool (sizeof (IFR_BLOCK_DATA));
if (RequestBlockArray == NULL) {
goto Done;
}
+
InitializeListHead (&RequestBlockArray->Entry);
//
@@ -3144,7 +3247,7 @@ GetBlockElement ( //
// Skip the OFFSET string
//
- *Progress = StringPtr;
+ *Progress = StringPtr;
StringPtr += StrLen (L"&OFFSET=");
//
// Get Offset
@@ -3153,6 +3256,7 @@ GetBlockElement ( if (EFI_ERROR (Status)) {
goto Done;
}
+
Offset = 0;
CopyMem (
&Offset,
@@ -3165,6 +3269,7 @@ GetBlockElement ( if (StrnCmp (StringPtr, L"&WIDTH=", StrLen (L"&WIDTH=")) != 0) {
goto Done;
}
+
StringPtr += StrLen (L"&WIDTH=");
//
@@ -3174,6 +3279,7 @@ GetBlockElement ( if (EFI_ERROR (Status)) {
goto Done;
}
+
Width = 0;
CopyMem (
&Width,
@@ -3183,17 +3289,18 @@ GetBlockElement ( FreePool (TmpBuffer);
StringPtr += Length;
- if (*StringPtr != 0 && *StringPtr != L'&') {
+ if ((*StringPtr != 0) && (*StringPtr != L'&')) {
goto Done;
}
//
// Set Block Data
//
- BlockData = (IFR_BLOCK_DATA *) AllocateZeroPool (sizeof (IFR_BLOCK_DATA));
+ BlockData = (IFR_BLOCK_DATA *)AllocateZeroPool (sizeof (IFR_BLOCK_DATA));
if (BlockData == NULL) {
goto Done;
}
+
BlockData->Offset = Offset;
BlockData->Width = Width;
InsertBlockData (&RequestBlockArray->Entry, &BlockData);
@@ -3211,12 +3318,14 @@ GetBlockElement ( if (EFI_ERROR (Status)) {
goto Done;
}
+
FreePool (TmpBuffer);
StringPtr += Length;
- if (*StringPtr != 0 && *StringPtr != L'&') {
+ if ((*StringPtr != 0) && (*StringPtr != L'&')) {
goto Done;
}
}
+
//
// If '\0', parsing is finished.
//
@@ -3230,16 +3339,18 @@ GetBlockElement ( //
Link = RequestBlockArray->Entry.ForwardLink;
while ((Link != &RequestBlockArray->Entry) && (Link->ForwardLink != &RequestBlockArray->Entry)) {
- BlockData = BASE_CR (Link, IFR_BLOCK_DATA, Entry);
+ BlockData = BASE_CR (Link, IFR_BLOCK_DATA, Entry);
NextBlockData = BASE_CR (Link->ForwardLink, IFR_BLOCK_DATA, Entry);
if ((NextBlockData->Offset >= BlockData->Offset) && (NextBlockData->Offset <= (BlockData->Offset + BlockData->Width))) {
if ((NextBlockData->Offset + NextBlockData->Width) > (BlockData->Offset + BlockData->Width)) {
- BlockData->Width = (UINT16) (NextBlockData->Offset + NextBlockData->Width - BlockData->Offset);
+ BlockData->Width = (UINT16)(NextBlockData->Offset + NextBlockData->Width - BlockData->Offset);
}
+
RemoveEntryList (Link->ForwardLink);
FreePool (NextBlockData);
continue;
}
+
Link = Link->ForwardLink;
}
@@ -3272,25 +3383,26 @@ Done: **/
IFR_BLOCK_DATA *
GetNameElement (
- IN EFI_STRING ConfigRequest,
- OUT EFI_STRING *Progress
+ IN EFI_STRING ConfigRequest,
+ OUT EFI_STRING *Progress
)
{
- EFI_STRING StringPtr;
- EFI_STRING NextTag;
- IFR_BLOCK_DATA *BlockData;
- IFR_BLOCK_DATA *RequestBlockArray;
- BOOLEAN HasValue;
+ EFI_STRING StringPtr;
+ EFI_STRING NextTag;
+ IFR_BLOCK_DATA *BlockData;
+ IFR_BLOCK_DATA *RequestBlockArray;
+ BOOLEAN HasValue;
StringPtr = ConfigRequest;
//
// Init RequestBlockArray
//
- RequestBlockArray = (IFR_BLOCK_DATA *) AllocateZeroPool (sizeof (IFR_BLOCK_DATA));
+ RequestBlockArray = (IFR_BLOCK_DATA *)AllocateZeroPool (sizeof (IFR_BLOCK_DATA));
if (RequestBlockArray == NULL) {
goto Done;
}
+
InitializeListHead (&RequestBlockArray->Entry);
//
@@ -3303,8 +3415,7 @@ GetNameElement ( // <BlockName> ::= &'Name***=***
//
while (StringPtr != NULL && *StringPtr == L'&') {
-
- *Progress = StringPtr;
+ *Progress = StringPtr;
//
// Skip the L"&" string
//
@@ -3321,7 +3432,7 @@ GetNameElement ( //
// Set Block Data
//
- BlockData = (IFR_BLOCK_DATA *) AllocateZeroPool (sizeof (IFR_BLOCK_DATA));
+ BlockData = (IFR_BLOCK_DATA *)AllocateZeroPool (sizeof (IFR_BLOCK_DATA));
if (BlockData == NULL) {
goto Done;
}
@@ -3329,7 +3440,7 @@ GetNameElement ( //
// Get Name
//
- BlockData->Name = AllocateCopyPool(StrSize (StringPtr), StringPtr);
+ BlockData->Name = AllocateCopyPool (StrSize (StringPtr), StringPtr);
InsertBlockData (&RequestBlockArray->Entry, &BlockData);
if (HasValue) {
@@ -3361,6 +3472,7 @@ Done: if (BlockData->Name != NULL) {
FreePool (BlockData->Name);
}
+
FreePool (BlockData);
}
@@ -3383,18 +3495,18 @@ Done: **/
BOOLEAN
GenerateConfigRequest (
- IN CHAR16 *ConfigHdr,
- IN IFR_VARSTORAGE_DATA *VarStorageData,
- OUT EFI_STATUS *Status,
- IN OUT EFI_STRING *ConfigRequest
+ IN CHAR16 *ConfigHdr,
+ IN IFR_VARSTORAGE_DATA *VarStorageData,
+ OUT EFI_STATUS *Status,
+ IN OUT EFI_STRING *ConfigRequest
)
{
- BOOLEAN DataExist;
- UINTN Length;
- LIST_ENTRY *Link;
- CHAR16 *FullConfigRequest;
- CHAR16 *StringPtr;
- IFR_BLOCK_DATA *BlockData;
+ BOOLEAN DataExist;
+ UINTN Length;
+ LIST_ENTRY *Link;
+ CHAR16 *FullConfigRequest;
+ CHAR16 *StringPtr;
+ IFR_BLOCK_DATA *BlockData;
//
// Append VarStorageData BlockEntry into *Request string
@@ -3434,6 +3546,7 @@ GenerateConfigRequest ( Length = Length + (8 + 4 + 7 + 4);
}
}
+
//
// No any request block data is found. The request string can't be constructed.
//
@@ -3450,6 +3563,7 @@ GenerateConfigRequest ( *Status = EFI_OUT_OF_RESOURCES;
return FALSE;
}
+
StringPtr = FullConfigRequest;
//
@@ -3472,7 +3586,7 @@ GenerateConfigRequest ( (1 + StrLen (BlockData->Name) + 1) * sizeof (CHAR16),
L"&%s",
BlockData->Name
- );
+ );
} else {
//
// Append &OFFSET=XXXX&WIDTH=YYYY\0
@@ -3483,10 +3597,12 @@ GenerateConfigRequest ( L"&OFFSET=%04X&WIDTH=%04X",
BlockData->Offset,
BlockData->Width
- );
+ );
}
+
StringPtr += StrLen (StringPtr);
}
+
//
// Set to the got full request string.
//
@@ -3495,6 +3611,7 @@ GenerateConfigRequest ( if (*ConfigRequest != NULL) {
FreePool (*ConfigRequest);
}
+
*ConfigRequest = FullConfigRequest;
return TRUE;
@@ -3512,16 +3629,16 @@ GenerateConfigRequest ( **/
EFI_STATUS
GenerateHdr (
- IN IFR_VARSTORAGE_DATA *VarStorageData,
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
- OUT EFI_STRING *ConfigHdr
+ IN IFR_VARSTORAGE_DATA *VarStorageData,
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
+ OUT EFI_STRING *ConfigHdr
)
{
- EFI_STRING GuidStr;
- EFI_STRING NameStr;
- EFI_STRING PathStr;
- UINTN Length;
- EFI_STATUS Status;
+ EFI_STRING GuidStr;
+ EFI_STRING NameStr;
+ EFI_STRING PathStr;
+ UINTN Length;
+ EFI_STATUS Status;
Status = EFI_SUCCESS;
NameStr = NULL;
@@ -3531,16 +3648,17 @@ GenerateHdr ( //
// Construct <ConfigHdr> : "GUID=...&NAME=...&PATH=..." by VarStorageData Guid, Name and DriverHandle
//
- GenerateSubStr (L"GUID=", sizeof (EFI_GUID), (VOID *) &VarStorageData->Guid, 1, &GuidStr);
+ GenerateSubStr (L"GUID=", sizeof (EFI_GUID), (VOID *)&VarStorageData->Guid, 1, &GuidStr);
if (VarStorageData->Name != NULL) {
- GenerateSubStr (L"NAME=", StrLen (VarStorageData->Name) * sizeof (CHAR16), (VOID *) VarStorageData->Name, 2, &NameStr);
+ GenerateSubStr (L"NAME=", StrLen (VarStorageData->Name) * sizeof (CHAR16), (VOID *)VarStorageData->Name, 2, &NameStr);
} else {
GenerateSubStr (L"NAME=", 0, NULL, 2, &NameStr);
}
+
GenerateSubStr (
L"PATH=",
- GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) DevicePath),
- (VOID *) DevicePath,
+ GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *)DevicePath),
+ (VOID *)DevicePath,
1,
&PathStr
);
@@ -3554,11 +3672,13 @@ GenerateHdr ( Status = EFI_OUT_OF_RESOURCES;
goto Done;
}
+
StrCpyS (*ConfigHdr, Length, GuidStr);
StrCatS (*ConfigHdr, Length, NameStr);
if (VarStorageData->Name == NULL) {
StrCatS (*ConfigHdr, Length, L"&");
}
+
StrCatS (*ConfigHdr, Length, PathStr);
//
@@ -3582,7 +3702,6 @@ Done: return Status;
}
-
/**
Update the default value in the block data which is used as bit var store.
@@ -3609,24 +3728,25 @@ Done: **/
VOID
UpdateDefaultValue (
- IN LIST_ENTRY *BlockLink
-)
+ IN LIST_ENTRY *BlockLink
+ )
{
- LIST_ENTRY *Link;
- LIST_ENTRY *ListEntry;
- LIST_ENTRY *LinkDefault;
- IFR_BLOCK_DATA *BlockData;
- IFR_DEFAULT_DATA *DefaultValueData;
- UINTN StartBit;
- UINTN EndBit;
- UINT32 BitFieldDefaultValue;
+ LIST_ENTRY *Link;
+ LIST_ENTRY *ListEntry;
+ LIST_ENTRY *LinkDefault;
+ IFR_BLOCK_DATA *BlockData;
+ IFR_DEFAULT_DATA *DefaultValueData;
+ UINTN StartBit;
+ UINTN EndBit;
+ UINT32 BitFieldDefaultValue;
for ( Link = BlockLink->ForwardLink; Link != BlockLink; Link = Link->ForwardLink) {
BlockData = BASE_CR (Link, IFR_BLOCK_DATA, Entry);
- if (!BlockData ->IsBitVar) {
+ if (!BlockData->IsBitVar) {
continue;
}
- ListEntry = &BlockData->DefaultValueEntry;
+
+ ListEntry = &BlockData->DefaultValueEntry;
//
// Update the default value in the block data with all existing default id.
//
@@ -3635,11 +3755,11 @@ UpdateDefaultValue ( // Get the default data, and the value of the default data is for some field in the block.
// Note: Default value for bit field question is stored as UINT32.
//
- DefaultValueData = BASE_CR (LinkDefault, IFR_DEFAULT_DATA, Entry);
+ DefaultValueData = BASE_CR (LinkDefault, IFR_DEFAULT_DATA, Entry);
BitFieldDefaultValue = DefaultValueData->Value.u32;
StartBit = BlockData->BitOffset % 8;
- EndBit = StartBit + BlockData->BitWidth - 1;
+ EndBit = StartBit + BlockData->BitWidth - 1;
//
// Set the bit field default value to related bit filed, then we will got the new default vaule for the block data.
@@ -3688,36 +3808,37 @@ the first byte value of block. **/
VOID
MergeBlockDefaultValue (
- IN OUT IFR_BLOCK_DATA *FirstBlock,
- IN OUT IFR_BLOCK_DATA *SecondBlock
-)
+ IN OUT IFR_BLOCK_DATA *FirstBlock,
+ IN OUT IFR_BLOCK_DATA *SecondBlock
+ )
{
- LIST_ENTRY *FirstListEntry;
- LIST_ENTRY *SecondListEntry;
- LIST_ENTRY *FirstDefaultLink;
- LIST_ENTRY *SecondDefaultLink;
- IFR_DEFAULT_DATA *FirstDefaultValueData;
- IFR_DEFAULT_DATA *SecondDefaultValueData;
- UINT32 *FirstDefaultValue;
- UINT32 *SecondDefaultValue;
- UINT64 TotalValue;
- UINT64 ShiftedValue;
- UINT16 OffsetShift;
+ LIST_ENTRY *FirstListEntry;
+ LIST_ENTRY *SecondListEntry;
+ LIST_ENTRY *FirstDefaultLink;
+ LIST_ENTRY *SecondDefaultLink;
+ IFR_DEFAULT_DATA *FirstDefaultValueData;
+ IFR_DEFAULT_DATA *SecondDefaultValueData;
+ UINT32 *FirstDefaultValue;
+ UINT32 *SecondDefaultValue;
+ UINT64 TotalValue;
+ UINT64 ShiftedValue;
+ UINT16 OffsetShift;
FirstListEntry = &FirstBlock->DefaultValueEntry;
for (FirstDefaultLink = FirstListEntry->ForwardLink; FirstDefaultLink != FirstListEntry; FirstDefaultLink = FirstDefaultLink->ForwardLink) {
FirstDefaultValueData = BASE_CR (FirstDefaultLink, IFR_DEFAULT_DATA, Entry);
- SecondListEntry = &SecondBlock->DefaultValueEntry;
+ SecondListEntry = &SecondBlock->DefaultValueEntry;
for (SecondDefaultLink = SecondListEntry->ForwardLink; SecondDefaultLink != SecondListEntry; SecondDefaultLink = SecondDefaultLink->ForwardLink) {
SecondDefaultValueData = BASE_CR (SecondDefaultLink, IFR_DEFAULT_DATA, Entry);
if (FirstDefaultValueData->DefaultId != SecondDefaultValueData->DefaultId) {
continue;
}
+
//
// Find default value with same default id in the two blocks.
// Note: Default value for bit field question is stored as UINT32 type.
//
- FirstDefaultValue = &FirstDefaultValueData->Value.u32;
+ FirstDefaultValue = &FirstDefaultValueData->Value.u32;
SecondDefaultValue = &SecondDefaultValueData->Value.u32;
//
// 1. Get the default value of the whole blcok that can just cover FirstBlock and SecondBlock.
@@ -3725,17 +3846,17 @@ MergeBlockDefaultValue ( // on the offset and width of FirstBlock and SecondBlock.
//
if (FirstBlock->Offset > SecondBlock->Offset) {
- OffsetShift = FirstBlock->Offset - SecondBlock->Offset;
- ShiftedValue = LShiftU64 ((UINT64) (*FirstDefaultValue), OffsetShift * 8);
- TotalValue = ShiftedValue | (UINT64) (*SecondDefaultValue);
- *SecondDefaultValue = (UINT32) BitFieldRead64 (TotalValue, 0, SecondBlock->Width * 8 -1);
- *FirstDefaultValue = (UINT32) BitFieldRead64 (TotalValue, OffsetShift * 8, OffsetShift * 8 + FirstBlock->Width *8 -1);
+ OffsetShift = FirstBlock->Offset - SecondBlock->Offset;
+ ShiftedValue = LShiftU64 ((UINT64)(*FirstDefaultValue), OffsetShift * 8);
+ TotalValue = ShiftedValue | (UINT64)(*SecondDefaultValue);
+ *SecondDefaultValue = (UINT32)BitFieldRead64 (TotalValue, 0, SecondBlock->Width * 8 -1);
+ *FirstDefaultValue = (UINT32)BitFieldRead64 (TotalValue, OffsetShift * 8, OffsetShift * 8 + FirstBlock->Width *8 -1);
} else {
- OffsetShift = SecondBlock->Offset -FirstBlock->Offset;
- ShiftedValue = LShiftU64 ((UINT64) (*SecondDefaultValue), OffsetShift * 8);
- TotalValue = ShiftedValue | (UINT64) (*FirstDefaultValue);
- *FirstDefaultValue = (UINT32) BitFieldRead64 (TotalValue, 0, FirstBlock->Width * 8 -1);
- *SecondDefaultValue = (UINT32) BitFieldRead64 (TotalValue, OffsetShift * 8, OffsetShift * 8 + SecondBlock->Width *8 -1);
+ OffsetShift = SecondBlock->Offset -FirstBlock->Offset;
+ ShiftedValue = LShiftU64 ((UINT64)(*SecondDefaultValue), OffsetShift * 8);
+ TotalValue = ShiftedValue | (UINT64)(*FirstDefaultValue);
+ *FirstDefaultValue = (UINT32)BitFieldRead64 (TotalValue, 0, FirstBlock->Width * 8 -1);
+ *SecondDefaultValue = (UINT32)BitFieldRead64 (TotalValue, OffsetShift * 8, OffsetShift * 8 + SecondBlock->Width *8 -1);
}
}
}
@@ -3750,13 +3871,13 @@ Update the default value in the block data which used as Bit VarStore **/
VOID
UpdateBlockDataArray (
- IN LIST_ENTRY *BlockLink
-)
+ IN LIST_ENTRY *BlockLink
+ )
{
- LIST_ENTRY *Link;
- LIST_ENTRY *TempLink;
- IFR_BLOCK_DATA *BlockData;
- IFR_BLOCK_DATA *NextBlockData;
+ LIST_ENTRY *Link;
+ LIST_ENTRY *TempLink;
+ IFR_BLOCK_DATA *BlockData;
+ IFR_BLOCK_DATA *NextBlockData;
//
// 1. Update default value in BitVar block data.
@@ -3773,14 +3894,16 @@ UpdateBlockDataArray ( //
for (Link = BlockLink->ForwardLink; Link != BlockLink; Link = Link->ForwardLink) {
BlockData = BASE_CR (Link, IFR_BLOCK_DATA, Entry);
- if (!BlockData ->IsBitVar) {
+ if (!BlockData->IsBitVar) {
continue;
}
+
for (TempLink = Link->ForwardLink; TempLink != BlockLink; TempLink = TempLink->ForwardLink) {
NextBlockData = BASE_CR (TempLink, IFR_BLOCK_DATA, Entry);
- if (!NextBlockData->IsBitVar || NextBlockData->Offset >= BlockData->Offset + BlockData->Width || BlockData->Offset >= NextBlockData->Offset + NextBlockData->Width) {
+ if (!NextBlockData->IsBitVar || (NextBlockData->Offset >= BlockData->Offset + BlockData->Width) || (BlockData->Offset >= NextBlockData->Offset + NextBlockData->Width)) {
continue;
}
+
//
// Find two blocks are used as bit VarStore and have overlap region, so need to merge default value of these two blocks.
//
@@ -3803,27 +3926,27 @@ UpdateBlockDataArray ( **/
EFI_STATUS
GenerateAltConfigResp (
- IN EFI_HII_HANDLE HiiHandle,
- IN CHAR16 *ConfigHdr,
- IN IFR_VARSTORAGE_DATA *VarStorageData,
- IN IFR_DEFAULT_DATA *DefaultIdArray,
- IN OUT EFI_STRING *DefaultAltCfgResp
+ IN EFI_HII_HANDLE HiiHandle,
+ IN CHAR16 *ConfigHdr,
+ IN IFR_VARSTORAGE_DATA *VarStorageData,
+ IN IFR_DEFAULT_DATA *DefaultIdArray,
+ IN OUT EFI_STRING *DefaultAltCfgResp
)
{
- BOOLEAN DataExist;
- UINTN Length;
- LIST_ENTRY *Link;
- LIST_ENTRY *LinkData;
- LIST_ENTRY *LinkDefault;
- LIST_ENTRY *ListEntry;
- CHAR16 *StringPtr;
- IFR_BLOCK_DATA *BlockData;
- IFR_DEFAULT_DATA *DefaultId;
- IFR_DEFAULT_DATA *DefaultValueData;
- UINTN Width;
- UINT8 *TmpBuffer;
- CHAR16 *DefaultString;
- UINTN StrSize;
+ BOOLEAN DataExist;
+ UINTN Length;
+ LIST_ENTRY *Link;
+ LIST_ENTRY *LinkData;
+ LIST_ENTRY *LinkDefault;
+ LIST_ENTRY *ListEntry;
+ CHAR16 *StringPtr;
+ IFR_BLOCK_DATA *BlockData;
+ IFR_DEFAULT_DATA *DefaultId;
+ IFR_DEFAULT_DATA *DefaultValueData;
+ UINTN Width;
+ UINT8 *TmpBuffer;
+ CHAR16 *DefaultString;
+ UINTN StrSize;
BlockData = NULL;
DataExist = FALSE;
@@ -3845,12 +3968,13 @@ GenerateAltConfigResp ( for (LinkData = VarStorageData->BlockEntry.ForwardLink; LinkData != &VarStorageData->BlockEntry; LinkData = LinkData->ForwardLink) {
BlockData = BASE_CR (LinkData, IFR_BLOCK_DATA, Entry);
- ListEntry = &BlockData->DefaultValueEntry;
+ ListEntry = &BlockData->DefaultValueEntry;
for (LinkDefault = ListEntry->ForwardLink; LinkDefault != ListEntry; LinkDefault = LinkDefault->ForwardLink) {
DefaultValueData = BASE_CR (LinkDefault, IFR_DEFAULT_DATA, Entry);
if (DefaultValueData->DefaultId != DefaultId->DefaultId) {
continue;
}
+
if (VarStorageData->Type == EFI_HII_VARSTORE_NAME_VALUE) {
//
// Add length for "&Name1=zzzzzzzzzzzz"
@@ -3864,6 +3988,7 @@ GenerateAltConfigResp ( //
Length += (8 + 4 + 7 + 4 + 7 + BlockData->Width * 2);
}
+
DataExist = TRUE;
}
}
@@ -3883,6 +4008,7 @@ GenerateAltConfigResp ( if (*DefaultAltCfgResp == NULL) {
return EFI_OUT_OF_RESOURCES;
}
+
StringPtr = *DefaultAltCfgResp;
//
@@ -3908,12 +4034,13 @@ GenerateAltConfigResp ( for (LinkData = VarStorageData->BlockEntry.ForwardLink; LinkData != &VarStorageData->BlockEntry; LinkData = LinkData->ForwardLink) {
BlockData = BASE_CR (LinkData, IFR_BLOCK_DATA, Entry);
- ListEntry = &BlockData->DefaultValueEntry;
+ ListEntry = &BlockData->DefaultValueEntry;
for (LinkDefault = ListEntry->ForwardLink; LinkDefault != ListEntry; LinkDefault = LinkDefault->ForwardLink) {
DefaultValueData = BASE_CR (LinkDefault, IFR_DEFAULT_DATA, Entry);
if (DefaultValueData->DefaultId != DefaultId->DefaultId) {
continue;
}
+
if (VarStorageData->Type == EFI_HII_VARSTORE_NAME_VALUE) {
UnicodeSPrint (
StringPtr,
@@ -3936,26 +4063,29 @@ GenerateAltConfigResp ( );
StringPtr += StrLen (StringPtr);
}
+
Width = BlockData->Width;
//
// Convert Value to a hex string in "%x" format
// NOTE: This is in the opposite byte that GUID and PATH use
//
- if (BlockData->OpCode == EFI_IFR_STRING_OP){
- DefaultString = InternalGetString(HiiHandle, DefaultValueData->Value.string);
- TmpBuffer = AllocateZeroPool (Width);
+ if (BlockData->OpCode == EFI_IFR_STRING_OP) {
+ DefaultString = InternalGetString (HiiHandle, DefaultValueData->Value.string);
+ TmpBuffer = AllocateZeroPool (Width);
ASSERT (TmpBuffer != NULL);
if (DefaultString != NULL) {
- StrSize = StrLen(DefaultString)* sizeof (CHAR16);
+ StrSize = StrLen (DefaultString)* sizeof (CHAR16);
if (StrSize > Width) {
StrSize = Width;
}
- CopyMem (TmpBuffer, (UINT8 *) DefaultString, StrSize);
+
+ CopyMem (TmpBuffer, (UINT8 *)DefaultString, StrSize);
}
} else {
- TmpBuffer = (UINT8 *) &(DefaultValueData->Value);
+ TmpBuffer = (UINT8 *)&(DefaultValueData->Value);
}
- for (; Width > 0 && (TmpBuffer != NULL); Width--) {
+
+ for ( ; Width > 0 && (TmpBuffer != NULL); Width--) {
UnicodeValueToStringS (
StringPtr,
Length * sizeof (CHAR16) - ((UINTN)StringPtr - (UINTN)*DefaultAltCfgResp),
@@ -3965,13 +4095,15 @@ GenerateAltConfigResp ( );
StringPtr += StrnLenS (StringPtr, Length - ((UINTN)StringPtr - (UINTN)*DefaultAltCfgResp) / sizeof (CHAR16));
}
- if (DefaultString != NULL){
- FreePool(DefaultString);
+
+ if (DefaultString != NULL) {
+ FreePool (DefaultString);
DefaultString = NULL;
}
- if (BlockData->OpCode == EFI_IFR_STRING_OP && TmpBuffer != NULL) {
- FreePool(TmpBuffer);
- TmpBuffer = NULL;
+
+ if ((BlockData->OpCode == EFI_IFR_STRING_OP) && (TmpBuffer != NULL)) {
+ FreePool (TmpBuffer);
+ TmpBuffer = NULL;
}
}
}
@@ -4028,28 +4160,28 @@ GenerateAltConfigResp ( EFI_STATUS
EFIAPI
GetFullStringFromHiiFormPackages (
- IN HII_DATABASE_RECORD *DataBaseRecord,
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
- IN OUT EFI_STRING *Request,
- IN OUT EFI_STRING *AltCfgResp,
- OUT EFI_STRING *PointerProgress OPTIONAL
+ IN HII_DATABASE_RECORD *DataBaseRecord,
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
+ IN OUT EFI_STRING *Request,
+ IN OUT EFI_STRING *AltCfgResp,
+ OUT EFI_STRING *PointerProgress OPTIONAL
)
{
- EFI_STATUS Status;
- UINT8 *HiiFormPackage;
- UINTN PackageSize;
- IFR_BLOCK_DATA *RequestBlockArray;
- IFR_BLOCK_DATA *BlockData;
- IFR_DEFAULT_DATA *DefaultValueData;
- IFR_DEFAULT_DATA *DefaultId;
- IFR_DEFAULT_DATA *DefaultIdArray;
- IFR_VARSTORAGE_DATA *VarStorageData;
- EFI_STRING DefaultAltCfgResp;
- EFI_STRING ConfigHdr;
- EFI_STRING StringPtr;
- EFI_STRING Progress;
-
- if (DataBaseRecord == NULL || DevicePath == NULL || Request == NULL || AltCfgResp == NULL) {
+ EFI_STATUS Status;
+ UINT8 *HiiFormPackage;
+ UINTN PackageSize;
+ IFR_BLOCK_DATA *RequestBlockArray;
+ IFR_BLOCK_DATA *BlockData;
+ IFR_DEFAULT_DATA *DefaultValueData;
+ IFR_DEFAULT_DATA *DefaultId;
+ IFR_DEFAULT_DATA *DefaultIdArray;
+ IFR_VARSTORAGE_DATA *VarStorageData;
+ EFI_STRING DefaultAltCfgResp;
+ EFI_STRING ConfigHdr;
+ EFI_STRING StringPtr;
+ EFI_STRING Progress;
+
+ if ((DataBaseRecord == NULL) || (DevicePath == NULL) || (Request == NULL) || (AltCfgResp == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -4080,28 +4212,33 @@ GetFullStringFromHiiFormPackages ( // Jump <ConfigHdr>
//
if (StrnCmp (StringPtr, L"GUID=", StrLen (L"GUID=")) != 0) {
- Status = EFI_INVALID_PARAMETER;
+ Status = EFI_INVALID_PARAMETER;
goto Done;
}
+
StringPtr += StrLen (L"GUID=");
while (*StringPtr != L'\0' && StrnCmp (StringPtr, L"&NAME=", StrLen (L"&NAME=")) != 0) {
StringPtr++;
}
+
if (*StringPtr == L'\0') {
Status = EFI_INVALID_PARAMETER;
goto Done;
}
+
StringPtr += StrLen (L"&NAME=");
while (*StringPtr != L'\0' && StrnCmp (StringPtr, L"&PATH=", StrLen (L"&PATH=")) != 0) {
StringPtr++;
}
+
if (*StringPtr == L'\0') {
Status = EFI_INVALID_PARAMETER;
goto Done;
}
+
StringPtr += StrLen (L"&PATH=");
while (*StringPtr != L'\0' && *StringPtr != L'&') {
- StringPtr ++;
+ StringPtr++;
}
if (*StringPtr == L'\0') {
@@ -4117,9 +4254,9 @@ GetFullStringFromHiiFormPackages ( //
if (StringPtr != NULL) {
if (StrStr (StringPtr, L"&OFFSET=") != NULL) {
- RequestBlockArray = GetBlockElement(StringPtr, &Progress);
+ RequestBlockArray = GetBlockElement (StringPtr, &Progress);
} else {
- RequestBlockArray = GetNameElement(StringPtr, &Progress);
+ RequestBlockArray = GetNameElement (StringPtr, &Progress);
}
if (RequestBlockArray == NULL) {
@@ -4131,21 +4268,23 @@ GetFullStringFromHiiFormPackages ( //
// Initialize DefaultIdArray to store the map between DeaultId and DefaultName
//
- DefaultIdArray = (IFR_DEFAULT_DATA *) AllocateZeroPool (sizeof (IFR_DEFAULT_DATA));
+ DefaultIdArray = (IFR_DEFAULT_DATA *)AllocateZeroPool (sizeof (IFR_DEFAULT_DATA));
if (DefaultIdArray == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Done;
}
+
InitializeListHead (&DefaultIdArray->Entry);
//
// Initialize VarStorageData to store the var store Block and Default value information.
//
- VarStorageData = (IFR_VARSTORAGE_DATA *) AllocateZeroPool (sizeof (IFR_VARSTORAGE_DATA));
+ VarStorageData = (IFR_VARSTORAGE_DATA *)AllocateZeroPool (sizeof (IFR_VARSTORAGE_DATA));
if (VarStorageData == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Done;
}
+
InitializeListHead (&VarStorageData->Entry);
InitializeListHead (&VarStorageData->BlockEntry);
@@ -4156,13 +4295,15 @@ GetFullStringFromHiiFormPackages ( //
// Parse the opcode in form package to get the default setting.
//
- Status = ParseIfrData (DataBaseRecord->Handle,
- HiiFormPackage,
- (UINT32) PackageSize,
- *Request,
- RequestBlockArray,
- VarStorageData,
- DefaultIdArray);
+ Status = ParseIfrData (
+ DataBaseRecord->Handle,
+ HiiFormPackage,
+ (UINT32)PackageSize,
+ *Request,
+ RequestBlockArray,
+ VarStorageData,
+ DefaultIdArray
+ );
if (EFI_ERROR (Status)) {
goto Done;
}
@@ -4170,7 +4311,7 @@ GetFullStringFromHiiFormPackages ( //
// No requested varstore in IFR data and directly return
//
- if (VarStorageData->Type == 0 && VarStorageData->Name == NULL) {
+ if ((VarStorageData->Type == 0) && (VarStorageData->Name == NULL)) {
Status = EFI_SUCCESS;
goto Done;
}
@@ -4184,7 +4325,7 @@ GetFullStringFromHiiFormPackages ( }
if (RequestBlockArray == NULL) {
- if (!GenerateConfigRequest(ConfigHdr, VarStorageData, &Status, Request)) {
+ if (!GenerateConfigRequest (ConfigHdr, VarStorageData, &Status, Request)) {
goto Done;
}
}
@@ -4194,7 +4335,7 @@ GetFullStringFromHiiFormPackages ( // Go through all VarStorageData Entry and get the DefaultId array for each one
// Then construct them all to : ConfigHdr AltConfigHdr ConfigBody AltConfigHdr ConfigBody
//
- Status = GenerateAltConfigResp (DataBaseRecord->Handle,ConfigHdr, VarStorageData, DefaultIdArray, &DefaultAltCfgResp);
+ Status = GenerateAltConfigResp (DataBaseRecord->Handle, ConfigHdr, VarStorageData, DefaultIdArray, &DefaultAltCfgResp);
if (EFI_ERROR (Status)) {
goto Done;
}
@@ -4202,7 +4343,7 @@ GetFullStringFromHiiFormPackages ( //
// 5. Merge string into the input AltCfgResp if the input *AltCfgResp is not NULL.
//
- if (*AltCfgResp != NULL && DefaultAltCfgResp != NULL) {
+ if ((*AltCfgResp != NULL) && (DefaultAltCfgResp != NULL)) {
Status = MergeDefaultString (AltCfgResp, DefaultAltCfgResp);
FreePool (DefaultAltCfgResp);
} else if (*AltCfgResp == NULL) {
@@ -4220,6 +4361,7 @@ Done: if (BlockData->Name != NULL) {
FreePool (BlockData->Name);
}
+
FreePool (BlockData);
}
@@ -4236,6 +4378,7 @@ Done: if (BlockData->Name != NULL) {
FreePool (BlockData->Name);
}
+
//
// Free default value link array
//
@@ -4244,12 +4387,15 @@ Done: RemoveEntryList (&DefaultValueData->Entry);
FreePool (DefaultValueData);
}
+
FreePool (BlockData);
}
- if (VarStorageData ->Name != NULL) {
- FreePool (VarStorageData ->Name);
- VarStorageData ->Name = NULL;
+
+ if (VarStorageData->Name != NULL) {
+ FreePool (VarStorageData->Name);
+ VarStorageData->Name = NULL;
}
+
FreePool (VarStorageData);
}
@@ -4262,6 +4408,7 @@ Done: RemoveEntryList (&DefaultId->Entry);
FreePool (DefaultId);
}
+
FreePool (DefaultIdArray);
}
@@ -4327,11 +4474,11 @@ GetConfigRespFromEfiVarStore ( OUT EFI_STRING *AccessProgress
)
{
- EFI_STATUS Status;
- EFI_STRING VarStoreName;
- UINTN NameSize;
- UINT8 *VarStore;
- UINTN BufferSize;
+ EFI_STATUS Status;
+ EFI_STRING VarStoreName;
+ UINTN NameSize;
+ UINT8 *VarStore;
+ UINTN BufferSize;
Status = EFI_SUCCESS;
BufferSize = 0;
@@ -4339,14 +4486,14 @@ GetConfigRespFromEfiVarStore ( VarStoreName = NULL;
*AccessProgress = Request;
- NameSize = AsciiStrSize ((CHAR8 *)EfiVarStoreInfo->Name);
+ NameSize = AsciiStrSize ((CHAR8 *)EfiVarStoreInfo->Name);
VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));
if (VarStoreName == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Done;
}
- AsciiStrToUnicodeStrS ((CHAR8 *) EfiVarStoreInfo->Name, VarStoreName, NameSize);
+ AsciiStrToUnicodeStrS ((CHAR8 *)EfiVarStoreInfo->Name, VarStoreName, NameSize);
Status = gRT->GetVariable (VarStoreName, &EfiVarStoreInfo->Guid, NULL, &BufferSize, NULL);
if (Status != EFI_BUFFER_TOO_SMALL) {
@@ -4360,7 +4507,7 @@ GetConfigRespFromEfiVarStore ( goto Done;
}
- Status = HiiBlockToConfig(This, Request, VarStore, BufferSize, RequestResp, AccessProgress);
+ Status = HiiBlockToConfig (This, Request, VarStore, BufferSize, RequestResp, AccessProgress);
if (EFI_ERROR (Status)) {
goto Done;
}
@@ -4377,7 +4524,6 @@ Done: return Status;
}
-
/**
This function route the full request resp string for efi varstore.
@@ -4404,26 +4550,27 @@ RouteConfigRespForEfiVarStore ( OUT EFI_STRING *Result
)
{
- EFI_STATUS Status;
- EFI_STRING VarStoreName;
- UINTN NameSize;
- UINT8 *VarStore;
- UINTN BufferSize;
- UINTN BlockSize;
+ EFI_STATUS Status;
+ EFI_STRING VarStoreName;
+ UINTN NameSize;
+ UINT8 *VarStore;
+ UINTN BufferSize;
+ UINTN BlockSize;
Status = EFI_SUCCESS;
BufferSize = 0;
VarStore = NULL;
VarStoreName = NULL;
- *Result = RequestResp;
+ *Result = RequestResp;
- NameSize = AsciiStrSize ((CHAR8 *)EfiVarStoreInfo->Name);
+ NameSize = AsciiStrSize ((CHAR8 *)EfiVarStoreInfo->Name);
VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));
if (VarStoreName == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Done;
}
- AsciiStrToUnicodeStrS ((CHAR8 *) EfiVarStoreInfo->Name, VarStoreName, NameSize);
+
+ AsciiStrToUnicodeStrS ((CHAR8 *)EfiVarStoreInfo->Name, VarStoreName, NameSize);
Status = gRT->GetVariable (VarStoreName, &EfiVarStoreInfo->Guid, NULL, &BufferSize, NULL);
if (Status != EFI_BUFFER_TOO_SMALL) {
@@ -4432,14 +4579,14 @@ RouteConfigRespForEfiVarStore ( }
BlockSize = BufferSize;
- VarStore = AllocateZeroPool (BufferSize);
+ VarStore = AllocateZeroPool (BufferSize);
ASSERT (VarStore != NULL);
Status = gRT->GetVariable (VarStoreName, &EfiVarStoreInfo->Guid, NULL, &BufferSize, VarStore);
if (EFI_ERROR (Status)) {
goto Done;
}
- Status = HiiConfigToBlock(This, RequestResp, VarStore, &BlockSize, Result);
+ Status = HiiConfigToBlock (This, RequestResp, VarStore, &BlockSize, Result);
if (EFI_ERROR (Status)) {
goto Done;
}
@@ -4473,16 +4620,16 @@ Done: **/
CHAR16 *
OffsetWidthValidate (
- CHAR16 *ConfigElements
+ CHAR16 *ConfigElements
)
{
- CHAR16 *StringPtr;
- CHAR16 *RetVal;
+ CHAR16 *StringPtr;
+ CHAR16 *RetVal;
StringPtr = ConfigElements;
while (1) {
- RetVal = StringPtr;
+ RetVal = StringPtr;
if (StrnCmp (StringPtr, L"&OFFSET=", StrLen (L"&OFFSET=")) != 0) {
return RetVal;
}
@@ -4490,13 +4637,14 @@ OffsetWidthValidate ( while (*StringPtr != L'\0' && StrnCmp (StringPtr, L"&WIDTH=", StrLen (L"&WIDTH=")) != 0) {
StringPtr++;
}
+
if (*StringPtr == L'\0') {
return RetVal;
}
StringPtr += StrLen (L"&WIDTH=");
while (*StringPtr != L'\0' && StrnCmp (StringPtr, L"&OFFSET=", StrLen (L"&OFFSET=")) != 0) {
- StringPtr ++;
+ StringPtr++;
}
if (*StringPtr == L'\0') {
@@ -4517,11 +4665,11 @@ OffsetWidthValidate ( **/
CHAR16 *
NameValueValidate (
- CHAR16 *ConfigElements
+ CHAR16 *ConfigElements
)
{
- CHAR16 *StringPtr;
- CHAR16 *RetVal;
+ CHAR16 *StringPtr;
+ CHAR16 *RetVal;
StringPtr = ConfigElements;
@@ -4530,6 +4678,7 @@ NameValueValidate ( if (*StringPtr != L'&') {
return RetVal;
}
+
StringPtr += 1;
StringPtr = StrStr (StringPtr, L"&");
@@ -4551,11 +4700,11 @@ NameValueValidate ( **/
CHAR16 *
ConfigRequestValidate (
- CHAR16 *ConfigRequest
+ CHAR16 *ConfigRequest
)
{
- BOOLEAN HasNameField;
- CHAR16 *StringPtr;
+ BOOLEAN HasNameField;
+ CHAR16 *StringPtr;
HasNameField = TRUE;
StringPtr = ConfigRequest;
@@ -4566,26 +4715,32 @@ ConfigRequestValidate ( if (StrnCmp (StringPtr, L"GUID=", StrLen (L"GUID=")) != 0) {
return ConfigRequest;
}
+
StringPtr += StrLen (L"GUID=");
while (*StringPtr != L'\0' && StrnCmp (StringPtr, L"&NAME=", StrLen (L"&NAME=")) != 0) {
StringPtr++;
}
+
if (*StringPtr == L'\0') {
return ConfigRequest;
}
+
StringPtr += StrLen (L"&NAME=");
if (*StringPtr == L'&') {
HasNameField = FALSE;
}
+
while (*StringPtr != L'\0' && StrnCmp (StringPtr, L"&PATH=", StrLen (L"&PATH=")) != 0) {
StringPtr++;
}
+
if (*StringPtr == L'\0') {
return ConfigRequest;
}
+
StringPtr += StrLen (L"&PATH=");
while (*StringPtr != L'\0' && *StringPtr != L'&') {
- StringPtr ++;
+ StringPtr++;
}
if (*StringPtr == L'\0') {
@@ -4596,12 +4751,12 @@ ConfigRequestValidate ( //
// Should be Buffer varstore, config request should be "OFFSET/Width" pairs.
//
- return OffsetWidthValidate(StringPtr);
+ return OffsetWidthValidate (StringPtr);
} else {
//
// Should be Name/Value varstore, config request should be "&name1&name2..." pairs.
//
- return NameValueValidate(StringPtr);
+ return NameValueValidate (StringPtr);
}
}
@@ -4655,36 +4810,36 @@ HiiConfigRoutingExtractConfig ( OUT EFI_STRING *Results
)
{
- HII_DATABASE_PRIVATE_DATA *Private;
- EFI_STRING StringPtr;
- EFI_STRING ConfigRequest;
- UINTN Length;
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;
- EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;
- EFI_STATUS Status;
- LIST_ENTRY *Link;
- HII_DATABASE_RECORD *Database;
- UINT8 *DevicePathPkg;
- UINT8 *CurrentDevicePath;
- EFI_HANDLE DriverHandle;
- EFI_HII_HANDLE HiiHandle;
- EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess;
- EFI_STRING AccessProgress;
- EFI_STRING AccessResults;
- EFI_STRING AccessProgressBackup;
- EFI_STRING AccessResultsBackup;
- EFI_STRING DefaultResults;
- BOOLEAN FirstElement;
- BOOLEAN IfrDataParsedFlag;
- BOOLEAN IsEfiVarStore;
- EFI_IFR_VARSTORE_EFI *EfiVarStoreInfo;
- EFI_STRING ErrorPtr;
- UINTN DevicePathSize;
- UINTN ConigStringSize;
- UINTN ConigStringSizeNewsize;
- EFI_STRING ConfigStringPtr;
-
- if (This == NULL || Progress == NULL || Results == NULL) {
+ HII_DATABASE_PRIVATE_DATA *Private;
+ EFI_STRING StringPtr;
+ EFI_STRING ConfigRequest;
+ UINTN Length;
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+ EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;
+ EFI_STATUS Status;
+ LIST_ENTRY *Link;
+ HII_DATABASE_RECORD *Database;
+ UINT8 *DevicePathPkg;
+ UINT8 *CurrentDevicePath;
+ EFI_HANDLE DriverHandle;
+ EFI_HII_HANDLE HiiHandle;
+ EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess;
+ EFI_STRING AccessProgress;
+ EFI_STRING AccessResults;
+ EFI_STRING AccessProgressBackup;
+ EFI_STRING AccessResultsBackup;
+ EFI_STRING DefaultResults;
+ BOOLEAN FirstElement;
+ BOOLEAN IfrDataParsedFlag;
+ BOOLEAN IsEfiVarStore;
+ EFI_IFR_VARSTORE_EFI *EfiVarStoreInfo;
+ EFI_STRING ErrorPtr;
+ UINTN DevicePathSize;
+ UINTN ConigStringSize;
+ UINTN ConigStringSizeNewsize;
+ EFI_STRING ConfigStringPtr;
+
+ if ((This == NULL) || (Progress == NULL) || (Results == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -4693,20 +4848,20 @@ HiiConfigRoutingExtractConfig ( return EFI_INVALID_PARAMETER;
}
- Private = CONFIG_ROUTING_DATABASE_PRIVATE_DATA_FROM_THIS (This);
- StringPtr = Request;
- *Progress = StringPtr;
- DefaultResults = NULL;
- ConfigRequest = NULL;
- Status = EFI_SUCCESS;
- AccessResults = NULL;
- AccessProgress = NULL;
+ Private = CONFIG_ROUTING_DATABASE_PRIVATE_DATA_FROM_THIS (This);
+ StringPtr = Request;
+ *Progress = StringPtr;
+ DefaultResults = NULL;
+ ConfigRequest = NULL;
+ Status = EFI_SUCCESS;
+ AccessResults = NULL;
+ AccessProgress = NULL;
AccessResultsBackup = NULL;
AccessProgressBackup = NULL;
- DevicePath = NULL;
- IfrDataParsedFlag = FALSE;
- IsEfiVarStore = FALSE;
- EfiVarStoreInfo = NULL;
+ DevicePath = NULL;
+ IfrDataParsedFlag = FALSE;
+ IsEfiVarStore = FALSE;
+ EfiVarStoreInfo = NULL;
//
// The first element of <MultiConfigRequest> should be
@@ -4722,7 +4877,7 @@ HiiConfigRoutingExtractConfig ( // Allocate a fix length of memory to store Results. Reallocate memory for
// Results if this fix length is insufficient.
//
- *Results = (EFI_STRING) AllocateZeroPool (MAX_STRING_LENGTH);
+ *Results = (EFI_STRING)AllocateZeroPool (MAX_STRING_LENGTH);
if (*Results == NULL) {
return EFI_OUT_OF_RESOURCES;
}
@@ -4741,18 +4896,19 @@ HiiConfigRoutingExtractConfig ( //
// Process each <ConfigRequest> of <MultiConfigRequest>
//
- Length = CalculateConfigStringLen (StringPtr);
+ Length = CalculateConfigStringLen (StringPtr);
ConfigRequest = AllocateCopyPool ((Length + 1) * sizeof (CHAR16), StringPtr);
if (ConfigRequest == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Done;
}
+
*(ConfigRequest + Length) = 0;
//
// Get the UEFI device path
//
- Status = GetDevicePath (ConfigRequest, (UINT8 **) &DevicePath);
+ Status = GetDevicePath (ConfigRequest, (UINT8 **)&DevicePath);
if (EFI_ERROR (Status)) {
goto Done;
}
@@ -4760,18 +4916,19 @@ HiiConfigRoutingExtractConfig ( //
// Find driver which matches the routing data.
//
- DriverHandle = NULL;
- HiiHandle = NULL;
- Database = NULL;
+ DriverHandle = NULL;
+ HiiHandle = NULL;
+ Database = NULL;
for (Link = Private->DatabaseList.ForwardLink;
Link != &Private->DatabaseList;
Link = Link->ForwardLink
- ) {
+ )
+ {
Database = CR (Link, HII_DATABASE_RECORD, DatabaseEntry, HII_DATABASE_RECORD_SIGNATURE);
if ((DevicePathPkg = Database->PackageList->DevicePathPkg) != NULL) {
CurrentDevicePath = DevicePathPkg + sizeof (EFI_HII_PACKAGE_HEADER);
- DevicePathSize = GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) CurrentDevicePath);
- if ((CompareMem (DevicePath,CurrentDevicePath,DevicePathSize) == 0) && IsThisPackageList(Database, ConfigRequest)) {
+ DevicePathSize = GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *)CurrentDevicePath);
+ if ((CompareMem (DevicePath, CurrentDevicePath, DevicePathSize) == 0) && IsThisPackageList (Database, ConfigRequest)) {
DriverHandle = Database->DriverHandle;
HiiHandle = Database->Handle;
break;
@@ -4784,18 +4941,18 @@ HiiConfigRoutingExtractConfig ( //
if (DriverHandle == NULL) {
TempDevicePath = DevicePath;
- Status = gBS->LocateDevicePath (
- &gEfiDevicePathProtocolGuid,
- &TempDevicePath,
- &DriverHandle
- );
+ Status = gBS->LocateDevicePath (
+ &gEfiDevicePathProtocolGuid,
+ &TempDevicePath,
+ &DriverHandle
+ );
if (EFI_ERROR (Status) || (DriverHandle == NULL)) {
//
// Routing data does not match any known driver.
// Set Progress to the 'G' in "GUID" of the routing header.
//
*Progress = StringPtr;
- Status = EFI_NOT_FOUND;
+ Status = EFI_NOT_FOUND;
goto Done;
}
}
@@ -4803,10 +4960,10 @@ HiiConfigRoutingExtractConfig ( //
// Validate ConfigRequest String.
//
- ErrorPtr = ConfigRequestValidate(ConfigRequest);
+ ErrorPtr = ConfigRequestValidate (ConfigRequest);
if (ErrorPtr != NULL) {
*Progress = StrStr (StringPtr, ErrorPtr);
- Status = EFI_INVALID_PARAMETER;
+ Status = EFI_INVALID_PARAMETER;
goto Done;
}
@@ -4814,12 +4971,12 @@ HiiConfigRoutingExtractConfig ( // Check whether ConfigRequest contains request string.
//
IfrDataParsedFlag = FALSE;
- if ((HiiHandle != NULL) && !GetElementsFromRequest(ConfigRequest)) {
+ if ((HiiHandle != NULL) && !GetElementsFromRequest (ConfigRequest)) {
//
// Get the full request string from IFR when HiiPackage is registered to HiiHandle
//
IfrDataParsedFlag = TRUE;
- Status = GetFullStringFromHiiFormPackages (Database, DevicePath, &ConfigRequest, &DefaultResults, &AccessProgress);
+ Status = GetFullStringFromHiiFormPackages (Database, DevicePath, &ConfigRequest, &DefaultResults, &AccessProgress);
if (EFI_ERROR (Status)) {
//
// AccessProgress indicates the parsing progress on <ConfigRequest>.
@@ -4829,10 +4986,11 @@ HiiConfigRoutingExtractConfig ( *Progress = StrStr (StringPtr, AccessProgress);
goto Done;
}
+
//
// Not any request block is found.
//
- if (!GetElementsFromRequest(ConfigRequest)) {
+ if (!GetElementsFromRequest (ConfigRequest)) {
AccessResults = AllocateCopyPool (StrSize (ConfigRequest), ConfigRequest);
goto NextConfigString;
}
@@ -4841,7 +4999,7 @@ HiiConfigRoutingExtractConfig ( //
// Check whether this ConfigRequest is search from Efi varstore type storage.
//
- Status = GetVarStoreType(Database, ConfigRequest, &IsEfiVarStore, &EfiVarStoreInfo);
+ Status = GetVarStoreType (Database, ConfigRequest, &IsEfiVarStore, &EfiVarStoreInfo);
if (EFI_ERROR (Status)) {
goto Done;
}
@@ -4850,7 +5008,7 @@ HiiConfigRoutingExtractConfig ( //
// Call the GetVariable function to extract settings.
//
- Status = GetConfigRespFromEfiVarStore(This, EfiVarStoreInfo, ConfigRequest, &AccessResults, &AccessProgress);
+ Status = GetConfigRespFromEfiVarStore (This, EfiVarStoreInfo, ConfigRequest, &AccessResults, &AccessProgress);
FreePool (EfiVarStoreInfo);
if (EFI_ERROR (Status)) {
//
@@ -4867,7 +5025,7 @@ HiiConfigRoutingExtractConfig ( Status = gBS->HandleProtocol (
DriverHandle,
&gEfiHiiConfigAccessProtocolGuid,
- (VOID **) &ConfigAccess
+ (VOID **)&ConfigAccess
);
if (EFI_ERROR (Status)) {
//
@@ -4882,18 +5040,19 @@ HiiConfigRoutingExtractConfig ( &AccessProgressBackup,
&AccessResultsBackup
);
- if (!EFI_ERROR(Status)) {
+ if (!EFI_ERROR (Status)) {
//
- //Merge the AltCfgResp in AccessResultsBackup to AccessResults
+ // Merge the AltCfgResp in AccessResultsBackup to AccessResults
//
if ((AccessResultsBackup != NULL) && (StrStr (AccessResultsBackup, L"&ALTCFG=") != NULL)) {
- ConigStringSize = StrSize (AccessResults);
- ConfigStringPtr = StrStr (AccessResultsBackup, L"&GUID=");
+ ConigStringSize = StrSize (AccessResults);
+ ConfigStringPtr = StrStr (AccessResultsBackup, L"&GUID=");
ConigStringSizeNewsize = StrSize (ConfigStringPtr) + ConigStringSize + sizeof (CHAR16);
- AccessResults = (EFI_STRING) ReallocatePool (
- ConigStringSize,
- ConigStringSizeNewsize,
- AccessResults);
+ AccessResults = (EFI_STRING)ReallocatePool (
+ ConigStringSize,
+ ConigStringSizeNewsize,
+ AccessResults
+ );
StrCatS (AccessResults, ConigStringSizeNewsize / sizeof (CHAR16), ConfigStringPtr);
}
} else {
@@ -4903,6 +5062,7 @@ HiiConfigRoutingExtractConfig ( //
Status = EFI_SUCCESS;
}
+
if (AccessResultsBackup != NULL) {
FreePool (AccessResultsBackup);
AccessResultsBackup = NULL;
@@ -4915,7 +5075,7 @@ HiiConfigRoutingExtractConfig ( Status = gBS->HandleProtocol (
DriverHandle,
&gEfiHiiConfigAccessProtocolGuid,
- (VOID **) &ConfigAccess
+ (VOID **)&ConfigAccess
);
if (EFI_ERROR (Status)) {
goto Done;
@@ -4928,6 +5088,7 @@ HiiConfigRoutingExtractConfig ( &AccessResults
);
}
+
if (EFI_ERROR (Status)) {
//
// AccessProgress indicates the parsing progress on <ConfigRequest>.
@@ -4946,7 +5107,7 @@ HiiConfigRoutingExtractConfig ( //
// Update AccessResults by getting default setting from IFR when HiiPackage is registered to HiiHandle
//
- if (!IfrDataParsedFlag && HiiHandle != NULL) {
+ if (!IfrDataParsedFlag && (HiiHandle != NULL)) {
Status = GetFullStringFromHiiFormPackages (Database, DevicePath, &ConfigRequest, &DefaultResults, NULL);
ASSERT_EFI_ERROR (Status);
}
@@ -5014,7 +5175,6 @@ Done: return Status;
}
-
/**
This function allows the caller to request the current configuration for the
entirety of the current HII database and returns the data in a
@@ -5044,27 +5204,27 @@ HiiConfigRoutingExportConfig ( OUT EFI_STRING *Results
)
{
- EFI_STATUS Status;
- EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess;
- EFI_STRING AccessResults;
- EFI_STRING Progress;
- EFI_STRING StringPtr;
- EFI_STRING ConfigRequest;
- UINTN Index;
- EFI_HANDLE *ConfigAccessHandles;
- UINTN NumberConfigAccessHandles;
- BOOLEAN FirstElement;
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;
- EFI_HII_HANDLE HiiHandle;
- EFI_STRING DefaultResults;
- HII_DATABASE_PRIVATE_DATA *Private;
- LIST_ENTRY *Link;
- HII_DATABASE_RECORD *Database;
- UINT8 *DevicePathPkg;
- UINT8 *CurrentDevicePath;
- BOOLEAN IfrDataParsedFlag;
-
- if (This == NULL || Results == NULL) {
+ EFI_STATUS Status;
+ EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess;
+ EFI_STRING AccessResults;
+ EFI_STRING Progress;
+ EFI_STRING StringPtr;
+ EFI_STRING ConfigRequest;
+ UINTN Index;
+ EFI_HANDLE *ConfigAccessHandles;
+ UINTN NumberConfigAccessHandles;
+ BOOLEAN FirstElement;
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+ EFI_HII_HANDLE HiiHandle;
+ EFI_STRING DefaultResults;
+ HII_DATABASE_PRIVATE_DATA *Private;
+ LIST_ENTRY *Link;
+ HII_DATABASE_RECORD *Database;
+ UINT8 *DevicePathPkg;
+ UINT8 *CurrentDevicePath;
+ BOOLEAN IfrDataParsedFlag;
+
+ if ((This == NULL) || (Results == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -5074,19 +5234,19 @@ HiiConfigRoutingExportConfig ( // Allocate a fix length of memory to store Results. Reallocate memory for
// Results if this fix length is insufficient.
//
- *Results = (EFI_STRING) AllocateZeroPool (MAX_STRING_LENGTH);
+ *Results = (EFI_STRING)AllocateZeroPool (MAX_STRING_LENGTH);
if (*Results == NULL) {
return EFI_OUT_OF_RESOURCES;
}
NumberConfigAccessHandles = 0;
- Status = gBS->LocateHandleBuffer (
- ByProtocol,
- &gEfiHiiConfigAccessProtocolGuid,
- NULL,
- &NumberConfigAccessHandles,
- &ConfigAccessHandles
- );
+ Status = gBS->LocateHandleBuffer (
+ ByProtocol,
+ &gEfiHiiConfigAccessProtocolGuid,
+ NULL,
+ &NumberConfigAccessHandles,
+ &ConfigAccessHandles
+ );
if (EFI_ERROR (Status)) {
return Status;
}
@@ -5097,7 +5257,7 @@ HiiConfigRoutingExportConfig ( Status = gBS->HandleProtocol (
ConfigAccessHandles[Index],
&gEfiHiiConfigAccessProtocolGuid,
- (VOID **) &ConfigAccess
+ (VOID **)&ConfigAccess
);
if (EFI_ERROR (Status)) {
continue;
@@ -5107,25 +5267,27 @@ HiiConfigRoutingExportConfig ( // Get DevicePath and HiiHandle for this ConfigAccess driver handle
//
IfrDataParsedFlag = FALSE;
- Progress = NULL;
- HiiHandle = NULL;
- DefaultResults = NULL;
- Database = NULL;
- ConfigRequest = NULL;
- DevicePath = DevicePathFromHandle (ConfigAccessHandles[Index]);
+ Progress = NULL;
+ HiiHandle = NULL;
+ DefaultResults = NULL;
+ Database = NULL;
+ ConfigRequest = NULL;
+ DevicePath = DevicePathFromHandle (ConfigAccessHandles[Index]);
if (DevicePath != NULL) {
for (Link = Private->DatabaseList.ForwardLink;
Link != &Private->DatabaseList;
Link = Link->ForwardLink
- ) {
+ )
+ {
Database = CR (Link, HII_DATABASE_RECORD, DatabaseEntry, HII_DATABASE_RECORD_SIGNATURE);
if ((DevicePathPkg = Database->PackageList->DevicePathPkg) != NULL) {
CurrentDevicePath = DevicePathPkg + sizeof (EFI_HII_PACKAGE_HEADER);
if (CompareMem (
DevicePath,
CurrentDevicePath,
- GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) CurrentDevicePath)
- ) == 0) {
+ GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *)CurrentDevicePath)
+ ) == 0)
+ {
HiiHandle = Database->Handle;
break;
}
@@ -5143,13 +5305,13 @@ HiiConfigRoutingExportConfig ( //
// Update AccessResults by getting default setting from IFR when HiiPackage is registered to HiiHandle
//
- if (HiiHandle != NULL && DevicePath != NULL) {
+ if ((HiiHandle != NULL) && (DevicePath != NULL)) {
IfrDataParsedFlag = TRUE;
- Status = GetFullStringFromHiiFormPackages (Database, DevicePath, &ConfigRequest, &DefaultResults, NULL);
+ Status = GetFullStringFromHiiFormPackages (Database, DevicePath, &ConfigRequest, &DefaultResults, NULL);
//
// Get the full request string to get the Current setting again.
//
- if (!EFI_ERROR (Status) && ConfigRequest != NULL) {
+ if (!EFI_ERROR (Status) && (ConfigRequest != NULL)) {
Status = ConfigAccess->ExtractConfig (
ConfigAccess,
ConfigRequest,
@@ -5167,19 +5329,22 @@ HiiConfigRoutingExportConfig ( //
// Update AccessResults by getting default setting from IFR when HiiPackage is registered to HiiHandle
//
- if (!IfrDataParsedFlag && HiiHandle != NULL && DevicePath != NULL) {
+ if (!IfrDataParsedFlag && (HiiHandle != NULL) && (DevicePath != NULL)) {
StringPtr = StrStr (AccessResults, L"&GUID=");
if (StringPtr != NULL) {
*StringPtr = 0;
}
+
if (GetElementsFromRequest (AccessResults)) {
Status = GetFullStringFromHiiFormPackages (Database, DevicePath, &AccessResults, &DefaultResults, NULL);
ASSERT_EFI_ERROR (Status);
}
+
if (StringPtr != NULL) {
*StringPtr = L'&';
}
}
+
//
// Merge the default sting from IFR code into the got setting from driver.
//
@@ -5208,12 +5373,12 @@ HiiConfigRoutingExportConfig ( AccessResults = NULL;
}
}
+
FreePool (ConfigAccessHandles);
return EFI_SUCCESS;
}
-
/**
This function processes the results of processing forms and routes it to the
appropriate handlers or storage.
@@ -5247,25 +5412,25 @@ HiiConfigRoutingRouteConfig ( OUT EFI_STRING *Progress
)
{
- HII_DATABASE_PRIVATE_DATA *Private;
- EFI_STRING StringPtr;
- EFI_STRING ConfigResp;
- UINTN Length;
- EFI_STATUS Status;
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;
- EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;
- LIST_ENTRY *Link;
- HII_DATABASE_RECORD *Database;
- UINT8 *DevicePathPkg;
- UINT8 *CurrentDevicePath;
- EFI_HANDLE DriverHandle;
- EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess;
- EFI_STRING AccessProgress;
- EFI_IFR_VARSTORE_EFI *EfiVarStoreInfo;
- BOOLEAN IsEfiVarstore;
- UINTN DevicePathSize;
-
- if (This == NULL || Progress == NULL) {
+ HII_DATABASE_PRIVATE_DATA *Private;
+ EFI_STRING StringPtr;
+ EFI_STRING ConfigResp;
+ UINTN Length;
+ EFI_STATUS Status;
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+ EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;
+ LIST_ENTRY *Link;
+ HII_DATABASE_RECORD *Database;
+ UINT8 *DevicePathPkg;
+ UINT8 *CurrentDevicePath;
+ EFI_HANDLE DriverHandle;
+ EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess;
+ EFI_STRING AccessProgress;
+ EFI_IFR_VARSTORE_EFI *EfiVarStoreInfo;
+ BOOLEAN IsEfiVarstore;
+ UINTN DevicePathSize;
+
+ if ((This == NULL) || (Progress == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -5274,13 +5439,13 @@ HiiConfigRoutingRouteConfig ( return EFI_INVALID_PARAMETER;
}
- Private = CONFIG_ROUTING_DATABASE_PRIVATE_DATA_FROM_THIS (This);
- StringPtr = Configuration;
- *Progress = StringPtr;
- Database = NULL;
- AccessProgress = NULL;
- EfiVarStoreInfo= NULL;
- IsEfiVarstore = FALSE;
+ Private = CONFIG_ROUTING_DATABASE_PRIVATE_DATA_FROM_THIS (This);
+ StringPtr = Configuration;
+ *Progress = StringPtr;
+ Database = NULL;
+ AccessProgress = NULL;
+ EfiVarStoreInfo = NULL;
+ IsEfiVarstore = FALSE;
//
// The first element of <MultiConfigResp> should be
@@ -5304,11 +5469,12 @@ HiiConfigRoutingRouteConfig ( //
// Process each <ConfigResp> of <MultiConfigResp>
//
- Length = CalculateConfigStringLen (StringPtr);
+ Length = CalculateConfigStringLen (StringPtr);
ConfigResp = AllocateCopyPool ((Length + 1) * sizeof (CHAR16), StringPtr);
if (ConfigResp == NULL) {
return EFI_OUT_OF_RESOURCES;
}
+
//
// Append '\0' to the end of ConfigRequest
//
@@ -5317,7 +5483,7 @@ HiiConfigRoutingRouteConfig ( //
// Get the UEFI device path
//
- Status = GetDevicePath (ConfigResp, (UINT8 **) &DevicePath);
+ Status = GetDevicePath (ConfigResp, (UINT8 **)&DevicePath);
if (EFI_ERROR (Status)) {
FreePool (ConfigResp);
return Status;
@@ -5326,17 +5492,18 @@ HiiConfigRoutingRouteConfig ( //
// Find driver which matches the routing data.
//
- DriverHandle = NULL;
+ DriverHandle = NULL;
for (Link = Private->DatabaseList.ForwardLink;
Link != &Private->DatabaseList;
Link = Link->ForwardLink
- ) {
+ )
+ {
Database = CR (Link, HII_DATABASE_RECORD, DatabaseEntry, HII_DATABASE_RECORD_SIGNATURE);
if ((DevicePathPkg = Database->PackageList->DevicePathPkg) != NULL) {
CurrentDevicePath = DevicePathPkg + sizeof (EFI_HII_PACKAGE_HEADER);
- DevicePathSize = GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) CurrentDevicePath);
- if ((CompareMem (DevicePath,CurrentDevicePath,DevicePathSize) == 0) && IsThisPackageList(Database, ConfigResp)) {
+ DevicePathSize = GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *)CurrentDevicePath);
+ if ((CompareMem (DevicePath, CurrentDevicePath, DevicePathSize) == 0) && IsThisPackageList (Database, ConfigResp)) {
DriverHandle = Database->DriverHandle;
break;
}
@@ -5348,11 +5515,11 @@ HiiConfigRoutingRouteConfig ( //
if (DriverHandle == NULL) {
TempDevicePath = DevicePath;
- Status = gBS->LocateDevicePath (
- &gEfiDevicePathProtocolGuid,
- &TempDevicePath,
- &DriverHandle
- );
+ Status = gBS->LocateDevicePath (
+ &gEfiDevicePathProtocolGuid,
+ &TempDevicePath,
+ &DriverHandle
+ );
if (EFI_ERROR (Status) || (DriverHandle == NULL)) {
//
// Routing data does not match any known driver.
@@ -5370,7 +5537,7 @@ HiiConfigRoutingRouteConfig ( //
// Check whether this ConfigRequest is search from Efi varstore type storage.
//
- Status = GetVarStoreType(Database, ConfigResp, &IsEfiVarstore, &EfiVarStoreInfo);
+ Status = GetVarStoreType (Database, ConfigResp, &IsEfiVarstore, &EfiVarStoreInfo);
if (EFI_ERROR (Status)) {
return Status;
}
@@ -5379,7 +5546,7 @@ HiiConfigRoutingRouteConfig ( //
// Call the SetVariable function to route settings.
//
- Status = RouteConfigRespForEfiVarStore(This, EfiVarStoreInfo, ConfigResp, &AccessProgress);
+ Status = RouteConfigRespForEfiVarStore (This, EfiVarStoreInfo, ConfigResp, &AccessProgress);
FreePool (EfiVarStoreInfo);
} else {
//
@@ -5388,7 +5555,7 @@ HiiConfigRoutingRouteConfig ( Status = gBS->HandleProtocol (
DriverHandle,
&gEfiHiiConfigAccessProtocolGuid,
- (VOID **) &ConfigAccess
+ (VOID **)&ConfigAccess
);
if (EFI_ERROR (Status)) {
*Progress = StringPtr;
@@ -5402,6 +5569,7 @@ HiiConfigRoutingRouteConfig ( &AccessProgress
);
}
+
if (EFI_ERROR (Status)) {
ASSERT (AccessProgress != NULL);
//
@@ -5427,13 +5595,11 @@ HiiConfigRoutingRouteConfig ( }
StringPtr++;
-
}
return EFI_SUCCESS;
}
-
/**
This helper function is to be called by drivers to map configuration data
stored in byte array ("block") formats such as UEFI Variables into current
@@ -5480,33 +5646,32 @@ HiiBlockToConfig ( OUT EFI_STRING *Progress
)
{
- HII_DATABASE_PRIVATE_DATA *Private;
- EFI_STRING StringPtr;
- UINTN Length;
- EFI_STATUS Status;
- EFI_STRING TmpPtr;
- UINT8 *TmpBuffer;
- UINTN Offset;
- UINTN Width;
- UINT8 *Value;
- EFI_STRING ValueStr;
- EFI_STRING ConfigElement;
- UINTN Index;
- UINT8 *TemBuffer;
- CHAR16 *TemString;
+ HII_DATABASE_PRIVATE_DATA *Private;
+ EFI_STRING StringPtr;
+ UINTN Length;
+ EFI_STATUS Status;
+ EFI_STRING TmpPtr;
+ UINT8 *TmpBuffer;
+ UINTN Offset;
+ UINTN Width;
+ UINT8 *Value;
+ EFI_STRING ValueStr;
+ EFI_STRING ConfigElement;
+ UINTN Index;
+ UINT8 *TemBuffer;
+ CHAR16 *TemString;
TmpBuffer = NULL;
- if (This == NULL || Progress == NULL || Config == NULL) {
+ if ((This == NULL) || (Progress == NULL) || (Config == NULL)) {
return EFI_INVALID_PARAMETER;
}
- if (Block == NULL || ConfigRequest == NULL) {
+ if ((Block == NULL) || (ConfigRequest == NULL)) {
*Progress = ConfigRequest;
return EFI_INVALID_PARAMETER;
}
-
Private = CONFIG_ROUTING_DATABASE_PRIVATE_DATA_FROM_THIS (This);
ASSERT (Private != NULL);
@@ -5519,7 +5684,7 @@ HiiBlockToConfig ( // Allocate a fix length of memory to store Results. Reallocate memory for
// Results if this fix length is insufficient.
//
- *Config = (EFI_STRING) AllocateZeroPool (MAX_STRING_LENGTH);
+ *Config = (EFI_STRING)AllocateZeroPool (MAX_STRING_LENGTH);
if (*Config == NULL) {
return EFI_OUT_OF_RESOURCES;
}
@@ -5529,29 +5694,33 @@ HiiBlockToConfig ( //
if (StrnCmp (StringPtr, L"GUID=", StrLen (L"GUID=")) != 0) {
*Progress = StringPtr;
- Status = EFI_INVALID_PARAMETER;
+ Status = EFI_INVALID_PARAMETER;
goto Exit;
}
+
while (*StringPtr != 0 && StrnCmp (StringPtr, L"PATH=", StrLen (L"PATH=")) != 0) {
StringPtr++;
}
+
if (*StringPtr == 0) {
*Progress = StringPtr - 1;
- Status = EFI_INVALID_PARAMETER;
+ Status = EFI_INVALID_PARAMETER;
goto Exit;
}
while (*StringPtr != L'&' && *StringPtr != 0) {
StringPtr++;
}
+
if (*StringPtr == 0) {
*Progress = StringPtr;
- AppendToMultiString(Config, ConfigRequest);
+ AppendToMultiString (Config, ConfigRequest);
HiiToLower (*Config);
return EFI_SUCCESS;
}
+
//
// Skip '&'
//
@@ -5564,8 +5733,9 @@ HiiBlockToConfig ( if (TemString == NULL) {
return EFI_OUT_OF_RESOURCES;
}
+
TemString[StringPtr - ConfigRequest] = '\0';
- AppendToMultiString(Config, TemString);
+ AppendToMultiString (Config, TemString);
FreePool (TemString);
//
@@ -5588,6 +5758,7 @@ HiiBlockToConfig ( *Progress = TmpPtr - 1;
goto Exit;
}
+
Offset = 0;
CopyMem (
&Offset,
@@ -5599,9 +5770,10 @@ HiiBlockToConfig ( StringPtr += Length;
if (StrnCmp (StringPtr, L"&WIDTH=", StrLen (L"&WIDTH=")) != 0) {
*Progress = TmpPtr - 1;
- Status = EFI_INVALID_PARAMETER;
+ Status = EFI_INVALID_PARAMETER;
goto Exit;
}
+
StringPtr += StrLen (L"&WIDTH=");
//
@@ -5612,6 +5784,7 @@ HiiBlockToConfig ( *Progress = TmpPtr - 1;
goto Exit;
}
+
Width = 0;
CopyMem (
&Width,
@@ -5621,9 +5794,9 @@ HiiBlockToConfig ( FreePool (TmpBuffer);
StringPtr += Length;
- if (*StringPtr != 0 && *StringPtr != L'&') {
+ if ((*StringPtr != 0) && (*StringPtr != L'&')) {
*Progress = TmpPtr - 1;
- Status = EFI_INVALID_PARAMETER;
+ Status = EFI_INVALID_PARAMETER;
goto Exit;
}
@@ -5632,30 +5805,30 @@ HiiBlockToConfig ( //
if (Offset + Width > BlockSize) {
*Progress = StringPtr;
- Status = EFI_DEVICE_ERROR;
+ Status = EFI_DEVICE_ERROR;
goto Exit;
}
- Value = (UINT8 *) AllocateZeroPool (Width);
+ Value = (UINT8 *)AllocateZeroPool (Width);
if (Value == NULL) {
*Progress = ConfigRequest;
- Status = EFI_OUT_OF_RESOURCES;
+ Status = EFI_OUT_OF_RESOURCES;
goto Exit;
}
- CopyMem (Value, (UINT8 *) Block + Offset, Width);
+ CopyMem (Value, (UINT8 *)Block + Offset, Width);
- Length = Width * 2 + 1;
- ValueStr = (EFI_STRING) AllocateZeroPool (Length * sizeof (CHAR16));
+ Length = Width * 2 + 1;
+ ValueStr = (EFI_STRING)AllocateZeroPool (Length * sizeof (CHAR16));
if (ValueStr == NULL) {
*Progress = ConfigRequest;
- Status = EFI_OUT_OF_RESOURCES;
+ Status = EFI_OUT_OF_RESOURCES;
goto Exit;
}
TemString = ValueStr;
TemBuffer = Value + Width - 1;
- for (Index = 0; Index < Width; Index ++, TemBuffer --) {
+ for (Index = 0; Index < Width; Index++, TemBuffer--) {
UnicodeValueToStringS (
TemString,
Length * sizeof (CHAR16) - ((UINTN)TemString - (UINTN)ValueStr),
@@ -5672,16 +5845,18 @@ HiiBlockToConfig ( //
// Build a ConfigElement
//
- Length += StringPtr - TmpPtr + 1 + StrLen (L"VALUE=");
- ConfigElement = (EFI_STRING) AllocateZeroPool (Length * sizeof (CHAR16));
+ Length += StringPtr - TmpPtr + 1 + StrLen (L"VALUE=");
+ ConfigElement = (EFI_STRING)AllocateZeroPool (Length * sizeof (CHAR16));
if (ConfigElement == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Exit;
}
+
CopyMem (ConfigElement, TmpPtr, (StringPtr - TmpPtr + 1) * sizeof (CHAR16));
if (*StringPtr == 0) {
*(ConfigElement + (StringPtr - TmpPtr)) = L'&';
}
+
*(ConfigElement + (StringPtr - TmpPtr) + 1) = 0;
StrCatS (ConfigElement, Length, L"VALUE=");
StrCatS (ConfigElement, Length, ValueStr);
@@ -5691,7 +5866,7 @@ HiiBlockToConfig ( FreePool (ConfigElement);
FreePool (ValueStr);
ConfigElement = NULL;
- ValueStr = NULL;
+ ValueStr = NULL;
//
// If '\0', parsing is finished. Otherwise skip '&' to continue
@@ -5699,14 +5874,14 @@ HiiBlockToConfig ( if (*StringPtr == 0) {
break;
}
+
AppendToMultiString (Config, L"&");
StringPtr++;
-
}
if (*StringPtr != 0) {
*Progress = StringPtr - 1;
- Status = EFI_INVALID_PARAMETER;
+ Status = EFI_INVALID_PARAMETER;
goto Exit;
}
@@ -5716,24 +5891,25 @@ HiiBlockToConfig ( Exit:
if (*Config != NULL) {
- FreePool (*Config);
- *Config = NULL;
+ FreePool (*Config);
+ *Config = NULL;
}
+
if (ValueStr != NULL) {
FreePool (ValueStr);
}
+
if (Value != NULL) {
FreePool (Value);
}
+
if (ConfigElement != NULL) {
FreePool (ConfigElement);
}
return Status;
-
}
-
/**
This helper function is to be called by drivers to map configuration strings
to configurations stored in byte array ("block") formats such as UEFI Variables.
@@ -5784,28 +5960,28 @@ Exit: EFI_STATUS
EFIAPI
HiiConfigToBlock (
- IN CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This,
- IN CONST EFI_STRING ConfigResp,
- IN OUT UINT8 *Block,
- IN OUT UINTN *BlockSize,
- OUT EFI_STRING *Progress
+ IN CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This,
+ IN CONST EFI_STRING ConfigResp,
+ IN OUT UINT8 *Block,
+ IN OUT UINTN *BlockSize,
+ OUT EFI_STRING *Progress
)
{
- HII_DATABASE_PRIVATE_DATA *Private;
- EFI_STRING StringPtr;
- EFI_STRING TmpPtr;
- UINTN Length;
- EFI_STATUS Status;
- UINT8 *TmpBuffer;
- UINTN Offset;
- UINTN Width;
- UINT8 *Value;
- UINTN BufferSize;
- UINTN MaxBlockSize;
+ HII_DATABASE_PRIVATE_DATA *Private;
+ EFI_STRING StringPtr;
+ EFI_STRING TmpPtr;
+ UINTN Length;
+ EFI_STATUS Status;
+ UINT8 *TmpBuffer;
+ UINTN Offset;
+ UINTN Width;
+ UINT8 *Value;
+ UINTN BufferSize;
+ UINTN MaxBlockSize;
TmpBuffer = NULL;
- if (This == NULL || BlockSize == NULL || Progress == NULL) {
+ if ((This == NULL) || (BlockSize == NULL) || (Progress == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -5817,9 +5993,9 @@ HiiConfigToBlock ( Private = CONFIG_ROUTING_DATABASE_PRIVATE_DATA_FROM_THIS (This);
ASSERT (Private != NULL);
- StringPtr = ConfigResp;
- BufferSize = *BlockSize;
- Value = NULL;
+ StringPtr = ConfigResp;
+ BufferSize = *BlockSize;
+ Value = NULL;
MaxBlockSize = 0;
//
@@ -5827,24 +6003,27 @@ HiiConfigToBlock ( //
if (StrnCmp (StringPtr, L"GUID=", StrLen (L"GUID=")) != 0) {
*Progress = StringPtr;
- Status = EFI_INVALID_PARAMETER;
+ Status = EFI_INVALID_PARAMETER;
goto Exit;
}
+
while (*StringPtr != 0 && StrnCmp (StringPtr, L"PATH=", StrLen (L"PATH=")) != 0) {
StringPtr++;
}
+
if (*StringPtr == 0) {
*Progress = StringPtr;
- Status = EFI_INVALID_PARAMETER;
+ Status = EFI_INVALID_PARAMETER;
goto Exit;
}
while (*StringPtr != L'&' && *StringPtr != 0) {
StringPtr++;
}
+
if (*StringPtr == 0) {
*Progress = StringPtr;
- Status = EFI_INVALID_PARAMETER;
+ Status = EFI_INVALID_PARAMETER;
goto Exit;
}
@@ -5864,6 +6043,7 @@ HiiConfigToBlock ( *Progress = TmpPtr;
goto Exit;
}
+
Offset = 0;
CopyMem (
&Offset,
@@ -5875,9 +6055,10 @@ HiiConfigToBlock ( StringPtr += Length;
if (StrnCmp (StringPtr, L"&WIDTH=", StrLen (L"&WIDTH=")) != 0) {
*Progress = TmpPtr;
- Status = EFI_INVALID_PARAMETER;
+ Status = EFI_INVALID_PARAMETER;
goto Exit;
}
+
StringPtr += StrLen (L"&WIDTH=");
//
@@ -5888,6 +6069,7 @@ HiiConfigToBlock ( *Progress = TmpPtr;
goto Exit;
}
+
Width = 0;
CopyMem (
&Width,
@@ -5899,9 +6081,10 @@ HiiConfigToBlock ( StringPtr += Length;
if (StrnCmp (StringPtr, L"&VALUE=", StrLen (L"&VALUE=")) != 0) {
*Progress = TmpPtr;
- Status = EFI_INVALID_PARAMETER;
+ Status = EFI_INVALID_PARAMETER;
goto Exit;
}
+
StringPtr += StrLen (L"&VALUE=");
//
@@ -5914,9 +6097,9 @@ HiiConfigToBlock ( }
StringPtr += Length;
- if (*StringPtr != 0 && *StringPtr != L'&') {
+ if ((*StringPtr != 0) && (*StringPtr != L'&')) {
*Progress = TmpPtr;
- Status = EFI_INVALID_PARAMETER;
+ Status = EFI_INVALID_PARAMETER;
goto Exit;
}
@@ -5926,6 +6109,7 @@ HiiConfigToBlock ( if ((Block != NULL) && (Offset + Width <= BufferSize)) {
CopyMem (Block + Offset, Value, Width);
}
+
if (Offset + Width > MaxBlockSize) {
MaxBlockSize = Offset + Width;
}
@@ -5946,11 +6130,11 @@ HiiConfigToBlock ( //
if (*StringPtr != 0) {
*Progress = StringPtr;
- Status = EFI_INVALID_PARAMETER;
+ Status = EFI_INVALID_PARAMETER;
goto Exit;
}
- *Progress = StringPtr + StrLen (StringPtr);
+ *Progress = StringPtr + StrLen (StringPtr);
*BlockSize = MaxBlockSize - 1;
if (MaxBlockSize > BufferSize) {
@@ -5972,10 +6156,10 @@ Exit: if (Value != NULL) {
FreePool (Value);
}
+
return Status;
}
-
/**
This helper function is to be called by drivers to extract portions of
a larger configuration string.
@@ -6019,29 +6203,29 @@ Exit: EFI_STATUS
EFIAPI
HiiGetAltCfg (
- IN CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This,
- IN CONST EFI_STRING Configuration,
- IN CONST EFI_GUID *Guid,
- IN CONST EFI_STRING Name,
- IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
- IN CONST UINT16 *AltCfgId,
- OUT EFI_STRING *AltCfgResp
+ IN CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This,
+ IN CONST EFI_STRING Configuration,
+ IN CONST EFI_GUID *Guid,
+ IN CONST EFI_STRING Name,
+ IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
+ IN CONST UINT16 *AltCfgId,
+ OUT EFI_STRING *AltCfgResp
)
{
- EFI_STATUS Status;
- EFI_STRING StringPtr;
- EFI_STRING HdrStart;
- EFI_STRING HdrEnd;
- EFI_STRING TmpPtr;
- UINTN Length;
- EFI_STRING GuidStr;
- EFI_STRING NameStr;
- EFI_STRING PathStr;
- EFI_STRING AltIdStr;
- EFI_STRING Result;
- BOOLEAN GuidFlag;
- BOOLEAN NameFlag;
- BOOLEAN PathFlag;
+ EFI_STATUS Status;
+ EFI_STRING StringPtr;
+ EFI_STRING HdrStart;
+ EFI_STRING HdrEnd;
+ EFI_STRING TmpPtr;
+ UINTN Length;
+ EFI_STRING GuidStr;
+ EFI_STRING NameStr;
+ EFI_STRING PathStr;
+ EFI_STRING AltIdStr;
+ EFI_STRING Result;
+ BOOLEAN GuidFlag;
+ BOOLEAN NameFlag;
+ BOOLEAN PathFlag;
HdrStart = NULL;
HdrEnd = NULL;
@@ -6054,7 +6238,7 @@ HiiGetAltCfg ( NameFlag = FALSE;
PathFlag = FALSE;
- if (This == NULL || Configuration == NULL || AltCfgResp == NULL) {
+ if ((This == NULL) || (Configuration == NULL) || (AltCfgResp == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -6066,19 +6250,20 @@ HiiGetAltCfg ( //
// Generate the sub string for later matching.
//
- GenerateSubStr (L"GUID=", sizeof (EFI_GUID), (VOID *) Guid, 1, &GuidStr);
+ GenerateSubStr (L"GUID=", sizeof (EFI_GUID), (VOID *)Guid, 1, &GuidStr);
GenerateSubStr (
L"PATH=",
- GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) DevicePath),
- (VOID *) DevicePath,
+ GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *)DevicePath),
+ (VOID *)DevicePath,
1,
&PathStr
);
if (AltCfgId != NULL) {
- GenerateSubStr (L"ALTCFG=", sizeof (UINT16), (VOID *) AltCfgId, 3, &AltIdStr);
+ GenerateSubStr (L"ALTCFG=", sizeof (UINT16), (VOID *)AltCfgId, 3, &AltIdStr);
}
+
if (Name != NULL) {
- GenerateSubStr (L"NAME=", StrLen (Name) * sizeof (CHAR16), (VOID *) Name, 2, &NameStr);
+ GenerateSubStr (L"NAME=", StrLen (Name) * sizeof (CHAR16), (VOID *)Name, 2, &NameStr);
} else {
GenerateSubStr (L"NAME=", 0, NULL, 2, &NameStr);
}
@@ -6093,6 +6278,7 @@ HiiGetAltCfg ( Status = EFI_NOT_FOUND;
goto Exit;
}
+
HdrStart = TmpPtr;
//
@@ -6107,6 +6293,7 @@ HiiGetAltCfg ( goto Exit;
}
}
+
GuidFlag = TRUE;
}
@@ -6129,6 +6316,7 @@ HiiGetAltCfg ( goto Exit;
}
}
+
NameFlag = TRUE;
}
}
@@ -6152,8 +6340,10 @@ HiiGetAltCfg ( Status = EFI_NOT_FOUND;
goto Exit;
}
- StringPtr ++;
+
+ StringPtr++;
}
+
PathFlag = TRUE;
HdrEnd = StringPtr;
}
@@ -6170,6 +6360,7 @@ HiiGetAltCfg ( Status = OutputConfigBody (StringPtr, &Result);
goto Exit;
}
+
//
// Search the <ConfigAltResp> to get the <AltResp> with AltCfgId.
//
@@ -6196,7 +6387,7 @@ Exit: //
// Copy the <ConfigHdr> and <ConfigBody>
//
- Length = HdrEnd - HdrStart + StrLen (Result) + 1;
+ Length = HdrEnd - HdrStart + StrLen (Result) + 1;
*AltCfgResp = AllocateZeroPool (Length * sizeof (CHAR16));
if (*AltCfgResp == NULL) {
Status = EFI_OUT_OF_RESOURCES;
@@ -6210,21 +6401,22 @@ Exit: if (GuidStr != NULL) {
FreePool (GuidStr);
}
+
if (NameStr != NULL) {
FreePool (NameStr);
}
+
if (PathStr != NULL) {
FreePool (PathStr);
}
+
if (AltIdStr != NULL) {
FreePool (AltIdStr);
}
+
if (Result != NULL) {
FreePool (Result);
}
return Status;
-
}
-
-
diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/Database.c b/MdeModulePkg/Universal/HiiDatabaseDxe/Database.c index 7835802d3f..0b09c24d52 100644 --- a/MdeModulePkg/Universal/HiiDatabaseDxe/Database.c +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/Database.c @@ -6,24 +6,23 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/
-
#include "HiiDatabase.h"
-#define BASE_NUMBER 10
+#define BASE_NUMBER 10
-EFI_HII_PACKAGE_LIST_HEADER *gRTDatabaseInfoBuffer = NULL;
-EFI_STRING gRTConfigRespBuffer = NULL;
-UINTN gDatabaseInfoSize = 0;
-UINTN gConfigRespSize = 0;
-BOOLEAN gExportConfigResp = FALSE;
-UINTN gNvDefaultStoreSize = 0;
-SKU_ID gSkuId = 0xFFFFFFFFFFFFFFFF;
-LIST_ENTRY gVarStorageList = INITIALIZE_LIST_HEAD_VARIABLE (gVarStorageList);
+EFI_HII_PACKAGE_LIST_HEADER *gRTDatabaseInfoBuffer = NULL;
+EFI_STRING gRTConfigRespBuffer = NULL;
+UINTN gDatabaseInfoSize = 0;
+UINTN gConfigRespSize = 0;
+BOOLEAN gExportConfigResp = FALSE;
+UINTN gNvDefaultStoreSize = 0;
+SKU_ID gSkuId = 0xFFFFFFFFFFFFFFFF;
+LIST_ENTRY gVarStorageList = INITIALIZE_LIST_HEAD_VARIABLE (gVarStorageList);
//
// HII database lock.
//
-EFI_LOCK mHiiDatabaseLock = EFI_INITIALIZE_LOCK_VARIABLE(TPL_NOTIFY);
+EFI_LOCK mHiiDatabaseLock = EFI_INITIALIZE_LOCK_VARIABLE (TPL_NOTIFY);
/**
This function generates a HII_DATABASE_RECORD node and adds into hii database.
@@ -41,22 +40,23 @@ EFI_LOCK mHiiDatabaseLock = EFI_INITIALIZE_LOCK_VARIABLE(TPL_NOTIFY); **/
EFI_STATUS
GenerateHiiDatabaseRecord (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- OUT HII_DATABASE_RECORD **DatabaseNode
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ OUT HII_DATABASE_RECORD **DatabaseNode
)
{
- HII_DATABASE_RECORD *DatabaseRecord;
- HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList;
- HII_HANDLE *HiiHandle;
+ HII_DATABASE_RECORD *DatabaseRecord;
+ HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList;
+ HII_HANDLE *HiiHandle;
- if (Private == NULL || DatabaseNode == NULL) {
+ if ((Private == NULL) || (DatabaseNode == NULL)) {
return EFI_INVALID_PARAMETER;
}
- DatabaseRecord = (HII_DATABASE_RECORD *) AllocateZeroPool (sizeof (HII_DATABASE_RECORD));
+ DatabaseRecord = (HII_DATABASE_RECORD *)AllocateZeroPool (sizeof (HII_DATABASE_RECORD));
if (DatabaseRecord == NULL) {
return EFI_OUT_OF_RESOURCES;
}
+
DatabaseRecord->Signature = HII_DATABASE_RECORD_SIGNATURE;
DatabaseRecord->PackageList = AllocateZeroPool (sizeof (HII_DATABASE_PACKAGE_LIST_INSTANCE));
@@ -79,24 +79,25 @@ GenerateHiiDatabaseRecord ( //
// Create a new hii handle
//
- HiiHandle = (HII_HANDLE *) AllocateZeroPool (sizeof (HII_HANDLE));
+ HiiHandle = (HII_HANDLE *)AllocateZeroPool (sizeof (HII_HANDLE));
if (HiiHandle == NULL) {
FreePool (DatabaseRecord->PackageList);
FreePool (DatabaseRecord);
return EFI_OUT_OF_RESOURCES;
}
+
HiiHandle->Signature = HII_HANDLE_SIGNATURE;
//
// Backup the number of Hii handles
//
Private->HiiHandleCount++;
- HiiHandle->Key = (UINTN) Private->HiiHandleCount;
+ HiiHandle->Key = (UINTN)Private->HiiHandleCount;
//
// Insert the handle to hii handle list of the whole database.
//
InsertTailList (&Private->HiiHandleList, &HiiHandle->Handle);
- DatabaseRecord->Handle = (EFI_HII_HANDLE) HiiHandle;
+ DatabaseRecord->Handle = (EFI_HII_HANDLE)HiiHandle;
//
// Insert the Package List node to Package List link of the whole database.
@@ -106,10 +107,8 @@ GenerateHiiDatabaseRecord ( *DatabaseNode = DatabaseRecord;
return EFI_SUCCESS;
-
}
-
/**
This function checks whether a handle is a valid EFI_HII_HANDLE
This is a internal function.
@@ -122,12 +121,12 @@ GenerateHiiDatabaseRecord ( **/
BOOLEAN
IsHiiHandleValid (
- EFI_HII_HANDLE Handle
+ EFI_HII_HANDLE Handle
)
{
- HII_HANDLE *HiiHandle;
+ HII_HANDLE *HiiHandle;
- HiiHandle = (HII_HANDLE *) Handle;
+ HiiHandle = (HII_HANDLE *)Handle;
if (HiiHandle == NULL) {
return FALSE;
@@ -140,7 +139,6 @@ IsHiiHandleValid ( return TRUE;
}
-
/**
This function invokes the matching registered function.
This is a internal function.
@@ -160,28 +158,30 @@ IsHiiHandleValid ( **/
EFI_STATUS
InvokeRegisteredFunction (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
- IN VOID *PackageInstance,
- IN UINT8 PackageType,
- IN EFI_HII_HANDLE Handle
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
+ IN VOID *PackageInstance,
+ IN UINT8 PackageType,
+ IN EFI_HII_HANDLE Handle
)
{
- HII_DATABASE_NOTIFY *Notify;
- LIST_ENTRY *Link;
- EFI_HII_PACKAGE_HEADER *Package;
- UINT8 *Buffer;
- UINT32 BufferSize;
- UINT32 HeaderSize;
- UINT32 ImageBlockSize;
- UINT32 PaletteInfoSize;
-
- if (Private == NULL || (NotifyType & 0xF) == 0 || PackageInstance == NULL) {
+ HII_DATABASE_NOTIFY *Notify;
+ LIST_ENTRY *Link;
+ EFI_HII_PACKAGE_HEADER *Package;
+ UINT8 *Buffer;
+ UINT32 BufferSize;
+ UINT32 HeaderSize;
+ UINT32 ImageBlockSize;
+ UINT32 PaletteInfoSize;
+
+ if ((Private == NULL) || ((NotifyType & 0xF) == 0) || (PackageInstance == NULL)) {
return EFI_INVALID_PARAMETER;
}
+
if (Private->Signature != HII_DATABASE_PRIVATE_DATA_SIGNATURE) {
return EFI_INVALID_PARAMETER;
}
+
if (!IsHiiHandleValid (Handle)) {
return EFI_INVALID_PARAMETER;
}
@@ -194,152 +194,155 @@ InvokeRegisteredFunction ( // storage format. e.g. HII_GUID_PACKAGE_INSTANCE to EFI_HII_GUID_PACKAGE_HDR.
//
switch (PackageType) {
- case EFI_HII_PACKAGE_TYPE_GUID:
- Package = (EFI_HII_PACKAGE_HEADER *) (((HII_GUID_PACKAGE_INSTANCE *) PackageInstance)->GuidPkg);
- break;
-
- case EFI_HII_PACKAGE_FORMS:
- BufferSize = ((HII_IFR_PACKAGE_INSTANCE *) PackageInstance)->FormPkgHdr.Length;
- Buffer = (UINT8 *) AllocateZeroPool (BufferSize);
- ASSERT (Buffer != NULL);
- CopyMem (
- Buffer,
- &((HII_IFR_PACKAGE_INSTANCE *) PackageInstance)->FormPkgHdr,
- sizeof (EFI_HII_PACKAGE_HEADER)
- );
- CopyMem (
- Buffer + sizeof (EFI_HII_PACKAGE_HEADER),
- ((HII_IFR_PACKAGE_INSTANCE *) PackageInstance)->IfrData,
- BufferSize - sizeof (EFI_HII_PACKAGE_HEADER)
- );
- Package = (EFI_HII_PACKAGE_HEADER *) Buffer;
- break;
-
- case EFI_HII_PACKAGE_KEYBOARD_LAYOUT:
- Package = (EFI_HII_PACKAGE_HEADER *) (((HII_KEYBOARD_LAYOUT_PACKAGE_INSTANCE *) PackageInstance)->KeyboardPkg);
- break;
-
- case EFI_HII_PACKAGE_STRINGS:
- BufferSize = ((HII_STRING_PACKAGE_INSTANCE *) PackageInstance)->StringPkgHdr->Header.Length;
- HeaderSize = ((HII_STRING_PACKAGE_INSTANCE *) PackageInstance)->StringPkgHdr->HdrSize;
- Buffer = (UINT8 *) AllocateZeroPool (BufferSize);
- ASSERT (Buffer != NULL);
- CopyMem (
- Buffer,
- ((HII_STRING_PACKAGE_INSTANCE *) PackageInstance)->StringPkgHdr,
- HeaderSize
- );
- CopyMem (
- Buffer + HeaderSize,
- ((HII_STRING_PACKAGE_INSTANCE *) PackageInstance)->StringBlock,
- BufferSize - HeaderSize
- );
- Package = (EFI_HII_PACKAGE_HEADER *) Buffer;
- break;
-
- case EFI_HII_PACKAGE_FONTS:
- BufferSize = ((HII_FONT_PACKAGE_INSTANCE *) PackageInstance)->FontPkgHdr->Header.Length;
- HeaderSize = ((HII_FONT_PACKAGE_INSTANCE *) PackageInstance)->FontPkgHdr->HdrSize;
- Buffer = (UINT8 *) AllocateZeroPool (BufferSize);
- ASSERT (Buffer != NULL);
- CopyMem (
- Buffer,
- ((HII_FONT_PACKAGE_INSTANCE *) PackageInstance)->FontPkgHdr,
- HeaderSize
- );
- CopyMem (
- Buffer + HeaderSize,
- ((HII_FONT_PACKAGE_INSTANCE *) PackageInstance)->GlyphBlock,
- BufferSize - HeaderSize
- );
- Package = (EFI_HII_PACKAGE_HEADER *) Buffer;
- break;
+ case EFI_HII_PACKAGE_TYPE_GUID:
+ Package = (EFI_HII_PACKAGE_HEADER *)(((HII_GUID_PACKAGE_INSTANCE *)PackageInstance)->GuidPkg);
+ break;
- case EFI_HII_PACKAGE_IMAGES:
- BufferSize = ((HII_IMAGE_PACKAGE_INSTANCE *) PackageInstance)->ImagePkgHdr.Header.Length;
- HeaderSize = sizeof (EFI_HII_IMAGE_PACKAGE_HDR);
- Buffer = (UINT8 *) AllocateZeroPool (BufferSize);
- ASSERT (Buffer != NULL);
+ case EFI_HII_PACKAGE_FORMS:
+ BufferSize = ((HII_IFR_PACKAGE_INSTANCE *)PackageInstance)->FormPkgHdr.Length;
+ Buffer = (UINT8 *)AllocateZeroPool (BufferSize);
+ ASSERT (Buffer != NULL);
+ CopyMem (
+ Buffer,
+ &((HII_IFR_PACKAGE_INSTANCE *)PackageInstance)->FormPkgHdr,
+ sizeof (EFI_HII_PACKAGE_HEADER)
+ );
+ CopyMem (
+ Buffer + sizeof (EFI_HII_PACKAGE_HEADER),
+ ((HII_IFR_PACKAGE_INSTANCE *)PackageInstance)->IfrData,
+ BufferSize - sizeof (EFI_HII_PACKAGE_HEADER)
+ );
+ Package = (EFI_HII_PACKAGE_HEADER *)Buffer;
+ break;
- CopyMem (
- Buffer,
- &((HII_IMAGE_PACKAGE_INSTANCE *) PackageInstance)->ImagePkgHdr,
- HeaderSize
- );
- CopyMem (
- Buffer + sizeof (EFI_HII_PACKAGE_HEADER),
- &HeaderSize,
- sizeof (UINT32)
- );
+ case EFI_HII_PACKAGE_KEYBOARD_LAYOUT:
+ Package = (EFI_HII_PACKAGE_HEADER *)(((HII_KEYBOARD_LAYOUT_PACKAGE_INSTANCE *)PackageInstance)->KeyboardPkg);
+ break;
- ImageBlockSize = ((HII_IMAGE_PACKAGE_INSTANCE *) PackageInstance)->ImageBlockSize;
- if (ImageBlockSize != 0) {
+ case EFI_HII_PACKAGE_STRINGS:
+ BufferSize = ((HII_STRING_PACKAGE_INSTANCE *)PackageInstance)->StringPkgHdr->Header.Length;
+ HeaderSize = ((HII_STRING_PACKAGE_INSTANCE *)PackageInstance)->StringPkgHdr->HdrSize;
+ Buffer = (UINT8 *)AllocateZeroPool (BufferSize);
+ ASSERT (Buffer != NULL);
+ CopyMem (
+ Buffer,
+ ((HII_STRING_PACKAGE_INSTANCE *)PackageInstance)->StringPkgHdr,
+ HeaderSize
+ );
CopyMem (
Buffer + HeaderSize,
- ((HII_IMAGE_PACKAGE_INSTANCE *) PackageInstance)->ImageBlock,
- ImageBlockSize
+ ((HII_STRING_PACKAGE_INSTANCE *)PackageInstance)->StringBlock,
+ BufferSize - HeaderSize
);
- }
+ Package = (EFI_HII_PACKAGE_HEADER *)Buffer;
+ break;
- PaletteInfoSize = ((HII_IMAGE_PACKAGE_INSTANCE *) PackageInstance)->PaletteInfoSize;
- if (PaletteInfoSize != 0) {
+ case EFI_HII_PACKAGE_FONTS:
+ BufferSize = ((HII_FONT_PACKAGE_INSTANCE *)PackageInstance)->FontPkgHdr->Header.Length;
+ HeaderSize = ((HII_FONT_PACKAGE_INSTANCE *)PackageInstance)->FontPkgHdr->HdrSize;
+ Buffer = (UINT8 *)AllocateZeroPool (BufferSize);
+ ASSERT (Buffer != NULL);
CopyMem (
- Buffer + HeaderSize + ImageBlockSize,
- ((HII_IMAGE_PACKAGE_INSTANCE *) PackageInstance)->PaletteBlock,
- PaletteInfoSize
+ Buffer,
+ ((HII_FONT_PACKAGE_INSTANCE *)PackageInstance)->FontPkgHdr,
+ HeaderSize
);
- HeaderSize += ImageBlockSize;
CopyMem (
- Buffer + sizeof (EFI_HII_PACKAGE_HEADER) + sizeof (UINT32),
+ Buffer + HeaderSize,
+ ((HII_FONT_PACKAGE_INSTANCE *)PackageInstance)->GlyphBlock,
+ BufferSize - HeaderSize
+ );
+ Package = (EFI_HII_PACKAGE_HEADER *)Buffer;
+ break;
+
+ case EFI_HII_PACKAGE_IMAGES:
+ BufferSize = ((HII_IMAGE_PACKAGE_INSTANCE *)PackageInstance)->ImagePkgHdr.Header.Length;
+ HeaderSize = sizeof (EFI_HII_IMAGE_PACKAGE_HDR);
+ Buffer = (UINT8 *)AllocateZeroPool (BufferSize);
+ ASSERT (Buffer != NULL);
+
+ CopyMem (
+ Buffer,
+ &((HII_IMAGE_PACKAGE_INSTANCE *)PackageInstance)->ImagePkgHdr,
+ HeaderSize
+ );
+ CopyMem (
+ Buffer + sizeof (EFI_HII_PACKAGE_HEADER),
&HeaderSize,
sizeof (UINT32)
);
- }
- Package = (EFI_HII_PACKAGE_HEADER *) Buffer;
- break;
- case EFI_HII_PACKAGE_SIMPLE_FONTS:
- BufferSize = ((HII_SIMPLE_FONT_PACKAGE_INSTANCE *) PackageInstance)->SimpleFontPkgHdr->Header.Length;
- Buffer = (UINT8 *) AllocateZeroPool (BufferSize);
- ASSERT (Buffer != NULL);
- CopyMem (
- Buffer,
- ((HII_SIMPLE_FONT_PACKAGE_INSTANCE *) PackageInstance)->SimpleFontPkgHdr,
- BufferSize
- );
- Package = (EFI_HII_PACKAGE_HEADER *) Buffer;
- break;
+ ImageBlockSize = ((HII_IMAGE_PACKAGE_INSTANCE *)PackageInstance)->ImageBlockSize;
+ if (ImageBlockSize != 0) {
+ CopyMem (
+ Buffer + HeaderSize,
+ ((HII_IMAGE_PACKAGE_INSTANCE *)PackageInstance)->ImageBlock,
+ ImageBlockSize
+ );
+ }
- case EFI_HII_PACKAGE_DEVICE_PATH:
- Package = (EFI_HII_PACKAGE_HEADER *) PackageInstance;
- break;
+ PaletteInfoSize = ((HII_IMAGE_PACKAGE_INSTANCE *)PackageInstance)->PaletteInfoSize;
+ if (PaletteInfoSize != 0) {
+ CopyMem (
+ Buffer + HeaderSize + ImageBlockSize,
+ ((HII_IMAGE_PACKAGE_INSTANCE *)PackageInstance)->PaletteBlock,
+ PaletteInfoSize
+ );
+ HeaderSize += ImageBlockSize;
+ CopyMem (
+ Buffer + sizeof (EFI_HII_PACKAGE_HEADER) + sizeof (UINT32),
+ &HeaderSize,
+ sizeof (UINT32)
+ );
+ }
- default:
- return EFI_INVALID_PARAMETER;
+ Package = (EFI_HII_PACKAGE_HEADER *)Buffer;
+ break;
+
+ case EFI_HII_PACKAGE_SIMPLE_FONTS:
+ BufferSize = ((HII_SIMPLE_FONT_PACKAGE_INSTANCE *)PackageInstance)->SimpleFontPkgHdr->Header.Length;
+ Buffer = (UINT8 *)AllocateZeroPool (BufferSize);
+ ASSERT (Buffer != NULL);
+ CopyMem (
+ Buffer,
+ ((HII_SIMPLE_FONT_PACKAGE_INSTANCE *)PackageInstance)->SimpleFontPkgHdr,
+ BufferSize
+ );
+ Package = (EFI_HII_PACKAGE_HEADER *)Buffer;
+ break;
+
+ case EFI_HII_PACKAGE_DEVICE_PATH:
+ Package = (EFI_HII_PACKAGE_HEADER *)PackageInstance;
+ break;
+
+ default:
+ return EFI_INVALID_PARAMETER;
}
for (Link = Private->DatabaseNotifyList.ForwardLink;
Link != &Private->DatabaseNotifyList;
Link = Link->ForwardLink
- ) {
+ )
+ {
Notify = CR (Link, HII_DATABASE_NOTIFY, DatabaseNotifyEntry, HII_DATABASE_NOTIFY_SIGNATURE);
- if (Notify->NotifyType == NotifyType && Notify->PackageType == PackageType) {
+ if ((Notify->NotifyType == NotifyType) && (Notify->PackageType == PackageType)) {
//
// Check in case PackageGuid is not NULL when Package is GUID package
//
if (PackageType != EFI_HII_PACKAGE_TYPE_GUID) {
Notify->PackageGuid = NULL;
}
+
//
// Status of Registered Function is unknown so did not check it
//
Notify->PackageNotifyFn (
- Notify->PackageType,
- Notify->PackageGuid,
- Package,
- Handle,
- NotifyType
- );
+ Notify->PackageType,
+ Notify->PackageGuid,
+ Package,
+ Handle,
+ NotifyType
+ );
}
}
@@ -350,7 +353,6 @@ InvokeRegisteredFunction ( return EFI_SUCCESS;
}
-
/**
This function insert a GUID package to a package list node.
This is a internal function.
@@ -370,16 +372,16 @@ InvokeRegisteredFunction ( **/
EFI_STATUS
InsertGuidPackage (
- IN VOID *PackageHdr,
- IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
- IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
- OUT HII_GUID_PACKAGE_INSTANCE **Package
+ IN VOID *PackageHdr,
+ IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
+ IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
+ OUT HII_GUID_PACKAGE_INSTANCE **Package
)
{
- HII_GUID_PACKAGE_INSTANCE *GuidPackage;
- EFI_HII_PACKAGE_HEADER PackageHeader;
+ HII_GUID_PACKAGE_INSTANCE *GuidPackage;
+ EFI_HII_PACKAGE_HEADER PackageHeader;
- if (PackageHdr == NULL || PackageList == NULL) {
+ if ((PackageHdr == NULL) || (PackageList == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -388,11 +390,12 @@ InsertGuidPackage ( //
// Create a GUID package node
//
- GuidPackage = (HII_GUID_PACKAGE_INSTANCE *) AllocateZeroPool (sizeof (HII_GUID_PACKAGE_INSTANCE));
+ GuidPackage = (HII_GUID_PACKAGE_INSTANCE *)AllocateZeroPool (sizeof (HII_GUID_PACKAGE_INSTANCE));
if (GuidPackage == NULL) {
return EFI_OUT_OF_RESOURCES;
}
- GuidPackage->GuidPkg = (UINT8 *) AllocateZeroPool (PackageHeader.Length);
+
+ GuidPackage->GuidPkg = (UINT8 *)AllocateZeroPool (PackageHeader.Length);
if (GuidPackage->GuidPkg == NULL) {
FreePool (GuidPackage);
return EFI_OUT_OF_RESOURCES;
@@ -410,7 +413,6 @@ InsertGuidPackage ( return EFI_SUCCESS;
}
-
/**
This function exports GUID packages to a buffer.
This is a internal function.
@@ -430,26 +432,26 @@ InsertGuidPackage ( **/
EFI_STATUS
ExportGuidPackages (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_HII_HANDLE Handle,
- IN HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
- IN UINTN UsedSize,
- IN UINTN BufferSize,
- IN OUT VOID *Buffer,
- IN OUT UINTN *ResultSize
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_HII_HANDLE Handle,
+ IN HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
+ IN UINTN UsedSize,
+ IN UINTN BufferSize,
+ IN OUT VOID *Buffer,
+ IN OUT UINTN *ResultSize
)
{
- HII_GUID_PACKAGE_INSTANCE *GuidPackage;
- LIST_ENTRY *Link;
- UINTN PackageLength;
- EFI_HII_PACKAGE_HEADER PackageHeader;
- EFI_STATUS Status;
+ HII_GUID_PACKAGE_INSTANCE *GuidPackage;
+ LIST_ENTRY *Link;
+ UINTN PackageLength;
+ EFI_HII_PACKAGE_HEADER PackageHeader;
+ EFI_STATUS Status;
- if (PackageList == NULL || ResultSize == NULL) {
+ if ((PackageList == NULL) || (ResultSize == NULL)) {
return EFI_INVALID_PARAMETER;
}
- if (BufferSize > 0 && Buffer == NULL ) {
+ if ((BufferSize > 0) && (Buffer == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -464,13 +466,13 @@ ExportGuidPackages ( Status = InvokeRegisteredFunction (
Private,
EFI_HII_DATABASE_NOTIFY_EXPORT_PACK,
- (VOID *) GuidPackage,
+ (VOID *)GuidPackage,
EFI_HII_PACKAGE_TYPE_GUID,
Handle
);
ASSERT_EFI_ERROR (Status);
CopyMem (Buffer, GuidPackage->GuidPkg, PackageHeader.Length);
- Buffer = (UINT8 *) Buffer + PackageHeader.Length;
+ Buffer = (UINT8 *)Buffer + PackageHeader.Length;
}
}
@@ -478,7 +480,6 @@ ExportGuidPackages ( return EFI_SUCCESS;
}
-
/**
This function deletes all GUID packages from a package list node.
This is a internal function.
@@ -495,15 +496,15 @@ ExportGuidPackages ( **/
EFI_STATUS
RemoveGuidPackages (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_HII_HANDLE Handle,
- IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_HII_HANDLE Handle,
+ IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList
)
{
- LIST_ENTRY *ListHead;
- HII_GUID_PACKAGE_INSTANCE *Package;
- EFI_STATUS Status;
- EFI_HII_PACKAGE_HEADER PackageHeader;
+ LIST_ENTRY *ListHead;
+ HII_GUID_PACKAGE_INSTANCE *Package;
+ EFI_STATUS Status;
+ EFI_HII_PACKAGE_HEADER PackageHeader;
ListHead = &PackageList->GuidPkgHdr;
@@ -517,7 +518,7 @@ RemoveGuidPackages ( Status = InvokeRegisteredFunction (
Private,
EFI_HII_DATABASE_NOTIFY_REMOVE_PACK,
- (VOID *) Package,
+ (VOID *)Package,
EFI_HII_PACKAGE_TYPE_GUID,
Handle
);
@@ -547,13 +548,14 @@ RemoveGuidPackages ( **/
UINTN
IsEfiVarStoreQuestion (
- EFI_IFR_QUESTION_HEADER *IfrQuestionHdr,
- EFI_IFR_VARSTORE_EFI **EfiVarStoreList,
- UINTN EfiVarStoreNumber
+ EFI_IFR_QUESTION_HEADER *IfrQuestionHdr,
+ EFI_IFR_VARSTORE_EFI **EfiVarStoreList,
+ UINTN EfiVarStoreNumber
)
{
- UINTN Index;
- for (Index = 0; Index < EfiVarStoreNumber; Index ++) {
+ UINTN Index;
+
+ for (Index = 0; Index < EfiVarStoreNumber; Index++) {
if (IfrQuestionHdr->VarStoreId == EfiVarStoreList[Index]->VarStoreId) {
return Index;
}
@@ -580,20 +582,22 @@ FindVariableData ( IN CHAR16 *VarName
)
{
- VARIABLE_HEADER *VariableHeader;
- VARIABLE_HEADER *VariableEnd;
+ VARIABLE_HEADER *VariableHeader;
+ VARIABLE_HEADER *VariableEnd;
- VariableEnd = (VARIABLE_HEADER *) ((UINT8 *) VariableStorage + VariableStorage->Size);
- VariableHeader = (VARIABLE_HEADER *) (VariableStorage + 1);
- VariableHeader = (VARIABLE_HEADER *) HEADER_ALIGN (VariableHeader);
+ VariableEnd = (VARIABLE_HEADER *)((UINT8 *)VariableStorage + VariableStorage->Size);
+ VariableHeader = (VARIABLE_HEADER *)(VariableStorage + 1);
+ VariableHeader = (VARIABLE_HEADER *)HEADER_ALIGN (VariableHeader);
while (VariableHeader < VariableEnd) {
if (CompareGuid (&VariableHeader->VendorGuid, VarGuid) &&
- VariableHeader->Attributes == VarAttribute &&
- StrCmp (VarName, (CHAR16 *) (VariableHeader + 1)) == 0) {
+ (VariableHeader->Attributes == VarAttribute) &&
+ (StrCmp (VarName, (CHAR16 *)(VariableHeader + 1)) == 0))
+ {
return VariableHeader;
}
- VariableHeader = (VARIABLE_HEADER *) ((UINT8 *) VariableHeader + sizeof (VARIABLE_HEADER) + VariableHeader->NameSize + VariableHeader->DataSize);
- VariableHeader = (VARIABLE_HEADER *) HEADER_ALIGN (VariableHeader);
+
+ VariableHeader = (VARIABLE_HEADER *)((UINT8 *)VariableHeader + sizeof (VARIABLE_HEADER) + VariableHeader->NameSize + VariableHeader->DataSize);
+ VariableHeader = (VARIABLE_HEADER *)HEADER_ALIGN (VariableHeader);
}
return NULL;
@@ -614,33 +618,33 @@ FindVariableData ( **/
EFI_STATUS
FindQuestionDefaultSetting (
- IN UINT16 DefaultId,
- IN EFI_IFR_VARSTORE_EFI *EfiVarStore,
- IN EFI_IFR_QUESTION_HEADER *IfrQuestionHdr,
- OUT VOID *ValueBuffer,
- IN UINTN Width,
- IN BOOLEAN BitFieldQuestion
+ IN UINT16 DefaultId,
+ IN EFI_IFR_VARSTORE_EFI *EfiVarStore,
+ IN EFI_IFR_QUESTION_HEADER *IfrQuestionHdr,
+ OUT VOID *ValueBuffer,
+ IN UINTN Width,
+ IN BOOLEAN BitFieldQuestion
)
{
- VARIABLE_HEADER *VariableHeader;
- VARIABLE_STORE_HEADER *VariableStorage;
- LIST_ENTRY *Link;
- VARSTORAGE_DEFAULT_DATA *Entry;
- VARIABLE_STORE_HEADER *NvStoreBuffer;
- UINT8 *DataBuffer;
- UINT8 *BufferEnd;
- BOOLEAN IsFound;
- UINTN Index;
- UINT32 BufferValue;
- UINT32 BitFieldVal;
- UINTN BitOffset;
- UINTN ByteOffset;
- UINTN BitWidth;
- UINTN StartBit;
- UINTN EndBit;
- PCD_DEFAULT_DATA *DataHeader;
- PCD_DEFAULT_INFO *DefaultInfo;
- PCD_DATA_DELTA *DeltaData;
+ VARIABLE_HEADER *VariableHeader;
+ VARIABLE_STORE_HEADER *VariableStorage;
+ LIST_ENTRY *Link;
+ VARSTORAGE_DEFAULT_DATA *Entry;
+ VARIABLE_STORE_HEADER *NvStoreBuffer;
+ UINT8 *DataBuffer;
+ UINT8 *BufferEnd;
+ BOOLEAN IsFound;
+ UINTN Index;
+ UINT32 BufferValue;
+ UINT32 BitFieldVal;
+ UINTN BitOffset;
+ UINTN ByteOffset;
+ UINTN BitWidth;
+ UINTN StartBit;
+ UINTN EndBit;
+ PCD_DEFAULT_DATA *DataHeader;
+ PCD_DEFAULT_INFO *DefaultInfo;
+ PCD_DATA_DELTA *DeltaData;
if (gSkuId == 0xFFFFFFFFFFFFFFFF) {
gSkuId = LibPcdGetSku ();
@@ -650,68 +654,76 @@ FindQuestionDefaultSetting ( // Find the DefaultId setting from the full DefaultSetting
//
VariableStorage = NULL;
- Link = gVarStorageList.ForwardLink;
+ Link = gVarStorageList.ForwardLink;
while (Link != &gVarStorageList) {
Entry = BASE_CR (Link, VARSTORAGE_DEFAULT_DATA, Entry);
if (Entry->DefaultId == DefaultId) {
VariableStorage = Entry->VariableStorage;
break;
}
+
Link = Link->ForwardLink;
}
if (Link == &gVarStorageList) {
- DataBuffer = (UINT8 *) PcdGetPtr (PcdNvStoreDefaultValueBuffer);
+ DataBuffer = (UINT8 *)PcdGetPtr (PcdNvStoreDefaultValueBuffer);
gNvDefaultStoreSize = ((PCD_NV_STORE_DEFAULT_BUFFER_HEADER *)DataBuffer)->Length;
//
// The first section data includes NV storage default setting.
//
- DataHeader = (PCD_DEFAULT_DATA *) (DataBuffer + sizeof (PCD_NV_STORE_DEFAULT_BUFFER_HEADER));
- NvStoreBuffer = (VARIABLE_STORE_HEADER *) ((UINT8 *) DataHeader + sizeof (DataHeader->DataSize) + DataHeader->HeaderSize);
- VariableStorage = AllocatePool (NvStoreBuffer->Size);
+ DataHeader = (PCD_DEFAULT_DATA *)(DataBuffer + sizeof (PCD_NV_STORE_DEFAULT_BUFFER_HEADER));
+ NvStoreBuffer = (VARIABLE_STORE_HEADER *)((UINT8 *)DataHeader + sizeof (DataHeader->DataSize) + DataHeader->HeaderSize);
+ VariableStorage = AllocatePool (NvStoreBuffer->Size);
ASSERT (VariableStorage != NULL);
CopyMem (VariableStorage, NvStoreBuffer, NvStoreBuffer->Size);
//
// Find the matched SkuId and DefaultId in the first section
//
- IsFound = FALSE;
- DefaultInfo = &(DataHeader->DefaultInfo[0]);
- BufferEnd = (UINT8 *) DataHeader + sizeof (DataHeader->DataSize) + DataHeader->HeaderSize;
- while ((UINT8 *) DefaultInfo < BufferEnd) {
- if (DefaultInfo->DefaultId == DefaultId && DefaultInfo->SkuId == gSkuId) {
+ IsFound = FALSE;
+ DefaultInfo = &(DataHeader->DefaultInfo[0]);
+ BufferEnd = (UINT8 *)DataHeader + sizeof (DataHeader->DataSize) + DataHeader->HeaderSize;
+ while ((UINT8 *)DefaultInfo < BufferEnd) {
+ if ((DefaultInfo->DefaultId == DefaultId) && (DefaultInfo->SkuId == gSkuId)) {
IsFound = TRUE;
break;
}
- DefaultInfo ++;
+
+ DefaultInfo++;
}
+
//
// Find the matched SkuId and DefaultId in the remaining section
//
- Index = sizeof (PCD_NV_STORE_DEFAULT_BUFFER_HEADER) + ((DataHeader->DataSize + 7) & (~7));
- DataHeader = (PCD_DEFAULT_DATA *) (DataBuffer + Index);
+ Index = sizeof (PCD_NV_STORE_DEFAULT_BUFFER_HEADER) + ((DataHeader->DataSize + 7) & (~7));
+ DataHeader = (PCD_DEFAULT_DATA *)(DataBuffer + Index);
while (!IsFound && Index < gNvDefaultStoreSize && DataHeader->DataSize != 0xFFFF) {
DefaultInfo = &(DataHeader->DefaultInfo[0]);
- BufferEnd = (UINT8 *) DataHeader + sizeof (DataHeader->DataSize) + DataHeader->HeaderSize;
- while ((UINT8 *) DefaultInfo < BufferEnd) {
- if (DefaultInfo->DefaultId == DefaultId && DefaultInfo->SkuId == gSkuId) {
+ BufferEnd = (UINT8 *)DataHeader + sizeof (DataHeader->DataSize) + DataHeader->HeaderSize;
+ while ((UINT8 *)DefaultInfo < BufferEnd) {
+ if ((DefaultInfo->DefaultId == DefaultId) && (DefaultInfo->SkuId == gSkuId)) {
IsFound = TRUE;
break;
}
- DefaultInfo ++;
+
+ DefaultInfo++;
}
+
if (IsFound) {
- DeltaData = (PCD_DATA_DELTA *) BufferEnd;
- BufferEnd = (UINT8 *) DataHeader + DataHeader->DataSize;
- while ((UINT8 *) DeltaData < BufferEnd) {
- *((UINT8 *) VariableStorage + DeltaData->Offset) = (UINT8) DeltaData->Value;
- DeltaData ++;
+ DeltaData = (PCD_DATA_DELTA *)BufferEnd;
+ BufferEnd = (UINT8 *)DataHeader + DataHeader->DataSize;
+ while ((UINT8 *)DeltaData < BufferEnd) {
+ *((UINT8 *)VariableStorage + DeltaData->Offset) = (UINT8)DeltaData->Value;
+ DeltaData++;
}
+
break;
}
+
Index = (Index + DataHeader->DataSize + 7) & (~7);
- DataHeader = (PCD_DEFAULT_DATA *) (DataBuffer + Index);
+ DataHeader = (PCD_DEFAULT_DATA *)(DataBuffer + Index);
}
+
//
// Cache the found result in VarStorageList
//
@@ -719,9 +731,10 @@ FindQuestionDefaultSetting ( FreePool (VariableStorage);
VariableStorage = NULL;
}
+
Entry = AllocatePool (sizeof (VARSTORAGE_DEFAULT_DATA));
if (Entry != NULL) {
- Entry->DefaultId = DefaultId;
+ Entry->DefaultId = DefaultId;
Entry->VariableStorage = VariableStorage;
InsertTailList (&gVarStorageList, &Entry->Entry);
} else if (VariableStorage != NULL) {
@@ -729,6 +742,7 @@ FindQuestionDefaultSetting ( VariableStorage = NULL;
}
}
+
//
// The matched variable storage is not found.
//
@@ -739,10 +753,11 @@ FindQuestionDefaultSetting ( //
// Find the question default value from the variable storage
//
- VariableHeader = FindVariableData (VariableStorage, &EfiVarStore->Guid, EfiVarStore->Attributes, (CHAR16 *) EfiVarStore->Name);
+ VariableHeader = FindVariableData (VariableStorage, &EfiVarStore->Guid, EfiVarStore->Attributes, (CHAR16 *)EfiVarStore->Name);
if (VariableHeader == NULL) {
return EFI_NOT_FOUND;
}
+
StartBit = 0;
EndBit = 0;
ByteOffset = IfrQuestionHdr->VarStoreInfo.VarOffset;
@@ -754,6 +769,7 @@ FindQuestionDefaultSetting ( EndBit = StartBit + BitWidth - 1;
Width = EndBit / 8 + 1;
}
+
if (VariableHeader->DataSize < ByteOffset + Width) {
return EFI_INVALID_PARAMETER;
}
@@ -763,11 +779,11 @@ FindQuestionDefaultSetting ( //
if (ValueBuffer != NULL) {
if (BitFieldQuestion) {
- CopyMem (&BufferValue, (UINT8 *) VariableHeader + sizeof (VARIABLE_HEADER) + VariableHeader->NameSize + ByteOffset, Width);
+ CopyMem (&BufferValue, (UINT8 *)VariableHeader + sizeof (VARIABLE_HEADER) + VariableHeader->NameSize + ByteOffset, Width);
BitFieldVal = BitFieldRead32 (BufferValue, StartBit, EndBit);
CopyMem (ValueBuffer, &BitFieldVal, Width);
} else {
- CopyMem (ValueBuffer, (UINT8 *) VariableHeader + sizeof (VARIABLE_HEADER) + VariableHeader->NameSize + IfrQuestionHdr->VarStoreInfo.VarOffset, Width);
+ CopyMem (ValueBuffer, (UINT8 *)VariableHeader + sizeof (VARIABLE_HEADER) + VariableHeader->NameSize + IfrQuestionHdr->VarStoreInfo.VarOffset, Width);
}
}
@@ -782,7 +798,7 @@ FindQuestionDefaultSetting ( **/
VOID
UpdateDefaultSettingInFormPackage (
- HII_IFR_PACKAGE_INSTANCE *FormPackage
+ HII_IFR_PACKAGE_INSTANCE *FormPackage
)
{
UINTN IfrOffset;
@@ -818,232 +834,252 @@ UpdateDefaultSettingInFormPackage ( if (gNvDefaultStoreSize == 0) {
gNvDefaultStoreSize = PcdGetSize (PcdNvStoreDefaultValueBuffer);
}
+
if (gNvDefaultStoreSize < sizeof (PCD_NV_STORE_DEFAULT_BUFFER_HEADER)) {
return;
}
ZeroMem (&VarStoreQuestionHeader, sizeof (VarStoreQuestionHeader));
- PackageLength = FormPackage->FormPkgHdr.Length - sizeof (EFI_HII_PACKAGE_HEADER);
- Width = 0;
- IfrOffset = 0;
- IfrScope = 0;
- IfrOpHdr = (EFI_IFR_OP_HEADER *) FormPackage->IfrData;
- IfrQuestionHdr = NULL;
- IfrQuestionType = 0;
- EfiVarStoreMaxNum = 0;
- EfiVarStoreNumber = 0;
- DefaultIdMaxNum = 0;
- DefaultIdNumber = 0;
- EfiVarStoreList = NULL;
- DefaultIdList = NULL;
- StandardDefaultIsSet = FALSE;
- ManufactDefaultIsSet = FALSE;
+ PackageLength = FormPackage->FormPkgHdr.Length - sizeof (EFI_HII_PACKAGE_HEADER);
+ Width = 0;
+ IfrOffset = 0;
+ IfrScope = 0;
+ IfrOpHdr = (EFI_IFR_OP_HEADER *)FormPackage->IfrData;
+ IfrQuestionHdr = NULL;
+ IfrQuestionType = 0;
+ EfiVarStoreMaxNum = 0;
+ EfiVarStoreNumber = 0;
+ DefaultIdMaxNum = 0;
+ DefaultIdNumber = 0;
+ EfiVarStoreList = NULL;
+ DefaultIdList = NULL;
+ StandardDefaultIsSet = FALSE;
+ ManufactDefaultIsSet = FALSE;
QuestionReferBitField = FALSE;
while (IfrOffset < PackageLength) {
switch (IfrOpHdr->OpCode) {
- case EFI_IFR_VARSTORE_EFI_OP:
- if (EfiVarStoreNumber >= EfiVarStoreMaxNum) {
+ case EFI_IFR_VARSTORE_EFI_OP:
+ if (EfiVarStoreNumber >= EfiVarStoreMaxNum) {
+ //
+ // Reallocate EFI VarStore Buffer
+ //
+ EfiVarStoreList = ReallocatePool (EfiVarStoreMaxNum * sizeof (UINTN), (EfiVarStoreMaxNum + BASE_NUMBER) * sizeof (UINTN), EfiVarStoreList);
+ if (EfiVarStoreList == NULL) {
+ goto Done;
+ }
+
+ EfiVarStoreMaxNum = EfiVarStoreMaxNum + BASE_NUMBER;
+ }
+
+ IfrEfiVarStore = (EFI_IFR_VARSTORE_EFI *)IfrOpHdr;
//
- // Reallocate EFI VarStore Buffer
+ // Convert VarStore Name from ASCII string to Unicode string.
//
- EfiVarStoreList = ReallocatePool (EfiVarStoreMaxNum * sizeof (UINTN), (EfiVarStoreMaxNum + BASE_NUMBER) * sizeof (UINTN), EfiVarStoreList);
- if (EfiVarStoreList == NULL) {
- goto Done;
+ EfiVarStoreList[EfiVarStoreNumber] = AllocatePool (IfrEfiVarStore->Header.Length + AsciiStrSize ((CHAR8 *)IfrEfiVarStore->Name));
+ if (EfiVarStoreList[EfiVarStoreNumber] == NULL) {
+ break;
}
- EfiVarStoreMaxNum = EfiVarStoreMaxNum + BASE_NUMBER;
- }
- IfrEfiVarStore = (EFI_IFR_VARSTORE_EFI *) IfrOpHdr;
- //
- // Convert VarStore Name from ASCII string to Unicode string.
- //
- EfiVarStoreList [EfiVarStoreNumber] = AllocatePool (IfrEfiVarStore->Header.Length + AsciiStrSize ((CHAR8 *)IfrEfiVarStore->Name));
- if (EfiVarStoreList [EfiVarStoreNumber] == NULL) {
+
+ CopyMem (EfiVarStoreList[EfiVarStoreNumber], IfrEfiVarStore, IfrEfiVarStore->Header.Length);
+ AsciiStrToUnicodeStrS ((CHAR8 *)IfrEfiVarStore->Name, (CHAR16 *)&(EfiVarStoreList[EfiVarStoreNumber]->Name[0]), AsciiStrSize ((CHAR8 *)IfrEfiVarStore->Name) * sizeof (CHAR16));
+ Status = FindQuestionDefaultSetting (EFI_HII_DEFAULT_CLASS_STANDARD, EfiVarStoreList[EfiVarStoreNumber], &VarStoreQuestionHeader, NULL, IfrEfiVarStore->Size, FALSE);
+ if (!EFI_ERROR (Status)) {
+ EfiVarStoreNumber++;
+ } else {
+ FreePool (EfiVarStoreList[EfiVarStoreNumber]);
+ EfiVarStoreList[EfiVarStoreNumber] = NULL;
+ }
+
break;
- }
- CopyMem (EfiVarStoreList [EfiVarStoreNumber], IfrEfiVarStore, IfrEfiVarStore->Header.Length);
- AsciiStrToUnicodeStrS ((CHAR8 *)IfrEfiVarStore->Name, (CHAR16 *) &(EfiVarStoreList [EfiVarStoreNumber]->Name[0]), AsciiStrSize ((CHAR8 *)IfrEfiVarStore->Name) * sizeof (CHAR16));
- Status = FindQuestionDefaultSetting (EFI_HII_DEFAULT_CLASS_STANDARD, EfiVarStoreList[EfiVarStoreNumber], &VarStoreQuestionHeader, NULL, IfrEfiVarStore->Size, FALSE);
- if (!EFI_ERROR (Status)) {
- EfiVarStoreNumber ++;
- } else {
- FreePool (EfiVarStoreList [EfiVarStoreNumber]);
- EfiVarStoreList [EfiVarStoreNumber] = NULL;
- }
- break;
- case EFI_IFR_DEFAULTSTORE_OP:
- if (DefaultIdNumber >= DefaultIdMaxNum) {
+ case EFI_IFR_DEFAULTSTORE_OP:
+ if (DefaultIdNumber >= DefaultIdMaxNum) {
+ //
+ // Reallocate DefaultIdNumber
+ //
+ DefaultIdList = ReallocatePool (DefaultIdMaxNum * sizeof (UINT16), (DefaultIdMaxNum + BASE_NUMBER) * sizeof (UINT16), DefaultIdList);
+ if (DefaultIdList == NULL) {
+ goto Done;
+ }
+
+ DefaultIdMaxNum = DefaultIdMaxNum + BASE_NUMBER;
+ }
+
+ DefaultIdList[DefaultIdNumber++] = ((EFI_IFR_DEFAULTSTORE *)IfrOpHdr)->DefaultId;
+ break;
+ case EFI_IFR_FORM_OP:
+ case EFI_IFR_FORM_MAP_OP:
//
- // Reallocate DefaultIdNumber
+ // No EFI varstore is found and directly return.
//
- DefaultIdList = ReallocatePool (DefaultIdMaxNum * sizeof (UINT16), (DefaultIdMaxNum + BASE_NUMBER) * sizeof (UINT16), DefaultIdList);
- if (DefaultIdList == NULL) {
+ if ((EfiVarStoreNumber == 0) || (DefaultIdNumber == 0)) {
goto Done;
}
- DefaultIdMaxNum = DefaultIdMaxNum + BASE_NUMBER;
- }
- DefaultIdList[DefaultIdNumber ++] = ((EFI_IFR_DEFAULTSTORE *) IfrOpHdr)->DefaultId;
- break;
- case EFI_IFR_FORM_OP:
- case EFI_IFR_FORM_MAP_OP:
- //
- // No EFI varstore is found and directly return.
- //
- if (EfiVarStoreNumber == 0 || DefaultIdNumber == 0) {
- goto Done;
- }
- break;
- case EFI_IFR_CHECKBOX_OP:
- IfrScope = IfrOpHdr->Scope;
- IfrQuestionType = IfrOpHdr->OpCode;
- IfrQuestionHdr = (EFI_IFR_QUESTION_HEADER *) (IfrOpHdr + 1);
- IfrCheckBox = (EFI_IFR_CHECKBOX *) IfrOpHdr;
- EfiVarStoreIndex = IsEfiVarStoreQuestion (IfrQuestionHdr, EfiVarStoreList, EfiVarStoreNumber);
- Width = sizeof (BOOLEAN);
- if (EfiVarStoreIndex < EfiVarStoreNumber) {
- for (Index = 0; Index < DefaultIdNumber; Index ++) {
- if (DefaultIdList[Index] == EFI_HII_DEFAULT_CLASS_STANDARD) {
- Status = FindQuestionDefaultSetting (DefaultIdList[Index], EfiVarStoreList[EfiVarStoreIndex], IfrQuestionHdr, &IfrValue, sizeof (BOOLEAN), QuestionReferBitField);
- if (!EFI_ERROR (Status)) {
- if (IfrValue.b) {
- IfrCheckBox->Flags = IfrCheckBox->Flags | EFI_IFR_CHECKBOX_DEFAULT;
- } else {
- IfrCheckBox->Flags = IfrCheckBox->Flags & (~EFI_IFR_CHECKBOX_DEFAULT);
+
+ break;
+ case EFI_IFR_CHECKBOX_OP:
+ IfrScope = IfrOpHdr->Scope;
+ IfrQuestionType = IfrOpHdr->OpCode;
+ IfrQuestionHdr = (EFI_IFR_QUESTION_HEADER *)(IfrOpHdr + 1);
+ IfrCheckBox = (EFI_IFR_CHECKBOX *)IfrOpHdr;
+ EfiVarStoreIndex = IsEfiVarStoreQuestion (IfrQuestionHdr, EfiVarStoreList, EfiVarStoreNumber);
+ Width = sizeof (BOOLEAN);
+ if (EfiVarStoreIndex < EfiVarStoreNumber) {
+ for (Index = 0; Index < DefaultIdNumber; Index++) {
+ if (DefaultIdList[Index] == EFI_HII_DEFAULT_CLASS_STANDARD) {
+ Status = FindQuestionDefaultSetting (DefaultIdList[Index], EfiVarStoreList[EfiVarStoreIndex], IfrQuestionHdr, &IfrValue, sizeof (BOOLEAN), QuestionReferBitField);
+ if (!EFI_ERROR (Status)) {
+ if (IfrValue.b) {
+ IfrCheckBox->Flags = IfrCheckBox->Flags | EFI_IFR_CHECKBOX_DEFAULT;
+ } else {
+ IfrCheckBox->Flags = IfrCheckBox->Flags & (~EFI_IFR_CHECKBOX_DEFAULT);
+ }
+ }
+ } else if (DefaultIdList[Index] == EFI_HII_DEFAULT_CLASS_MANUFACTURING) {
+ Status = FindQuestionDefaultSetting (DefaultIdList[Index], EfiVarStoreList[EfiVarStoreIndex], IfrQuestionHdr, &IfrValue, sizeof (BOOLEAN), QuestionReferBitField);
+ if (!EFI_ERROR (Status)) {
+ if (IfrValue.b) {
+ IfrCheckBox->Flags = IfrCheckBox->Flags | EFI_IFR_CHECKBOX_DEFAULT_MFG;
+ } else {
+ IfrCheckBox->Flags = IfrCheckBox->Flags & (~EFI_IFR_CHECKBOX_DEFAULT_MFG);
+ }
}
}
- } else if (DefaultIdList[Index] == EFI_HII_DEFAULT_CLASS_MANUFACTURING) {
- Status = FindQuestionDefaultSetting (DefaultIdList[Index], EfiVarStoreList[EfiVarStoreIndex], IfrQuestionHdr, &IfrValue, sizeof (BOOLEAN), QuestionReferBitField);
- if (!EFI_ERROR (Status)) {
- if (IfrValue.b) {
- IfrCheckBox->Flags = IfrCheckBox->Flags | EFI_IFR_CHECKBOX_DEFAULT_MFG;
- } else {
- IfrCheckBox->Flags = IfrCheckBox->Flags & (~EFI_IFR_CHECKBOX_DEFAULT_MFG);
+ }
+ }
+
+ break;
+ case EFI_IFR_NUMERIC_OP:
+ IfrScope = IfrOpHdr->Scope;
+ IfrQuestionType = IfrOpHdr->OpCode;
+ IfrQuestionHdr = (EFI_IFR_QUESTION_HEADER *)(IfrOpHdr + 1);
+ if (QuestionReferBitField) {
+ Width = (UINTN)(((EFI_IFR_ONE_OF *)IfrOpHdr)->Flags & EDKII_IFR_NUMERIC_SIZE_BIT);
+ } else {
+ Width = (UINTN)((UINT32)1 << (((EFI_IFR_ONE_OF *)IfrOpHdr)->Flags & EFI_IFR_NUMERIC_SIZE));
+ }
+
+ break;
+ case EFI_IFR_ONE_OF_OP:
+ IfrScope = IfrOpHdr->Scope;
+ IfrQuestionType = IfrOpHdr->OpCode;
+ IfrQuestionHdr = (EFI_IFR_QUESTION_HEADER *)(IfrOpHdr + 1);
+ if (QuestionReferBitField) {
+ Width = (UINTN)(((EFI_IFR_ONE_OF *)IfrOpHdr)->Flags & EDKII_IFR_NUMERIC_SIZE_BIT);
+ } else {
+ Width = (UINTN)((UINT32)1 << (((EFI_IFR_ONE_OF *)IfrOpHdr)->Flags & EFI_IFR_NUMERIC_SIZE));
+ }
+
+ EfiVarStoreIndex = IsEfiVarStoreQuestion (IfrQuestionHdr, EfiVarStoreList, EfiVarStoreNumber);
+ StandardDefaultIsSet = FALSE;
+ ManufactDefaultIsSet = FALSE;
+ //
+ // Find Default and Manufacturing default for OneOf question
+ //
+ if (EfiVarStoreIndex < EfiVarStoreNumber) {
+ for (Index = 0; Index < DefaultIdNumber; Index++) {
+ if (DefaultIdList[Index] == EFI_HII_DEFAULT_CLASS_STANDARD) {
+ Status = FindQuestionDefaultSetting (EFI_HII_DEFAULT_CLASS_STANDARD, EfiVarStoreList[EfiVarStoreIndex], IfrQuestionHdr, &IfrValue, Width, QuestionReferBitField);
+ if (!EFI_ERROR (Status)) {
+ StandardDefaultIsSet = TRUE;
+ }
+ } else if (DefaultIdList[Index] == EFI_HII_DEFAULT_CLASS_MANUFACTURING) {
+ Status = FindQuestionDefaultSetting (EFI_HII_DEFAULT_CLASS_MANUFACTURING, EfiVarStoreList[EfiVarStoreIndex], IfrQuestionHdr, &IfrManufactValue, Width, QuestionReferBitField);
+ if (!EFI_ERROR (Status)) {
+ ManufactDefaultIsSet = TRUE;
}
}
}
}
- }
- break;
- case EFI_IFR_NUMERIC_OP:
- IfrScope = IfrOpHdr->Scope;
- IfrQuestionType = IfrOpHdr->OpCode;
- IfrQuestionHdr = (EFI_IFR_QUESTION_HEADER *) (IfrOpHdr + 1);
- if (QuestionReferBitField) {
- Width = (UINTN) (((EFI_IFR_ONE_OF *) IfrOpHdr)->Flags & EDKII_IFR_NUMERIC_SIZE_BIT);
- } else {
- Width = (UINTN) ((UINT32) 1 << (((EFI_IFR_ONE_OF *) IfrOpHdr)->Flags & EFI_IFR_NUMERIC_SIZE));
- }
- break;
- case EFI_IFR_ONE_OF_OP:
- IfrScope = IfrOpHdr->Scope;
- IfrQuestionType = IfrOpHdr->OpCode;
- IfrQuestionHdr = (EFI_IFR_QUESTION_HEADER *) (IfrOpHdr + 1);
- if (QuestionReferBitField) {
- Width = (UINTN) (((EFI_IFR_ONE_OF *) IfrOpHdr)->Flags & EDKII_IFR_NUMERIC_SIZE_BIT);
- } else {
- Width = (UINTN) ((UINT32) 1 << (((EFI_IFR_ONE_OF *) IfrOpHdr)->Flags & EFI_IFR_NUMERIC_SIZE));
- }
- EfiVarStoreIndex = IsEfiVarStoreQuestion (IfrQuestionHdr, EfiVarStoreList, EfiVarStoreNumber);
- StandardDefaultIsSet = FALSE;
- ManufactDefaultIsSet = FALSE;
- //
- // Find Default and Manufacturing default for OneOf question
- //
- if (EfiVarStoreIndex < EfiVarStoreNumber) {
- for (Index = 0; Index < DefaultIdNumber; Index ++) {
- if (DefaultIdList[Index] == EFI_HII_DEFAULT_CLASS_STANDARD) {
- Status = FindQuestionDefaultSetting (EFI_HII_DEFAULT_CLASS_STANDARD, EfiVarStoreList[EfiVarStoreIndex], IfrQuestionHdr, &IfrValue, Width, QuestionReferBitField);
- if (!EFI_ERROR (Status)) {
- StandardDefaultIsSet = TRUE;
+
+ break;
+ case EFI_IFR_ORDERED_LIST_OP:
+ IfrScope = IfrOpHdr->Scope;
+ IfrQuestionType = IfrOpHdr->OpCode;
+ IfrQuestionHdr = (EFI_IFR_QUESTION_HEADER *)(IfrOpHdr + 1);
+ break;
+ case EFI_IFR_ONE_OF_OPTION_OP:
+ if ((IfrQuestionHdr != NULL) && (IfrScope > 0)) {
+ IfrOneOfOption = (EFI_IFR_ONE_OF_OPTION *)IfrOpHdr;
+ if (IfrQuestionType == EFI_IFR_ONE_OF_OP) {
+ Width = (UINTN)((UINT32)1 << (IfrOneOfOption->Flags & EFI_IFR_NUMERIC_SIZE));
+ if (StandardDefaultIsSet) {
+ if (CompareMem (&IfrOneOfOption->Value, &IfrValue, Width) == 0) {
+ IfrOneOfOption->Flags |= EFI_IFR_OPTION_DEFAULT;
+ } else {
+ IfrOneOfOption->Flags &= ~EFI_IFR_OPTION_DEFAULT;
+ }
}
- } else if (DefaultIdList[Index] == EFI_HII_DEFAULT_CLASS_MANUFACTURING) {
- Status = FindQuestionDefaultSetting (EFI_HII_DEFAULT_CLASS_MANUFACTURING, EfiVarStoreList[EfiVarStoreIndex], IfrQuestionHdr, &IfrManufactValue, Width, QuestionReferBitField);
- if (!EFI_ERROR (Status)) {
- ManufactDefaultIsSet = TRUE;
+
+ if (ManufactDefaultIsSet) {
+ if (CompareMem (&IfrOneOfOption->Value, &IfrManufactValue, Width) == 0) {
+ IfrOneOfOption->Flags |= EFI_IFR_OPTION_DEFAULT_MFG;
+ } else {
+ IfrOneOfOption->Flags &= ~EFI_IFR_OPTION_DEFAULT_MFG;
+ }
}
}
}
- }
- break;
- case EFI_IFR_ORDERED_LIST_OP:
- IfrScope = IfrOpHdr->Scope;
- IfrQuestionType = IfrOpHdr->OpCode;
- IfrQuestionHdr = (EFI_IFR_QUESTION_HEADER *) (IfrOpHdr + 1);
- break;
- case EFI_IFR_ONE_OF_OPTION_OP:
- if (IfrQuestionHdr != NULL && IfrScope > 0) {
- IfrOneOfOption = (EFI_IFR_ONE_OF_OPTION *) IfrOpHdr;
- if (IfrQuestionType == EFI_IFR_ONE_OF_OP) {
- Width = (UINTN) ((UINT32) 1 << (IfrOneOfOption->Flags & EFI_IFR_NUMERIC_SIZE));
- if (StandardDefaultIsSet) {
- if (CompareMem (&IfrOneOfOption->Value, &IfrValue, Width) == 0) {
- IfrOneOfOption->Flags |= EFI_IFR_OPTION_DEFAULT;
- } else {
- IfrOneOfOption->Flags &= ~EFI_IFR_OPTION_DEFAULT;
+
+ break;
+ case EFI_IFR_DEFAULT_OP:
+ if ((IfrQuestionHdr != NULL) && (IfrScope > 0)) {
+ IfrDefault = (EFI_IFR_DEFAULT *)IfrOpHdr;
+ //
+ // Collect default value width
+ //
+ if (!QuestionReferBitField) {
+ Width = 0;
+ if ((IfrDefault->Type == EFI_IFR_TYPE_NUM_SIZE_8) || (IfrDefault->Type == EFI_IFR_TYPE_BOOLEAN)) {
+ Width = 1;
+ } else if (IfrDefault->Type == EFI_IFR_TYPE_NUM_SIZE_16) {
+ Width = 2;
+ } else if (IfrDefault->Type == EFI_IFR_TYPE_NUM_SIZE_32) {
+ Width = 4;
+ } else if (IfrDefault->Type == EFI_IFR_TYPE_NUM_SIZE_64) {
+ Width = 8;
+ } else if (IfrDefault->Type == EFI_IFR_TYPE_BUFFER) {
+ Width = IfrDefault->Header.Length - OFFSET_OF (EFI_IFR_DEFAULT, Value);
}
}
- if (ManufactDefaultIsSet) {
- if (CompareMem (&IfrOneOfOption->Value, &IfrManufactValue, Width) == 0) {
- IfrOneOfOption->Flags |= EFI_IFR_OPTION_DEFAULT_MFG;
- } else {
- IfrOneOfOption->Flags &= ~EFI_IFR_OPTION_DEFAULT_MFG;
+
+ //
+ // Update the default value
+ //
+ if (Width > 0) {
+ EfiVarStoreIndex = IsEfiVarStoreQuestion (IfrQuestionHdr, EfiVarStoreList, EfiVarStoreNumber);
+ if (EfiVarStoreIndex < EfiVarStoreNumber) {
+ Status = FindQuestionDefaultSetting (IfrDefault->DefaultId, EfiVarStoreList[EfiVarStoreIndex], IfrQuestionHdr, &IfrDefault->Value, Width, QuestionReferBitField);
}
}
}
- }
- break;
- case EFI_IFR_DEFAULT_OP:
- if (IfrQuestionHdr != NULL && IfrScope > 0) {
- IfrDefault = (EFI_IFR_DEFAULT *) IfrOpHdr;
- //
- // Collect default value width
- //
- if (!QuestionReferBitField) {
- Width = 0;
- if (IfrDefault->Type == EFI_IFR_TYPE_NUM_SIZE_8 || IfrDefault->Type == EFI_IFR_TYPE_BOOLEAN) {
- Width = 1;
- } else if (IfrDefault->Type == EFI_IFR_TYPE_NUM_SIZE_16) {
- Width = 2;
- } else if (IfrDefault->Type == EFI_IFR_TYPE_NUM_SIZE_32) {
- Width = 4;
- } else if (IfrDefault->Type == EFI_IFR_TYPE_NUM_SIZE_64) {
- Width = 8;
- } else if (IfrDefault->Type == EFI_IFR_TYPE_BUFFER) {
- Width = IfrDefault->Header.Length - OFFSET_OF (EFI_IFR_DEFAULT, Value);
+
+ break;
+ case EFI_IFR_END_OP:
+ if (IfrQuestionHdr != NULL) {
+ if (IfrScope > 0) {
+ IfrScope--;
}
- }
- //
- // Update the default value
- //
- if (Width > 0) {
- EfiVarStoreIndex = IsEfiVarStoreQuestion (IfrQuestionHdr, EfiVarStoreList, EfiVarStoreNumber);
- if (EfiVarStoreIndex < EfiVarStoreNumber) {
- Status = FindQuestionDefaultSetting (IfrDefault->DefaultId, EfiVarStoreList[EfiVarStoreIndex], IfrQuestionHdr, &IfrDefault->Value, Width, QuestionReferBitField);
+
+ if (IfrScope == 0) {
+ IfrQuestionHdr = NULL;
+ QuestionReferBitField = FALSE;
}
}
- }
- break;
- case EFI_IFR_END_OP:
- if (IfrQuestionHdr != NULL) {
- if (IfrScope > 0) {
- IfrScope --;
- }
- if (IfrScope == 0) {
- IfrQuestionHdr = NULL;
- QuestionReferBitField = FALSE;
+
+ break;
+ case EFI_IFR_GUID_OP:
+ if (CompareGuid ((EFI_GUID *)((UINT8 *)IfrOpHdr + sizeof (EFI_IFR_OP_HEADER)), &gEdkiiIfrBitVarstoreGuid)) {
+ QuestionReferBitField = TRUE;
}
- }
- break;
- case EFI_IFR_GUID_OP:
- if (CompareGuid ((EFI_GUID *)((UINT8 *)IfrOpHdr + sizeof (EFI_IFR_OP_HEADER)), &gEdkiiIfrBitVarstoreGuid)) {
- QuestionReferBitField = TRUE;
- }
- break;
- default:
- break;
+
+ break;
+ default:
+ break;
}
+
IfrOffset = IfrOffset + IfrOpHdr->Length;
- IfrOpHdr = (EFI_IFR_OP_HEADER *) ((UINT8 *) IfrOpHdr + IfrOpHdr->Length);
+ IfrOpHdr = (EFI_IFR_OP_HEADER *)((UINT8 *)IfrOpHdr + IfrOpHdr->Length);
if (IfrScope > 0) {
IfrScope += IfrOpHdr->Scope;
}
@@ -1051,10 +1087,11 @@ UpdateDefaultSettingInFormPackage ( Done:
if (EfiVarStoreList != NULL) {
- for (Index = 0; Index < EfiVarStoreNumber; Index ++) {
- FreePool (EfiVarStoreList [Index]);
+ for (Index = 0; Index < EfiVarStoreNumber; Index++) {
+ FreePool (EfiVarStoreList[Index]);
}
}
+
return;
}
@@ -1077,16 +1114,16 @@ Done: **/
EFI_STATUS
InsertFormPackage (
- IN VOID *PackageHdr,
- IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
- IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
- OUT HII_IFR_PACKAGE_INSTANCE **Package
+ IN VOID *PackageHdr,
+ IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
+ IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
+ OUT HII_IFR_PACKAGE_INSTANCE **Package
)
{
- HII_IFR_PACKAGE_INSTANCE *FormPackage;
- EFI_HII_PACKAGE_HEADER PackageHeader;
+ HII_IFR_PACKAGE_INSTANCE *FormPackage;
+ EFI_HII_PACKAGE_HEADER PackageHeader;
- if (PackageHdr == NULL || PackageList == NULL) {
+ if ((PackageHdr == NULL) || (PackageList == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -1098,12 +1135,12 @@ InsertFormPackage ( //
// Create a Form package node
//
- FormPackage = (HII_IFR_PACKAGE_INSTANCE *) AllocateZeroPool (sizeof (HII_IFR_PACKAGE_INSTANCE));
+ FormPackage = (HII_IFR_PACKAGE_INSTANCE *)AllocateZeroPool (sizeof (HII_IFR_PACKAGE_INSTANCE));
if (FormPackage == NULL) {
return EFI_OUT_OF_RESOURCES;
}
- FormPackage->IfrData = (UINT8 *) AllocateZeroPool (PackageHeader.Length - sizeof (EFI_HII_PACKAGE_HEADER));
+ FormPackage->IfrData = (UINT8 *)AllocateZeroPool (PackageHeader.Length - sizeof (EFI_HII_PACKAGE_HEADER));
if (FormPackage->IfrData == NULL) {
FreePool (FormPackage);
return EFI_OUT_OF_RESOURCES;
@@ -1120,7 +1157,7 @@ InsertFormPackage ( //
CopyMem (
FormPackage->IfrData,
- (UINT8 *) PackageHdr + sizeof (EFI_HII_PACKAGE_HEADER),
+ (UINT8 *)PackageHdr + sizeof (EFI_HII_PACKAGE_HEADER),
PackageHeader.Length - sizeof (EFI_HII_PACKAGE_HEADER)
);
@@ -1135,10 +1172,10 @@ InsertFormPackage ( if (NotifyType == EFI_HII_DATABASE_NOTIFY_ADD_PACK) {
PackageList->PackageListHdr.PackageLength += FormPackage->FormPkgHdr.Length;
}
+
return EFI_SUCCESS;
}
-
/**
This function exports Form packages to a buffer.
This is a internal function.
@@ -1158,25 +1195,25 @@ InsertFormPackage ( **/
EFI_STATUS
ExportFormPackages (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_HII_HANDLE Handle,
- IN HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
- IN UINTN UsedSize,
- IN UINTN BufferSize,
- IN OUT VOID *Buffer,
- IN OUT UINTN *ResultSize
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_HII_HANDLE Handle,
+ IN HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
+ IN UINTN UsedSize,
+ IN UINTN BufferSize,
+ IN OUT VOID *Buffer,
+ IN OUT UINTN *ResultSize
)
{
- HII_IFR_PACKAGE_INSTANCE *FormPackage;
- UINTN PackageLength;
- LIST_ENTRY *Link;
- EFI_STATUS Status;
+ HII_IFR_PACKAGE_INSTANCE *FormPackage;
+ UINTN PackageLength;
+ LIST_ENTRY *Link;
+ EFI_STATUS Status;
- if (Private == NULL || PackageList == NULL || ResultSize == NULL) {
+ if ((Private == NULL) || (PackageList == NULL) || (ResultSize == NULL)) {
return EFI_INVALID_PARAMETER;
}
- if (BufferSize > 0 && Buffer == NULL ) {
+ if ((BufferSize > 0) && (Buffer == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -1187,7 +1224,7 @@ ExportFormPackages ( // Export Form packages.
//
for (Link = PackageList->FormPkgHdr.ForwardLink; Link != &PackageList->FormPkgHdr; Link = Link->ForwardLink) {
- FormPackage = CR (Link, HII_IFR_PACKAGE_INSTANCE, IfrEntry, HII_IFR_PACKAGE_SIGNATURE);
+ FormPackage = CR (Link, HII_IFR_PACKAGE_INSTANCE, IfrEntry, HII_IFR_PACKAGE_SIGNATURE);
PackageLength += FormPackage->FormPkgHdr.Length;
if ((Buffer != NULL) && (PackageLength + *ResultSize + UsedSize <= BufferSize)) {
//
@@ -1196,7 +1233,7 @@ ExportFormPackages ( Status = InvokeRegisteredFunction (
Private,
EFI_HII_DATABASE_NOTIFY_EXPORT_PACK,
- (VOID *) FormPackage,
+ (VOID *)FormPackage,
EFI_HII_PACKAGE_FORMS,
Handle
);
@@ -1204,24 +1241,22 @@ ExportFormPackages ( //
// Copy the Form package content.
//
- CopyMem (Buffer, (VOID *) (&FormPackage->FormPkgHdr), sizeof (EFI_HII_PACKAGE_HEADER));
- Buffer = (UINT8 *) Buffer + sizeof (EFI_HII_PACKAGE_HEADER);
+ CopyMem (Buffer, (VOID *)(&FormPackage->FormPkgHdr), sizeof (EFI_HII_PACKAGE_HEADER));
+ Buffer = (UINT8 *)Buffer + sizeof (EFI_HII_PACKAGE_HEADER);
CopyMem (
Buffer,
- (VOID *) FormPackage->IfrData,
+ (VOID *)FormPackage->IfrData,
FormPackage->FormPkgHdr.Length - sizeof (EFI_HII_PACKAGE_HEADER)
);
- Buffer = (UINT8 *) Buffer + FormPackage->FormPkgHdr.Length - sizeof (EFI_HII_PACKAGE_HEADER);
+ Buffer = (UINT8 *)Buffer + FormPackage->FormPkgHdr.Length - sizeof (EFI_HII_PACKAGE_HEADER);
}
}
*ResultSize += PackageLength;
return EFI_SUCCESS;
-
}
-
/**
This function deletes all Form packages from a package list node.
This is a internal function.
@@ -1238,14 +1273,14 @@ ExportFormPackages ( **/
EFI_STATUS
RemoveFormPackages (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_HII_HANDLE Handle,
- IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_HII_HANDLE Handle,
+ IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList
)
{
- LIST_ENTRY *ListHead;
- HII_IFR_PACKAGE_INSTANCE *Package;
- EFI_STATUS Status;
+ LIST_ENTRY *ListHead;
+ HII_IFR_PACKAGE_INSTANCE *Package;
+ EFI_STATUS Status;
ListHead = &PackageList->FormPkgHdr;
@@ -1259,7 +1294,7 @@ RemoveFormPackages ( Status = InvokeRegisteredFunction (
Private,
EFI_HII_DATABASE_NOTIFY_REMOVE_PACK,
- (VOID *) Package,
+ (VOID *)Package,
EFI_HII_PACKAGE_FORMS,
Handle
);
@@ -1286,8 +1321,6 @@ RemoveFormPackages ( return EFI_SUCCESS;
}
-
-
/**
This function insert a String package to a package list node.
This is a internal function.
@@ -1310,41 +1343,43 @@ RemoveFormPackages ( **/
EFI_STATUS
InsertStringPackage (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN VOID *PackageHdr,
- IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
- IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
- OUT HII_STRING_PACKAGE_INSTANCE **Package
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN VOID *PackageHdr,
+ IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
+ IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
+ OUT HII_STRING_PACKAGE_INSTANCE **Package
)
{
- HII_STRING_PACKAGE_INSTANCE *StringPackage;
- UINT32 HeaderSize;
- EFI_STATUS Status;
- EFI_HII_PACKAGE_HEADER PackageHeader;
- CHAR8 *Language;
- UINT32 LanguageSize;
- LIST_ENTRY *Link;
-
- if (Private == NULL || PackageHdr == NULL || PackageList == NULL) {
+ HII_STRING_PACKAGE_INSTANCE *StringPackage;
+ UINT32 HeaderSize;
+ EFI_STATUS Status;
+ EFI_HII_PACKAGE_HEADER PackageHeader;
+ CHAR8 *Language;
+ UINT32 LanguageSize;
+ LIST_ENTRY *Link;
+
+ if ((Private == NULL) || (PackageHdr == NULL) || (PackageList == NULL)) {
return EFI_INVALID_PARAMETER;
}
+
if (Private->Signature != HII_DATABASE_PRIVATE_DATA_SIGNATURE) {
return EFI_INVALID_PARAMETER;
}
CopyMem (&PackageHeader, PackageHdr, sizeof (EFI_HII_PACKAGE_HEADER));
- CopyMem (&HeaderSize, (UINT8 *) PackageHdr + sizeof (EFI_HII_PACKAGE_HEADER), sizeof (UINT32));
+ CopyMem (&HeaderSize, (UINT8 *)PackageHdr + sizeof (EFI_HII_PACKAGE_HEADER), sizeof (UINT32));
//
// It is illegal to have two string packages with same language within one packagelist
// since the stringid will be duplicate if so. Check it to avoid this potential issue.
//
LanguageSize = HeaderSize - sizeof (EFI_HII_STRING_PACKAGE_HDR) + sizeof (CHAR8);
- Language = (CHAR8 *) AllocateZeroPool (LanguageSize);
+ Language = (CHAR8 *)AllocateZeroPool (LanguageSize);
if (Language == NULL) {
return EFI_OUT_OF_RESOURCES;
}
- AsciiStrCpyS (Language, LanguageSize / sizeof (CHAR8), (CHAR8 *) PackageHdr + HeaderSize - LanguageSize);
+
+ AsciiStrCpyS (Language, LanguageSize / sizeof (CHAR8), (CHAR8 *)PackageHdr + HeaderSize - LanguageSize);
for (Link = PackageList->StringPkgHdr.ForwardLink; Link != &PackageList->StringPkgHdr; Link = Link->ForwardLink) {
StringPackage = CR (Link, HII_STRING_PACKAGE_INSTANCE, StringEntry, HII_STRING_PACKAGE_SIGNATURE);
if (HiiCompareLanguage (Language, StringPackage->StringPkgHdr->Language)) {
@@ -1352,24 +1387,25 @@ InsertStringPackage ( return EFI_UNSUPPORTED;
}
}
+
FreePool (Language);
//
// Create a String package node
//
- StringPackage = (HII_STRING_PACKAGE_INSTANCE *) AllocateZeroPool (sizeof (HII_STRING_PACKAGE_INSTANCE));
+ StringPackage = (HII_STRING_PACKAGE_INSTANCE *)AllocateZeroPool (sizeof (HII_STRING_PACKAGE_INSTANCE));
if (StringPackage == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Error;
}
- StringPackage->StringPkgHdr = (EFI_HII_STRING_PACKAGE_HDR *) AllocateZeroPool (HeaderSize);
+ StringPackage->StringPkgHdr = (EFI_HII_STRING_PACKAGE_HDR *)AllocateZeroPool (HeaderSize);
if (StringPackage->StringPkgHdr == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Error;
}
- StringPackage->StringBlock = (UINT8 *) AllocateZeroPool (PackageHeader.Length - HeaderSize);
+ StringPackage->StringBlock = (UINT8 *)AllocateZeroPool (PackageHeader.Length - HeaderSize);
if (StringPackage->StringBlock == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Error;
@@ -1389,14 +1425,14 @@ InsertStringPackage ( //
CopyMem (
StringPackage->StringBlock,
- (UINT8 *) PackageHdr + HeaderSize,
+ (UINT8 *)PackageHdr + HeaderSize,
PackageHeader.Length - HeaderSize
);
//
// Collect all font block info
//
- Status = FindStringBlock (Private, StringPackage, (EFI_STRING_ID) (-1), NULL, NULL, NULL, &StringPackage->MaxStringId, NULL);
+ Status = FindStringBlock (Private, StringPackage, (EFI_STRING_ID)(-1), NULL, NULL, NULL, &StringPackage->MaxStringId, NULL);
if (EFI_ERROR (Status)) {
return Status;
}
@@ -1419,13 +1455,15 @@ Error: if (StringPackage->StringBlock != NULL) {
FreePool (StringPackage->StringBlock);
}
+
if (StringPackage->StringPkgHdr != NULL) {
FreePool (StringPackage->StringPkgHdr);
}
+
FreePool (StringPackage);
}
- return Status;
+ return Status;
}
/**
@@ -1439,23 +1477,24 @@ Error: **/
EFI_STATUS
AdjustStringPackage (
- IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList
-)
+ IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList
+ )
{
- LIST_ENTRY *Link;
- HII_STRING_PACKAGE_INSTANCE *StringPackage;
- UINT32 Skip2BlockSize;
- UINT32 OldBlockSize;
- UINT8 *StringBlock;
- UINT8 *BlockPtr;
- EFI_STRING_ID MaxStringId;
- UINT16 SkipCount;
+ LIST_ENTRY *Link;
+ HII_STRING_PACKAGE_INSTANCE *StringPackage;
+ UINT32 Skip2BlockSize;
+ UINT32 OldBlockSize;
+ UINT8 *StringBlock;
+ UINT8 *BlockPtr;
+ EFI_STRING_ID MaxStringId;
+ UINT16 SkipCount;
MaxStringId = 0;
for (Link = PackageList->StringPkgHdr.ForwardLink;
Link != &PackageList->StringPkgHdr;
Link = Link->ForwardLink
- ) {
+ )
+ {
StringPackage = CR (Link, HII_STRING_PACKAGE_INSTANCE, StringEntry, HII_STRING_PACKAGE_SIGNATURE);
if (MaxStringId < StringPackage->MaxStringId) {
MaxStringId = StringPackage->MaxStringId;
@@ -1465,20 +1504,22 @@ AdjustStringPackage ( for (Link = PackageList->StringPkgHdr.ForwardLink;
Link != &PackageList->StringPkgHdr;
Link = Link->ForwardLink
- ) {
+ )
+ {
StringPackage = CR (Link, HII_STRING_PACKAGE_INSTANCE, StringEntry, HII_STRING_PACKAGE_SIGNATURE);
if (StringPackage->MaxStringId < MaxStringId) {
OldBlockSize = StringPackage->StringPkgHdr->Header.Length - StringPackage->StringPkgHdr->HdrSize;
//
// Create SKIP2 EFI_HII_SIBT_SKIP2_BLOCKs to reserve the missing string IDs.
//
- SkipCount = (UINT16) (MaxStringId - StringPackage->MaxStringId);
- Skip2BlockSize = (UINT32) sizeof (EFI_HII_SIBT_SKIP2_BLOCK);
+ SkipCount = (UINT16)(MaxStringId - StringPackage->MaxStringId);
+ Skip2BlockSize = (UINT32)sizeof (EFI_HII_SIBT_SKIP2_BLOCK);
- StringBlock = (UINT8 *) AllocateZeroPool (OldBlockSize + Skip2BlockSize);
+ StringBlock = (UINT8 *)AllocateZeroPool (OldBlockSize + Skip2BlockSize);
if (StringBlock == NULL) {
return EFI_OUT_OF_RESOURCES;
}
+
//
// Copy original string blocks, except the EFI_HII_SIBT_END.
//
@@ -1489,17 +1530,17 @@ AdjustStringPackage ( BlockPtr = StringBlock + OldBlockSize - sizeof (EFI_HII_SIBT_END_BLOCK);
*BlockPtr = EFI_HII_SIBT_SKIP2;
CopyMem (BlockPtr + 1, &SkipCount, sizeof (UINT16));
- BlockPtr += sizeof (EFI_HII_SIBT_SKIP2_BLOCK);
+ BlockPtr += sizeof (EFI_HII_SIBT_SKIP2_BLOCK);
//
// Append a EFI_HII_SIBT_END block to the end.
//
*BlockPtr = EFI_HII_SIBT_END;
FreePool (StringPackage->StringBlock);
- StringPackage->StringBlock = StringBlock;
+ StringPackage->StringBlock = StringBlock;
StringPackage->StringPkgHdr->Header.Length += Skip2BlockSize;
- PackageList->PackageListHdr.PackageLength += Skip2BlockSize;
- StringPackage->MaxStringId = MaxStringId;
+ PackageList->PackageListHdr.PackageLength += Skip2BlockSize;
+ StringPackage->MaxStringId = MaxStringId;
}
}
@@ -1525,25 +1566,25 @@ AdjustStringPackage ( **/
EFI_STATUS
ExportStringPackages (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_HII_HANDLE Handle,
- IN HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
- IN UINTN UsedSize,
- IN UINTN BufferSize,
- IN OUT VOID *Buffer,
- IN OUT UINTN *ResultSize
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_HII_HANDLE Handle,
+ IN HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
+ IN UINTN UsedSize,
+ IN UINTN BufferSize,
+ IN OUT VOID *Buffer,
+ IN OUT UINTN *ResultSize
)
{
- LIST_ENTRY *Link;
- UINTN PackageLength;
- EFI_STATUS Status;
- HII_STRING_PACKAGE_INSTANCE *StringPackage;
+ LIST_ENTRY *Link;
+ UINTN PackageLength;
+ EFI_STATUS Status;
+ HII_STRING_PACKAGE_INSTANCE *StringPackage;
- if (Private == NULL || PackageList == NULL || ResultSize == NULL) {
+ if ((Private == NULL) || (PackageList == NULL) || (ResultSize == NULL)) {
return EFI_INVALID_PARAMETER;
}
- if (BufferSize > 0 && Buffer == NULL ) {
+ if ((BufferSize > 0) && (Buffer == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -1551,7 +1592,7 @@ ExportStringPackages ( Status = EFI_SUCCESS;
for (Link = PackageList->StringPkgHdr.ForwardLink; Link != &PackageList->StringPkgHdr; Link = Link->ForwardLink) {
- StringPackage = CR (Link, HII_STRING_PACKAGE_INSTANCE, StringEntry, HII_STRING_PACKAGE_SIGNATURE);
+ StringPackage = CR (Link, HII_STRING_PACKAGE_INSTANCE, StringEntry, HII_STRING_PACKAGE_SIGNATURE);
PackageLength += StringPackage->StringPkgHdr->Header.Length;
if (PackageLength + *ResultSize + UsedSize <= BufferSize) {
//
@@ -1560,7 +1601,7 @@ ExportStringPackages ( Status = InvokeRegisteredFunction (
Private,
EFI_HII_DATABASE_NOTIFY_EXPORT_PACK,
- (VOID *) StringPackage,
+ (VOID *)StringPackage,
EFI_HII_PACKAGE_STRINGS,
Handle
);
@@ -1569,7 +1610,7 @@ ExportStringPackages ( // Copy String package header
//
CopyMem (Buffer, StringPackage->StringPkgHdr, StringPackage->StringPkgHdr->HdrSize);
- Buffer = (UINT8 *) Buffer + StringPackage->StringPkgHdr->HdrSize;
+ Buffer = (UINT8 *)Buffer + StringPackage->StringPkgHdr->HdrSize;
//
// Copy String blocks information
@@ -1579,7 +1620,7 @@ ExportStringPackages ( StringPackage->StringBlock,
StringPackage->StringPkgHdr->Header.Length - StringPackage->StringPkgHdr->HdrSize
);
- Buffer = (UINT8 *) Buffer + StringPackage->StringPkgHdr->Header.Length - StringPackage->StringPkgHdr->HdrSize;
+ Buffer = (UINT8 *)Buffer + StringPackage->StringPkgHdr->Header.Length - StringPackage->StringPkgHdr->HdrSize;
}
}
@@ -1587,7 +1628,6 @@ ExportStringPackages ( return EFI_SUCCESS;
}
-
/**
This function deletes all String packages from a package list node.
This is a internal function.
@@ -1604,15 +1644,15 @@ ExportStringPackages ( **/
EFI_STATUS
RemoveStringPackages (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_HII_HANDLE Handle,
- IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_HII_HANDLE Handle,
+ IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList
)
{
- LIST_ENTRY *ListHead;
- HII_STRING_PACKAGE_INSTANCE *Package;
- HII_FONT_INFO *FontInfo;
- EFI_STATUS Status;
+ LIST_ENTRY *ListHead;
+ HII_STRING_PACKAGE_INSTANCE *Package;
+ HII_FONT_INFO *FontInfo;
+ EFI_STATUS Status;
ListHead = &PackageList->StringPkgHdr;
@@ -1626,7 +1666,7 @@ RemoveStringPackages ( Status = InvokeRegisteredFunction (
Private,
EFI_HII_DATABASE_NOTIFY_REMOVE_PACK,
- (VOID *) Package,
+ (VOID *)Package,
EFI_HII_PACKAGE_STRINGS,
Handle
);
@@ -1658,7 +1698,6 @@ RemoveStringPackages ( return EFI_SUCCESS;
}
-
/**
This function insert a Font package to a package list node.
This is a internal function.
@@ -1681,28 +1720,28 @@ RemoveStringPackages ( **/
EFI_STATUS
InsertFontPackage (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN VOID *PackageHdr,
- IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
- IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
- OUT HII_FONT_PACKAGE_INSTANCE **Package
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN VOID *PackageHdr,
+ IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
+ IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
+ OUT HII_FONT_PACKAGE_INSTANCE **Package
)
{
- HII_FONT_PACKAGE_INSTANCE *FontPackage;
- EFI_HII_FONT_PACKAGE_HDR *FontPkgHdr;
- UINT32 HeaderSize;
- EFI_STATUS Status;
- EFI_HII_PACKAGE_HEADER PackageHeader;
- EFI_FONT_INFO *FontInfo;
- UINT32 FontInfoSize;
- HII_GLOBAL_FONT_INFO *GlobalFont;
-
- if (Private == NULL || PackageHdr == NULL || PackageList == NULL) {
+ HII_FONT_PACKAGE_INSTANCE *FontPackage;
+ EFI_HII_FONT_PACKAGE_HDR *FontPkgHdr;
+ UINT32 HeaderSize;
+ EFI_STATUS Status;
+ EFI_HII_PACKAGE_HEADER PackageHeader;
+ EFI_FONT_INFO *FontInfo;
+ UINT32 FontInfoSize;
+ HII_GLOBAL_FONT_INFO *GlobalFont;
+
+ if ((Private == NULL) || (PackageHdr == NULL) || (PackageList == NULL)) {
return EFI_INVALID_PARAMETER;
}
CopyMem (&PackageHeader, PackageHdr, sizeof (EFI_HII_PACKAGE_HEADER));
- CopyMem (&HeaderSize, (UINT8 *) PackageHdr + sizeof (EFI_HII_PACKAGE_HEADER), sizeof (UINT32));
+ CopyMem (&HeaderSize, (UINT8 *)PackageHdr + sizeof (EFI_HII_PACKAGE_HEADER), sizeof (UINT32));
FontInfo = NULL;
FontPackage = NULL;
@@ -1713,22 +1752,24 @@ InsertFontPackage ( // database. EFI_FONT_INFO (FontName, FontSize, FontStyle) describes font's
// attributes and identify a font uniquely.
//
- FontPkgHdr = (EFI_HII_FONT_PACKAGE_HDR *) AllocateZeroPool (HeaderSize);
+ FontPkgHdr = (EFI_HII_FONT_PACKAGE_HDR *)AllocateZeroPool (HeaderSize);
if (FontPkgHdr == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Error;
}
+
CopyMem (FontPkgHdr, PackageHdr, HeaderSize);
FontInfoSize = sizeof (EFI_FONT_INFO) + HeaderSize - sizeof (EFI_HII_FONT_PACKAGE_HDR);
- FontInfo = (EFI_FONT_INFO *) AllocateZeroPool (FontInfoSize);
+ FontInfo = (EFI_FONT_INFO *)AllocateZeroPool (FontInfoSize);
if (FontInfo == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Error;
}
+
FontInfo->FontStyle = FontPkgHdr->FontStyle;
FontInfo->FontSize = FontPkgHdr->Cell.Height;
- StrCpyS (FontInfo->FontName, (FontInfoSize - OFFSET_OF(EFI_FONT_INFO,FontName)) / sizeof (CHAR16), FontPkgHdr->FontFamily);
+ StrCpyS (FontInfo->FontName, (FontInfoSize - OFFSET_OF (EFI_FONT_INFO, FontName)) / sizeof (CHAR16), FontPkgHdr->FontFamily);
if (IsFontInfoExisted (Private, FontInfo, NULL, NULL, NULL)) {
Status = EFI_UNSUPPORTED;
@@ -1738,26 +1779,28 @@ InsertFontPackage ( //
// Create a Font package node
//
- FontPackage = (HII_FONT_PACKAGE_INSTANCE *) AllocateZeroPool (sizeof (HII_FONT_PACKAGE_INSTANCE));
+ FontPackage = (HII_FONT_PACKAGE_INSTANCE *)AllocateZeroPool (sizeof (HII_FONT_PACKAGE_INSTANCE));
if (FontPackage == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Error;
}
+
FontPackage->Signature = HII_FONT_PACKAGE_SIGNATURE;
FontPackage->FontPkgHdr = FontPkgHdr;
InitializeListHead (&FontPackage->GlyphInfoList);
- FontPackage->GlyphBlock = (UINT8 *) AllocateZeroPool (PackageHeader.Length - HeaderSize);
+ FontPackage->GlyphBlock = (UINT8 *)AllocateZeroPool (PackageHeader.Length - HeaderSize);
if (FontPackage->GlyphBlock == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Error;
}
- CopyMem (FontPackage->GlyphBlock, (UINT8 *) PackageHdr + HeaderSize, PackageHeader.Length - HeaderSize);
+
+ CopyMem (FontPackage->GlyphBlock, (UINT8 *)PackageHdr + HeaderSize, PackageHeader.Length - HeaderSize);
//
// Collect all default character cell information and backup in GlyphInfoList.
//
- Status = FindGlyphBlock (FontPackage, (CHAR16) (-1), NULL, NULL, NULL);
+ Status = FindGlyphBlock (FontPackage, (CHAR16)(-1), NULL, NULL, NULL);
if (EFI_ERROR (Status)) {
goto Error;
}
@@ -1766,11 +1809,12 @@ InsertFontPackage ( // This font package describes an unique EFI_FONT_INFO. Backup it in global
// font info list.
//
- GlobalFont = (HII_GLOBAL_FONT_INFO *) AllocateZeroPool (sizeof (HII_GLOBAL_FONT_INFO));
+ GlobalFont = (HII_GLOBAL_FONT_INFO *)AllocateZeroPool (sizeof (HII_GLOBAL_FONT_INFO));
if (GlobalFont == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Error;
}
+
GlobalFont->Signature = HII_GLOBAL_FONT_INFO_SIGNATURE;
GlobalFont->FontPackage = FontPackage;
GlobalFont->FontInfoSize = FontInfoSize;
@@ -1794,24 +1838,26 @@ Error: if (FontPkgHdr != NULL) {
FreePool (FontPkgHdr);
}
+
if (FontInfo != NULL) {
FreePool (FontInfo);
}
+
if (FontPackage != NULL) {
if (FontPackage->GlyphBlock != NULL) {
FreePool (FontPackage->GlyphBlock);
}
+
FreePool (FontPackage);
}
+
if (GlobalFont != NULL) {
FreePool (GlobalFont);
}
return Status;
-
}
-
/**
This function exports Font packages to a buffer.
This is a internal function.
@@ -1831,26 +1877,25 @@ Error: **/
EFI_STATUS
ExportFontPackages (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_HII_HANDLE Handle,
- IN HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
- IN UINTN UsedSize,
- IN UINTN BufferSize,
- IN OUT VOID *Buffer,
- IN OUT UINTN *ResultSize
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_HII_HANDLE Handle,
+ IN HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
+ IN UINTN UsedSize,
+ IN UINTN BufferSize,
+ IN OUT VOID *Buffer,
+ IN OUT UINTN *ResultSize
)
{
- LIST_ENTRY *Link;
- UINTN PackageLength;
- EFI_STATUS Status;
- HII_FONT_PACKAGE_INSTANCE *Package;
-
+ LIST_ENTRY *Link;
+ UINTN PackageLength;
+ EFI_STATUS Status;
+ HII_FONT_PACKAGE_INSTANCE *Package;
- if (Private == NULL || PackageList == NULL || ResultSize == NULL) {
+ if ((Private == NULL) || (PackageList == NULL) || (ResultSize == NULL)) {
return EFI_INVALID_PARAMETER;
}
- if (BufferSize > 0 && Buffer == NULL ) {
+ if ((BufferSize > 0) && (Buffer == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -1858,7 +1903,7 @@ ExportFontPackages ( Status = EFI_SUCCESS;
for (Link = PackageList->FontPkgHdr.ForwardLink; Link != &PackageList->FontPkgHdr; Link = Link->ForwardLink) {
- Package = CR (Link, HII_FONT_PACKAGE_INSTANCE, FontEntry, HII_FONT_PACKAGE_SIGNATURE);
+ Package = CR (Link, HII_FONT_PACKAGE_INSTANCE, FontEntry, HII_FONT_PACKAGE_SIGNATURE);
PackageLength += Package->FontPkgHdr->Header.Length;
if (PackageLength + *ResultSize + UsedSize <= BufferSize) {
//
@@ -1867,7 +1912,7 @@ ExportFontPackages ( Status = InvokeRegisteredFunction (
Private,
EFI_HII_DATABASE_NOTIFY_EXPORT_PACK,
- (VOID *) Package,
+ (VOID *)Package,
EFI_HII_PACKAGE_FONTS,
Handle
);
@@ -1876,7 +1921,7 @@ ExportFontPackages ( // Copy Font package header
//
CopyMem (Buffer, Package->FontPkgHdr, Package->FontPkgHdr->HdrSize);
- Buffer = (UINT8 *) Buffer + Package->FontPkgHdr->HdrSize;
+ Buffer = (UINT8 *)Buffer + Package->FontPkgHdr->HdrSize;
//
// Copy Glyph blocks information
@@ -1886,7 +1931,7 @@ ExportFontPackages ( Package->GlyphBlock,
Package->FontPkgHdr->Header.Length - Package->FontPkgHdr->HdrSize
);
- Buffer = (UINT8 *) Buffer + Package->FontPkgHdr->Header.Length - Package->FontPkgHdr->HdrSize;
+ Buffer = (UINT8 *)Buffer + Package->FontPkgHdr->Header.Length - Package->FontPkgHdr->HdrSize;
}
}
@@ -1894,7 +1939,6 @@ ExportFontPackages ( return EFI_SUCCESS;
}
-
/**
This function deletes all Font packages from a package list node.
This is a internal function.
@@ -1911,17 +1955,17 @@ ExportFontPackages ( **/
EFI_STATUS
RemoveFontPackages (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_HII_HANDLE Handle,
- IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_HII_HANDLE Handle,
+ IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList
)
{
- LIST_ENTRY *ListHead;
- HII_FONT_PACKAGE_INSTANCE *Package;
- EFI_STATUS Status;
- HII_GLYPH_INFO *GlyphInfo;
- LIST_ENTRY *Link;
- HII_GLOBAL_FONT_INFO *GlobalFont;
+ LIST_ENTRY *ListHead;
+ HII_FONT_PACKAGE_INSTANCE *Package;
+ EFI_STATUS Status;
+ HII_GLYPH_INFO *GlyphInfo;
+ LIST_ENTRY *Link;
+ HII_GLOBAL_FONT_INFO *GlobalFont;
ListHead = &PackageList->FontPkgHdr;
@@ -1935,7 +1979,7 @@ RemoveFontPackages ( Status = InvokeRegisteredFunction (
Private,
EFI_HII_DATABASE_NOTIFY_REMOVE_PACK,
- (VOID *) Package,
+ (VOID *)Package,
EFI_HII_PACKAGE_FONTS,
Handle
);
@@ -1949,6 +1993,7 @@ RemoveFontPackages ( if (Package->GlyphBlock != NULL) {
FreePool (Package->GlyphBlock);
}
+
FreePool (Package->FontPkgHdr);
//
// Delete default character cell information
@@ -1983,7 +2028,6 @@ RemoveFontPackages ( return EFI_SUCCESS;
}
-
/**
This function insert a Image package to a package list node.
This is a internal function.
@@ -2003,23 +2047,23 @@ RemoveFontPackages ( **/
EFI_STATUS
InsertImagePackage (
- IN VOID *PackageHdr,
- IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
- IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
- OUT HII_IMAGE_PACKAGE_INSTANCE **Package
+ IN VOID *PackageHdr,
+ IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
+ IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
+ OUT HII_IMAGE_PACKAGE_INSTANCE **Package
)
{
- HII_IMAGE_PACKAGE_INSTANCE *ImagePackage;
- UINT32 PaletteSize;
- UINT32 ImageSize;
- UINT16 Index;
- EFI_HII_IMAGE_PALETTE_INFO_HEADER *PaletteHdr;
- EFI_HII_IMAGE_PALETTE_INFO *PaletteInfo;
- UINT32 PaletteInfoOffset;
- UINT32 ImageInfoOffset;
- UINT16 CurrentSize;
-
- if (PackageHdr == NULL || PackageList == NULL) {
+ HII_IMAGE_PACKAGE_INSTANCE *ImagePackage;
+ UINT32 PaletteSize;
+ UINT32 ImageSize;
+ UINT16 Index;
+ EFI_HII_IMAGE_PALETTE_INFO_HEADER *PaletteHdr;
+ EFI_HII_IMAGE_PALETTE_INFO *PaletteInfo;
+ UINT32 PaletteInfoOffset;
+ UINT32 ImageInfoOffset;
+ UINT16 CurrentSize;
+
+ if ((PackageHdr == NULL) || (PackageList == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -2033,7 +2077,7 @@ InsertImagePackage ( //
// Create a Image package node
//
- ImagePackage = (HII_IMAGE_PACKAGE_INSTANCE *) AllocateZeroPool (sizeof (HII_IMAGE_PACKAGE_INSTANCE));
+ ImagePackage = (HII_IMAGE_PACKAGE_INSTANCE *)AllocateZeroPool (sizeof (HII_IMAGE_PACKAGE_INSTANCE));
if (ImagePackage == NULL) {
return EFI_OUT_OF_RESOURCES;
}
@@ -2052,25 +2096,26 @@ InsertImagePackage ( PaletteSize = 0;
ImagePackage->PaletteBlock = NULL;
if (PaletteInfoOffset != 0) {
- PaletteHdr = (EFI_HII_IMAGE_PALETTE_INFO_HEADER *) ((UINT8 *) PackageHdr + PaletteInfoOffset);
+ PaletteHdr = (EFI_HII_IMAGE_PALETTE_INFO_HEADER *)((UINT8 *)PackageHdr + PaletteInfoOffset);
PaletteSize = sizeof (EFI_HII_IMAGE_PALETTE_INFO_HEADER);
- PaletteInfo = (EFI_HII_IMAGE_PALETTE_INFO *) ((UINT8 *) PaletteHdr + PaletteSize);
+ PaletteInfo = (EFI_HII_IMAGE_PALETTE_INFO *)((UINT8 *)PaletteHdr + PaletteSize);
for (Index = 0; Index < PaletteHdr->PaletteCount; Index++) {
CopyMem (&CurrentSize, PaletteInfo, sizeof (UINT16));
CurrentSize += sizeof (UINT16);
- PaletteSize += (UINT32) CurrentSize;
- PaletteInfo = (EFI_HII_IMAGE_PALETTE_INFO *) ((UINT8 *) PaletteInfo + CurrentSize);
+ PaletteSize += (UINT32)CurrentSize;
+ PaletteInfo = (EFI_HII_IMAGE_PALETTE_INFO *)((UINT8 *)PaletteInfo + CurrentSize);
}
- ImagePackage->PaletteBlock = (UINT8 *) AllocateZeroPool (PaletteSize);
+ ImagePackage->PaletteBlock = (UINT8 *)AllocateZeroPool (PaletteSize);
if (ImagePackage->PaletteBlock == NULL) {
FreePool (ImagePackage);
return EFI_OUT_OF_RESOURCES;
}
+
CopyMem (
ImagePackage->PaletteBlock,
- (UINT8 *) PackageHdr + PaletteInfoOffset,
+ (UINT8 *)PackageHdr + PaletteInfoOffset,
PaletteSize
);
}
@@ -2089,9 +2134,10 @@ InsertImagePackage ( FreePool (ImagePackage);
return EFI_OUT_OF_RESOURCES;
}
+
CopyMem (
ImagePackage->ImageBlock,
- (UINT8 *) PackageHdr + ImageInfoOffset,
+ (UINT8 *)PackageHdr + ImageInfoOffset,
ImageSize
);
}
@@ -2108,7 +2154,6 @@ InsertImagePackage ( return EFI_SUCCESS;
}
-
/**
This function exports Image packages to a buffer.
This is a internal function.
@@ -2128,25 +2173,24 @@ InsertImagePackage ( **/
EFI_STATUS
ExportImagePackages (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_HII_HANDLE Handle,
- IN HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
- IN UINTN UsedSize,
- IN UINTN BufferSize,
- IN OUT VOID *Buffer,
- IN OUT UINTN *ResultSize
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_HII_HANDLE Handle,
+ IN HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
+ IN UINTN UsedSize,
+ IN UINTN BufferSize,
+ IN OUT VOID *Buffer,
+ IN OUT UINTN *ResultSize
)
{
UINTN PackageLength;
EFI_STATUS Status;
HII_IMAGE_PACKAGE_INSTANCE *Package;
-
- if (Private == NULL || PackageList == NULL || ResultSize == NULL) {
+ if ((Private == NULL) || (PackageList == NULL) || (ResultSize == NULL)) {
return EFI_INVALID_PARAMETER;
}
- if (BufferSize > 0 && Buffer == NULL ) {
+ if ((BufferSize > 0) && (Buffer == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -2165,33 +2209,36 @@ ExportImagePackages ( Status = InvokeRegisteredFunction (
Private,
EFI_HII_DATABASE_NOTIFY_EXPORT_PACK,
- (VOID *) Package,
+ (VOID *)Package,
EFI_HII_PACKAGE_IMAGES,
Handle
);
ASSERT_EFI_ERROR (Status);
- ASSERT (Package->ImagePkgHdr.Header.Length ==
- sizeof (EFI_HII_IMAGE_PACKAGE_HDR) + Package->ImageBlockSize + Package->PaletteInfoSize);
+ ASSERT (
+ Package->ImagePkgHdr.Header.Length ==
+ sizeof (EFI_HII_IMAGE_PACKAGE_HDR) + Package->ImageBlockSize + Package->PaletteInfoSize
+ );
//
// Copy Image package header,
// then justify the offset for image info and palette info in the header.
//
CopyMem (Buffer, &Package->ImagePkgHdr, sizeof (EFI_HII_IMAGE_PACKAGE_HDR));
- Buffer = (UINT8 *) Buffer + sizeof (EFI_HII_IMAGE_PACKAGE_HDR);
+ Buffer = (UINT8 *)Buffer + sizeof (EFI_HII_IMAGE_PACKAGE_HDR);
//
// Copy Image blocks information
//
if (Package->ImageBlockSize != 0) {
CopyMem (Buffer, Package->ImageBlock, Package->ImageBlockSize);
- Buffer = (UINT8 *) Buffer + Package->ImageBlockSize;
+ Buffer = (UINT8 *)Buffer + Package->ImageBlockSize;
}
+
//
// Copy Palette information
//
if (Package->PaletteInfoSize != 0) {
CopyMem (Buffer, Package->PaletteBlock, Package->PaletteInfoSize);
- Buffer = (UINT8 *) Buffer + Package->PaletteInfoSize;
+ Buffer = (UINT8 *)Buffer + Package->PaletteInfoSize;
}
}
@@ -2199,7 +2246,6 @@ ExportImagePackages ( return EFI_SUCCESS;
}
-
/**
This function deletes Image package from a package list node.
This is a internal function.
@@ -2216,13 +2262,13 @@ ExportImagePackages ( **/
EFI_STATUS
RemoveImagePackages (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_HII_HANDLE Handle,
- IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_HII_HANDLE Handle,
+ IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList
)
{
- HII_IMAGE_PACKAGE_INSTANCE *Package;
- EFI_STATUS Status;
+ HII_IMAGE_PACKAGE_INSTANCE *Package;
+ EFI_STATUS Status;
Package = PackageList->ImagePkg;
@@ -2236,7 +2282,7 @@ RemoveImagePackages ( Status = InvokeRegisteredFunction (
Private,
EFI_HII_DATABASE_NOTIFY_REMOVE_PACK,
- (VOID *) Package,
+ (VOID *)Package,
EFI_HII_PACKAGE_IMAGES,
Handle
);
@@ -2250,6 +2296,7 @@ RemoveImagePackages ( if (Package->PaletteBlock != NULL) {
FreePool (Package->PaletteBlock);
}
+
FreePool (Package);
PackageList->ImagePkg = NULL;
@@ -2257,7 +2304,6 @@ RemoveImagePackages ( return EFI_SUCCESS;
}
-
/**
This function insert a Simple Font package to a package list node.
This is a internal function.
@@ -2277,17 +2323,17 @@ RemoveImagePackages ( **/
EFI_STATUS
InsertSimpleFontPackage (
- IN VOID *PackageHdr,
- IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
- IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
- OUT HII_SIMPLE_FONT_PACKAGE_INSTANCE **Package
+ IN VOID *PackageHdr,
+ IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
+ IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
+ OUT HII_SIMPLE_FONT_PACKAGE_INSTANCE **Package
)
{
- HII_SIMPLE_FONT_PACKAGE_INSTANCE *SimpleFontPackage;
- EFI_STATUS Status;
- EFI_HII_PACKAGE_HEADER Header;
+ HII_SIMPLE_FONT_PACKAGE_INSTANCE *SimpleFontPackage;
+ EFI_STATUS Status;
+ EFI_HII_PACKAGE_HEADER Header;
- if (PackageHdr == NULL || PackageList == NULL) {
+ if ((PackageHdr == NULL) || (PackageList == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -2299,6 +2345,7 @@ InsertSimpleFontPackage ( Status = EFI_OUT_OF_RESOURCES;
goto Error;
}
+
SimpleFontPackage->Signature = HII_S_FONT_PACKAGE_SIGNATURE;
//
@@ -2332,12 +2379,13 @@ Error: if (SimpleFontPackage->SimpleFontPkgHdr != NULL) {
FreePool (SimpleFontPackage->SimpleFontPkgHdr);
}
+
FreePool (SimpleFontPackage);
}
+
return Status;
}
-
/**
This function exports SimpleFont packages to a buffer.
This is a internal function.
@@ -2357,13 +2405,13 @@ Error: **/
EFI_STATUS
ExportSimpleFontPackages (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_HII_HANDLE Handle,
- IN HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
- IN UINTN UsedSize,
- IN UINTN BufferSize,
- IN OUT VOID *Buffer,
- IN OUT UINTN *ResultSize
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_HII_HANDLE Handle,
+ IN HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
+ IN UINTN UsedSize,
+ IN UINTN BufferSize,
+ IN OUT VOID *Buffer,
+ IN OUT UINTN *ResultSize
)
{
LIST_ENTRY *Link;
@@ -2371,11 +2419,11 @@ ExportSimpleFontPackages ( EFI_STATUS Status;
HII_SIMPLE_FONT_PACKAGE_INSTANCE *Package;
- if (Private == NULL || PackageList == NULL || ResultSize == NULL) {
+ if ((Private == NULL) || (PackageList == NULL) || (ResultSize == NULL)) {
return EFI_INVALID_PARAMETER;
}
- if (BufferSize > 0 && Buffer == NULL ) {
+ if ((BufferSize > 0) && (Buffer == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -2383,7 +2431,7 @@ ExportSimpleFontPackages ( Status = EFI_SUCCESS;
for (Link = PackageList->SimpleFontPkgHdr.ForwardLink; Link != &PackageList->SimpleFontPkgHdr; Link = Link->ForwardLink) {
- Package = CR (Link, HII_SIMPLE_FONT_PACKAGE_INSTANCE, SimpleFontEntry, HII_S_FONT_PACKAGE_SIGNATURE);
+ Package = CR (Link, HII_SIMPLE_FONT_PACKAGE_INSTANCE, SimpleFontEntry, HII_S_FONT_PACKAGE_SIGNATURE);
PackageLength += Package->SimpleFontPkgHdr->Header.Length;
if (PackageLength + *ResultSize + UsedSize <= BufferSize) {
//
@@ -2392,7 +2440,7 @@ ExportSimpleFontPackages ( Status = InvokeRegisteredFunction (
Private,
EFI_HII_DATABASE_NOTIFY_EXPORT_PACK,
- (VOID *) Package,
+ (VOID *)Package,
EFI_HII_PACKAGE_SIMPLE_FONTS,
Handle
);
@@ -2402,7 +2450,7 @@ ExportSimpleFontPackages ( // Copy SimpleFont package
//
CopyMem (Buffer, Package->SimpleFontPkgHdr, Package->SimpleFontPkgHdr->Header.Length);
- Buffer = (UINT8 *) Buffer + Package->SimpleFontPkgHdr->Header.Length;
+ Buffer = (UINT8 *)Buffer + Package->SimpleFontPkgHdr->Header.Length;
}
}
@@ -2410,7 +2458,6 @@ ExportSimpleFontPackages ( return EFI_SUCCESS;
}
-
/**
This function deletes all Simple Font packages from a package list node.
This is a internal function.
@@ -2427,14 +2474,14 @@ ExportSimpleFontPackages ( **/
EFI_STATUS
RemoveSimpleFontPackages (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_HII_HANDLE Handle,
- IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_HII_HANDLE Handle,
+ IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList
)
{
- LIST_ENTRY *ListHead;
- HII_SIMPLE_FONT_PACKAGE_INSTANCE *Package;
- EFI_STATUS Status;
+ LIST_ENTRY *ListHead;
+ HII_SIMPLE_FONT_PACKAGE_INSTANCE *Package;
+ EFI_STATUS Status;
ListHead = &PackageList->SimpleFontPkgHdr;
@@ -2448,7 +2495,7 @@ RemoveSimpleFontPackages ( Status = InvokeRegisteredFunction (
Private,
EFI_HII_DATABASE_NOTIFY_REMOVE_PACK,
- (VOID *) Package,
+ (VOID *)Package,
EFI_HII_PACKAGE_SIMPLE_FONTS,
Handle
);
@@ -2465,7 +2512,6 @@ RemoveSimpleFontPackages ( return EFI_SUCCESS;
}
-
/**
This function insert a Device path package to a package list node.
This is a internal function.
@@ -2484,17 +2530,18 @@ RemoveSimpleFontPackages ( **/
EFI_STATUS
InsertDevicePathPackage (
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
- IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
- IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
+ IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
+ IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList
)
{
- UINT32 PackageLength;
- EFI_HII_PACKAGE_HEADER Header;
+ UINT32 PackageLength;
+ EFI_HII_PACKAGE_HEADER Header;
- if (DevicePath == NULL || PackageList == NULL) {
+ if ((DevicePath == NULL) || (PackageList == NULL)) {
return EFI_INVALID_PARAMETER;
}
+
//
// Less than one device path package is allowed in one package list.
//
@@ -2502,8 +2549,8 @@ InsertDevicePathPackage ( return EFI_INVALID_PARAMETER;
}
- PackageLength = (UINT32) GetDevicePathSize (DevicePath) + sizeof (EFI_HII_PACKAGE_HEADER);
- PackageList->DevicePathPkg = (UINT8 *) AllocateZeroPool (PackageLength);
+ PackageLength = (UINT32)GetDevicePathSize (DevicePath) + sizeof (EFI_HII_PACKAGE_HEADER);
+ PackageList->DevicePathPkg = (UINT8 *)AllocateZeroPool (PackageLength);
if (PackageList->DevicePathPkg == NULL) {
return EFI_OUT_OF_RESOURCES;
}
@@ -2525,7 +2572,6 @@ InsertDevicePathPackage ( return EFI_SUCCESS;
}
-
/**
This function exports device path package to a buffer.
This is a internal function.
@@ -2545,23 +2591,24 @@ InsertDevicePathPackage ( **/
EFI_STATUS
ExportDevicePathPackage (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_HII_HANDLE Handle,
- IN HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
- IN UINTN UsedSize,
- IN UINTN BufferSize,
- IN OUT VOID *Buffer,
- IN OUT UINTN *ResultSize
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_HII_HANDLE Handle,
+ IN HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
+ IN UINTN UsedSize,
+ IN UINTN BufferSize,
+ IN OUT VOID *Buffer,
+ IN OUT UINTN *ResultSize
)
{
- EFI_STATUS Status;
- UINT8 *Package;
- EFI_HII_PACKAGE_HEADER Header;
+ EFI_STATUS Status;
+ UINT8 *Package;
+ EFI_HII_PACKAGE_HEADER Header;
- if (Private == NULL || PackageList == NULL || ResultSize == NULL) {
+ if ((Private == NULL) || (PackageList == NULL) || (ResultSize == NULL)) {
return EFI_INVALID_PARAMETER;
}
- if (BufferSize > 0 && Buffer == NULL ) {
+
+ if ((BufferSize > 0) && (Buffer == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -2580,7 +2627,7 @@ ExportDevicePathPackage ( Status = InvokeRegisteredFunction (
Private,
EFI_HII_DATABASE_NOTIFY_EXPORT_PACK,
- (VOID *) Package,
+ (VOID *)Package,
EFI_HII_PACKAGE_DEVICE_PATH,
Handle
);
@@ -2596,7 +2643,6 @@ ExportDevicePathPackage ( return EFI_SUCCESS;
}
-
/**
This function deletes Device Path package from a package list node.
This is a internal function.
@@ -2612,14 +2658,14 @@ ExportDevicePathPackage ( **/
EFI_STATUS
RemoveDevicePathPackage (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_HII_HANDLE Handle,
- IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_HII_HANDLE Handle,
+ IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList
)
{
- EFI_STATUS Status;
- UINT8 *Package;
- EFI_HII_PACKAGE_HEADER Header;
+ EFI_STATUS Status;
+ UINT8 *Package;
+ EFI_HII_PACKAGE_HEADER Header;
Package = PackageList->DevicePathPkg;
@@ -2633,7 +2679,7 @@ RemoveDevicePathPackage ( Status = InvokeRegisteredFunction (
Private,
EFI_HII_DATABASE_NOTIFY_REMOVE_PACK,
- (VOID *) Package,
+ (VOID *)Package,
EFI_HII_PACKAGE_DEVICE_PATH,
Handle
);
@@ -2651,7 +2697,6 @@ RemoveDevicePathPackage ( return EFI_SUCCESS;
}
-
/**
This function will insert a device path package to package list firstly then
invoke notification functions if any.
@@ -2672,13 +2717,13 @@ RemoveDevicePathPackage ( **/
EFI_STATUS
AddDevicePathPackage (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
- IN OUT HII_DATABASE_RECORD *DatabaseRecord
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
+ IN OUT HII_DATABASE_RECORD *DatabaseRecord
)
{
- EFI_STATUS Status;
+ EFI_STATUS Status;
if (DevicePath == NULL) {
return EFI_SUCCESS;
@@ -2691,24 +2736,23 @@ AddDevicePathPackage ( // Create a device path package and insert to packagelist
//
Status = InsertDevicePathPackage (
- DevicePath,
- NotifyType,
- DatabaseRecord->PackageList
- );
+ DevicePath,
+ NotifyType,
+ DatabaseRecord->PackageList
+ );
if (EFI_ERROR (Status)) {
return Status;
}
return InvokeRegisteredFunction (
- Private,
- NotifyType,
- (VOID *) DatabaseRecord->PackageList->DevicePathPkg,
- EFI_HII_PACKAGE_DEVICE_PATH,
- DatabaseRecord->Handle
- );
+ Private,
+ NotifyType,
+ (VOID *)DatabaseRecord->PackageList->DevicePathPkg,
+ EFI_HII_PACKAGE_DEVICE_PATH,
+ DatabaseRecord->Handle
+ );
}
-
/**
This function insert a Keyboard Layout package to a package list node.
This is a internal function.
@@ -2728,17 +2772,17 @@ AddDevicePathPackage ( **/
EFI_STATUS
InsertKeyboardLayoutPackage (
- IN VOID *PackageHdr,
- IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
- IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
- OUT HII_KEYBOARD_LAYOUT_PACKAGE_INSTANCE **Package
+ IN VOID *PackageHdr,
+ IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
+ IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
+ OUT HII_KEYBOARD_LAYOUT_PACKAGE_INSTANCE **Package
)
{
- HII_KEYBOARD_LAYOUT_PACKAGE_INSTANCE *KeyboardLayoutPackage;
- EFI_HII_PACKAGE_HEADER PackageHeader;
- EFI_STATUS Status;
+ HII_KEYBOARD_LAYOUT_PACKAGE_INSTANCE *KeyboardLayoutPackage;
+ EFI_HII_PACKAGE_HEADER PackageHeader;
+ EFI_STATUS Status;
- if (PackageHdr == NULL || PackageList == NULL) {
+ if ((PackageHdr == NULL) || (PackageList == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -2752,9 +2796,10 @@ InsertKeyboardLayoutPackage ( Status = EFI_OUT_OF_RESOURCES;
goto Error;
}
+
KeyboardLayoutPackage->Signature = HII_KB_LAYOUT_PACKAGE_SIGNATURE;
- KeyboardLayoutPackage->KeyboardPkg = (UINT8 *) AllocateZeroPool (PackageHeader.Length);
+ KeyboardLayoutPackage->KeyboardPkg = (UINT8 *)AllocateZeroPool (PackageHeader.Length);
if (KeyboardLayoutPackage->KeyboardPkg == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Error;
@@ -2773,18 +2818,17 @@ InsertKeyboardLayoutPackage ( Error:
-
if (KeyboardLayoutPackage != NULL) {
if (KeyboardLayoutPackage->KeyboardPkg != NULL) {
FreePool (KeyboardLayoutPackage->KeyboardPkg);
}
+
FreePool (KeyboardLayoutPackage);
}
return Status;
}
-
/**
This function exports Keyboard Layout packages to a buffer.
This is a internal function.
@@ -2805,26 +2849,26 @@ Error: **/
EFI_STATUS
ExportKeyboardLayoutPackages (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_HII_HANDLE Handle,
- IN HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
- IN UINTN UsedSize,
- IN UINTN BufferSize,
- IN OUT VOID *Buffer,
- IN OUT UINTN *ResultSize
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_HII_HANDLE Handle,
+ IN HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
+ IN UINTN UsedSize,
+ IN UINTN BufferSize,
+ IN OUT VOID *Buffer,
+ IN OUT UINTN *ResultSize
)
{
- LIST_ENTRY *Link;
- UINTN PackageLength;
- EFI_STATUS Status;
- HII_KEYBOARD_LAYOUT_PACKAGE_INSTANCE *Package;
- EFI_HII_PACKAGE_HEADER PackageHeader;
+ LIST_ENTRY *Link;
+ UINTN PackageLength;
+ EFI_STATUS Status;
+ HII_KEYBOARD_LAYOUT_PACKAGE_INSTANCE *Package;
+ EFI_HII_PACKAGE_HEADER PackageHeader;
- if (Private == NULL || PackageList == NULL || ResultSize == NULL) {
+ if ((Private == NULL) || (PackageList == NULL) || (ResultSize == NULL)) {
return EFI_INVALID_PARAMETER;
}
- if (BufferSize > 0 && Buffer == NULL ) {
+ if ((BufferSize > 0) && (Buffer == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -2842,7 +2886,7 @@ ExportKeyboardLayoutPackages ( Status = InvokeRegisteredFunction (
Private,
EFI_HII_DATABASE_NOTIFY_EXPORT_PACK,
- (EFI_HII_PACKAGE_HEADER *) Package,
+ (EFI_HII_PACKAGE_HEADER *)Package,
EFI_HII_PACKAGE_KEYBOARD_LAYOUT,
Handle
);
@@ -2852,7 +2896,7 @@ ExportKeyboardLayoutPackages ( // Copy Keyboard Layout package
//
CopyMem (Buffer, Package->KeyboardPkg, PackageHeader.Length);
- Buffer = (UINT8 *) Buffer + PackageHeader.Length;
+ Buffer = (UINT8 *)Buffer + PackageHeader.Length;
}
}
@@ -2860,7 +2904,6 @@ ExportKeyboardLayoutPackages ( return EFI_SUCCESS;
}
-
/**
This function deletes all Keyboard Layout packages from a package list node.
This is a internal function.
@@ -2878,15 +2921,15 @@ ExportKeyboardLayoutPackages ( **/
EFI_STATUS
RemoveKeyboardLayoutPackages (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_HII_HANDLE Handle,
- IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_HII_HANDLE Handle,
+ IN OUT HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList
)
{
- LIST_ENTRY *ListHead;
- HII_KEYBOARD_LAYOUT_PACKAGE_INSTANCE *Package;
- EFI_HII_PACKAGE_HEADER PackageHeader;
- EFI_STATUS Status;
+ LIST_ENTRY *ListHead;
+ HII_KEYBOARD_LAYOUT_PACKAGE_INSTANCE *Package;
+ EFI_HII_PACKAGE_HEADER PackageHeader;
+ EFI_STATUS Status;
ListHead = &PackageList->KeyboardLayoutHdr;
@@ -2900,7 +2943,7 @@ RemoveKeyboardLayoutPackages ( Status = InvokeRegisteredFunction (
Private,
EFI_HII_DATABASE_NOTIFY_REMOVE_PACK,
- (VOID *) Package,
+ (VOID *)Package,
EFI_HII_PACKAGE_KEYBOARD_LAYOUT,
Handle
);
@@ -2918,7 +2961,6 @@ RemoveKeyboardLayoutPackages ( return EFI_SUCCESS;
}
-
/**
This function will insert a package list to hii database firstly then
invoke notification functions if any. It is the worker function of
@@ -2941,24 +2983,24 @@ RemoveKeyboardLayoutPackages ( **/
EFI_STATUS
AddPackages (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
- IN CONST EFI_HII_PACKAGE_LIST_HEADER *PackageList,
- IN OUT HII_DATABASE_RECORD *DatabaseRecord
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
+ IN CONST EFI_HII_PACKAGE_LIST_HEADER *PackageList,
+ IN OUT HII_DATABASE_RECORD *DatabaseRecord
)
{
- EFI_STATUS Status;
- HII_GUID_PACKAGE_INSTANCE *GuidPackage;
- HII_IFR_PACKAGE_INSTANCE *FormPackage;
- HII_KEYBOARD_LAYOUT_PACKAGE_INSTANCE *KeyboardLayoutPackage;
- HII_STRING_PACKAGE_INSTANCE *StringPackage;
- HII_FONT_PACKAGE_INSTANCE *FontPackage;
- HII_SIMPLE_FONT_PACKAGE_INSTANCE *SimpleFontPackage;
- HII_IMAGE_PACKAGE_INSTANCE *ImagePackage;
- EFI_HII_PACKAGE_HEADER *PackageHdrPtr;
- EFI_HII_PACKAGE_HEADER PackageHeader;
- UINT32 OldPackageListLen;
- BOOLEAN StringPkgIsAdd;
+ EFI_STATUS Status;
+ HII_GUID_PACKAGE_INSTANCE *GuidPackage;
+ HII_IFR_PACKAGE_INSTANCE *FormPackage;
+ HII_KEYBOARD_LAYOUT_PACKAGE_INSTANCE *KeyboardLayoutPackage;
+ HII_STRING_PACKAGE_INSTANCE *StringPackage;
+ HII_FONT_PACKAGE_INSTANCE *FontPackage;
+ HII_SIMPLE_FONT_PACKAGE_INSTANCE *SimpleFontPackage;
+ HII_IMAGE_PACKAGE_INSTANCE *ImagePackage;
+ EFI_HII_PACKAGE_HEADER *PackageHdrPtr;
+ EFI_HII_PACKAGE_HEADER PackageHeader;
+ UINT32 OldPackageListLen;
+ BOOLEAN StringPkgIsAdd;
//
// Initialize Variables
@@ -2978,179 +3020,188 @@ AddPackages ( OldPackageListLen = DatabaseRecord->PackageList->PackageListHdr.PackageLength;
CopyMem (
&DatabaseRecord->PackageList->PackageListHdr,
- (VOID *) PackageList,
+ (VOID *)PackageList,
sizeof (EFI_HII_PACKAGE_LIST_HEADER)
);
if (NotifyType == EFI_HII_DATABASE_NOTIFY_ADD_PACK) {
DatabaseRecord->PackageList->PackageListHdr.PackageLength = OldPackageListLen;
}
- PackageHdrPtr = (EFI_HII_PACKAGE_HEADER *) ((UINT8 *) PackageList + sizeof (EFI_HII_PACKAGE_LIST_HEADER));
+ PackageHdrPtr = (EFI_HII_PACKAGE_HEADER *)((UINT8 *)PackageList + sizeof (EFI_HII_PACKAGE_LIST_HEADER));
CopyMem (&PackageHeader, PackageHdrPtr, sizeof (EFI_HII_PACKAGE_HEADER));
Status = EFI_SUCCESS;
while (PackageHeader.Type != EFI_HII_PACKAGE_END) {
switch (PackageHeader.Type) {
- case EFI_HII_PACKAGE_TYPE_GUID:
- Status = InsertGuidPackage (
- PackageHdrPtr,
- NotifyType,
- DatabaseRecord->PackageList,
- &GuidPackage
- );
- if (EFI_ERROR (Status)) {
- return Status;
- }
- Status = InvokeRegisteredFunction (
- Private,
- NotifyType,
- (VOID *) GuidPackage,
- (UINT8) (PackageHeader.Type),
- DatabaseRecord->Handle
- );
- break;
- case EFI_HII_PACKAGE_FORMS:
- Status = InsertFormPackage (
- PackageHdrPtr,
- NotifyType,
- DatabaseRecord->PackageList,
- &FormPackage
- );
- if (EFI_ERROR (Status)) {
- return Status;
- }
- Status = InvokeRegisteredFunction (
- Private,
- NotifyType,
- (VOID *) FormPackage,
- (UINT8) (PackageHeader.Type),
- DatabaseRecord->Handle
- );
- //
- // If Hii runtime support feature is enabled,
- // will export Hii info for runtime use after ReadyToBoot event triggered.
- // If some driver add/update/remove packages from HiiDatabase after ReadyToBoot,
- // will need to export the content of HiiDatabase.
- // But if form packages added/updated, also need to export the ConfigResp string.
- //
- if (gExportAfterReadyToBoot) {
- gExportConfigResp = TRUE;
- }
- break;
- case EFI_HII_PACKAGE_KEYBOARD_LAYOUT:
- Status = InsertKeyboardLayoutPackage (
- PackageHdrPtr,
- NotifyType,
- DatabaseRecord->PackageList,
- &KeyboardLayoutPackage
- );
- if (EFI_ERROR (Status)) {
- return Status;
- }
- Status = InvokeRegisteredFunction (
- Private,
- NotifyType,
- (VOID *) KeyboardLayoutPackage,
- (UINT8) (PackageHeader.Type),
- DatabaseRecord->Handle
- );
- break;
- case EFI_HII_PACKAGE_STRINGS:
- Status = InsertStringPackage (
- Private,
- PackageHdrPtr,
- NotifyType,
- DatabaseRecord->PackageList,
- &StringPackage
- );
- if (EFI_ERROR (Status)) {
- return Status;
- }
- ASSERT (StringPackage != NULL);
- Status = InvokeRegisteredFunction (
- Private,
- NotifyType,
- (VOID *) StringPackage,
- (UINT8) (PackageHeader.Type),
- DatabaseRecord->Handle
- );
- StringPkgIsAdd = TRUE;
- break;
- case EFI_HII_PACKAGE_FONTS:
- Status = InsertFontPackage (
- Private,
- PackageHdrPtr,
- NotifyType,
- DatabaseRecord->PackageList,
- &FontPackage
- );
- if (EFI_ERROR (Status)) {
- return Status;
- }
- Status = InvokeRegisteredFunction (
- Private,
- NotifyType,
- (VOID *) FontPackage,
- (UINT8) (PackageHeader.Type),
- DatabaseRecord->Handle
- );
- break;
- case EFI_HII_PACKAGE_IMAGES:
- Status = InsertImagePackage (
- PackageHdrPtr,
- NotifyType,
- DatabaseRecord->PackageList,
- &ImagePackage
- );
- if (EFI_ERROR (Status)) {
- return Status;
- }
- Status = InvokeRegisteredFunction (
- Private,
- NotifyType,
- (VOID *) ImagePackage,
- (UINT8) (PackageHeader.Type),
- DatabaseRecord->Handle
- );
- break;
- case EFI_HII_PACKAGE_SIMPLE_FONTS:
- Status = InsertSimpleFontPackage (
- PackageHdrPtr,
- NotifyType,
- DatabaseRecord->PackageList,
- &SimpleFontPackage
- );
- if (EFI_ERROR (Status)) {
- return Status;
- }
- Status = InvokeRegisteredFunction (
- Private,
- NotifyType,
- (VOID *) SimpleFontPackage,
- (UINT8) (PackageHeader.Type),
- DatabaseRecord->Handle
- );
- break;
- case EFI_HII_PACKAGE_DEVICE_PATH:
- Status = AddDevicePathPackage (
- Private,
- NotifyType,
- (EFI_DEVICE_PATH_PROTOCOL *) ((UINT8 *) PackageHdrPtr + sizeof (EFI_HII_PACKAGE_HEADER)),
- DatabaseRecord
- );
- break;
- default:
- break;
+ case EFI_HII_PACKAGE_TYPE_GUID:
+ Status = InsertGuidPackage (
+ PackageHdrPtr,
+ NotifyType,
+ DatabaseRecord->PackageList,
+ &GuidPackage
+ );
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+
+ Status = InvokeRegisteredFunction (
+ Private,
+ NotifyType,
+ (VOID *)GuidPackage,
+ (UINT8)(PackageHeader.Type),
+ DatabaseRecord->Handle
+ );
+ break;
+ case EFI_HII_PACKAGE_FORMS:
+ Status = InsertFormPackage (
+ PackageHdrPtr,
+ NotifyType,
+ DatabaseRecord->PackageList,
+ &FormPackage
+ );
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+
+ Status = InvokeRegisteredFunction (
+ Private,
+ NotifyType,
+ (VOID *)FormPackage,
+ (UINT8)(PackageHeader.Type),
+ DatabaseRecord->Handle
+ );
+ //
+ // If Hii runtime support feature is enabled,
+ // will export Hii info for runtime use after ReadyToBoot event triggered.
+ // If some driver add/update/remove packages from HiiDatabase after ReadyToBoot,
+ // will need to export the content of HiiDatabase.
+ // But if form packages added/updated, also need to export the ConfigResp string.
+ //
+ if (gExportAfterReadyToBoot) {
+ gExportConfigResp = TRUE;
+ }
+
+ break;
+ case EFI_HII_PACKAGE_KEYBOARD_LAYOUT:
+ Status = InsertKeyboardLayoutPackage (
+ PackageHdrPtr,
+ NotifyType,
+ DatabaseRecord->PackageList,
+ &KeyboardLayoutPackage
+ );
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+
+ Status = InvokeRegisteredFunction (
+ Private,
+ NotifyType,
+ (VOID *)KeyboardLayoutPackage,
+ (UINT8)(PackageHeader.Type),
+ DatabaseRecord->Handle
+ );
+ break;
+ case EFI_HII_PACKAGE_STRINGS:
+ Status = InsertStringPackage (
+ Private,
+ PackageHdrPtr,
+ NotifyType,
+ DatabaseRecord->PackageList,
+ &StringPackage
+ );
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+
+ ASSERT (StringPackage != NULL);
+ Status = InvokeRegisteredFunction (
+ Private,
+ NotifyType,
+ (VOID *)StringPackage,
+ (UINT8)(PackageHeader.Type),
+ DatabaseRecord->Handle
+ );
+ StringPkgIsAdd = TRUE;
+ break;
+ case EFI_HII_PACKAGE_FONTS:
+ Status = InsertFontPackage (
+ Private,
+ PackageHdrPtr,
+ NotifyType,
+ DatabaseRecord->PackageList,
+ &FontPackage
+ );
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+
+ Status = InvokeRegisteredFunction (
+ Private,
+ NotifyType,
+ (VOID *)FontPackage,
+ (UINT8)(PackageHeader.Type),
+ DatabaseRecord->Handle
+ );
+ break;
+ case EFI_HII_PACKAGE_IMAGES:
+ Status = InsertImagePackage (
+ PackageHdrPtr,
+ NotifyType,
+ DatabaseRecord->PackageList,
+ &ImagePackage
+ );
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+
+ Status = InvokeRegisteredFunction (
+ Private,
+ NotifyType,
+ (VOID *)ImagePackage,
+ (UINT8)(PackageHeader.Type),
+ DatabaseRecord->Handle
+ );
+ break;
+ case EFI_HII_PACKAGE_SIMPLE_FONTS:
+ Status = InsertSimpleFontPackage (
+ PackageHdrPtr,
+ NotifyType,
+ DatabaseRecord->PackageList,
+ &SimpleFontPackage
+ );
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+
+ Status = InvokeRegisteredFunction (
+ Private,
+ NotifyType,
+ (VOID *)SimpleFontPackage,
+ (UINT8)(PackageHeader.Type),
+ DatabaseRecord->Handle
+ );
+ break;
+ case EFI_HII_PACKAGE_DEVICE_PATH:
+ Status = AddDevicePathPackage (
+ Private,
+ NotifyType,
+ (EFI_DEVICE_PATH_PROTOCOL *)((UINT8 *)PackageHdrPtr + sizeof (EFI_HII_PACKAGE_HEADER)),
+ DatabaseRecord
+ );
+ break;
+ default:
+ break;
}
if (EFI_ERROR (Status)) {
return Status;
}
+
//
// goto header of next package
//
- PackageHdrPtr = (EFI_HII_PACKAGE_HEADER *) ((UINT8 *) PackageHdrPtr + PackageHeader.Length);
+ PackageHdrPtr = (EFI_HII_PACKAGE_HEADER *)((UINT8 *)PackageHdrPtr + PackageHeader.Length);
CopyMem (&PackageHeader, PackageHdrPtr, sizeof (EFI_HII_PACKAGE_HEADER));
}
@@ -3164,7 +3215,6 @@ AddPackages ( return Status;
}
-
/**
This function exports a package list to a buffer. It is the worker function
of HiiExportPackageList.
@@ -3186,23 +3236,23 @@ AddPackages ( **/
EFI_STATUS
ExportPackageList (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_HII_HANDLE Handle,
- IN HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
- IN OUT UINTN *UsedSize,
- IN UINTN BufferSize,
- OUT EFI_HII_PACKAGE_LIST_HEADER *Buffer
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_HII_HANDLE Handle,
+ IN HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
+ IN OUT UINTN *UsedSize,
+ IN UINTN BufferSize,
+ OUT EFI_HII_PACKAGE_LIST_HEADER *Buffer
)
{
- EFI_STATUS Status;
- UINTN ResultSize;
- EFI_HII_PACKAGE_HEADER EndofPackageList;
+ EFI_STATUS Status;
+ UINTN ResultSize;
+ EFI_HII_PACKAGE_HEADER EndofPackageList;
ASSERT (Private != NULL && PackageList != NULL && UsedSize != NULL);
ASSERT (Private->Signature == HII_DATABASE_PRIVATE_DATA_SIGNATURE);
ASSERT (IsHiiHandleValid (Handle));
- if (BufferSize > 0 && Buffer == NULL ) {
+ if ((BufferSize > 0) && (Buffer == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -3212,8 +3262,9 @@ ExportPackageList ( //
ResultSize = sizeof (EFI_HII_PACKAGE_LIST_HEADER);
if (ResultSize + *UsedSize <= BufferSize) {
- CopyMem ((VOID *) Buffer, PackageList, ResultSize);
+ CopyMem ((VOID *)Buffer, PackageList, ResultSize);
}
+
//
// Copy the packages and invoke EXPORT_PACK notify functions if exists.
//
@@ -3223,96 +3274,104 @@ ExportPackageList ( PackageList,
*UsedSize,
BufferSize,
- (VOID *) ((UINT8 *) Buffer + ResultSize),
+ (VOID *)((UINT8 *)Buffer + ResultSize),
&ResultSize
);
if (EFI_ERROR (Status)) {
return Status;
}
+
Status = ExportFormPackages (
Private,
Handle,
PackageList,
*UsedSize,
BufferSize,
- (VOID *) ((UINT8 *) Buffer + ResultSize),
+ (VOID *)((UINT8 *)Buffer + ResultSize),
&ResultSize
);
if (EFI_ERROR (Status)) {
return Status;
}
+
Status = ExportKeyboardLayoutPackages (
Private,
Handle,
PackageList,
*UsedSize,
BufferSize,
- (VOID *) ((UINT8 *) Buffer + ResultSize),
+ (VOID *)((UINT8 *)Buffer + ResultSize),
&ResultSize
);
if (EFI_ERROR (Status)) {
return Status;
}
+
Status = ExportStringPackages (
Private,
Handle,
PackageList,
*UsedSize,
BufferSize,
- (VOID *) ((UINT8 *) Buffer + ResultSize),
+ (VOID *)((UINT8 *)Buffer + ResultSize),
&ResultSize
);
if (EFI_ERROR (Status)) {
return Status;
}
+
Status = ExportFontPackages (
Private,
Handle,
PackageList,
*UsedSize,
BufferSize,
- (VOID *) ((UINT8 *) Buffer + ResultSize),
+ (VOID *)((UINT8 *)Buffer + ResultSize),
&ResultSize
);
if (EFI_ERROR (Status)) {
return Status;
}
+
Status = ExportImagePackages (
Private,
Handle,
PackageList,
*UsedSize,
BufferSize,
- (VOID *) ((UINT8 *) Buffer + ResultSize),
+ (VOID *)((UINT8 *)Buffer + ResultSize),
&ResultSize
);
if (EFI_ERROR (Status)) {
return Status;
}
+
Status = ExportSimpleFontPackages (
Private,
Handle,
PackageList,
*UsedSize,
BufferSize,
- (VOID *) ((UINT8 *) Buffer + ResultSize),
+ (VOID *)((UINT8 *)Buffer + ResultSize),
&ResultSize
);
if (EFI_ERROR (Status)) {
return Status;
}
+
Status = ExportDevicePathPackage (
Private,
Handle,
PackageList,
*UsedSize,
BufferSize,
- (VOID *) ((UINT8 *) Buffer + ResultSize),
+ (VOID *)((UINT8 *)Buffer + ResultSize),
&ResultSize
);
if (EFI_ERROR (Status)) {
return Status;
}
+
//
// Append the package list end.
//
@@ -3320,8 +3379,8 @@ ExportPackageList ( EndofPackageList.Type = EFI_HII_PACKAGE_END;
if (ResultSize + *UsedSize + sizeof (EFI_HII_PACKAGE_HEADER) <= BufferSize) {
CopyMem (
- (VOID *) ((UINT8 *) Buffer + ResultSize),
- (VOID *) &EndofPackageList,
+ (VOID *)((UINT8 *)Buffer + ResultSize),
+ (VOID *)&EndofPackageList,
sizeof (EFI_HII_PACKAGE_HEADER)
);
}
@@ -3341,40 +3400,41 @@ This function mainly use to get and update ConfigResp string. **/
EFI_STATUS
-HiiGetConfigRespInfo(
- IN CONST EFI_HII_DATABASE_PROTOCOL *This
+HiiGetConfigRespInfo (
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This
)
{
- EFI_STATUS Status;
- HII_DATABASE_PRIVATE_DATA *Private;
- EFI_STRING ConfigAltResp;
- UINTN ConfigSize;
+ EFI_STATUS Status;
+ HII_DATABASE_PRIVATE_DATA *Private;
+ EFI_STRING ConfigAltResp;
+ UINTN ConfigSize;
- ConfigAltResp = NULL;
- ConfigSize = 0;
+ ConfigAltResp = NULL;
+ ConfigSize = 0;
Private = HII_DATABASE_DATABASE_PRIVATE_DATA_FROM_THIS (This);
//
// Get ConfigResp string
//
- Status = HiiConfigRoutingExportConfig(&Private->ConfigRouting,&ConfigAltResp);
+ Status = HiiConfigRoutingExportConfig (&Private->ConfigRouting, &ConfigAltResp);
- if (!EFI_ERROR (Status)){
- ConfigSize = StrSize(ConfigAltResp);
- if (ConfigSize > gConfigRespSize){
+ if (!EFI_ERROR (Status)) {
+ ConfigSize = StrSize (ConfigAltResp);
+ if (ConfigSize > gConfigRespSize) {
//
// Do 25% overallocation to minimize the number of memory allocations after ReadyToBoot.
// Since lots of allocation after ReadyToBoot may change memory map and cause S4 resume issue.
//
gConfigRespSize = ConfigSize + (ConfigSize >> 2);
- if (gRTConfigRespBuffer != NULL){
- FreePool(gRTConfigRespBuffer);
+ if (gRTConfigRespBuffer != NULL) {
+ FreePool (gRTConfigRespBuffer);
DEBUG ((DEBUG_WARN, "[HiiDatabase]: Memory allocation is required after ReadyToBoot, which may change memory map and cause S4 resume issue.\n"));
}
- gRTConfigRespBuffer = (EFI_STRING) AllocateRuntimeZeroPool (gConfigRespSize);
- if (gRTConfigRespBuffer == NULL){
- FreePool(ConfigAltResp);
+
+ gRTConfigRespBuffer = (EFI_STRING)AllocateRuntimeZeroPool (gConfigRespSize);
+ if (gRTConfigRespBuffer == NULL) {
+ FreePool (ConfigAltResp);
DEBUG ((DEBUG_ERROR, "[HiiDatabase]: No enough memory resource to store the ConfigResp string.\n"));
//
// Remove from the System Table when the configuration runtime buffer is freed.
@@ -3383,15 +3443,15 @@ HiiGetConfigRespInfo( return EFI_OUT_OF_RESOURCES;
}
} else {
- ZeroMem(gRTConfigRespBuffer,gConfigRespSize);
+ ZeroMem (gRTConfigRespBuffer, gConfigRespSize);
}
- CopyMem(gRTConfigRespBuffer,ConfigAltResp,ConfigSize);
+
+ CopyMem (gRTConfigRespBuffer, ConfigAltResp, ConfigSize);
gBS->InstallConfigurationTable (&gEfiHiiConfigRoutingProtocolGuid, gRTConfigRespBuffer);
- FreePool(ConfigAltResp);
+ FreePool (ConfigAltResp);
}
return EFI_SUCCESS;
-
}
/**
@@ -3404,36 +3464,37 @@ This is an internal function,mainly use to get HiiDatabase information. **/
EFI_STATUS
-HiiGetDatabaseInfo(
- IN CONST EFI_HII_DATABASE_PROTOCOL *This
+HiiGetDatabaseInfo (
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This
)
{
- EFI_STATUS Status;
- EFI_HII_PACKAGE_LIST_HEADER *DatabaseInfo;
- UINTN DatabaseInfoSize;
+ EFI_STATUS Status;
+ EFI_HII_PACKAGE_LIST_HEADER *DatabaseInfo;
+ UINTN DatabaseInfoSize;
- DatabaseInfo = NULL;
- DatabaseInfoSize = 0;
+ DatabaseInfo = NULL;
+ DatabaseInfoSize = 0;
//
// Get HiiDatabase information.
//
- Status = HiiExportPackageLists(This, NULL, &DatabaseInfoSize, DatabaseInfo);
+ Status = HiiExportPackageLists (This, NULL, &DatabaseInfoSize, DatabaseInfo);
- ASSERT(Status == EFI_BUFFER_TOO_SMALL);
+ ASSERT (Status == EFI_BUFFER_TOO_SMALL);
- if(DatabaseInfoSize > gDatabaseInfoSize ) {
+ if (DatabaseInfoSize > gDatabaseInfoSize ) {
//
// Do 25% overallocation to minimize the number of memory allocations after ReadyToBoot.
// Since lots of allocation after ReadyToBoot may change memory map and cause S4 resume issue.
//
gDatabaseInfoSize = DatabaseInfoSize + (DatabaseInfoSize >> 2);
- if (gRTDatabaseInfoBuffer != NULL){
- FreePool(gRTDatabaseInfoBuffer);
+ if (gRTDatabaseInfoBuffer != NULL) {
+ FreePool (gRTDatabaseInfoBuffer);
DEBUG ((DEBUG_WARN, "[HiiDatabase]: Memory allocation is required after ReadyToBoot, which may change memory map and cause S4 resume issue.\n"));
}
+
gRTDatabaseInfoBuffer = AllocateRuntimeZeroPool (gDatabaseInfoSize);
- if (gRTDatabaseInfoBuffer == NULL){
+ if (gRTDatabaseInfoBuffer == NULL) {
DEBUG ((DEBUG_ERROR, "[HiiDatabase]: No enough memory resource to store the HiiDatabase info.\n"));
//
// Remove from the System Table when the configuration runtime buffer is freed.
@@ -3442,14 +3503,14 @@ HiiGetDatabaseInfo( return EFI_OUT_OF_RESOURCES;
}
} else {
- ZeroMem(gRTDatabaseInfoBuffer,gDatabaseInfoSize);
+ ZeroMem (gRTDatabaseInfoBuffer, gDatabaseInfoSize);
}
- Status = HiiExportPackageLists(This, NULL, &DatabaseInfoSize, gRTDatabaseInfoBuffer);
+
+ Status = HiiExportPackageLists (This, NULL, &DatabaseInfoSize, gRTDatabaseInfoBuffer);
ASSERT_EFI_ERROR (Status);
gBS->InstallConfigurationTable (&gEfiHiiDatabaseProtocolGuid, gRTDatabaseInfoBuffer);
return EFI_SUCCESS;
-
}
/**
@@ -3483,19 +3544,19 @@ HiiNewPackageList ( OUT EFI_HII_HANDLE *Handle
)
{
- EFI_STATUS Status;
- HII_DATABASE_PRIVATE_DATA *Private;
- HII_DATABASE_RECORD *DatabaseRecord;
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;
- LIST_ENTRY *Link;
- EFI_GUID PackageListGuid;
+ EFI_STATUS Status;
+ HII_DATABASE_PRIVATE_DATA *Private;
+ HII_DATABASE_RECORD *DatabaseRecord;
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+ LIST_ENTRY *Link;
+ EFI_GUID PackageListGuid;
- if (This == NULL || PackageList == NULL || Handle == NULL) {
+ if ((This == NULL) || (PackageList == NULL) || (Handle == NULL)) {
return EFI_INVALID_PARAMETER;
}
Private = HII_DATABASE_DATABASE_PRIVATE_DATA_FROM_THIS (This);
- CopyMem (&PackageListGuid, (VOID *) PackageList, sizeof (EFI_GUID));
+ CopyMem (&PackageListGuid, (VOID *)PackageList, sizeof (EFI_GUID));
//
// Check the Package list GUID to guarantee this GUID is unique in database.
@@ -3504,8 +3565,10 @@ HiiNewPackageList ( DatabaseRecord = CR (Link, HII_DATABASE_RECORD, DatabaseEntry, HII_DATABASE_RECORD_SIGNATURE);
if (CompareGuid (
&(DatabaseRecord->PackageList->PackageListHdr.PackageListGuid),
- &PackageListGuid) &&
- DatabaseRecord->DriverHandle == DriverHandle) {
+ &PackageListGuid
+ ) &&
+ (DatabaseRecord->DriverHandle == DriverHandle))
+ {
return EFI_INVALID_PARAMETER;
}
}
@@ -3539,7 +3602,7 @@ HiiNewPackageList ( Status = gBS->HandleProtocol (
DriverHandle,
&gEfiDevicePathProtocolGuid,
- (VOID **) &DevicePath
+ (VOID **)&DevicePath
);
if (!EFI_ERROR (Status)) {
Status = AddDevicePathPackage (Private, EFI_HII_DATABASE_NOTIFY_NEW_PACK, DevicePath, DatabaseRecord);
@@ -3555,6 +3618,7 @@ HiiNewPackageList ( if (gExportAfterReadyToBoot) {
HiiGetDatabaseInfo (This);
}
+
EfiReleaseLock (&mHiiDatabaseLock);
//
@@ -3576,7 +3640,6 @@ HiiNewPackageList ( return EFI_SUCCESS;
}
-
/**
This function removes the package list that is associated with Handle
from the HII database. Before removing the package, any registered functions
@@ -3596,8 +3659,8 @@ HiiNewPackageList ( EFI_STATUS
EFIAPI
HiiRemovePackageList (
- IN CONST EFI_HII_DATABASE_PROTOCOL *This,
- IN EFI_HII_HANDLE Handle
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This,
+ IN EFI_HII_HANDLE Handle
)
{
EFI_STATUS Status;
@@ -3625,7 +3688,7 @@ HiiRemovePackageList ( for (Link = Private->DatabaseList.ForwardLink; Link != &Private->DatabaseList; Link = Link->ForwardLink) {
Node = CR (Link, HII_DATABASE_RECORD, DatabaseEntry, HII_DATABASE_RECORD_SIGNATURE);
if (Node->Handle == Handle) {
- PackageList = (HII_DATABASE_PACKAGE_LIST_INSTANCE *) (Node->PackageList);
+ PackageList = (HII_DATABASE_PACKAGE_LIST_INSTANCE *)(Node->PackageList);
ASSERT (PackageList != NULL);
//
@@ -3637,36 +3700,43 @@ HiiRemovePackageList ( EfiReleaseLock (&mHiiDatabaseLock);
return Status;
}
+
Status = RemoveFormPackages (Private, Handle, PackageList);
if (EFI_ERROR (Status)) {
EfiReleaseLock (&mHiiDatabaseLock);
return Status;
}
+
Status = RemoveKeyboardLayoutPackages (Private, Handle, PackageList);
if (EFI_ERROR (Status)) {
EfiReleaseLock (&mHiiDatabaseLock);
return Status;
}
+
Status = RemoveStringPackages (Private, Handle, PackageList);
if (EFI_ERROR (Status)) {
EfiReleaseLock (&mHiiDatabaseLock);
return Status;
}
+
Status = RemoveFontPackages (Private, Handle, PackageList);
if (EFI_ERROR (Status)) {
EfiReleaseLock (&mHiiDatabaseLock);
return Status;
}
+
Status = RemoveImagePackages (Private, Handle, PackageList);
if (EFI_ERROR (Status)) {
EfiReleaseLock (&mHiiDatabaseLock);
return Status;
}
+
Status = RemoveSimpleFontPackages (Private, Handle, PackageList);
if (EFI_ERROR (Status)) {
EfiReleaseLock (&mHiiDatabaseLock);
return Status;
}
+
Status = RemoveDevicePathPackage (Private, Handle, PackageList);
if (EFI_ERROR (Status)) {
EfiReleaseLock (&mHiiDatabaseLock);
@@ -3678,7 +3748,7 @@ HiiRemovePackageList ( //
RemoveEntryList (&Node->DatabaseEntry);
- HiiHandle = (HII_HANDLE *) Handle;
+ HiiHandle = (HII_HANDLE *)Handle;
RemoveEntryList (&HiiHandle->Handle);
Private->HiiHandleCount--;
ASSERT (Private->HiiHandleCount >= 0);
@@ -3695,6 +3765,7 @@ HiiRemovePackageList ( if (gExportAfterReadyToBoot) {
HiiGetDatabaseInfo (This);
}
+
EfiReleaseLock (&mHiiDatabaseLock);
//
@@ -3713,6 +3784,7 @@ HiiRemovePackageList ( if (gExportAfterReadyToBoot && gExportConfigResp) {
HiiGetConfigRespInfo (This);
}
+
return EFI_SUCCESS;
}
}
@@ -3721,7 +3793,6 @@ HiiRemovePackageList ( return EFI_NOT_FOUND;
}
-
/**
This function updates the existing package list (which has the specified Handle)
in the HII databases, using the new package list specified by PackageList.
@@ -3756,7 +3827,7 @@ HiiUpdatePackageList ( HII_DATABASE_PACKAGE_LIST_INSTANCE *OldPackageList;
EFI_HII_PACKAGE_HEADER PackageHeader;
- if (This == NULL || PackageList == NULL) {
+ if ((This == NULL) || (PackageList == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -3766,7 +3837,7 @@ HiiUpdatePackageList ( Private = HII_DATABASE_DATABASE_PRIVATE_DATA_FROM_THIS (This);
- PackageHdrPtr = (EFI_HII_PACKAGE_HEADER *) ((UINT8 *) PackageList + sizeof (EFI_HII_PACKAGE_LIST_HEADER));
+ PackageHdrPtr = (EFI_HII_PACKAGE_HEADER *)((UINT8 *)PackageList + sizeof (EFI_HII_PACKAGE_LIST_HEADER));
Status = EFI_SUCCESS;
@@ -3785,30 +3856,30 @@ HiiUpdatePackageList ( CopyMem (&PackageHeader, PackageHdrPtr, sizeof (EFI_HII_PACKAGE_HEADER));
while (PackageHeader.Type != EFI_HII_PACKAGE_END) {
switch (PackageHeader.Type) {
- case EFI_HII_PACKAGE_TYPE_GUID:
- Status = RemoveGuidPackages (Private, Handle, OldPackageList);
- break;
- case EFI_HII_PACKAGE_FORMS:
- Status = RemoveFormPackages (Private, Handle, OldPackageList);
- break;
- case EFI_HII_PACKAGE_KEYBOARD_LAYOUT:
- Status = RemoveKeyboardLayoutPackages (Private, Handle, OldPackageList);
- break;
- case EFI_HII_PACKAGE_STRINGS:
- Status = RemoveStringPackages (Private, Handle, OldPackageList);
- break;
- case EFI_HII_PACKAGE_FONTS:
- Status = RemoveFontPackages (Private, Handle, OldPackageList);
- break;
- case EFI_HII_PACKAGE_IMAGES:
- Status = RemoveImagePackages (Private, Handle, OldPackageList);
- break;
- case EFI_HII_PACKAGE_SIMPLE_FONTS:
- Status = RemoveSimpleFontPackages (Private, Handle, OldPackageList);
- break;
- case EFI_HII_PACKAGE_DEVICE_PATH:
- Status = RemoveDevicePathPackage (Private, Handle, OldPackageList);
- break;
+ case EFI_HII_PACKAGE_TYPE_GUID:
+ Status = RemoveGuidPackages (Private, Handle, OldPackageList);
+ break;
+ case EFI_HII_PACKAGE_FORMS:
+ Status = RemoveFormPackages (Private, Handle, OldPackageList);
+ break;
+ case EFI_HII_PACKAGE_KEYBOARD_LAYOUT:
+ Status = RemoveKeyboardLayoutPackages (Private, Handle, OldPackageList);
+ break;
+ case EFI_HII_PACKAGE_STRINGS:
+ Status = RemoveStringPackages (Private, Handle, OldPackageList);
+ break;
+ case EFI_HII_PACKAGE_FONTS:
+ Status = RemoveFontPackages (Private, Handle, OldPackageList);
+ break;
+ case EFI_HII_PACKAGE_IMAGES:
+ Status = RemoveImagePackages (Private, Handle, OldPackageList);
+ break;
+ case EFI_HII_PACKAGE_SIMPLE_FONTS:
+ Status = RemoveSimpleFontPackages (Private, Handle, OldPackageList);
+ break;
+ case EFI_HII_PACKAGE_DEVICE_PATH:
+ Status = RemoveDevicePathPackage (Private, Handle, OldPackageList);
+ break;
}
if (EFI_ERROR (Status)) {
@@ -3816,7 +3887,7 @@ HiiUpdatePackageList ( return Status;
}
- PackageHdrPtr = (EFI_HII_PACKAGE_HEADER *) ((UINT8 *) PackageHdrPtr + PackageHeader.Length);
+ PackageHdrPtr = (EFI_HII_PACKAGE_HEADER *)((UINT8 *)PackageHdrPtr + PackageHeader.Length);
CopyMem (&PackageHeader, PackageHdrPtr, sizeof (EFI_HII_PACKAGE_HEADER));
}
@@ -3829,9 +3900,10 @@ HiiUpdatePackageList ( // Check whether need to get the Database info.
// Only after ReadyToBoot, need to do the export.
//
- if (gExportAfterReadyToBoot && Status == EFI_SUCCESS) {
+ if (gExportAfterReadyToBoot && (Status == EFI_SUCCESS)) {
HiiGetDatabaseInfo (This);
}
+
EfiReleaseLock (&mHiiDatabaseLock);
//
@@ -3847,18 +3919,18 @@ HiiUpdatePackageList ( // Check whether need to get the configuration setting info from HII drivers.
// When after ReadyToBoot and need to do the export for form package update.
//
- if (gExportAfterReadyToBoot && gExportConfigResp && Status == EFI_SUCCESS) {
+ if (gExportAfterReadyToBoot && gExportConfigResp && (Status == EFI_SUCCESS)) {
HiiGetConfigRespInfo (This);
}
return Status;
}
}
+
EfiReleaseLock (&mHiiDatabaseLock);
return EFI_NOT_FOUND;
}
-
/**
This function returns a list of the package handles of the specified type
that are currently active in the database. The pseudo-type
@@ -3896,11 +3968,11 @@ HiiUpdatePackageList ( EFI_STATUS
EFIAPI
HiiListPackageLists (
- IN CONST EFI_HII_DATABASE_PROTOCOL *This,
- IN UINT8 PackageType,
- IN CONST EFI_GUID *PackageGuid,
- IN OUT UINTN *HandleBufferLength,
- OUT EFI_HII_HANDLE *Handle
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This,
+ IN UINT8 PackageType,
+ IN CONST EFI_GUID *PackageGuid,
+ IN OUT UINTN *HandleBufferLength,
+ OUT EFI_HII_HANDLE *Handle
)
{
HII_GUID_PACKAGE_INSTANCE *GuidPackage;
@@ -3916,77 +3988,89 @@ HiiListPackageLists ( //
// Check input parameters
//
- if (This == NULL || HandleBufferLength == NULL) {
+ if ((This == NULL) || (HandleBufferLength == NULL)) {
return EFI_INVALID_PARAMETER;
}
- if (*HandleBufferLength > 0 && Handle == NULL) {
+
+ if ((*HandleBufferLength > 0) && (Handle == NULL)) {
return EFI_INVALID_PARAMETER;
}
- if ((PackageType == EFI_HII_PACKAGE_TYPE_GUID && PackageGuid == NULL) ||
- (PackageType != EFI_HII_PACKAGE_TYPE_GUID && PackageGuid != NULL)) {
+
+ if (((PackageType == EFI_HII_PACKAGE_TYPE_GUID) && (PackageGuid == NULL)) ||
+ ((PackageType != EFI_HII_PACKAGE_TYPE_GUID) && (PackageGuid != NULL)))
+ {
return EFI_INVALID_PARAMETER;
}
Private = HII_DATABASE_DATABASE_PRIVATE_DATA_FROM_THIS (This);
Matched = FALSE;
- Result = (HII_HANDLE **) Handle;
+ Result = (HII_HANDLE **)Handle;
ResultSize = 0;
for (Link = Private->DatabaseList.ForwardLink; Link != &Private->DatabaseList; Link = Link->ForwardLink) {
- Node = CR (Link, HII_DATABASE_RECORD, DatabaseEntry, HII_DATABASE_RECORD_SIGNATURE);
- PackageList = (HII_DATABASE_PACKAGE_LIST_INSTANCE *) (Node->PackageList);
+ Node = CR (Link, HII_DATABASE_RECORD, DatabaseEntry, HII_DATABASE_RECORD_SIGNATURE);
+ PackageList = (HII_DATABASE_PACKAGE_LIST_INSTANCE *)(Node->PackageList);
switch (PackageType) {
case EFI_HII_PACKAGE_TYPE_GUID:
for (Link1 = PackageList->GuidPkgHdr.ForwardLink; Link1 != &PackageList->GuidPkgHdr; Link1 = Link1->ForwardLink) {
GuidPackage = CR (Link1, HII_GUID_PACKAGE_INSTANCE, GuidEntry, HII_GUID_PACKAGE_SIGNATURE);
if (CompareGuid (
- (EFI_GUID *) PackageGuid,
- (EFI_GUID *) (GuidPackage->GuidPkg + sizeof (EFI_HII_PACKAGE_HEADER))
- )) {
+ (EFI_GUID *)PackageGuid,
+ (EFI_GUID *)(GuidPackage->GuidPkg + sizeof (EFI_HII_PACKAGE_HEADER))
+ ))
+ {
Matched = TRUE;
break;
}
}
+
break;
case EFI_HII_PACKAGE_FORMS:
if (!IsListEmpty (&PackageList->FormPkgHdr)) {
Matched = TRUE;
}
+
break;
case EFI_HII_PACKAGE_KEYBOARD_LAYOUT:
if (!IsListEmpty (&PackageList->KeyboardLayoutHdr)) {
Matched = TRUE;
}
+
break;
case EFI_HII_PACKAGE_STRINGS:
if (!IsListEmpty (&PackageList->StringPkgHdr)) {
Matched = TRUE;
}
+
break;
case EFI_HII_PACKAGE_FONTS:
if (!IsListEmpty (&PackageList->FontPkgHdr)) {
Matched = TRUE;
}
+
break;
case EFI_HII_PACKAGE_IMAGES:
if (PackageList->ImagePkg != NULL) {
Matched = TRUE;
}
+
break;
case EFI_HII_PACKAGE_SIMPLE_FONTS:
if (!IsListEmpty (&PackageList->SimpleFontPkgHdr)) {
Matched = TRUE;
}
+
break;
case EFI_HII_PACKAGE_DEVICE_PATH:
if (PackageList->DevicePathPkg != NULL) {
Matched = TRUE;
}
+
break;
- //
- // Pseudo-type EFI_HII_PACKAGE_TYPE_ALL will cause all package handles
- // to be listed.
- //
+ //
+ // Pseudo-type EFI_HII_PACKAGE_TYPE_ALL will cause all package handles
+ // to be listed.
+ //
case EFI_HII_PACKAGE_TYPE_ALL:
Matched = TRUE;
break;
@@ -4003,6 +4087,7 @@ HiiListPackageLists ( *Result++ = Node->Handle;
}
}
+
Matched = FALSE;
}
@@ -4019,7 +4104,6 @@ HiiListPackageLists ( return EFI_SUCCESS;
}
-
/**
This function will export one or all package lists in the database to a buffer.
For each package list exported, this function will call functions registered
@@ -4051,24 +4135,26 @@ HiiListPackageLists ( EFI_STATUS
EFIAPI
HiiExportPackageLists (
- IN CONST EFI_HII_DATABASE_PROTOCOL *This,
- IN EFI_HII_HANDLE Handle,
- IN OUT UINTN *BufferSize,
- OUT EFI_HII_PACKAGE_LIST_HEADER *Buffer
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This,
+ IN EFI_HII_HANDLE Handle,
+ IN OUT UINTN *BufferSize,
+ OUT EFI_HII_PACKAGE_LIST_HEADER *Buffer
)
{
- LIST_ENTRY *Link;
- EFI_STATUS Status;
- HII_DATABASE_PRIVATE_DATA *Private;
- HII_DATABASE_RECORD *Node;
- UINTN UsedSize;
+ LIST_ENTRY *Link;
+ EFI_STATUS Status;
+ HII_DATABASE_PRIVATE_DATA *Private;
+ HII_DATABASE_RECORD *Node;
+ UINTN UsedSize;
- if (This == NULL || BufferSize == NULL) {
+ if ((This == NULL) || (BufferSize == NULL)) {
return EFI_INVALID_PARAMETER;
}
- if (*BufferSize > 0 && Buffer == NULL) {
+
+ if ((*BufferSize > 0) && (Buffer == NULL)) {
return EFI_INVALID_PARAMETER;
}
+
if ((Handle != NULL) && (!IsHiiHandleValid (Handle))) {
return EFI_NOT_FOUND;
}
@@ -4085,17 +4171,17 @@ HiiExportPackageLists ( Status = ExportPackageList (
Private,
Node->Handle,
- (HII_DATABASE_PACKAGE_LIST_INSTANCE *) (Node->PackageList),
+ (HII_DATABASE_PACKAGE_LIST_INSTANCE *)(Node->PackageList),
&UsedSize,
*BufferSize,
- (EFI_HII_PACKAGE_LIST_HEADER *)((UINT8 *) Buffer + UsedSize)
+ (EFI_HII_PACKAGE_LIST_HEADER *)((UINT8 *)Buffer + UsedSize)
);
ASSERT_EFI_ERROR (Status);
- } else if (Handle != NULL && Node->Handle == Handle) {
+ } else if ((Handle != NULL) && (Node->Handle == Handle)) {
Status = ExportPackageList (
Private,
Handle,
- (HII_DATABASE_PACKAGE_LIST_INSTANCE *) (Node->PackageList),
+ (HII_DATABASE_PACKAGE_LIST_INSTANCE *)(Node->PackageList),
&UsedSize,
*BufferSize,
Buffer
@@ -4105,22 +4191,23 @@ HiiExportPackageLists ( *BufferSize = UsedSize;
return EFI_BUFFER_TOO_SMALL;
}
+
return EFI_SUCCESS;
}
}
- if (Handle == NULL && UsedSize != 0) {
+ if ((Handle == NULL) && (UsedSize != 0)) {
if (*BufferSize < UsedSize) {
*BufferSize = UsedSize;
return EFI_BUFFER_TOO_SMALL;
}
+
return EFI_SUCCESS;
}
return EFI_NOT_FOUND;
}
-
/**
This function registers a function which will be called when specified actions related to packages of
the specified type occur in the HII database. By registering a function, other HII-related drivers are
@@ -4160,23 +4247,25 @@ HiiExportPackageLists ( EFI_STATUS
EFIAPI
HiiRegisterPackageNotify (
- IN CONST EFI_HII_DATABASE_PROTOCOL *This,
- IN UINT8 PackageType,
- IN CONST EFI_GUID *PackageGuid,
- IN CONST EFI_HII_DATABASE_NOTIFY PackageNotifyFn,
- IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
- OUT EFI_HANDLE *NotifyHandle
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This,
+ IN UINT8 PackageType,
+ IN CONST EFI_GUID *PackageGuid,
+ IN CONST EFI_HII_DATABASE_NOTIFY PackageNotifyFn,
+ IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
+ OUT EFI_HANDLE *NotifyHandle
)
{
- HII_DATABASE_PRIVATE_DATA *Private;
- HII_DATABASE_NOTIFY *Notify;
- EFI_STATUS Status;
+ HII_DATABASE_PRIVATE_DATA *Private;
+ HII_DATABASE_NOTIFY *Notify;
+ EFI_STATUS Status;
- if (This == NULL || NotifyHandle == NULL) {
+ if ((This == NULL) || (NotifyHandle == NULL)) {
return EFI_INVALID_PARAMETER;
}
- if ((PackageType == EFI_HII_PACKAGE_TYPE_GUID && PackageGuid == NULL) ||
- (PackageType != EFI_HII_PACKAGE_TYPE_GUID && PackageGuid != NULL)) {
+
+ if (((PackageType == EFI_HII_PACKAGE_TYPE_GUID) && (PackageGuid == NULL)) ||
+ ((PackageType != EFI_HII_PACKAGE_TYPE_GUID) && (PackageGuid != NULL)))
+ {
return EFI_INVALID_PARAMETER;
}
@@ -4185,7 +4274,7 @@ HiiRegisterPackageNotify ( //
// Allocate a notification node
//
- Notify = (HII_DATABASE_NOTIFY *) AllocateZeroPool (sizeof (HII_DATABASE_NOTIFY));
+ Notify = (HII_DATABASE_NOTIFY *)AllocateZeroPool (sizeof (HII_DATABASE_NOTIFY));
if (Notify == NULL) {
return EFI_OUT_OF_RESOURCES;
}
@@ -4206,8 +4295,8 @@ HiiRegisterPackageNotify ( //
Notify->Signature = HII_DATABASE_NOTIFY_SIGNATURE;
Notify->PackageType = PackageType;
- Notify->PackageGuid = (EFI_GUID *) PackageGuid;
- Notify->PackageNotifyFn = (EFI_HII_DATABASE_NOTIFY) PackageNotifyFn;
+ Notify->PackageGuid = (EFI_GUID *)PackageGuid;
+ Notify->PackageNotifyFn = (EFI_HII_DATABASE_NOTIFY)PackageNotifyFn;
Notify->NotifyType = NotifyType;
InsertTailList (&Private->DatabaseNotifyList, &Notify->DatabaseNotifyEntry);
@@ -4216,7 +4305,6 @@ HiiRegisterPackageNotify ( return EFI_SUCCESS;
}
-
/**
Removes the specified HII database package-related notification.
@@ -4234,14 +4322,14 @@ HiiRegisterPackageNotify ( EFI_STATUS
EFIAPI
HiiUnregisterPackageNotify (
- IN CONST EFI_HII_DATABASE_PROTOCOL *This,
- IN EFI_HANDLE NotificationHandle
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This,
+ IN EFI_HANDLE NotificationHandle
)
{
- HII_DATABASE_PRIVATE_DATA *Private;
- HII_DATABASE_NOTIFY *Notify;
- LIST_ENTRY *Link;
- EFI_STATUS Status;
+ HII_DATABASE_PRIVATE_DATA *Private;
+ HII_DATABASE_NOTIFY *Notify;
+ LIST_ENTRY *Link;
+ EFI_STATUS Status;
if (This == NULL) {
return EFI_INVALID_PARAMETER;
@@ -4288,7 +4376,6 @@ HiiUnregisterPackageNotify ( return EFI_NOT_FOUND;
}
-
/**
This routine retrieves an array of GUID values for each keyboard layout that
was previously registered in the system.
@@ -4316,44 +4403,45 @@ HiiUnregisterPackageNotify ( EFI_STATUS
EFIAPI
HiiFindKeyboardLayouts (
- IN CONST EFI_HII_DATABASE_PROTOCOL *This,
- IN OUT UINT16 *KeyGuidBufferLength,
- OUT EFI_GUID *KeyGuidBuffer
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This,
+ IN OUT UINT16 *KeyGuidBufferLength,
+ OUT EFI_GUID *KeyGuidBuffer
)
{
- HII_DATABASE_PRIVATE_DATA *Private;
- HII_DATABASE_RECORD *Node;
- HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList;
- LIST_ENTRY *Link;
- LIST_ENTRY *Link1;
- UINT16 ResultSize;
- UINTN Index;
- UINT16 LayoutCount;
- UINT16 LayoutLength;
- UINT8 *Layout;
- HII_KEYBOARD_LAYOUT_PACKAGE_INSTANCE *Package;
-
- if (This == NULL || KeyGuidBufferLength == NULL) {
+ HII_DATABASE_PRIVATE_DATA *Private;
+ HII_DATABASE_RECORD *Node;
+ HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList;
+ LIST_ENTRY *Link;
+ LIST_ENTRY *Link1;
+ UINT16 ResultSize;
+ UINTN Index;
+ UINT16 LayoutCount;
+ UINT16 LayoutLength;
+ UINT8 *Layout;
+ HII_KEYBOARD_LAYOUT_PACKAGE_INSTANCE *Package;
+
+ if ((This == NULL) || (KeyGuidBufferLength == NULL)) {
return EFI_INVALID_PARAMETER;
}
- if (*KeyGuidBufferLength > 0 && KeyGuidBuffer == NULL) {
+ if ((*KeyGuidBufferLength > 0) && (KeyGuidBuffer == NULL)) {
return EFI_INVALID_PARAMETER;
}
- Private = HII_DATABASE_DATABASE_PRIVATE_DATA_FROM_THIS (This);
- ResultSize = 0;
+ Private = HII_DATABASE_DATABASE_PRIVATE_DATA_FROM_THIS (This);
+ ResultSize = 0;
//
// Search all package lists in whole database to retrieve keyboard layout.
//
for (Link = Private->DatabaseList.ForwardLink; Link != &Private->DatabaseList; Link = Link->ForwardLink) {
- Node = CR (Link, HII_DATABASE_RECORD, DatabaseEntry, HII_DATABASE_RECORD_SIGNATURE);
+ Node = CR (Link, HII_DATABASE_RECORD, DatabaseEntry, HII_DATABASE_RECORD_SIGNATURE);
PackageList = Node->PackageList;
for (Link1 = PackageList->KeyboardLayoutHdr.ForwardLink;
Link1 != &PackageList->KeyboardLayoutHdr;
Link1 = Link1->ForwardLink
- ) {
+ )
+ {
//
// Find out all Keyboard Layout packages in this package list.
//
@@ -4363,10 +4451,10 @@ HiiFindKeyboardLayouts ( KeyboardEntry,
HII_KB_LAYOUT_PACKAGE_SIGNATURE
);
- Layout = (UINT8 *) Package->KeyboardPkg + sizeof (EFI_HII_PACKAGE_HEADER) + sizeof (UINT16);
+ Layout = (UINT8 *)Package->KeyboardPkg + sizeof (EFI_HII_PACKAGE_HEADER) + sizeof (UINT16);
CopyMem (
&LayoutCount,
- (UINT8 *) Package->KeyboardPkg + sizeof (EFI_HII_PACKAGE_HEADER),
+ (UINT8 *)Package->KeyboardPkg + sizeof (EFI_HII_PACKAGE_HEADER),
sizeof (UINT16)
);
for (Index = 0; Index < LayoutCount; Index++) {
@@ -4393,7 +4481,6 @@ HiiFindKeyboardLayouts ( return EFI_SUCCESS;
}
-
/**
This routine retrieves the requested keyboard layout. The layout is a physical description of the keys
on a keyboard and the character(s) that are associated with a particular set of key strokes.
@@ -4423,27 +4510,28 @@ HiiFindKeyboardLayouts ( EFI_STATUS
EFIAPI
HiiGetKeyboardLayout (
- IN CONST EFI_HII_DATABASE_PROTOCOL *This,
- IN CONST EFI_GUID *KeyGuid,
- IN OUT UINT16 *KeyboardLayoutLength,
- OUT EFI_HII_KEYBOARD_LAYOUT *KeyboardLayout
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This,
+ IN CONST EFI_GUID *KeyGuid,
+ IN OUT UINT16 *KeyboardLayoutLength,
+ OUT EFI_HII_KEYBOARD_LAYOUT *KeyboardLayout
)
{
- HII_DATABASE_PRIVATE_DATA *Private;
- HII_DATABASE_RECORD *Node;
- HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList;
- LIST_ENTRY *Link;
- LIST_ENTRY *Link1;
- UINTN Index;
- UINT8 *Layout;
- UINT16 LayoutCount;
- UINT16 LayoutLength;
- HII_KEYBOARD_LAYOUT_PACKAGE_INSTANCE *Package;
-
- if (This == NULL || KeyboardLayoutLength == NULL) {
+ HII_DATABASE_PRIVATE_DATA *Private;
+ HII_DATABASE_RECORD *Node;
+ HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList;
+ LIST_ENTRY *Link;
+ LIST_ENTRY *Link1;
+ UINTN Index;
+ UINT8 *Layout;
+ UINT16 LayoutCount;
+ UINT16 LayoutLength;
+ HII_KEYBOARD_LAYOUT_PACKAGE_INSTANCE *Package;
+
+ if ((This == NULL) || (KeyboardLayoutLength == NULL)) {
return EFI_INVALID_PARAMETER;
}
- if (*KeyboardLayoutLength > 0 && KeyboardLayout == NULL) {
+
+ if ((*KeyboardLayoutLength > 0) && (KeyboardLayout == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -4455,22 +4543,25 @@ HiiGetKeyboardLayout ( if (Private->CurrentLayout == NULL) {
return EFI_NOT_FOUND;
}
+
CopyMem (&LayoutLength, Private->CurrentLayout, sizeof (UINT16));
if (*KeyboardLayoutLength < LayoutLength) {
*KeyboardLayoutLength = LayoutLength;
return EFI_BUFFER_TOO_SMALL;
}
+
CopyMem (KeyboardLayout, Private->CurrentLayout, LayoutLength);
return EFI_SUCCESS;
}
for (Link = Private->DatabaseList.ForwardLink; Link != &Private->DatabaseList; Link = Link->ForwardLink) {
- Node = CR (Link, HII_DATABASE_RECORD, DatabaseEntry, HII_DATABASE_RECORD_SIGNATURE);
- PackageList = (HII_DATABASE_PACKAGE_LIST_INSTANCE *) (Node->PackageList);
+ Node = CR (Link, HII_DATABASE_RECORD, DatabaseEntry, HII_DATABASE_RECORD_SIGNATURE);
+ PackageList = (HII_DATABASE_PACKAGE_LIST_INSTANCE *)(Node->PackageList);
for (Link1 = PackageList->KeyboardLayoutHdr.ForwardLink;
Link1 != &PackageList->KeyboardLayoutHdr;
Link1 = Link1->ForwardLink
- ) {
+ )
+ {
Package = CR (
Link1,
HII_KEYBOARD_LAYOUT_PACKAGE_INSTANCE,
@@ -4478,7 +4569,7 @@ HiiGetKeyboardLayout ( HII_KB_LAYOUT_PACKAGE_SIGNATURE
);
- Layout = (UINT8 *) Package->KeyboardPkg +
+ Layout = (UINT8 *)Package->KeyboardPkg +
sizeof (EFI_HII_PACKAGE_HEADER) + sizeof (UINT16);
CopyMem (&LayoutCount, Layout - sizeof (UINT16), sizeof (UINT16));
for (Index = 0; Index < LayoutCount; Index++) {
@@ -4492,6 +4583,7 @@ HiiGetKeyboardLayout ( return EFI_BUFFER_TOO_SMALL;
}
}
+
Layout = Layout + LayoutLength;
}
}
@@ -4500,7 +4592,6 @@ HiiGetKeyboardLayout ( return EFI_NOT_FOUND;
}
-
/**
This routine sets the default keyboard layout to the one referenced by KeyGuid. When this routine
is called, an event will be signaled of the EFI_HII_SET_KEYBOARD_LAYOUT_EVENT_GUID
@@ -4521,16 +4612,16 @@ HiiGetKeyboardLayout ( EFI_STATUS
EFIAPI
HiiSetKeyboardLayout (
- IN CONST EFI_HII_DATABASE_PROTOCOL *This,
- IN CONST EFI_GUID *KeyGuid
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This,
+ IN CONST EFI_GUID *KeyGuid
)
{
- HII_DATABASE_PRIVATE_DATA *Private;
- EFI_HII_KEYBOARD_LAYOUT *KeyboardLayout;
- UINT16 KeyboardLayoutLength;
- EFI_STATUS Status;
+ HII_DATABASE_PRIVATE_DATA *Private;
+ EFI_HII_KEYBOARD_LAYOUT *KeyboardLayout;
+ UINT16 KeyboardLayoutLength;
+ EFI_STATUS Status;
- if (This == NULL || KeyGuid == NULL) {
+ if ((This == NULL) || (KeyGuid == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -4549,12 +4640,12 @@ HiiSetKeyboardLayout ( //
KeyboardLayoutLength = 0;
KeyboardLayout = NULL;
- Status = HiiGetKeyboardLayout (This, KeyGuid, &KeyboardLayoutLength, KeyboardLayout);
+ Status = HiiGetKeyboardLayout (This, KeyGuid, &KeyboardLayoutLength, KeyboardLayout);
if (Status != EFI_BUFFER_TOO_SMALL) {
return Status;
}
- KeyboardLayout = (EFI_HII_KEYBOARD_LAYOUT *) AllocateZeroPool (KeyboardLayoutLength);
+ KeyboardLayout = (EFI_HII_KEYBOARD_LAYOUT *)AllocateZeroPool (KeyboardLayoutLength);
ASSERT (KeyboardLayout != NULL);
Status = HiiGetKeyboardLayout (This, KeyGuid, &KeyboardLayoutLength, KeyboardLayout);
ASSERT_EFI_ERROR (Status);
@@ -4564,8 +4655,9 @@ HiiSetKeyboardLayout ( //
CopyMem (&Private->CurrentLayoutGuid, KeyGuid, sizeof (EFI_GUID));
if (Private->CurrentLayout != NULL) {
- FreePool(Private->CurrentLayout);
+ FreePool (Private->CurrentLayout);
}
+
Private->CurrentLayout = KeyboardLayout;
//
@@ -4578,7 +4670,6 @@ HiiSetKeyboardLayout ( return EFI_SUCCESS;
}
-
/**
Return the EFI handle associated with a package list.
@@ -4600,16 +4691,16 @@ HiiSetKeyboardLayout ( EFI_STATUS
EFIAPI
HiiGetPackageListHandle (
- IN CONST EFI_HII_DATABASE_PROTOCOL *This,
- IN EFI_HII_HANDLE PackageListHandle,
- OUT EFI_HANDLE *DriverHandle
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This,
+ IN EFI_HII_HANDLE PackageListHandle,
+ OUT EFI_HANDLE *DriverHandle
)
{
- HII_DATABASE_PRIVATE_DATA *Private;
- HII_DATABASE_RECORD *Node;
- LIST_ENTRY *Link;
+ HII_DATABASE_PRIVATE_DATA *Private;
+ HII_DATABASE_RECORD *Node;
+ LIST_ENTRY *Link;
- if (This == NULL || DriverHandle == NULL) {
+ if ((This == NULL) || (DriverHandle == NULL)) {
return EFI_INVALID_PARAMETER;
}
diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/Font.c b/MdeModulePkg/Universal/HiiDatabaseDxe/Font.c index 3629b249ca..399f90feb7 100644 --- a/MdeModulePkg/Universal/HiiDatabaseDxe/Font.c +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/Font.c @@ -7,32 +7,30 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/
-
#include "HiiDatabase.h"
-EFI_GRAPHICS_OUTPUT_BLT_PIXEL mHiiEfiColors[16] = {
+EFI_GRAPHICS_OUTPUT_BLT_PIXEL mHiiEfiColors[16] = {
//
// B G R
//
- {0x00, 0x00, 0x00, 0x00}, // BLACK
- {0x98, 0x00, 0x00, 0x00}, // BLUE
- {0x00, 0x98, 0x00, 0x00}, // GREEN
- {0x98, 0x98, 0x00, 0x00}, // CYAN
- {0x00, 0x00, 0x98, 0x00}, // RED
- {0x98, 0x00, 0x98, 0x00}, // MAGENTA
- {0x00, 0x98, 0x98, 0x00}, // BROWN
- {0x98, 0x98, 0x98, 0x00}, // LIGHTGRAY
- {0x30, 0x30, 0x30, 0x00}, // DARKGRAY - BRIGHT BLACK
- {0xff, 0x00, 0x00, 0x00}, // LIGHTBLUE
- {0x00, 0xff, 0x00, 0x00}, // LIGHTGREEN
- {0xff, 0xff, 0x00, 0x00}, // LIGHTCYAN
- {0x00, 0x00, 0xff, 0x00}, // LIGHTRED
- {0xff, 0x00, 0xff, 0x00}, // LIGHTMAGENTA
- {0x00, 0xff, 0xff, 0x00}, // YELLOW
- {0xff, 0xff, 0xff, 0x00}, // WHITE
+ { 0x00, 0x00, 0x00, 0x00 }, // BLACK
+ { 0x98, 0x00, 0x00, 0x00 }, // BLUE
+ { 0x00, 0x98, 0x00, 0x00 }, // GREEN
+ { 0x98, 0x98, 0x00, 0x00 }, // CYAN
+ { 0x00, 0x00, 0x98, 0x00 }, // RED
+ { 0x98, 0x00, 0x98, 0x00 }, // MAGENTA
+ { 0x00, 0x98, 0x98, 0x00 }, // BROWN
+ { 0x98, 0x98, 0x98, 0x00 }, // LIGHTGRAY
+ { 0x30, 0x30, 0x30, 0x00 }, // DARKGRAY - BRIGHT BLACK
+ { 0xff, 0x00, 0x00, 0x00 }, // LIGHTBLUE
+ { 0x00, 0xff, 0x00, 0x00 }, // LIGHTGREEN
+ { 0xff, 0xff, 0x00, 0x00 }, // LIGHTCYAN
+ { 0x00, 0x00, 0xff, 0x00 }, // LIGHTRED
+ { 0xff, 0x00, 0xff, 0x00 }, // LIGHTMAGENTA
+ { 0x00, 0xff, 0xff, 0x00 }, // YELLOW
+ { 0xff, 0xff, 0xff, 0x00 }, // WHITE
};
-
/**
Insert a character cell information to the list specified by GlyphInfoList.
@@ -50,16 +48,16 @@ EFI_GRAPHICS_OUTPUT_BLT_PIXEL mHiiEfiColors[16] = { **/
EFI_STATUS
NewCell (
- IN CHAR16 CharValue,
- IN LIST_ENTRY *GlyphInfoList,
- IN EFI_HII_GLYPH_INFO *Cell
+ IN CHAR16 CharValue,
+ IN LIST_ENTRY *GlyphInfoList,
+ IN EFI_HII_GLYPH_INFO *Cell
)
{
- HII_GLYPH_INFO *GlyphInfo;
+ HII_GLYPH_INFO *GlyphInfo;
ASSERT (Cell != NULL && GlyphInfoList != NULL);
- GlyphInfo = (HII_GLYPH_INFO *) AllocateZeroPool (sizeof (HII_GLYPH_INFO));
+ GlyphInfo = (HII_GLYPH_INFO *)AllocateZeroPool (sizeof (HII_GLYPH_INFO));
if (GlyphInfo == NULL) {
return EFI_OUT_OF_RESOURCES;
}
@@ -73,13 +71,13 @@ NewCell ( if (Cell->AdvanceX == 0) {
Cell->AdvanceX = Cell->Width;
}
+
CopyMem (&GlyphInfo->Cell, Cell, sizeof (EFI_HII_GLYPH_INFO));
InsertTailList (GlyphInfoList, &GlyphInfo->Entry);
return EFI_SUCCESS;
}
-
/**
Get a character cell information from the list specified by GlyphInfoList.
@@ -98,13 +96,13 @@ NewCell ( **/
EFI_STATUS
GetCell (
- IN CHAR16 CharValue,
- IN LIST_ENTRY *GlyphInfoList,
- OUT EFI_HII_GLYPH_INFO *Cell
+ IN CHAR16 CharValue,
+ IN LIST_ENTRY *GlyphInfoList,
+ OUT EFI_HII_GLYPH_INFO *Cell
)
{
- HII_GLYPH_INFO *GlyphInfo;
- LIST_ENTRY *Link;
+ HII_GLYPH_INFO *GlyphInfo;
+ LIST_ENTRY *Link;
ASSERT (Cell != NULL && GlyphInfoList != NULL);
@@ -129,7 +127,6 @@ GetCell ( return EFI_NOT_FOUND;
}
-
/**
Convert the glyph for a single character into a bitmap.
@@ -152,30 +149,31 @@ GetCell ( **/
EFI_STATUS
GetGlyphBuffer (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN CHAR16 Char,
- IN EFI_FONT_INFO *StringInfo,
- OUT UINT8 **GlyphBuffer,
- OUT EFI_HII_GLYPH_INFO *Cell,
- OUT UINT8 *Attributes OPTIONAL
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN CHAR16 Char,
+ IN EFI_FONT_INFO *StringInfo,
+ OUT UINT8 **GlyphBuffer,
+ OUT EFI_HII_GLYPH_INFO *Cell,
+ OUT UINT8 *Attributes OPTIONAL
)
{
- HII_DATABASE_RECORD *Node;
- LIST_ENTRY *Link;
- HII_SIMPLE_FONT_PACKAGE_INSTANCE *SimpleFont;
- LIST_ENTRY *Link1;
- UINT16 Index;
- EFI_NARROW_GLYPH Narrow;
- EFI_WIDE_GLYPH Wide;
- HII_GLOBAL_FONT_INFO *GlobalFont;
- UINTN HeaderSize;
- EFI_NARROW_GLYPH *NarrowPtr;
- EFI_WIDE_GLYPH *WidePtr;
-
- if (GlyphBuffer == NULL || Cell == NULL) {
+ HII_DATABASE_RECORD *Node;
+ LIST_ENTRY *Link;
+ HII_SIMPLE_FONT_PACKAGE_INSTANCE *SimpleFont;
+ LIST_ENTRY *Link1;
+ UINT16 Index;
+ EFI_NARROW_GLYPH Narrow;
+ EFI_WIDE_GLYPH Wide;
+ HII_GLOBAL_FONT_INFO *GlobalFont;
+ UINTN HeaderSize;
+ EFI_NARROW_GLYPH *NarrowPtr;
+ EFI_WIDE_GLYPH *WidePtr;
+
+ if ((GlyphBuffer == NULL) || (Cell == NULL)) {
return EFI_INVALID_PARAMETER;
}
- if (Private == NULL || Private->Signature != HII_DATABASE_PRIVATE_DATA_SIGNATURE) {
+
+ if ((Private == NULL) || (Private->Signature != HII_DATABASE_PRIVATE_DATA_SIGNATURE)) {
return EFI_INVALID_PARAMETER;
}
@@ -188,12 +186,14 @@ GetGlyphBuffer ( // default system font is the fixed font (narrow or wide glyph).
//
if (StringInfo != NULL) {
- if(!IsFontInfoExisted (Private, StringInfo, NULL, NULL, &GlobalFont)) {
+ if (!IsFontInfoExisted (Private, StringInfo, NULL, NULL, &GlobalFont)) {
return EFI_INVALID_PARAMETER;
}
+
if (Attributes != NULL) {
*Attributes = PROPORTIONAL_GLYPH;
}
+
return FindGlyphBlock (GlobalFont->FontPackage, Char, GlyphBuffer, Cell, NULL);
} else {
HeaderSize = sizeof (EFI_HII_SIMPLE_FONT_PACKAGE_HDR);
@@ -203,48 +203,54 @@ GetGlyphBuffer ( for (Link1 = Node->PackageList->SimpleFontPkgHdr.ForwardLink;
Link1 != &Node->PackageList->SimpleFontPkgHdr;
Link1 = Link1->ForwardLink
- ) {
+ )
+ {
SimpleFont = CR (Link1, HII_SIMPLE_FONT_PACKAGE_INSTANCE, SimpleFontEntry, HII_S_FONT_PACKAGE_SIGNATURE);
//
// Search the narrow glyph array
//
- NarrowPtr = (EFI_NARROW_GLYPH *) ((UINT8 *) (SimpleFont->SimpleFontPkgHdr) + HeaderSize);
+ NarrowPtr = (EFI_NARROW_GLYPH *)((UINT8 *)(SimpleFont->SimpleFontPkgHdr) + HeaderSize);
for (Index = 0; Index < SimpleFont->SimpleFontPkgHdr->NumberOfNarrowGlyphs; Index++) {
- CopyMem (&Narrow, NarrowPtr + Index,sizeof (EFI_NARROW_GLYPH));
+ CopyMem (&Narrow, NarrowPtr + Index, sizeof (EFI_NARROW_GLYPH));
if (Narrow.UnicodeWeight == Char) {
- *GlyphBuffer = (UINT8 *) AllocateZeroPool (EFI_GLYPH_HEIGHT);
+ *GlyphBuffer = (UINT8 *)AllocateZeroPool (EFI_GLYPH_HEIGHT);
if (*GlyphBuffer == NULL) {
return EFI_OUT_OF_RESOURCES;
}
+
Cell->Width = EFI_GLYPH_WIDTH;
Cell->Height = EFI_GLYPH_HEIGHT;
Cell->AdvanceX = Cell->Width;
CopyMem (*GlyphBuffer, Narrow.GlyphCol1, Cell->Height);
if (Attributes != NULL) {
- *Attributes = (UINT8) (Narrow.Attributes | NARROW_GLYPH);
+ *Attributes = (UINT8)(Narrow.Attributes | NARROW_GLYPH);
}
+
return EFI_SUCCESS;
}
}
+
//
// Search the wide glyph array
//
- WidePtr = (EFI_WIDE_GLYPH *) (NarrowPtr + SimpleFont->SimpleFontPkgHdr->NumberOfNarrowGlyphs);
+ WidePtr = (EFI_WIDE_GLYPH *)(NarrowPtr + SimpleFont->SimpleFontPkgHdr->NumberOfNarrowGlyphs);
for (Index = 0; Index < SimpleFont->SimpleFontPkgHdr->NumberOfWideGlyphs; Index++) {
CopyMem (&Wide, WidePtr + Index, sizeof (EFI_WIDE_GLYPH));
if (Wide.UnicodeWeight == Char) {
- *GlyphBuffer = (UINT8 *) AllocateZeroPool (EFI_GLYPH_HEIGHT * 2);
+ *GlyphBuffer = (UINT8 *)AllocateZeroPool (EFI_GLYPH_HEIGHT * 2);
if (*GlyphBuffer == NULL) {
return EFI_OUT_OF_RESOURCES;
}
+
Cell->Width = EFI_GLYPH_WIDTH * 2;
Cell->Height = EFI_GLYPH_HEIGHT;
Cell->AdvanceX = Cell->Width;
CopyMem (*GlyphBuffer, Wide.GlyphCol1, EFI_GLYPH_HEIGHT);
CopyMem (*GlyphBuffer + EFI_GLYPH_HEIGHT, Wide.GlyphCol2, EFI_GLYPH_HEIGHT);
if (Attributes != NULL) {
- *Attributes = (UINT8) (Wide.Attributes | EFI_GLYPH_WIDE);
+ *Attributes = (UINT8)(Wide.Attributes | EFI_GLYPH_WIDE);
}
+
return EFI_SUCCESS;
}
}
@@ -278,21 +284,21 @@ GetGlyphBuffer ( **/
VOID
NarrowGlyphToBlt (
- IN UINT8 *GlyphBuffer,
- IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground,
- IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background,
- IN UINT16 ImageWidth,
- IN UINTN RowWidth,
- IN UINTN RowHeight,
- IN BOOLEAN Transparent,
- IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL **Origin
+ IN UINT8 *GlyphBuffer,
+ IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground,
+ IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background,
+ IN UINT16 ImageWidth,
+ IN UINTN RowWidth,
+ IN UINTN RowHeight,
+ IN BOOLEAN Transparent,
+ IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL **Origin
)
{
- UINT8 Xpos;
- UINT8 Ypos;
- UINT8 Height;
- UINT8 Width;
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Buffer;
+ UINT8 Xpos;
+ UINT8 Ypos;
+ UINT8 Height;
+ UINT8 Width;
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Buffer;
ASSERT (GlyphBuffer != NULL && Origin != NULL && *Origin != NULL);
@@ -308,10 +314,11 @@ NarrowGlyphToBlt ( // Char may be partially displayed when CLIP_X or CLIP_Y is not set.
//
if (RowHeight < Height) {
- Height = (UINT8) RowHeight;
+ Height = (UINT8)RowHeight;
}
+
if (RowWidth < Width) {
- Width = (UINT8) RowWidth;
+ Width = (UINT8)RowWidth;
}
for (Ypos = 0; Ypos < Height; Ypos++) {
@@ -329,7 +336,6 @@ NarrowGlyphToBlt ( *Origin = *Origin + EFI_GLYPH_WIDTH;
}
-
/**
Convert bitmap data of the glyph to blt structure.
@@ -357,26 +363,26 @@ NarrowGlyphToBlt ( **/
VOID
GlyphToBlt (
- IN UINT8 *GlyphBuffer,
- IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground,
- IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background,
- IN UINT16 ImageWidth,
- IN UINT16 BaseLine,
- IN UINTN RowWidth,
- IN UINTN RowHeight,
- IN BOOLEAN Transparent,
- IN CONST EFI_HII_GLYPH_INFO *Cell,
- IN UINT8 Attributes,
- IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL **Origin
+ IN UINT8 *GlyphBuffer,
+ IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground,
+ IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background,
+ IN UINT16 ImageWidth,
+ IN UINT16 BaseLine,
+ IN UINTN RowWidth,
+ IN UINTN RowHeight,
+ IN BOOLEAN Transparent,
+ IN CONST EFI_HII_GLYPH_INFO *Cell,
+ IN UINT8 Attributes,
+ IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL **Origin
)
{
- UINT16 Xpos;
- UINT16 Ypos;
- UINT8 Data;
- UINT16 Index;
- UINT16 YposOffset;
- UINTN OffsetY;
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer;
+ UINT16 Xpos;
+ UINT16 Ypos;
+ UINT8 Data;
+ UINT16 Index;
+ UINT16 YposOffset;
+ UINTN OffsetY;
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer;
ASSERT (Origin != NULL && *Origin != NULL && Cell != NULL);
@@ -387,11 +393,12 @@ GlyphToBlt ( *Origin = *Origin + Cell->AdvanceX;
return;
}
+
//
// Move position to the left-top corner of char.
//
BltBuffer = *Origin + Cell->OffsetX - (Cell->OffsetY + Cell->Height) * ImageWidth;
- YposOffset = (UINT16) (BaseLine - (Cell->OffsetY + Cell->Height));
+ YposOffset = (UINT16)(BaseLine - (Cell->OffsetY + Cell->Height));
//
// Since non-spacing key will be printed OR'd with the previous glyph, don't
@@ -405,15 +412,15 @@ GlyphToBlt ( // The glyph's upper left hand corner pixel is the most significant bit of the
// first bitmap byte.
//
- for (Ypos = 0; Ypos < Cell->Height && (((UINT32) Ypos + YposOffset) < RowHeight); Ypos++) {
+ for (Ypos = 0; Ypos < Cell->Height && (((UINT32)Ypos + YposOffset) < RowHeight); Ypos++) {
OffsetY = BITMAP_LEN_1_BIT (Cell->Width, Ypos);
//
// All bits in these bytes are meaningful.
//
for (Xpos = 0; Xpos < Cell->Width / 8; Xpos++) {
- Data = *(GlyphBuffer + OffsetY + Xpos);
- for (Index = 0; Index < 8 && (((UINT32) Xpos * 8 + Index + Cell->OffsetX) < RowWidth); Index++) {
+ Data = *(GlyphBuffer + OffsetY + Xpos);
+ for (Index = 0; Index < 8 && (((UINT32)Xpos * 8 + Index + Cell->OffsetX) < RowWidth); Index++) {
if ((Data & (1 << (8 - Index - 1))) != 0) {
BltBuffer[Ypos * ImageWidth + Xpos * 8 + Index] = Foreground;
} else {
@@ -428,8 +435,8 @@ GlyphToBlt ( //
// There are some padding bits in this byte. Ignore them.
//
- Data = *(GlyphBuffer + OffsetY + Xpos);
- for (Index = 0; Index < Cell->Width % 8 && (((UINT32) Xpos * 8 + Index + Cell->OffsetX) < RowWidth); Index++) {
+ Data = *(GlyphBuffer + OffsetY + Xpos);
+ for (Index = 0; Index < Cell->Width % 8 && (((UINT32)Xpos * 8 + Index + Cell->OffsetX) < RowWidth); Index++) {
if ((Data & (1 << (8 - Index - 1))) != 0) {
BltBuffer[Ypos * ImageWidth + Xpos * 8 + Index] = Foreground;
} else {
@@ -439,13 +446,11 @@ GlyphToBlt ( }
}
} // end of if (Width % 8...)
-
} // end of for (Ypos=0...)
*Origin = *Origin + Cell->AdvanceX;
}
-
/**
Convert bitmap data of the glyph to blt structure.
@@ -474,20 +479,20 @@ GlyphToBlt ( **/
VOID
GlyphToImage (
- IN UINT8 *GlyphBuffer,
- IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground,
- IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background,
- IN UINT16 ImageWidth,
- IN UINT16 BaseLine,
- IN UINTN RowWidth,
- IN UINTN RowHeight,
- IN BOOLEAN Transparent,
- IN CONST EFI_HII_GLYPH_INFO *Cell,
- IN UINT8 Attributes,
- IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL **Origin
+ IN UINT8 *GlyphBuffer,
+ IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground,
+ IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background,
+ IN UINT16 ImageWidth,
+ IN UINT16 BaseLine,
+ IN UINTN RowWidth,
+ IN UINTN RowHeight,
+ IN BOOLEAN Transparent,
+ IN CONST EFI_HII_GLYPH_INFO *Cell,
+ IN UINT8 Attributes,
+ IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL **Origin
)
{
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Buffer;
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Buffer;
ASSERT (Origin != NULL && *Origin != NULL && Cell != NULL);
@@ -512,7 +517,6 @@ GlyphToImage ( Attributes,
&Buffer
);
-
} else if ((Attributes & EFI_GLYPH_WIDE) == EFI_GLYPH_WIDE) {
//
// This character is wide glyph, i.e. 16 pixels * 19 pixels.
@@ -539,7 +543,6 @@ GlyphToImage ( Transparent,
Origin
);
-
} else if ((Attributes & NARROW_GLYPH) == NARROW_GLYPH) {
//
// This character is narrow glyph, i.e. 8 pixels * 19 pixels.
@@ -554,7 +557,6 @@ GlyphToImage ( Transparent,
Origin
);
-
} else if ((Attributes & PROPORTIONAL_GLYPH) == PROPORTIONAL_GLYPH) {
//
// This character is proportional glyph, i.e. Cell->Width * Cell->Height pixels.
@@ -575,7 +577,6 @@ GlyphToImage ( }
}
-
/**
Write the output parameters of FindGlyphBlock().
@@ -600,15 +601,15 @@ GlyphToImage ( **/
EFI_STATUS
WriteOutputParam (
- IN UINT8 *BufferIn,
- IN UINTN BufferLen,
- IN EFI_HII_GLYPH_INFO *InputCell,
- OUT UINT8 **GlyphBuffer OPTIONAL,
- OUT EFI_HII_GLYPH_INFO *Cell OPTIONAL,
- OUT UINTN *GlyphBufferLen OPTIONAL
+ IN UINT8 *BufferIn,
+ IN UINTN BufferLen,
+ IN EFI_HII_GLYPH_INFO *InputCell,
+ OUT UINT8 **GlyphBuffer OPTIONAL,
+ OUT EFI_HII_GLYPH_INFO *Cell OPTIONAL,
+ OUT UINTN *GlyphBufferLen OPTIONAL
)
{
- if (BufferIn == NULL || InputCell == NULL) {
+ if ((BufferIn == NULL) || (InputCell == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -616,11 +617,12 @@ WriteOutputParam ( CopyMem (Cell, InputCell, sizeof (EFI_HII_GLYPH_INFO));
}
- if (GlyphBuffer != NULL && BufferLen > 0) {
- *GlyphBuffer = (UINT8 *) AllocateZeroPool (BufferLen);
+ if ((GlyphBuffer != NULL) && (BufferLen > 0)) {
+ *GlyphBuffer = (UINT8 *)AllocateZeroPool (BufferLen);
if (*GlyphBuffer == NULL) {
return EFI_OUT_OF_RESOURCES;
}
+
CopyMem (*GlyphBuffer, BufferIn, BufferLen);
}
@@ -631,7 +633,6 @@ WriteOutputParam ( return EFI_SUCCESS;
}
-
/**
Parse all glyph blocks to find a glyph block specified by CharValue.
If CharValue = (CHAR16) (-1), collect all default character cell information
@@ -655,32 +656,32 @@ WriteOutputParam ( **/
EFI_STATUS
FindGlyphBlock (
- IN HII_FONT_PACKAGE_INSTANCE *FontPackage,
- IN CHAR16 CharValue,
- OUT UINT8 **GlyphBuffer OPTIONAL,
- OUT EFI_HII_GLYPH_INFO *Cell OPTIONAL,
- OUT UINTN *GlyphBufferLen OPTIONAL
+ IN HII_FONT_PACKAGE_INSTANCE *FontPackage,
+ IN CHAR16 CharValue,
+ OUT UINT8 **GlyphBuffer OPTIONAL,
+ OUT EFI_HII_GLYPH_INFO *Cell OPTIONAL,
+ OUT UINTN *GlyphBufferLen OPTIONAL
)
{
- EFI_STATUS Status;
- UINT8 *BlockPtr;
- UINT16 CharCurrent;
- UINT16 Length16;
- UINT32 Length32;
- EFI_HII_GIBT_GLYPHS_BLOCK Glyphs;
- UINTN BufferLen;
- UINT16 Index;
- EFI_HII_GLYPH_INFO DefaultCell;
- EFI_HII_GLYPH_INFO LocalCell;
- INT16 MinOffsetY;
- UINT16 BaseLine;
+ EFI_STATUS Status;
+ UINT8 *BlockPtr;
+ UINT16 CharCurrent;
+ UINT16 Length16;
+ UINT32 Length32;
+ EFI_HII_GIBT_GLYPHS_BLOCK Glyphs;
+ UINTN BufferLen;
+ UINT16 Index;
+ EFI_HII_GLYPH_INFO DefaultCell;
+ EFI_HII_GLYPH_INFO LocalCell;
+ INT16 MinOffsetY;
+ UINT16 BaseLine;
ASSERT (FontPackage != NULL);
ASSERT (FontPackage->Signature == HII_FONT_PACKAGE_SIGNATURE);
- BaseLine = 0;
+ BaseLine = 0;
MinOffsetY = 0;
- if (CharValue == (CHAR16) (-1)) {
+ if (CharValue == (CHAR16)(-1)) {
//
// Collect the cell information specified in font package fixed header.
// Use CharValue =0 to represent this particular cell.
@@ -688,14 +689,15 @@ FindGlyphBlock ( Status = NewCell (
0,
&FontPackage->GlyphInfoList,
- (EFI_HII_GLYPH_INFO *) ((UINT8 *) FontPackage->FontPkgHdr + 3 * sizeof (UINT32))
+ (EFI_HII_GLYPH_INFO *)((UINT8 *)FontPackage->FontPkgHdr + 3 * sizeof (UINT32))
);
if (EFI_ERROR (Status)) {
return Status;
}
+
CopyMem (
&LocalCell,
- (UINT8 *) FontPackage->FontPkgHdr + 3 * sizeof (UINT32),
+ (UINT8 *)FontPackage->FontPkgHdr + 3 * sizeof (UINT32),
sizeof (EFI_HII_GLYPH_INFO)
);
}
@@ -706,177 +708,159 @@ FindGlyphBlock ( while (*BlockPtr != EFI_HII_GIBT_END) {
switch (*BlockPtr) {
- case EFI_HII_GIBT_DEFAULTS:
- //
- // Collect all default character cell information specified by
- // EFI_HII_GIBT_DEFAULTS.
- //
- if (CharValue == (CHAR16) (-1)) {
- Status = NewCell (
- CharCurrent,
- &FontPackage->GlyphInfoList,
- (EFI_HII_GLYPH_INFO *) (BlockPtr + sizeof (EFI_HII_GLYPH_BLOCK))
- );
- if (EFI_ERROR (Status)) {
- return Status;
+ case EFI_HII_GIBT_DEFAULTS:
+ //
+ // Collect all default character cell information specified by
+ // EFI_HII_GIBT_DEFAULTS.
+ //
+ if (CharValue == (CHAR16)(-1)) {
+ Status = NewCell (
+ CharCurrent,
+ &FontPackage->GlyphInfoList,
+ (EFI_HII_GLYPH_INFO *)(BlockPtr + sizeof (EFI_HII_GLYPH_BLOCK))
+ );
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+
+ CopyMem (
+ &LocalCell,
+ BlockPtr + sizeof (EFI_HII_GLYPH_BLOCK),
+ sizeof (EFI_HII_GLYPH_INFO)
+ );
+ if (BaseLine < LocalCell.Height + LocalCell.OffsetY) {
+ BaseLine = (UINT16)(LocalCell.Height + LocalCell.OffsetY);
+ }
+
+ if (MinOffsetY > LocalCell.OffsetY) {
+ MinOffsetY = LocalCell.OffsetY;
+ }
}
+
+ BlockPtr += sizeof (EFI_HII_GIBT_DEFAULTS_BLOCK);
+ break;
+
+ case EFI_HII_GIBT_DUPLICATE:
+ if (CharCurrent == CharValue) {
+ CopyMem (&CharValue, BlockPtr + sizeof (EFI_HII_GLYPH_BLOCK), sizeof (CHAR16));
+ CharCurrent = 1;
+ BlockPtr = FontPackage->GlyphBlock;
+ continue;
+ }
+
+ CharCurrent++;
+ BlockPtr += sizeof (EFI_HII_GIBT_DUPLICATE_BLOCK);
+ break;
+
+ case EFI_HII_GIBT_EXT1:
+ BlockPtr += *(UINT8 *)((UINTN)BlockPtr + sizeof (EFI_HII_GLYPH_BLOCK) + sizeof (UINT8));
+ break;
+ case EFI_HII_GIBT_EXT2:
+ CopyMem (
+ &Length16,
+ (UINT8 *)((UINTN)BlockPtr + sizeof (EFI_HII_GLYPH_BLOCK) + sizeof (UINT8)),
+ sizeof (UINT16)
+ );
+ BlockPtr += Length16;
+ break;
+ case EFI_HII_GIBT_EXT4:
+ CopyMem (
+ &Length32,
+ (UINT8 *)((UINTN)BlockPtr + sizeof (EFI_HII_GLYPH_BLOCK) + sizeof (UINT8)),
+ sizeof (UINT32)
+ );
+ BlockPtr += Length32;
+ break;
+
+ case EFI_HII_GIBT_GLYPH:
CopyMem (
&LocalCell,
BlockPtr + sizeof (EFI_HII_GLYPH_BLOCK),
sizeof (EFI_HII_GLYPH_INFO)
);
- if (BaseLine < LocalCell.Height + LocalCell.OffsetY) {
- BaseLine = (UINT16) (LocalCell.Height + LocalCell.OffsetY);
- }
- if (MinOffsetY > LocalCell.OffsetY) {
- MinOffsetY = LocalCell.OffsetY;
- }
- }
- BlockPtr += sizeof (EFI_HII_GIBT_DEFAULTS_BLOCK);
- break;
-
- case EFI_HII_GIBT_DUPLICATE:
- if (CharCurrent == CharValue) {
- CopyMem (&CharValue, BlockPtr + sizeof (EFI_HII_GLYPH_BLOCK), sizeof (CHAR16));
- CharCurrent = 1;
- BlockPtr = FontPackage->GlyphBlock;
- continue;
- }
- CharCurrent++;
- BlockPtr += sizeof (EFI_HII_GIBT_DUPLICATE_BLOCK);
- break;
-
- case EFI_HII_GIBT_EXT1:
- BlockPtr += *(UINT8*)((UINTN)BlockPtr + sizeof (EFI_HII_GLYPH_BLOCK) + sizeof (UINT8));
- break;
- case EFI_HII_GIBT_EXT2:
- CopyMem (
- &Length16,
- (UINT8*)((UINTN)BlockPtr + sizeof (EFI_HII_GLYPH_BLOCK) + sizeof (UINT8)),
- sizeof (UINT16)
- );
- BlockPtr += Length16;
- break;
- case EFI_HII_GIBT_EXT4:
- CopyMem (
- &Length32,
- (UINT8*)((UINTN)BlockPtr + sizeof (EFI_HII_GLYPH_BLOCK) + sizeof (UINT8)),
- sizeof (UINT32)
- );
- BlockPtr += Length32;
- break;
-
- case EFI_HII_GIBT_GLYPH:
- CopyMem (
- &LocalCell,
- BlockPtr + sizeof (EFI_HII_GLYPH_BLOCK),
- sizeof (EFI_HII_GLYPH_INFO)
- );
- if (CharValue == (CHAR16) (-1)) {
- if (BaseLine < LocalCell.Height + LocalCell.OffsetY) {
- BaseLine = (UINT16) (LocalCell.Height + LocalCell.OffsetY);
- }
- if (MinOffsetY > LocalCell.OffsetY) {
- MinOffsetY = LocalCell.OffsetY;
- }
- }
- BufferLen = BITMAP_LEN_1_BIT (LocalCell.Width, LocalCell.Height);
- if (CharCurrent == CharValue) {
- return WriteOutputParam (
- (UINT8*)((UINTN)BlockPtr + sizeof (EFI_HII_GIBT_GLYPH_BLOCK) - sizeof (UINT8)),
- BufferLen,
- &LocalCell,
- GlyphBuffer,
- Cell,
- GlyphBufferLen
- );
- }
- CharCurrent++;
- BlockPtr += sizeof (EFI_HII_GIBT_GLYPH_BLOCK) - sizeof (UINT8) + BufferLen;
- break;
-
- case EFI_HII_GIBT_GLYPHS:
- BlockPtr += sizeof (EFI_HII_GLYPH_BLOCK);
- CopyMem (&Glyphs.Cell, BlockPtr, sizeof (EFI_HII_GLYPH_INFO));
- BlockPtr += sizeof (EFI_HII_GLYPH_INFO);
- CopyMem (&Glyphs.Count, BlockPtr, sizeof (UINT16));
- BlockPtr += sizeof (UINT16);
+ if (CharValue == (CHAR16)(-1)) {
+ if (BaseLine < LocalCell.Height + LocalCell.OffsetY) {
+ BaseLine = (UINT16)(LocalCell.Height + LocalCell.OffsetY);
+ }
- if (CharValue == (CHAR16) (-1)) {
- if (BaseLine < Glyphs.Cell.Height + Glyphs.Cell.OffsetY) {
- BaseLine = (UINT16) (Glyphs.Cell.Height + Glyphs.Cell.OffsetY);
- }
- if (MinOffsetY > Glyphs.Cell.OffsetY) {
- MinOffsetY = Glyphs.Cell.OffsetY;
+ if (MinOffsetY > LocalCell.OffsetY) {
+ MinOffsetY = LocalCell.OffsetY;
+ }
}
- }
- BufferLen = BITMAP_LEN_1_BIT (Glyphs.Cell.Width, Glyphs.Cell.Height);
- for (Index = 0; Index < Glyphs.Count; Index++) {
- if (CharCurrent + Index == CharValue) {
+ BufferLen = BITMAP_LEN_1_BIT (LocalCell.Width, LocalCell.Height);
+ if (CharCurrent == CharValue) {
return WriteOutputParam (
- BlockPtr,
+ (UINT8 *)((UINTN)BlockPtr + sizeof (EFI_HII_GIBT_GLYPH_BLOCK) - sizeof (UINT8)),
BufferLen,
- &Glyphs.Cell,
+ &LocalCell,
GlyphBuffer,
Cell,
GlyphBufferLen
);
}
- BlockPtr += BufferLen;
- }
- CharCurrent = (UINT16) (CharCurrent + Glyphs.Count);
- break;
- case EFI_HII_GIBT_GLYPH_DEFAULT:
- Status = GetCell (CharCurrent, &FontPackage->GlyphInfoList, &DefaultCell);
- if (EFI_ERROR (Status)) {
- return Status;
- }
- if (CharValue == (CHAR16) (-1)) {
- if (BaseLine < DefaultCell.Height + DefaultCell.OffsetY) {
- BaseLine = (UINT16) (DefaultCell.Height + DefaultCell.OffsetY);
+ CharCurrent++;
+ BlockPtr += sizeof (EFI_HII_GIBT_GLYPH_BLOCK) - sizeof (UINT8) + BufferLen;
+ break;
+
+ case EFI_HII_GIBT_GLYPHS:
+ BlockPtr += sizeof (EFI_HII_GLYPH_BLOCK);
+ CopyMem (&Glyphs.Cell, BlockPtr, sizeof (EFI_HII_GLYPH_INFO));
+ BlockPtr += sizeof (EFI_HII_GLYPH_INFO);
+ CopyMem (&Glyphs.Count, BlockPtr, sizeof (UINT16));
+ BlockPtr += sizeof (UINT16);
+
+ if (CharValue == (CHAR16)(-1)) {
+ if (BaseLine < Glyphs.Cell.Height + Glyphs.Cell.OffsetY) {
+ BaseLine = (UINT16)(Glyphs.Cell.Height + Glyphs.Cell.OffsetY);
+ }
+
+ if (MinOffsetY > Glyphs.Cell.OffsetY) {
+ MinOffsetY = Glyphs.Cell.OffsetY;
+ }
}
- if (MinOffsetY > DefaultCell.OffsetY) {
- MinOffsetY = DefaultCell.OffsetY;
+
+ BufferLen = BITMAP_LEN_1_BIT (Glyphs.Cell.Width, Glyphs.Cell.Height);
+ for (Index = 0; Index < Glyphs.Count; Index++) {
+ if (CharCurrent + Index == CharValue) {
+ return WriteOutputParam (
+ BlockPtr,
+ BufferLen,
+ &Glyphs.Cell,
+ GlyphBuffer,
+ Cell,
+ GlyphBufferLen
+ );
+ }
+
+ BlockPtr += BufferLen;
}
- }
- BufferLen = BITMAP_LEN_1_BIT (DefaultCell.Width, DefaultCell.Height);
-
- if (CharCurrent == CharValue) {
- return WriteOutputParam (
- BlockPtr + sizeof (EFI_HII_GLYPH_BLOCK),
- BufferLen,
- &DefaultCell,
- GlyphBuffer,
- Cell,
- GlyphBufferLen
- );
- }
- CharCurrent++;
- BlockPtr += sizeof (EFI_HII_GLYPH_BLOCK) + BufferLen;
- break;
- case EFI_HII_GIBT_GLYPHS_DEFAULT:
- CopyMem (&Length16, BlockPtr + sizeof (EFI_HII_GLYPH_BLOCK), sizeof (UINT16));
- Status = GetCell (CharCurrent, &FontPackage->GlyphInfoList, &DefaultCell);
- if (EFI_ERROR (Status)) {
- return Status;
- }
- if (CharValue == (CHAR16) (-1)) {
- if (BaseLine < DefaultCell.Height + DefaultCell.OffsetY) {
- BaseLine = (UINT16) (DefaultCell.Height + DefaultCell.OffsetY);
+ CharCurrent = (UINT16)(CharCurrent + Glyphs.Count);
+ break;
+
+ case EFI_HII_GIBT_GLYPH_DEFAULT:
+ Status = GetCell (CharCurrent, &FontPackage->GlyphInfoList, &DefaultCell);
+ if (EFI_ERROR (Status)) {
+ return Status;
}
- if (MinOffsetY > DefaultCell.OffsetY) {
- MinOffsetY = DefaultCell.OffsetY;
+
+ if (CharValue == (CHAR16)(-1)) {
+ if (BaseLine < DefaultCell.Height + DefaultCell.OffsetY) {
+ BaseLine = (UINT16)(DefaultCell.Height + DefaultCell.OffsetY);
+ }
+
+ if (MinOffsetY > DefaultCell.OffsetY) {
+ MinOffsetY = DefaultCell.OffsetY;
+ }
}
- }
- BufferLen = BITMAP_LEN_1_BIT (DefaultCell.Width, DefaultCell.Height);
- BlockPtr += sizeof (EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK) - sizeof (UINT8);
- for (Index = 0; Index < Length16; Index++) {
- if (CharCurrent + Index == CharValue) {
+
+ BufferLen = BITMAP_LEN_1_BIT (DefaultCell.Width, DefaultCell.Height);
+
+ if (CharCurrent == CharValue) {
return WriteOutputParam (
- BlockPtr,
+ BlockPtr + sizeof (EFI_HII_GLYPH_BLOCK),
BufferLen,
&DefaultCell,
GlyphBuffer,
@@ -884,23 +868,60 @@ FindGlyphBlock ( GlyphBufferLen
);
}
- BlockPtr += BufferLen;
- }
- CharCurrent = (UINT16) (CharCurrent + Length16);
- break;
- case EFI_HII_GIBT_SKIP1:
- CharCurrent = (UINT16) (CharCurrent + (UINT16) (*(BlockPtr + sizeof (EFI_HII_GLYPH_BLOCK))));
- BlockPtr += sizeof (EFI_HII_GIBT_SKIP1_BLOCK);
- break;
- case EFI_HII_GIBT_SKIP2:
- CopyMem (&Length16, BlockPtr + sizeof (EFI_HII_GLYPH_BLOCK), sizeof (UINT16));
- CharCurrent = (UINT16) (CharCurrent + Length16);
- BlockPtr += sizeof (EFI_HII_GIBT_SKIP2_BLOCK);
- break;
- default:
- ASSERT (FALSE);
- break;
+ CharCurrent++;
+ BlockPtr += sizeof (EFI_HII_GLYPH_BLOCK) + BufferLen;
+ break;
+
+ case EFI_HII_GIBT_GLYPHS_DEFAULT:
+ CopyMem (&Length16, BlockPtr + sizeof (EFI_HII_GLYPH_BLOCK), sizeof (UINT16));
+ Status = GetCell (CharCurrent, &FontPackage->GlyphInfoList, &DefaultCell);
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+
+ if (CharValue == (CHAR16)(-1)) {
+ if (BaseLine < DefaultCell.Height + DefaultCell.OffsetY) {
+ BaseLine = (UINT16)(DefaultCell.Height + DefaultCell.OffsetY);
+ }
+
+ if (MinOffsetY > DefaultCell.OffsetY) {
+ MinOffsetY = DefaultCell.OffsetY;
+ }
+ }
+
+ BufferLen = BITMAP_LEN_1_BIT (DefaultCell.Width, DefaultCell.Height);
+ BlockPtr += sizeof (EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK) - sizeof (UINT8);
+ for (Index = 0; Index < Length16; Index++) {
+ if (CharCurrent + Index == CharValue) {
+ return WriteOutputParam (
+ BlockPtr,
+ BufferLen,
+ &DefaultCell,
+ GlyphBuffer,
+ Cell,
+ GlyphBufferLen
+ );
+ }
+
+ BlockPtr += BufferLen;
+ }
+
+ CharCurrent = (UINT16)(CharCurrent + Length16);
+ break;
+
+ case EFI_HII_GIBT_SKIP1:
+ CharCurrent = (UINT16)(CharCurrent + (UINT16)(*(BlockPtr + sizeof (EFI_HII_GLYPH_BLOCK))));
+ BlockPtr += sizeof (EFI_HII_GIBT_SKIP1_BLOCK);
+ break;
+ case EFI_HII_GIBT_SKIP2:
+ CopyMem (&Length16, BlockPtr + sizeof (EFI_HII_GLYPH_BLOCK), sizeof (UINT16));
+ CharCurrent = (UINT16)(CharCurrent + Length16);
+ BlockPtr += sizeof (EFI_HII_GIBT_SKIP2_BLOCK);
+ break;
+ default:
+ ASSERT (FALSE);
+ break;
}
if (CharValue < CharCurrent) {
@@ -908,16 +929,15 @@ FindGlyphBlock ( }
}
- if (CharValue == (CHAR16) (-1)) {
+ if (CharValue == (CHAR16)(-1)) {
FontPackage->BaseLine = BaseLine;
- FontPackage->Height = (UINT16) (BaseLine - MinOffsetY);
+ FontPackage->Height = (UINT16)(BaseLine - MinOffsetY);
return EFI_SUCCESS;
}
return EFI_NOT_FOUND;
}
-
/**
Copy a Font Name to a new created EFI_FONT_INFO structure.
@@ -934,18 +954,18 @@ FindGlyphBlock ( **/
EFI_STATUS
SaveFontName (
- IN EFI_STRING FontName,
- OUT EFI_FONT_INFO **FontInfo
+ IN EFI_STRING FontName,
+ OUT EFI_FONT_INFO **FontInfo
)
{
- UINTN FontInfoLen;
- UINTN NameSize;
+ UINTN FontInfoLen;
+ UINTN NameSize;
ASSERT (FontName != NULL && FontInfo != NULL);
- NameSize = StrSize (FontName);
+ NameSize = StrSize (FontName);
FontInfoLen = sizeof (EFI_FONT_INFO) - sizeof (CHAR16) + NameSize;
- *FontInfo = (EFI_FONT_INFO *) AllocateZeroPool (FontInfoLen);
+ *FontInfo = (EFI_FONT_INFO *)AllocateZeroPool (FontInfoLen);
if (*FontInfo == NULL) {
return EFI_OUT_OF_RESOURCES;
}
@@ -954,7 +974,6 @@ SaveFontName ( return EFI_SUCCESS;
}
-
/**
Retrieve system default font and color.
@@ -972,18 +991,19 @@ SaveFontName ( **/
EFI_STATUS
GetSystemFont (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- OUT EFI_FONT_DISPLAY_INFO **FontInfo,
- OUT UINTN *FontInfoSize OPTIONAL
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ OUT EFI_FONT_DISPLAY_INFO **FontInfo,
+ OUT UINTN *FontInfoSize OPTIONAL
)
{
- EFI_FONT_DISPLAY_INFO *Info;
- UINTN InfoSize;
- UINTN NameSize;
+ EFI_FONT_DISPLAY_INFO *Info;
+ UINTN InfoSize;
+ UINTN NameSize;
- if (Private == NULL || Private->Signature != HII_DATABASE_PRIVATE_DATA_SIGNATURE) {
+ if ((Private == NULL) || (Private->Signature != HII_DATABASE_PRIVATE_DATA_SIGNATURE)) {
return EFI_INVALID_PARAMETER;
}
+
if (FontInfo == NULL) {
return EFI_INVALID_PARAMETER;
}
@@ -993,12 +1013,12 @@ GetSystemFont ( //
NameSize = StrSize (L"sysdefault");
InfoSize = sizeof (EFI_FONT_DISPLAY_INFO) - sizeof (CHAR16) + NameSize;
- Info = (EFI_FONT_DISPLAY_INFO *) AllocateZeroPool (InfoSize);
+ Info = (EFI_FONT_DISPLAY_INFO *)AllocateZeroPool (InfoSize);
if (Info == NULL) {
return EFI_OUT_OF_RESOURCES;
}
- Info->ForegroundColor = mHiiEfiColors[Private->Attribute & 0x0f];
+ Info->ForegroundColor = mHiiEfiColors[Private->Attribute & 0x0f];
ASSERT ((Private->Attribute >> 4) < 8);
Info->BackgroundColor = mHiiEfiColors[Private->Attribute >> 4];
Info->FontInfoMask = EFI_FONT_INFO_SYS_FONT | EFI_FONT_INFO_SYS_SIZE | EFI_FONT_INFO_SYS_STYLE;
@@ -1010,10 +1030,10 @@ GetSystemFont ( if (FontInfoSize != NULL) {
*FontInfoSize = InfoSize;
}
+
return EFI_SUCCESS;
}
-
/**
Check whether EFI_FONT_DISPLAY_INFO points to system default font and color or
returns the system default according to the optional inputs.
@@ -1034,20 +1054,20 @@ GetSystemFont ( **/
BOOLEAN
IsSystemFontInfo (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_FONT_DISPLAY_INFO *StringInfo,
- OUT EFI_FONT_DISPLAY_INFO **SystemInfo OPTIONAL,
- OUT UINTN *SystemInfoLen OPTIONAL
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_FONT_DISPLAY_INFO *StringInfo,
+ OUT EFI_FONT_DISPLAY_INFO **SystemInfo OPTIONAL,
+ OUT UINTN *SystemInfoLen OPTIONAL
)
{
- EFI_STATUS Status;
- EFI_FONT_DISPLAY_INFO *SystemDefault;
- UINTN DefaultLen;
- BOOLEAN Flag;
+ EFI_STATUS Status;
+ EFI_FONT_DISPLAY_INFO *SystemDefault;
+ UINTN DefaultLen;
+ BOOLEAN Flag;
ASSERT (Private != NULL && Private->Signature == HII_DATABASE_PRIVATE_DATA_SIGNATURE);
- if (StringInfo == NULL && SystemInfo == NULL) {
+ if ((StringInfo == NULL) && (SystemInfo == NULL)) {
return TRUE;
}
@@ -1082,31 +1102,37 @@ IsSystemFontInfo ( goto Exit;
}
}
+
if ((StringInfo->FontInfoMask & (EFI_FONT_INFO_SYS_SIZE | EFI_FONT_INFO_ANY_SIZE)) == 0) {
if (StringInfo->FontInfo.FontSize != SystemDefault->FontInfo.FontSize) {
goto Exit;
}
}
+
if ((StringInfo->FontInfoMask & (EFI_FONT_INFO_SYS_STYLE | EFI_FONT_INFO_ANY_STYLE)) == 0) {
if (StringInfo->FontInfo.FontStyle != SystemDefault->FontInfo.FontStyle) {
goto Exit;
}
}
+
if ((StringInfo->FontInfoMask & EFI_FONT_INFO_SYS_FORE_COLOR) == 0) {
if (CompareMem (
&StringInfo->ForegroundColor,
&SystemDefault->ForegroundColor,
sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL)
- ) != 0) {
+ ) != 0)
+ {
goto Exit;
}
}
+
if ((StringInfo->FontInfoMask & EFI_FONT_INFO_SYS_BACK_COLOR) == 0) {
if (CompareMem (
&StringInfo->BackgroundColor,
&SystemDefault->BackgroundColor,
sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL)
- ) != 0) {
+ ) != 0)
+ {
goto Exit;
}
}
@@ -1119,10 +1145,10 @@ Exit: FreePool (SystemDefault);
}
}
+
return Flag;
}
-
/**
This function checks whether EFI_FONT_INFO exists in current database. If
FontInfoMask is specified, check what options can be used to make a match.
@@ -1147,21 +1173,21 @@ Exit: **/
BOOLEAN
IsFontInfoExisted (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_FONT_INFO *FontInfo,
- IN EFI_FONT_INFO_MASK *FontInfoMask OPTIONAL,
- IN EFI_FONT_HANDLE FontHandle OPTIONAL,
- OUT HII_GLOBAL_FONT_INFO **GlobalFontInfo OPTIONAL
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_FONT_INFO *FontInfo,
+ IN EFI_FONT_INFO_MASK *FontInfoMask OPTIONAL,
+ IN EFI_FONT_HANDLE FontHandle OPTIONAL,
+ OUT HII_GLOBAL_FONT_INFO **GlobalFontInfo OPTIONAL
)
{
- HII_GLOBAL_FONT_INFO *GlobalFont;
- HII_GLOBAL_FONT_INFO *GlobalFontBackup1;
- HII_GLOBAL_FONT_INFO *GlobalFontBackup2;
- LIST_ENTRY *Link;
- EFI_FONT_INFO_MASK Mask;
- BOOLEAN Matched;
- BOOLEAN VagueMatched1;
- BOOLEAN VagueMatched2;
+ HII_GLOBAL_FONT_INFO *GlobalFont;
+ HII_GLOBAL_FONT_INFO *GlobalFontBackup1;
+ HII_GLOBAL_FONT_INFO *GlobalFontBackup2;
+ LIST_ENTRY *Link;
+ EFI_FONT_INFO_MASK Mask;
+ BOOLEAN Matched;
+ BOOLEAN VagueMatched1;
+ BOOLEAN VagueMatched2;
ASSERT (Private != NULL && Private->Signature == HII_DATABASE_PRIVATE_DATA_SIGNATURE);
ASSERT (FontInfo != NULL);
@@ -1170,9 +1196,9 @@ IsFontInfoExisted ( // Matched flag represents an exactly match; VagueMatched1 represents a RESIZE
// or RESTYLE match; VagueMatched2 represents a RESIZE | RESTYLE match.
//
- Matched = FALSE;
- VagueMatched1 = FALSE;
- VagueMatched2 = FALSE;
+ Matched = FALSE;
+ VagueMatched1 = FALSE;
+ VagueMatched2 = FALSE;
Mask = 0;
GlobalFontBackup1 = NULL;
@@ -1192,16 +1218,17 @@ IsFontInfoExisted ( if (FontHandle == NULL) {
Link = Private->FontInfoList.ForwardLink;
} else {
- Link = (LIST_ENTRY *) FontHandle;
+ Link = (LIST_ENTRY *)FontHandle;
}
- for (; Link != &Private->FontInfoList; Link = Link->ForwardLink) {
+ for ( ; Link != &Private->FontInfoList; Link = Link->ForwardLink) {
GlobalFont = CR (Link, HII_GLOBAL_FONT_INFO, Entry, HII_GLOBAL_FONT_INFO_SIGNATURE);
if (FontInfoMask == NULL) {
if (CompareMem (GlobalFont->FontInfo, FontInfo, GlobalFont->FontInfoSize) == 0) {
if (GlobalFontInfo != NULL) {
*GlobalFontInfo = GlobalFont;
}
+
return TRUE;
}
} else {
@@ -1209,208 +1236,232 @@ IsFontInfoExisted ( // Check which options could be used to make a match.
//
switch (Mask) {
- case EFI_FONT_INFO_ANY_FONT:
- if (GlobalFont->FontInfo->FontStyle == FontInfo->FontStyle &&
- GlobalFont->FontInfo->FontSize == FontInfo->FontSize) {
- Matched = TRUE;
- }
- break;
- case EFI_FONT_INFO_ANY_FONT | EFI_FONT_INFO_ANY_STYLE:
- if (GlobalFont->FontInfo->FontSize == FontInfo->FontSize) {
- Matched = TRUE;
- }
- break;
- case EFI_FONT_INFO_ANY_FONT | EFI_FONT_INFO_ANY_SIZE:
- if (GlobalFont->FontInfo->FontStyle == FontInfo->FontStyle) {
- Matched = TRUE;
- }
- break;
- case EFI_FONT_INFO_ANY_FONT | EFI_FONT_INFO_ANY_SIZE | EFI_FONT_INFO_ANY_STYLE:
- Matched = TRUE;
- break;
- //
- // If EFI_FONT_INFO_RESTYLE is specified, then the system may attempt to
- // remove some of the specified styles to meet the style requested.
- //
- case EFI_FONT_INFO_ANY_FONT | EFI_FONT_INFO_RESTYLE:
- if (GlobalFont->FontInfo->FontSize == FontInfo->FontSize) {
+ case EFI_FONT_INFO_ANY_FONT:
+ if ((GlobalFont->FontInfo->FontStyle == FontInfo->FontStyle) &&
+ (GlobalFont->FontInfo->FontSize == FontInfo->FontSize))
+ {
+ Matched = TRUE;
+ }
+
+ break;
+ case EFI_FONT_INFO_ANY_FONT | EFI_FONT_INFO_ANY_STYLE:
+ if (GlobalFont->FontInfo->FontSize == FontInfo->FontSize) {
+ Matched = TRUE;
+ }
+
+ break;
+ case EFI_FONT_INFO_ANY_FONT | EFI_FONT_INFO_ANY_SIZE:
if (GlobalFont->FontInfo->FontStyle == FontInfo->FontStyle) {
- Matched = TRUE;
- } else if ((GlobalFont->FontInfo->FontStyle & FontInfo->FontStyle) == FontInfo->FontStyle) {
- VagueMatched1 = TRUE;
- GlobalFontBackup1 = GlobalFont;
+ Matched = TRUE;
}
- }
- break;
- //
- // If EFI_FONT_INFO_RESIZE is specified, then the system may attempt to
- // stretch or shrink a font to meet the size requested.
- //
- case EFI_FONT_INFO_ANY_FONT | EFI_FONT_INFO_RESIZE:
- if (GlobalFont->FontInfo->FontStyle == FontInfo->FontStyle) {
- if (GlobalFont->FontInfo->FontSize == FontInfo->FontSize) {
- Matched = TRUE;
- } else {
- VagueMatched1 = TRUE;
- GlobalFontBackup1 = GlobalFont;
+
+ break;
+ case EFI_FONT_INFO_ANY_FONT | EFI_FONT_INFO_ANY_SIZE | EFI_FONT_INFO_ANY_STYLE:
+ Matched = TRUE;
+ break;
+ //
+ // If EFI_FONT_INFO_RESTYLE is specified, then the system may attempt to
+ // remove some of the specified styles to meet the style requested.
+ //
+ case EFI_FONT_INFO_ANY_FONT | EFI_FONT_INFO_RESTYLE:
+ if (GlobalFont->FontInfo->FontSize == FontInfo->FontSize) {
+ if (GlobalFont->FontInfo->FontStyle == FontInfo->FontStyle) {
+ Matched = TRUE;
+ } else if ((GlobalFont->FontInfo->FontStyle & FontInfo->FontStyle) == FontInfo->FontStyle) {
+ VagueMatched1 = TRUE;
+ GlobalFontBackup1 = GlobalFont;
+ }
}
- }
- break;
- case EFI_FONT_INFO_ANY_FONT | EFI_FONT_INFO_RESTYLE | EFI_FONT_INFO_RESIZE:
- if (GlobalFont->FontInfo->FontStyle == FontInfo->FontStyle) {
- if (GlobalFont->FontInfo->FontSize == FontInfo->FontSize) {
- Matched = TRUE;
- } else {
- VagueMatched1 = TRUE;
- GlobalFontBackup1 = GlobalFont;
+
+ break;
+ //
+ // If EFI_FONT_INFO_RESIZE is specified, then the system may attempt to
+ // stretch or shrink a font to meet the size requested.
+ //
+ case EFI_FONT_INFO_ANY_FONT | EFI_FONT_INFO_RESIZE:
+ if (GlobalFont->FontInfo->FontStyle == FontInfo->FontStyle) {
+ if (GlobalFont->FontInfo->FontSize == FontInfo->FontSize) {
+ Matched = TRUE;
+ } else {
+ VagueMatched1 = TRUE;
+ GlobalFontBackup1 = GlobalFont;
+ }
}
- } else if ((GlobalFont->FontInfo->FontStyle & FontInfo->FontStyle) == FontInfo->FontStyle) {
- if (GlobalFont->FontInfo->FontSize == FontInfo->FontSize) {
- VagueMatched1 = TRUE;
- GlobalFontBackup1 = GlobalFont;
- } else {
- VagueMatched2 = TRUE;
- GlobalFontBackup2 = GlobalFont;
+
+ break;
+ case EFI_FONT_INFO_ANY_FONT | EFI_FONT_INFO_RESTYLE | EFI_FONT_INFO_RESIZE:
+ if (GlobalFont->FontInfo->FontStyle == FontInfo->FontStyle) {
+ if (GlobalFont->FontInfo->FontSize == FontInfo->FontSize) {
+ Matched = TRUE;
+ } else {
+ VagueMatched1 = TRUE;
+ GlobalFontBackup1 = GlobalFont;
+ }
+ } else if ((GlobalFont->FontInfo->FontStyle & FontInfo->FontStyle) == FontInfo->FontStyle) {
+ if (GlobalFont->FontInfo->FontSize == FontInfo->FontSize) {
+ VagueMatched1 = TRUE;
+ GlobalFontBackup1 = GlobalFont;
+ } else {
+ VagueMatched2 = TRUE;
+ GlobalFontBackup2 = GlobalFont;
+ }
}
- }
- break;
- case EFI_FONT_INFO_ANY_FONT | EFI_FONT_INFO_ANY_STYLE | EFI_FONT_INFO_RESIZE:
- if (GlobalFont->FontInfo->FontSize == FontInfo->FontSize) {
- Matched = TRUE;
- } else {
- VagueMatched1 = TRUE;
- GlobalFontBackup1 = GlobalFont;
- }
- break;
- case EFI_FONT_INFO_ANY_FONT | EFI_FONT_INFO_ANY_SIZE | EFI_FONT_INFO_RESTYLE:
- if (GlobalFont->FontInfo->FontStyle == FontInfo->FontStyle) {
- Matched = TRUE;
- } else if ((GlobalFont->FontInfo->FontStyle & FontInfo->FontStyle) == FontInfo->FontStyle) {
- VagueMatched1 = TRUE;
- GlobalFontBackup1 = GlobalFont;
- }
- break;
- case EFI_FONT_INFO_ANY_STYLE:
- if ((CompareMem (
- GlobalFont->FontInfo->FontName,
- FontInfo->FontName,
- StrSize (FontInfo->FontName)
- ) == 0) &&
- GlobalFont->FontInfo->FontSize == FontInfo->FontSize) {
- Matched = TRUE;
- }
- break;
- case EFI_FONT_INFO_ANY_STYLE | EFI_FONT_INFO_ANY_SIZE:
- if (CompareMem (
- GlobalFont->FontInfo->FontName,
- FontInfo->FontName,
- StrSize (FontInfo->FontName)
- ) == 0) {
- Matched = TRUE;
- }
- break;
- case EFI_FONT_INFO_ANY_STYLE | EFI_FONT_INFO_RESIZE:
- if (CompareMem (
- GlobalFont->FontInfo->FontName,
- FontInfo->FontName,
- StrSize (FontInfo->FontName)
- ) == 0) {
+
+ break;
+ case EFI_FONT_INFO_ANY_FONT | EFI_FONT_INFO_ANY_STYLE | EFI_FONT_INFO_RESIZE:
if (GlobalFont->FontInfo->FontSize == FontInfo->FontSize) {
- Matched = TRUE;
+ Matched = TRUE;
} else {
VagueMatched1 = TRUE;
GlobalFontBackup1 = GlobalFont;
}
- }
- break;
- case EFI_FONT_INFO_ANY_SIZE:
- if ((CompareMem (
- GlobalFont->FontInfo->FontName,
- FontInfo->FontName,
- StrSize (FontInfo->FontName)
- ) == 0) &&
- GlobalFont->FontInfo->FontStyle == FontInfo->FontStyle) {
- Matched = TRUE;
- }
- break;
- case EFI_FONT_INFO_ANY_SIZE | EFI_FONT_INFO_RESTYLE:
- if (CompareMem (
- GlobalFont->FontInfo->FontName,
- FontInfo->FontName,
- StrSize (FontInfo->FontName)
- ) == 0) {
+
+ break;
+ case EFI_FONT_INFO_ANY_FONT | EFI_FONT_INFO_ANY_SIZE | EFI_FONT_INFO_RESTYLE:
if (GlobalFont->FontInfo->FontStyle == FontInfo->FontStyle) {
- Matched = TRUE;
+ Matched = TRUE;
} else if ((GlobalFont->FontInfo->FontStyle & FontInfo->FontStyle) == FontInfo->FontStyle) {
VagueMatched1 = TRUE;
GlobalFontBackup1 = GlobalFont;
}
- }
- break;
- case EFI_FONT_INFO_RESTYLE:
- if ((CompareMem (
- GlobalFont->FontInfo->FontName,
- FontInfo->FontName,
- StrSize (FontInfo->FontName)
- ) == 0) &&
- GlobalFont->FontInfo->FontSize == FontInfo->FontSize) {
- if (GlobalFont->FontInfo->FontStyle == FontInfo->FontStyle) {
- Matched = TRUE;
- } else if ((GlobalFont->FontInfo->FontStyle & FontInfo->FontStyle) == FontInfo->FontStyle) {
- VagueMatched1 = TRUE;
- GlobalFontBackup1 = GlobalFont;
+ break;
+ case EFI_FONT_INFO_ANY_STYLE:
+ if ((CompareMem (
+ GlobalFont->FontInfo->FontName,
+ FontInfo->FontName,
+ StrSize (FontInfo->FontName)
+ ) == 0) &&
+ (GlobalFont->FontInfo->FontSize == FontInfo->FontSize))
+ {
+ Matched = TRUE;
}
- }
- break;
- case EFI_FONT_INFO_RESIZE:
- if ((CompareMem (
- GlobalFont->FontInfo->FontName,
- FontInfo->FontName,
- StrSize (FontInfo->FontName)
- ) == 0) &&
- GlobalFont->FontInfo->FontStyle == FontInfo->FontStyle) {
- if (GlobalFont->FontInfo->FontSize == FontInfo->FontSize) {
- Matched = TRUE;
- } else {
- VagueMatched1 = TRUE;
- GlobalFontBackup1 = GlobalFont;
+ break;
+ case EFI_FONT_INFO_ANY_STYLE | EFI_FONT_INFO_ANY_SIZE:
+ if (CompareMem (
+ GlobalFont->FontInfo->FontName,
+ FontInfo->FontName,
+ StrSize (FontInfo->FontName)
+ ) == 0)
+ {
+ Matched = TRUE;
}
- }
- break;
- case EFI_FONT_INFO_RESIZE | EFI_FONT_INFO_RESTYLE:
- if (CompareMem (
- GlobalFont->FontInfo->FontName,
- FontInfo->FontName,
- StrSize (FontInfo->FontName)
- ) == 0) {
- if (GlobalFont->FontInfo->FontStyle == FontInfo->FontStyle) {
+
+ break;
+ case EFI_FONT_INFO_ANY_STYLE | EFI_FONT_INFO_RESIZE:
+ if (CompareMem (
+ GlobalFont->FontInfo->FontName,
+ FontInfo->FontName,
+ StrSize (FontInfo->FontName)
+ ) == 0)
+ {
if (GlobalFont->FontInfo->FontSize == FontInfo->FontSize) {
- Matched = TRUE;
+ Matched = TRUE;
} else {
VagueMatched1 = TRUE;
GlobalFontBackup1 = GlobalFont;
}
- } else if ((GlobalFont->FontInfo->FontStyle & FontInfo->FontStyle) == FontInfo->FontStyle) {
- if (GlobalFont->FontInfo->FontSize == FontInfo->FontSize) {
+ }
+
+ break;
+ case EFI_FONT_INFO_ANY_SIZE:
+ if ((CompareMem (
+ GlobalFont->FontInfo->FontName,
+ FontInfo->FontName,
+ StrSize (FontInfo->FontName)
+ ) == 0) &&
+ (GlobalFont->FontInfo->FontStyle == FontInfo->FontStyle))
+ {
+ Matched = TRUE;
+ }
+
+ break;
+ case EFI_FONT_INFO_ANY_SIZE | EFI_FONT_INFO_RESTYLE:
+ if (CompareMem (
+ GlobalFont->FontInfo->FontName,
+ FontInfo->FontName,
+ StrSize (FontInfo->FontName)
+ ) == 0)
+ {
+ if (GlobalFont->FontInfo->FontStyle == FontInfo->FontStyle) {
+ Matched = TRUE;
+ } else if ((GlobalFont->FontInfo->FontStyle & FontInfo->FontStyle) == FontInfo->FontStyle) {
VagueMatched1 = TRUE;
GlobalFontBackup1 = GlobalFont;
+ }
+ }
+
+ break;
+ case EFI_FONT_INFO_RESTYLE:
+ if ((CompareMem (
+ GlobalFont->FontInfo->FontName,
+ FontInfo->FontName,
+ StrSize (FontInfo->FontName)
+ ) == 0) &&
+ (GlobalFont->FontInfo->FontSize == FontInfo->FontSize))
+ {
+ if (GlobalFont->FontInfo->FontStyle == FontInfo->FontStyle) {
+ Matched = TRUE;
+ } else if ((GlobalFont->FontInfo->FontStyle & FontInfo->FontStyle) == FontInfo->FontStyle) {
+ VagueMatched1 = TRUE;
+ GlobalFontBackup1 = GlobalFont;
+ }
+ }
+
+ break;
+ case EFI_FONT_INFO_RESIZE:
+ if ((CompareMem (
+ GlobalFont->FontInfo->FontName,
+ FontInfo->FontName,
+ StrSize (FontInfo->FontName)
+ ) == 0) &&
+ (GlobalFont->FontInfo->FontStyle == FontInfo->FontStyle))
+ {
+ if (GlobalFont->FontInfo->FontSize == FontInfo->FontSize) {
+ Matched = TRUE;
} else {
- VagueMatched2 = TRUE;
- GlobalFontBackup2 = GlobalFont;
+ VagueMatched1 = TRUE;
+ GlobalFontBackup1 = GlobalFont;
}
}
- }
- break;
- default:
- break;
+
+ break;
+ case EFI_FONT_INFO_RESIZE | EFI_FONT_INFO_RESTYLE:
+ if (CompareMem (
+ GlobalFont->FontInfo->FontName,
+ FontInfo->FontName,
+ StrSize (FontInfo->FontName)
+ ) == 0)
+ {
+ if (GlobalFont->FontInfo->FontStyle == FontInfo->FontStyle) {
+ if (GlobalFont->FontInfo->FontSize == FontInfo->FontSize) {
+ Matched = TRUE;
+ } else {
+ VagueMatched1 = TRUE;
+ GlobalFontBackup1 = GlobalFont;
+ }
+ } else if ((GlobalFont->FontInfo->FontStyle & FontInfo->FontStyle) == FontInfo->FontStyle) {
+ if (GlobalFont->FontInfo->FontSize == FontInfo->FontSize) {
+ VagueMatched1 = TRUE;
+ GlobalFontBackup1 = GlobalFont;
+ } else {
+ VagueMatched2 = TRUE;
+ GlobalFontBackup2 = GlobalFont;
+ }
+ }
+ }
+
+ break;
+ default:
+ break;
}
if (Matched) {
if (GlobalFontInfo != NULL) {
*GlobalFontInfo = GlobalFont;
}
+
return TRUE;
}
}
@@ -1420,18 +1471,19 @@ IsFontInfoExisted ( if (GlobalFontInfo != NULL) {
*GlobalFontInfo = GlobalFontBackup1;
}
+
return TRUE;
} else if (VagueMatched2) {
if (GlobalFontInfo != NULL) {
*GlobalFontInfo = GlobalFontBackup2;
}
+
return TRUE;
}
return FALSE;
}
-
/**
Check whether the unicode represents a line break or not.
@@ -1448,7 +1500,7 @@ IsFontInfoExisted ( **/
INT8
IsLineBreak (
- IN CHAR16 Char
+ IN CHAR16 Char
)
{
switch (Char) {
@@ -1509,10 +1561,10 @@ IsLineBreak ( case 0x2014:
return 2;
}
+
return -1;
}
-
/**
Renders a string to a bitmap or to the display.
@@ -1570,65 +1622,66 @@ IsLineBreak ( EFI_STATUS
EFIAPI
HiiStringToImage (
- IN CONST EFI_HII_FONT_PROTOCOL *This,
- IN EFI_HII_OUT_FLAGS Flags,
- IN CONST EFI_STRING String,
- IN CONST EFI_FONT_DISPLAY_INFO *StringInfo OPTIONAL,
- IN OUT EFI_IMAGE_OUTPUT **Blt,
- IN UINTN BltX,
- IN UINTN BltY,
- OUT EFI_HII_ROW_INFO **RowInfoArray OPTIONAL,
- OUT UINTN *RowInfoArraySize OPTIONAL,
- OUT UINTN *ColumnInfoArray OPTIONAL
+ IN CONST EFI_HII_FONT_PROTOCOL *This,
+ IN EFI_HII_OUT_FLAGS Flags,
+ IN CONST EFI_STRING String,
+ IN CONST EFI_FONT_DISPLAY_INFO *StringInfo OPTIONAL,
+ IN OUT EFI_IMAGE_OUTPUT **Blt,
+ IN UINTN BltX,
+ IN UINTN BltY,
+ OUT EFI_HII_ROW_INFO **RowInfoArray OPTIONAL,
+ OUT UINTN *RowInfoArraySize OPTIONAL,
+ OUT UINTN *ColumnInfoArray OPTIONAL
)
{
- EFI_STATUS Status;
- HII_DATABASE_PRIVATE_DATA *Private;
- UINT8 **GlyphBuf;
- EFI_HII_GLYPH_INFO *Cell;
- UINT8 *Attributes;
- EFI_IMAGE_OUTPUT *Image;
- EFI_STRING StringPtr;
- EFI_STRING StringTmp;
- EFI_HII_ROW_INFO *RowInfo;
- UINTN LineWidth;
- UINTN LineHeight;
- UINTN LineOffset;
- UINTN LastLineHeight;
- UINTN BaseLineOffset;
- UINT16 MaxRowNum;
- UINT16 RowIndex;
- UINTN Index;
- UINTN NextIndex;
- UINTN Index1;
- EFI_FONT_DISPLAY_INFO *StringInfoOut;
- EFI_FONT_DISPLAY_INFO *SystemDefault;
- EFI_FONT_HANDLE FontHandle;
- EFI_STRING StringIn;
- EFI_STRING StringIn2;
- UINT16 Height;
- UINT16 BaseLine;
- EFI_FONT_INFO *FontInfo;
- BOOLEAN SysFontFlag;
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground;
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background;
- BOOLEAN Transparent;
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer;
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BufferPtr;
- UINTN RowInfoSize;
- BOOLEAN LineBreak;
- UINTN StrLength;
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL *RowBufferPtr;
- HII_GLOBAL_FONT_INFO *GlobalFont;
- UINT32 PreInitBkgnd;
+ EFI_STATUS Status;
+ HII_DATABASE_PRIVATE_DATA *Private;
+ UINT8 **GlyphBuf;
+ EFI_HII_GLYPH_INFO *Cell;
+ UINT8 *Attributes;
+ EFI_IMAGE_OUTPUT *Image;
+ EFI_STRING StringPtr;
+ EFI_STRING StringTmp;
+ EFI_HII_ROW_INFO *RowInfo;
+ UINTN LineWidth;
+ UINTN LineHeight;
+ UINTN LineOffset;
+ UINTN LastLineHeight;
+ UINTN BaseLineOffset;
+ UINT16 MaxRowNum;
+ UINT16 RowIndex;
+ UINTN Index;
+ UINTN NextIndex;
+ UINTN Index1;
+ EFI_FONT_DISPLAY_INFO *StringInfoOut;
+ EFI_FONT_DISPLAY_INFO *SystemDefault;
+ EFI_FONT_HANDLE FontHandle;
+ EFI_STRING StringIn;
+ EFI_STRING StringIn2;
+ UINT16 Height;
+ UINT16 BaseLine;
+ EFI_FONT_INFO *FontInfo;
+ BOOLEAN SysFontFlag;
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground;
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background;
+ BOOLEAN Transparent;
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer;
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BufferPtr;
+ UINTN RowInfoSize;
+ BOOLEAN LineBreak;
+ UINTN StrLength;
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL *RowBufferPtr;
+ HII_GLOBAL_FONT_INFO *GlobalFont;
+ UINT32 PreInitBkgnd;
//
// Check incoming parameters.
//
- if (This == NULL || String == NULL || Blt == NULL) {
+ if ((This == NULL) || (String == NULL) || (Blt == NULL)) {
return EFI_INVALID_PARAMETER;
}
+
if (*Blt == NULL) {
//
// These two flag cannot be used if Blt is NULL upon entry.
@@ -1636,19 +1689,23 @@ HiiStringToImage ( if ((Flags & EFI_HII_OUT_FLAG_TRANSPARENT) == EFI_HII_OUT_FLAG_TRANSPARENT) {
return EFI_INVALID_PARAMETER;
}
+
if ((Flags & EFI_HII_OUT_FLAG_CLIP) == EFI_HII_OUT_FLAG_CLIP) {
return EFI_INVALID_PARAMETER;
}
}
+
//
// These two flags require that EFI_HII_OUT_FLAG_CLIP be also set.
//
if ((Flags & (EFI_HII_OUT_FLAG_CLIP | EFI_HII_OUT_FLAG_CLIP_CLEAN_X)) == EFI_HII_OUT_FLAG_CLIP_CLEAN_X) {
return EFI_INVALID_PARAMETER;
}
+
if ((Flags & (EFI_HII_OUT_FLAG_CLIP | EFI_HII_OUT_FLAG_CLIP_CLEAN_Y)) == EFI_HII_OUT_FLAG_CLIP_CLEAN_Y) {
return EFI_INVALID_PARAMETER;
}
+
//
// This flag cannot be used with EFI_HII_OUT_FLAG_CLEAN_X.
//
@@ -1664,8 +1721,9 @@ HiiStringToImage ( if (Image == NULL) {
return EFI_OUT_OF_RESOURCES;
}
- Image->Width = 800;
- Image->Height = 600;
+
+ Image->Width = 800;
+ Image->Height = 600;
Image->Image.Bitmap = AllocateZeroPool (Image->Width * Image->Height *sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL));
if (Image->Image.Bitmap == NULL) {
FreePool (Image);
@@ -1676,15 +1734,15 @@ HiiStringToImage ( // Other flags are not permitted when Blt is NULL.
//
Flags &= EFI_HII_OUT_FLAG_WRAP | EFI_HII_IGNORE_IF_NO_GLYPH | EFI_HII_IGNORE_LINE_BREAK;
- *Blt = Image;
+ *Blt = Image;
}
- StrLength = StrLen(String);
- GlyphBuf = (UINT8 **) AllocateZeroPool (StrLength * sizeof (UINT8 *));
+ StrLength = StrLen (String);
+ GlyphBuf = (UINT8 **)AllocateZeroPool (StrLength * sizeof (UINT8 *));
ASSERT (GlyphBuf != NULL);
- Cell = (EFI_HII_GLYPH_INFO *) AllocateZeroPool (StrLength * sizeof (EFI_HII_GLYPH_INFO));
+ Cell = (EFI_HII_GLYPH_INFO *)AllocateZeroPool (StrLength * sizeof (EFI_HII_GLYPH_INFO));
ASSERT (Cell != NULL);
- Attributes = (UINT8 *) AllocateZeroPool (StrLength * sizeof (UINT8));
+ Attributes = (UINT8 *)AllocateZeroPool (StrLength * sizeof (UINT8));
ASSERT (Attributes != NULL);
RowInfo = NULL;
@@ -1701,7 +1759,7 @@ HiiStringToImage ( StringInfoOut = NULL;
FontHandle = NULL;
Private = HII_FONT_DATABASE_PRIVATE_DATA_FROM_THIS (This);
- SysFontFlag = IsSystemFontInfo (Private, (EFI_FONT_DISPLAY_INFO *) StringInfo, &SystemDefault, NULL);
+ SysFontFlag = IsSystemFontInfo (Private, (EFI_FONT_DISPLAY_INFO *)StringInfo, &SystemDefault, NULL);
if (SysFontFlag) {
ASSERT (SystemDefault != NULL);
@@ -1710,13 +1768,12 @@ HiiStringToImage ( BaseLine = SystemDefault->FontInfo.FontSize;
Foreground = SystemDefault->ForegroundColor;
Background = SystemDefault->BackgroundColor;
-
} else {
//
// StringInfo must not be NULL if it is not system info.
//
ASSERT (StringInfo != NULL);
- Status = HiiGetFontInfo (This, &FontHandle, (EFI_FONT_DISPLAY_INFO *) StringInfo, &StringInfoOut, NULL);
+ Status = HiiGetFontInfo (This, &FontHandle, (EFI_FONT_DISPLAY_INFO *)StringInfo, &StringInfoOut, NULL);
if (Status == EFI_NOT_FOUND) {
//
// The specified EFI_FONT_DISPLAY_INFO does not exist in current database.
@@ -1726,11 +1783,10 @@ HiiStringToImage ( FontInfo = NULL;
Height = SystemDefault->FontInfo.FontSize;
BaseLine = SystemDefault->FontInfo.FontSize;
- Foreground = ((EFI_FONT_DISPLAY_INFO *) StringInfo)->ForegroundColor;
- Background = ((EFI_FONT_DISPLAY_INFO *) StringInfo)->BackgroundColor;
-
+ Foreground = ((EFI_FONT_DISPLAY_INFO *)StringInfo)->ForegroundColor;
+ Background = ((EFI_FONT_DISPLAY_INFO *)StringInfo)->BackgroundColor;
} else if (Status == EFI_SUCCESS) {
- FontInfo = &StringInfoOut->FontInfo;
+ FontInfo = &StringInfoOut->FontInfo;
IsFontInfoExisted (Private, FontInfo, NULL, NULL, &GlobalFont);
Height = GlobalFont->FontPackage->Height;
BaseLine = GlobalFont->FontPackage->BaseLine;
@@ -1765,6 +1821,7 @@ HiiStringToImage ( Status = EFI_OUT_OF_RESOURCES;
goto Exit;
}
+
StringTmp = StringIn;
while (*StringPtr != 0) {
if (IsLineBreak (*StringPtr) == 0) {
@@ -1773,21 +1830,24 @@ HiiStringToImage ( *StringTmp++ = *StringPtr++;
}
}
+
*StringTmp = 0;
StringPtr = StringIn;
}
+
//
// If EFI_HII_IGNORE_IF_NO_GLYPH is set, then characters which have no glyphs
// are not drawn. Otherwise they are replaced with Unicode character 0xFFFD.
//
- StringIn2 = AllocateZeroPool (StrSize (StringPtr));
+ StringIn2 = AllocateZeroPool (StrSize (StringPtr));
if (StringIn2 == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Exit;
}
+
Index = 0;
StringTmp = StringIn2;
- StrLength = StrLen(StringPtr);
+ StrLength = StrLen (StringPtr);
while (*StringPtr != 0 && Index < StrLength) {
if (IsLineBreak (*StringPtr) == 0) {
*StringTmp++ = *StringPtr++;
@@ -1826,6 +1886,7 @@ HiiStringToImage ( *StringTmp++ = *StringPtr++;
Index++;
}
+
*StringTmp = 0;
StringPtr = StringIn2;
@@ -1844,13 +1905,14 @@ HiiStringToImage ( Status = EFI_INVALID_PARAMETER;
goto Exit;
}
- MaxRowNum = (UINT16) ((Image->Height - BltY) / Height);
+
+ MaxRowNum = (UINT16)((Image->Height - BltY) / Height);
if ((Image->Height - BltY) % Height != 0) {
LastLineHeight = (Image->Height - BltY) % Height;
MaxRowNum++;
}
- RowInfo = (EFI_HII_ROW_INFO *) AllocateZeroPool (MaxRowNum * sizeof (EFI_HII_ROW_INFO));
+ RowInfo = (EFI_HII_ROW_INFO *)AllocateZeroPool (MaxRowNum * sizeof (EFI_HII_ROW_INFO));
if (RowInfo == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Exit;
@@ -1859,23 +1921,24 @@ HiiStringToImage ( //
// Format the glyph buffer according to flags.
//
- Transparent = (BOOLEAN) ((Flags & EFI_HII_OUT_FLAG_TRANSPARENT) == EFI_HII_OUT_FLAG_TRANSPARENT ? TRUE : FALSE);
+ Transparent = (BOOLEAN)((Flags & EFI_HII_OUT_FLAG_TRANSPARENT) == EFI_HII_OUT_FLAG_TRANSPARENT ? TRUE : FALSE);
for (RowIndex = 0, Index = 0; RowIndex < MaxRowNum && StringPtr[Index] != 0; ) {
- LineWidth = 0;
- LineBreak = FALSE;
+ LineWidth = 0;
+ LineBreak = FALSE;
//
// Clip the final row if the row's bottom-most on pixel cannot fit when
// EFI_HII_OUT_FLAG_CLEAN_Y is set.
//
if (RowIndex == MaxRowNum - 1) {
- if ((Flags & EFI_HII_OUT_FLAG_CLIP_CLEAN_Y) == EFI_HII_OUT_FLAG_CLIP_CLEAN_Y && LastLineHeight < LineHeight ) {
+ if (((Flags & EFI_HII_OUT_FLAG_CLIP_CLEAN_Y) == EFI_HII_OUT_FLAG_CLIP_CLEAN_Y) && (LastLineHeight < LineHeight)) {
//
// Don't draw at all if the row's bottom-most on pixel cannot fit.
//
break;
}
+
LineHeight = LastLineHeight;
}
@@ -1885,8 +1948,9 @@ HiiStringToImage ( RowInfo[RowIndex].StartIndex = Index;
while (LineWidth + BltX < Image->Width && StringPtr[Index] != 0) {
- if ((Flags & EFI_HII_IGNORE_LINE_BREAK) == 0 &&
- IsLineBreak (StringPtr[Index]) == 0) {
+ if (((Flags & EFI_HII_IGNORE_LINE_BREAK) == 0) &&
+ (IsLineBreak (StringPtr[Index]) == 0))
+ {
//
// It forces a line break that ends this row.
//
@@ -1898,7 +1962,7 @@ HiiStringToImage ( //
// If the glyph of the character is existing, then accumulate the actual printed width
//
- LineWidth += (UINTN) Cell[Index].AdvanceX;
+ LineWidth += (UINTN)Cell[Index].AdvanceX;
Index++;
}
@@ -1911,11 +1975,11 @@ HiiStringToImage ( // Return to the previous char.
//
Index--;
- if (LineBreak && Index > 0 ) {
+ if (LineBreak && (Index > 0)) {
//
// Return the previous non line break char.
//
- Index --;
+ Index--;
}
//
@@ -1927,8 +1991,9 @@ HiiStringToImage ( //
// Clip the right-most character if cannot fit when EFI_HII_OUT_FLAG_CLEAN_X is set.
//
- if (LineWidth + BltX <= Image->Width ||
- (LineWidth + BltX > Image->Width && (Flags & EFI_HII_OUT_FLAG_CLIP_CLEAN_X) == 0)) {
+ if ((LineWidth + BltX <= Image->Width) ||
+ ((LineWidth + BltX > Image->Width) && ((Flags & EFI_HII_OUT_FLAG_CLIP_CLEAN_X) == 0)))
+ {
//
// Record right-most character in RowInfo even if it is partially displayed.
//
@@ -1945,8 +2010,8 @@ HiiStringToImage ( //
// Don't draw the last char on this row. And, don't draw the second last char (AdvanceX - Width - OffsetX).
//
- LineWidth -= (Cell[Index].Width + Cell[Index].OffsetX);
- LineWidth -= (Cell[Index - 1].AdvanceX - Cell[Index - 1].Width - Cell[Index - 1].OffsetX);
+ LineWidth -= (Cell[Index].Width + Cell[Index].OffsetX);
+ LineWidth -= (Cell[Index - 1].AdvanceX - Cell[Index - 1].Width - Cell[Index - 1].OffsetX);
RowInfo[RowIndex].EndIndex = Index - 1;
RowInfo[RowIndex].LineWidth = LineWidth;
RowInfo[RowIndex].LineHeight = LineHeight;
@@ -1956,7 +2021,7 @@ HiiStringToImage ( // There is no enough column to draw any character, so set current line width to zero.
// And go to draw Next line if LineBreak is set.
//
- RowInfo[RowIndex].LineWidth = 0;
+ RowInfo[RowIndex].LineWidth = 0;
goto NextLine;
}
}
@@ -1966,9 +2031,10 @@ HiiStringToImage ( // opportunity prior to a character whose right-most extent would exceed Width.
// Search the right-most line-break opportunity here.
//
- if ((Flags & EFI_HII_OUT_FLAG_WRAP) == EFI_HII_OUT_FLAG_WRAP &&
- (RowInfo[RowIndex].LineWidth + BltX > Image->Width || StringPtr[NextIndex] != 0) &&
- !LineBreak) {
+ if (((Flags & EFI_HII_OUT_FLAG_WRAP) == EFI_HII_OUT_FLAG_WRAP) &&
+ ((RowInfo[RowIndex].LineWidth + BltX > Image->Width) || (StringPtr[NextIndex] != 0)) &&
+ !LineBreak)
+ {
if ((Flags & EFI_HII_IGNORE_LINE_BREAK) == 0) {
LineWidth = RowInfo[RowIndex].LineWidth;
for (Index1 = RowInfo[RowIndex].EndIndex; Index1 >= RowInfo[RowIndex].StartIndex; Index1--) {
@@ -1977,23 +2043,27 @@ HiiStringToImage ( } else {
LineWidth -= Cell[Index1].AdvanceX;
}
+
if (IsLineBreak (StringPtr[Index1]) > 0) {
LineBreak = TRUE;
if (Index1 > RowInfo[RowIndex].StartIndex) {
RowInfo[RowIndex].EndIndex = Index1 - 1;
}
+
//
// relocate to the character after the right-most line break opportunity of this line
//
NextIndex = Index1 + 1;
break;
}
+
//
// If don't find a line break opportunity from EndIndex to StartIndex,
// then jump out.
//
- if (Index1 == RowInfo[RowIndex].StartIndex)
+ if (Index1 == RowInfo[RowIndex].StartIndex) {
break;
+ }
}
//
@@ -2005,9 +2075,11 @@ HiiStringToImage ( } else {
LineWidth -= (Cell[Index1 - 1].AdvanceX - Cell[Index1 - 1].Width - Cell[Index1 - 1].OffsetX);
}
+
RowInfo[RowIndex].LineWidth = LineWidth;
}
}
+
//
// If no line-break opportunity can be found, then the text will
// behave as if EFI_HII_OUT_FLAG_CLEAN_X is set.
@@ -2020,10 +2092,10 @@ HiiStringToImage ( //
// Don't draw the last char on this row. And, don't draw the second last char (AdvanceX - Width - OffsetX).
//
- LineWidth -= (Cell[Index1].Width + Cell[Index1].OffsetX);
- LineWidth -= (Cell[Index1 - 1].AdvanceX - Cell[Index1 - 1].Width - Cell[Index1 - 1].OffsetX);
- RowInfo[RowIndex].EndIndex = Index1 - 1;
- RowInfo[RowIndex].LineWidth = LineWidth;
+ LineWidth -= (Cell[Index1].Width + Cell[Index1].OffsetX);
+ LineWidth -= (Cell[Index1 - 1].AdvanceX - Cell[Index1 - 1].Width - Cell[Index1 - 1].OffsetX);
+ RowInfo[RowIndex].EndIndex = Index1 - 1;
+ RowInfo[RowIndex].LineWidth = LineWidth;
} else {
//
// There is no enough column to draw any character, so set current line width to zero.
@@ -2056,18 +2128,20 @@ HiiStringToImage ( Status = EFI_OUT_OF_RESOURCES;
goto Exit;
}
+
//
// Initialize the background color.
//
PreInitBkgnd = Background.Blue | Background.Green << 8 | Background.Red << 16;
- SetMem32 (BltBuffer,RowInfo[RowIndex].LineWidth * RowInfo[RowIndex].LineHeight * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL),PreInitBkgnd);
+ SetMem32 (BltBuffer, RowInfo[RowIndex].LineWidth * RowInfo[RowIndex].LineHeight * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), PreInitBkgnd);
//
// Set BufferPtr to Origin by adding baseline to the starting position.
//
BufferPtr = BltBuffer + BaseLine * RowInfo[RowIndex].LineWidth;
}
+
for (Index1 = RowInfo[RowIndex].StartIndex; Index1 <= RowInfo[RowIndex].EndIndex; Index1++) {
- if (RowInfo[RowIndex].LineWidth > 0 && RowInfo[RowIndex].LineWidth > LineOffset) {
+ if ((RowInfo[RowIndex].LineWidth > 0) && (RowInfo[RowIndex].LineWidth > LineOffset)) {
//
// Only BLT these character which have corresponding glyph in font database.
//
@@ -2075,7 +2149,7 @@ HiiStringToImage ( GlyphBuf[Index1],
Foreground,
Background,
- (UINT16) RowInfo[RowIndex].LineWidth,
+ (UINT16)RowInfo[RowIndex].LineWidth,
BaseLine,
RowInfo[RowIndex].LineWidth - LineOffset,
RowInfo[RowIndex].LineHeight,
@@ -2083,17 +2157,21 @@ HiiStringToImage ( &Cell[Index1],
Attributes[Index1],
&BufferPtr
- );
+ );
}
+
if (ColumnInfoArray != NULL) {
- if ((GlyphBuf[Index1] == NULL && Cell[Index1].AdvanceX == 0)
- || RowInfo[RowIndex].LineWidth == 0) {
+ if ( ((GlyphBuf[Index1] == NULL) && (Cell[Index1].AdvanceX == 0))
+ || (RowInfo[RowIndex].LineWidth == 0))
+ {
*ColumnInfoArray = (UINTN) ~0;
} else {
*ColumnInfoArray = LineOffset + Cell[Index1].OffsetX + BltX;
}
+
ColumnInfoArray++;
}
+
LineOffset += Cell[Index1].AdvanceX;
}
@@ -2127,7 +2205,7 @@ HiiStringToImage ( //
BufferPtr = BufferPtr + BaseLine * Image->Width;
for (Index1 = RowInfo[RowIndex].StartIndex; Index1 <= RowInfo[RowIndex].EndIndex; Index1++) {
- if (RowInfo[RowIndex].LineWidth > 0 && RowInfo[RowIndex].LineWidth > LineOffset) {
+ if ((RowInfo[RowIndex].LineWidth > 0) && (RowInfo[RowIndex].LineWidth > LineOffset)) {
//
// Only BLT these character which have corresponding glyph in font database.
//
@@ -2143,17 +2221,21 @@ HiiStringToImage ( &Cell[Index1],
Attributes[Index1],
&BufferPtr
- );
+ );
}
+
if (ColumnInfoArray != NULL) {
- if ((GlyphBuf[Index1] == NULL && Cell[Index1].AdvanceX == 0)
- || RowInfo[RowIndex].LineWidth == 0) {
+ if ( ((GlyphBuf[Index1] == NULL) && (Cell[Index1].AdvanceX == 0))
+ || (RowInfo[RowIndex].LineWidth == 0))
+ {
*ColumnInfoArray = (UINTN) ~0;
} else {
*ColumnInfoArray = LineOffset + Cell[Index1].OffsetX + BltX;
}
+
ColumnInfoArray++;
}
+
LineOffset += Cell[Index1].AdvanceX;
}
@@ -2195,11 +2277,13 @@ NextLine: Status = EFI_OUT_OF_RESOURCES;
goto Exit;
}
+
CopyMem (*RowInfoArray, RowInfo, RowInfoSize);
} else {
*RowInfoArray = NULL;
}
}
+
if (RowInfoArraySize != NULL) {
*RowInfoArraySize = RowIndex;
}
@@ -2213,27 +2297,35 @@ Exit: FreePool (GlyphBuf[Index]);
}
}
+
if (StringIn != NULL) {
FreePool (StringIn);
}
+
if (StringIn2 != NULL) {
FreePool (StringIn2);
}
+
if (StringInfoOut != NULL) {
FreePool (StringInfoOut);
}
+
if (RowInfo != NULL) {
FreePool (RowInfo);
}
+
if (SystemDefault != NULL) {
FreePool (SystemDefault);
}
+
if (GlyphBuf != NULL) {
FreePool (GlyphBuf);
}
+
if (Cell != NULL) {
FreePool (Cell);
}
+
if (Attributes != NULL) {
FreePool (Attributes);
}
@@ -2241,7 +2333,6 @@ Exit: return Status;
}
-
/**
Render a string to a bitmap or the screen containing the contents of the specified string.
@@ -2306,36 +2397,36 @@ Exit: EFI_STATUS
EFIAPI
HiiStringIdToImage (
- IN CONST EFI_HII_FONT_PROTOCOL *This,
- IN EFI_HII_OUT_FLAGS Flags,
- IN EFI_HII_HANDLE PackageList,
- IN EFI_STRING_ID StringId,
- IN CONST CHAR8* Language,
- IN CONST EFI_FONT_DISPLAY_INFO *StringInfo OPTIONAL,
- IN OUT EFI_IMAGE_OUTPUT **Blt,
- IN UINTN BltX,
- IN UINTN BltY,
- OUT EFI_HII_ROW_INFO **RowInfoArray OPTIONAL,
- OUT UINTN *RowInfoArraySize OPTIONAL,
- OUT UINTN *ColumnInfoArray OPTIONAL
+ IN CONST EFI_HII_FONT_PROTOCOL *This,
+ IN EFI_HII_OUT_FLAGS Flags,
+ IN EFI_HII_HANDLE PackageList,
+ IN EFI_STRING_ID StringId,
+ IN CONST CHAR8 *Language,
+ IN CONST EFI_FONT_DISPLAY_INFO *StringInfo OPTIONAL,
+ IN OUT EFI_IMAGE_OUTPUT **Blt,
+ IN UINTN BltX,
+ IN UINTN BltY,
+ OUT EFI_HII_ROW_INFO **RowInfoArray OPTIONAL,
+ OUT UINTN *RowInfoArraySize OPTIONAL,
+ OUT UINTN *ColumnInfoArray OPTIONAL
)
{
- EFI_STATUS Status;
- HII_DATABASE_PRIVATE_DATA *Private;
- EFI_HII_STRING_PROTOCOL *HiiString;
- EFI_STRING String;
- UINTN StringSize;
- UINTN FontLen;
- UINTN NameSize;
- EFI_FONT_INFO *StringFontInfo;
- EFI_FONT_DISPLAY_INFO *NewStringInfo;
- CHAR8 TempSupportedLanguages;
- CHAR8 *SupportedLanguages;
- UINTN SupportedLanguagesSize;
- CHAR8 *CurrentLanguage;
- CHAR8 *BestLanguage;
-
- if (This == NULL || PackageList == NULL || Blt == NULL || PackageList == NULL) {
+ EFI_STATUS Status;
+ HII_DATABASE_PRIVATE_DATA *Private;
+ EFI_HII_STRING_PROTOCOL *HiiString;
+ EFI_STRING String;
+ UINTN StringSize;
+ UINTN FontLen;
+ UINTN NameSize;
+ EFI_FONT_INFO *StringFontInfo;
+ EFI_FONT_DISPLAY_INFO *NewStringInfo;
+ CHAR8 TempSupportedLanguages;
+ CHAR8 *SupportedLanguages;
+ UINTN SupportedLanguagesSize;
+ CHAR8 *CurrentLanguage;
+ CHAR8 *BestLanguage;
+
+ if ((This == NULL) || (PackageList == NULL) || (Blt == NULL) || (PackageList == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -2363,12 +2454,12 @@ HiiStringIdToImage ( // Get the size of supported language.
//
SupportedLanguagesSize = 0;
- Status = HiiString->GetLanguages (
- HiiString,
- PackageList,
- &TempSupportedLanguages,
- &SupportedLanguagesSize
- );
+ Status = HiiString->GetLanguages (
+ HiiString,
+ PackageList,
+ &TempSupportedLanguages,
+ &SupportedLanguagesSize
+ );
if (Status != EFI_BUFFER_TOO_SMALL) {
return Status;
}
@@ -2391,13 +2482,14 @@ HiiStringIdToImage ( if (Language == NULL) {
Language = "";
}
- GetEfiGlobalVariable2 (L"PlatformLang", (VOID**)&CurrentLanguage, NULL);
+
+ GetEfiGlobalVariable2 (L"PlatformLang", (VOID **)&CurrentLanguage, NULL);
BestLanguage = GetBestLanguage (
SupportedLanguages,
FALSE,
Language,
(CurrentLanguage == NULL) ? CurrentLanguage : "",
- (CHAR8 *) PcdGetPtr (PcdUefiVariableDefaultPlatformLang),
+ (CHAR8 *)PcdGetPtr (PcdUefiVariableDefaultPlatformLang),
NULL
);
if (BestLanguage == NULL) {
@@ -2406,7 +2498,7 @@ HiiStringIdToImage ( }
StringSize = MAX_STRING_LENGTH;
- String = (EFI_STRING) AllocateZeroPool (StringSize);
+ String = (EFI_STRING)AllocateZeroPool (StringSize);
if (String == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Exit;
@@ -2423,11 +2515,12 @@ HiiStringIdToImage ( );
if (Status == EFI_BUFFER_TOO_SMALL) {
FreePool (String);
- String = (EFI_STRING) AllocateZeroPool (StringSize);
+ String = (EFI_STRING)AllocateZeroPool (StringSize);
if (String == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Exit;
}
+
Status = HiiString->GetString (
HiiString,
BestLanguage,
@@ -2448,14 +2541,15 @@ HiiStringIdToImage ( // use particular stringfontinfo described in string package instead if exists.
// StringFontInfo equals NULL means system default font attaches with the string block.
//
- if (StringFontInfo != NULL && IsSystemFontInfo (Private, (EFI_FONT_DISPLAY_INFO *) StringInfo, NULL, NULL)) {
- NameSize = StrSize (StringFontInfo->FontName);
- FontLen = sizeof (EFI_FONT_DISPLAY_INFO) - sizeof (CHAR16) + NameSize;
+ if ((StringFontInfo != NULL) && IsSystemFontInfo (Private, (EFI_FONT_DISPLAY_INFO *)StringInfo, NULL, NULL)) {
+ NameSize = StrSize (StringFontInfo->FontName);
+ FontLen = sizeof (EFI_FONT_DISPLAY_INFO) - sizeof (CHAR16) + NameSize;
NewStringInfo = AllocateZeroPool (FontLen);
if (NewStringInfo == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Exit;
}
+
NewStringInfo->FontInfoMask = EFI_FONT_INFO_SYS_FORE_COLOR | EFI_FONT_INFO_SYS_BACK_COLOR;
NewStringInfo->FontInfo.FontStyle = StringFontInfo->FontStyle;
NewStringInfo->FontInfo.FontSize = StringFontInfo->FontSize;
@@ -2477,34 +2571,39 @@ HiiStringIdToImage ( }
Status = HiiStringToImage (
- This,
- Flags,
- String,
- StringInfo,
- Blt,
- BltX,
- BltY,
- RowInfoArray,
- RowInfoArraySize,
- ColumnInfoArray
- );
+ This,
+ Flags,
+ String,
+ StringInfo,
+ Blt,
+ BltX,
+ BltY,
+ RowInfoArray,
+ RowInfoArraySize,
+ ColumnInfoArray
+ );
Exit:
if (SupportedLanguages != NULL) {
FreePool (SupportedLanguages);
}
+
if (CurrentLanguage != NULL) {
FreePool (CurrentLanguage);
}
+
if (BestLanguage != NULL) {
FreePool (BestLanguage);
}
+
if (String != NULL) {
FreePool (String);
}
+
if (StringFontInfo != NULL) {
FreePool (StringFontInfo);
}
+
if (NewStringInfo != NULL) {
FreePool (NewStringInfo);
}
@@ -2512,7 +2611,6 @@ Exit: return Status;
}
-
/**
Convert the glyph for a single character into a bitmap.
@@ -2538,31 +2636,31 @@ Exit: EFI_STATUS
EFIAPI
HiiGetGlyph (
- IN CONST EFI_HII_FONT_PROTOCOL *This,
- IN CHAR16 Char,
- IN CONST EFI_FONT_DISPLAY_INFO *StringInfo,
- OUT EFI_IMAGE_OUTPUT **Blt,
- OUT UINTN *Baseline OPTIONAL
+ IN CONST EFI_HII_FONT_PROTOCOL *This,
+ IN CHAR16 Char,
+ IN CONST EFI_FONT_DISPLAY_INFO *StringInfo,
+ OUT EFI_IMAGE_OUTPUT **Blt,
+ OUT UINTN *Baseline OPTIONAL
)
{
- EFI_STATUS Status;
- HII_DATABASE_PRIVATE_DATA *Private;
- EFI_IMAGE_OUTPUT *Image;
- UINT8 *GlyphBuffer;
- EFI_FONT_DISPLAY_INFO *SystemDefault;
- EFI_FONT_DISPLAY_INFO *StringInfoOut;
- BOOLEAN Default;
- EFI_FONT_HANDLE FontHandle;
- EFI_STRING String;
- EFI_HII_GLYPH_INFO Cell;
- EFI_FONT_INFO *FontInfo;
- UINT8 Attributes;
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground;
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background;
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer;
- UINT16 BaseLine;
-
- if (This == NULL || Blt == NULL || *Blt != NULL) {
+ EFI_STATUS Status;
+ HII_DATABASE_PRIVATE_DATA *Private;
+ EFI_IMAGE_OUTPUT *Image;
+ UINT8 *GlyphBuffer;
+ EFI_FONT_DISPLAY_INFO *SystemDefault;
+ EFI_FONT_DISPLAY_INFO *StringInfoOut;
+ BOOLEAN Default;
+ EFI_FONT_HANDLE FontHandle;
+ EFI_STRING String;
+ EFI_HII_GLYPH_INFO Cell;
+ EFI_FONT_INFO *FontInfo;
+ UINT8 Attributes;
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground;
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background;
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer;
+ UINT16 BaseLine;
+
+ if ((This == NULL) || (Blt == NULL) || (*Blt != NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -2580,25 +2678,27 @@ HiiGetGlyph ( ZeroMem (&Foreground, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL));
ZeroMem (&Background, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL));
- Default = IsSystemFontInfo (Private, (EFI_FONT_DISPLAY_INFO *) StringInfo, &SystemDefault, NULL);
+ Default = IsSystemFontInfo (Private, (EFI_FONT_DISPLAY_INFO *)StringInfo, &SystemDefault, NULL);
if (!Default) {
//
// Find out a EFI_FONT_DISPLAY_INFO which could display the character in
// the specified color and font.
//
- String = (EFI_STRING) AllocateZeroPool (sizeof (CHAR16) * 2);
+ String = (EFI_STRING)AllocateZeroPool (sizeof (CHAR16) * 2);
if (String == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Exit;
}
- *String = Char;
+
+ *String = Char;
*(String + 1) = 0;
Status = HiiGetFontInfo (This, &FontHandle, StringInfo, &StringInfoOut, String);
if (EFI_ERROR (Status)) {
goto Exit;
}
+
ASSERT (StringInfoOut != NULL);
FontInfo = &StringInfoOut->FontInfo;
Foreground = StringInfoOut->ForegroundColor;
@@ -2614,13 +2714,14 @@ HiiGetGlyph ( goto Exit;
}
- Image = (EFI_IMAGE_OUTPUT *) AllocateZeroPool (sizeof (EFI_IMAGE_OUTPUT));
+ Image = (EFI_IMAGE_OUTPUT *)AllocateZeroPool (sizeof (EFI_IMAGE_OUTPUT));
if (Image == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Exit;
}
- Image->Width = Cell.Width;
- Image->Height = Cell.Height;
+
+ Image->Width = Cell.Width;
+ Image->Height = Cell.Height;
if (Image->Width * Image->Height > 0) {
Image->Image.Bitmap = AllocateZeroPool (Image->Width * Image->Height * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL));
@@ -2633,7 +2734,7 @@ HiiGetGlyph ( //
// Set BaseLine to the char height.
//
- BaseLine = (UINT16) (Cell.Height + Cell.OffsetY);
+ BaseLine = (UINT16)(Cell.Height + Cell.OffsetY);
//
// Set BltBuffer to the position of Origin.
//
@@ -2677,14 +2778,17 @@ Exit: }
if (SystemDefault != NULL) {
- FreePool (SystemDefault);
+ FreePool (SystemDefault);
}
+
if (StringInfoOut != NULL) {
FreePool (StringInfoOut);
}
+
if (String != NULL) {
FreePool (String);
}
+
if (GlyphBuffer != NULL) {
FreePool (GlyphBuffer);
}
@@ -2692,7 +2796,6 @@ Exit: return Status;
}
-
/**
This function iterates through fonts which match the specified font, using
the specified criteria. If String is non-NULL, then all of the characters in
@@ -2727,31 +2830,31 @@ Exit: EFI_STATUS
EFIAPI
HiiGetFontInfo (
- IN CONST EFI_HII_FONT_PROTOCOL *This,
- IN OUT EFI_FONT_HANDLE *FontHandle,
- IN CONST EFI_FONT_DISPLAY_INFO *StringInfoIn OPTIONAL,
- OUT EFI_FONT_DISPLAY_INFO **StringInfoOut,
- IN CONST EFI_STRING String OPTIONAL
+ IN CONST EFI_HII_FONT_PROTOCOL *This,
+ IN OUT EFI_FONT_HANDLE *FontHandle,
+ IN CONST EFI_FONT_DISPLAY_INFO *StringInfoIn OPTIONAL,
+ OUT EFI_FONT_DISPLAY_INFO **StringInfoOut,
+ IN CONST EFI_STRING String OPTIONAL
)
{
- HII_DATABASE_PRIVATE_DATA *Private;
- EFI_STATUS Status;
- EFI_FONT_DISPLAY_INFO *SystemDefault;
- EFI_FONT_DISPLAY_INFO InfoOut;
- UINTN StringInfoOutLen;
- EFI_FONT_INFO *FontInfo;
- HII_GLOBAL_FONT_INFO *GlobalFont;
- EFI_STRING StringIn;
- EFI_FONT_HANDLE LocalFontHandle;
+ HII_DATABASE_PRIVATE_DATA *Private;
+ EFI_STATUS Status;
+ EFI_FONT_DISPLAY_INFO *SystemDefault;
+ EFI_FONT_DISPLAY_INFO InfoOut;
+ UINTN StringInfoOutLen;
+ EFI_FONT_INFO *FontInfo;
+ HII_GLOBAL_FONT_INFO *GlobalFont;
+ EFI_STRING StringIn;
+ EFI_FONT_HANDLE LocalFontHandle;
if (This == NULL) {
return EFI_INVALID_PARAMETER;
}
StringInfoOutLen = 0;
- FontInfo = NULL;
- SystemDefault = NULL;
- LocalFontHandle = NULL;
+ FontInfo = NULL;
+ SystemDefault = NULL;
+ LocalFontHandle = NULL;
if (FontHandle != NULL) {
LocalFontHandle = *FontHandle;
}
@@ -2763,7 +2866,7 @@ HiiGetFontInfo ( //
if (LocalFontHandle == &Private->FontInfoList) {
LocalFontHandle = NULL;
- Status = EFI_NOT_FOUND;
+ Status = EFI_NOT_FOUND;
goto Exit;
}
@@ -2771,7 +2874,7 @@ HiiGetFontInfo ( // Get default system display info, if StringInfoIn points to
// system display info, return it directly.
//
- if (IsSystemFontInfo (Private, (EFI_FONT_DISPLAY_INFO *) StringInfoIn, &SystemDefault, &StringInfoOutLen)) {
+ if (IsSystemFontInfo (Private, (EFI_FONT_DISPLAY_INFO *)StringInfoIn, &SystemDefault, &StringInfoOutLen)) {
//
// System font is the first node. When handle is not NULL, system font can not
// be found any more.
@@ -2780,18 +2883,18 @@ HiiGetFontInfo ( if (StringInfoOut != NULL) {
*StringInfoOut = AllocateCopyPool (StringInfoOutLen, SystemDefault);
if (*StringInfoOut == NULL) {
- Status = EFI_OUT_OF_RESOURCES;
+ Status = EFI_OUT_OF_RESOURCES;
LocalFontHandle = NULL;
goto Exit;
}
}
LocalFontHandle = Private->FontInfoList.ForwardLink;
- Status = EFI_SUCCESS;
+ Status = EFI_SUCCESS;
goto Exit;
} else {
LocalFontHandle = NULL;
- Status = EFI_NOT_FOUND;
+ Status = EFI_NOT_FOUND;
goto Exit;
}
}
@@ -2812,7 +2915,8 @@ HiiGetFontInfo ( ((StringInfoIn->FontInfoMask & (EFI_FONT_INFO_RESIZE | EFI_FONT_INFO_ANY_SIZE)) ==
(EFI_FONT_INFO_RESIZE | EFI_FONT_INFO_ANY_SIZE)) ||
((StringInfoIn->FontInfoMask & (EFI_FONT_INFO_RESTYLE | EFI_FONT_INFO_ANY_STYLE)) ==
- (EFI_FONT_INFO_RESTYLE | EFI_FONT_INFO_ANY_STYLE))) {
+ (EFI_FONT_INFO_RESTYLE | EFI_FONT_INFO_ANY_STYLE)))
+ {
return EFI_INVALID_PARAMETER;
}
@@ -2820,13 +2924,14 @@ HiiGetFontInfo ( // Parse the font information mask to find a matching font.
//
- CopyMem (&InfoOut, (EFI_FONT_DISPLAY_INFO *) StringInfoIn, sizeof (EFI_FONT_DISPLAY_INFO));
+ CopyMem (&InfoOut, (EFI_FONT_DISPLAY_INFO *)StringInfoIn, sizeof (EFI_FONT_DISPLAY_INFO));
if ((StringInfoIn->FontInfoMask & EFI_FONT_INFO_SYS_FONT) == EFI_FONT_INFO_SYS_FONT) {
Status = SaveFontName (SystemDefault->FontInfo.FontName, &FontInfo);
} else {
- Status = SaveFontName (((EFI_FONT_DISPLAY_INFO *) StringInfoIn)->FontInfo.FontName, &FontInfo);
+ Status = SaveFontName (((EFI_FONT_DISPLAY_INFO *)StringInfoIn)->FontInfo.FontName, &FontInfo);
}
+
if (EFI_ERROR (Status)) {
goto Exit;
}
@@ -2834,12 +2939,15 @@ HiiGetFontInfo ( if ((StringInfoIn->FontInfoMask & EFI_FONT_INFO_SYS_SIZE) == EFI_FONT_INFO_SYS_SIZE) {
InfoOut.FontInfo.FontSize = SystemDefault->FontInfo.FontSize;
}
+
if ((StringInfoIn->FontInfoMask & EFI_FONT_INFO_SYS_STYLE) == EFI_FONT_INFO_SYS_STYLE) {
InfoOut.FontInfo.FontStyle = SystemDefault->FontInfo.FontStyle;
}
+
if ((StringInfoIn->FontInfoMask & EFI_FONT_INFO_SYS_FORE_COLOR) == EFI_FONT_INFO_SYS_FORE_COLOR) {
InfoOut.ForegroundColor = SystemDefault->ForegroundColor;
}
+
if ((StringInfoIn->FontInfoMask & EFI_FONT_INFO_SYS_BACK_COLOR) == EFI_FONT_INFO_SYS_BACK_COLOR) {
InfoOut.BackgroundColor = SystemDefault->BackgroundColor;
}
@@ -2860,17 +2968,19 @@ HiiGetFontInfo ( LocalFontHandle = NULL;
goto Exit;
}
+
StringIn++;
}
}
+
//
// Write to output parameter
//
if (StringInfoOut != NULL) {
StringInfoOutLen = sizeof (EFI_FONT_DISPLAY_INFO) - sizeof (EFI_FONT_INFO) + GlobalFont->FontInfoSize;
- *StringInfoOut = (EFI_FONT_DISPLAY_INFO *) AllocateZeroPool (StringInfoOutLen);
+ *StringInfoOut = (EFI_FONT_DISPLAY_INFO *)AllocateZeroPool (StringInfoOutLen);
if (*StringInfoOut == NULL) {
- Status = EFI_OUT_OF_RESOURCES;
+ Status = EFI_OUT_OF_RESOURCES;
LocalFontHandle = NULL;
goto Exit;
}
@@ -2880,7 +2990,7 @@ HiiGetFontInfo ( }
LocalFontHandle = GlobalFont->Entry.ForwardLink;
- Status = EFI_SUCCESS;
+ Status = EFI_SUCCESS;
goto Exit;
}
@@ -2893,10 +3003,12 @@ Exit: }
if (SystemDefault != NULL) {
- FreePool (SystemDefault);
+ FreePool (SystemDefault);
}
+
if (FontInfo != NULL) {
- FreePool (FontInfo);
+ FreePool (FontInfo);
}
+
return Status;
}
diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h b/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h index 363fef5c23..c4ca6ad6ee 100644 --- a/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h @@ -41,21 +41,21 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include <Library/UefiRuntimeServicesTableLib.h>
#include <Library/PrintLib.h>
-#define MAX_STRING_LENGTH 1024
-#define MAX_FONT_NAME_LEN 256
-#define NARROW_BASELINE 15
-#define WIDE_BASELINE 14
-#define SYS_FONT_INFO_MASK 0x37
-#define REPLACE_UNKNOWN_GLYPH 0xFFFD
-#define PROPORTIONAL_GLYPH 0x80
-#define NARROW_GLYPH 0x40
-
-#define BITMAP_LEN_1_BIT(Width, Height) (((Width) + 7) / 8 * (Height))
-#define BITMAP_LEN_4_BIT(Width, Height) (((Width) + 1) / 2 * (Height))
-#define BITMAP_LEN_8_BIT(Width, Height) ((Width) * (Height))
-#define BITMAP_LEN_24_BIT(Width, Height) ((Width) * (Height) * 3)
-
-extern EFI_LOCK mHiiDatabaseLock;
+#define MAX_STRING_LENGTH 1024
+#define MAX_FONT_NAME_LEN 256
+#define NARROW_BASELINE 15
+#define WIDE_BASELINE 14
+#define SYS_FONT_INFO_MASK 0x37
+#define REPLACE_UNKNOWN_GLYPH 0xFFFD
+#define PROPORTIONAL_GLYPH 0x80
+#define NARROW_GLYPH 0x40
+
+#define BITMAP_LEN_1_BIT(Width, Height) (((Width) + 7) / 8 * (Height))
+#define BITMAP_LEN_4_BIT(Width, Height) (((Width) + 1) / 2 * (Height))
+#define BITMAP_LEN_8_BIT(Width, Height) ((Width) * (Height))
+#define BITMAP_LEN_24_BIT(Width, Height) ((Width) * (Height) * 3)
+
+extern EFI_LOCK mHiiDatabaseLock;
//
// IFR data structure
@@ -63,32 +63,32 @@ extern EFI_LOCK mHiiDatabaseLock; // BASE_CR (a, IFR_DEFAULT_VALUE_DATA, Entry) to get the whole structure.
typedef struct {
- LIST_ENTRY Entry; // Link to VarStorage Default Data
- UINT16 DefaultId;
- VARIABLE_STORE_HEADER *VariableStorage;
+ LIST_ENTRY Entry; // Link to VarStorage Default Data
+ UINT16 DefaultId;
+ VARIABLE_STORE_HEADER *VariableStorage;
} VARSTORAGE_DEFAULT_DATA;
typedef struct {
- LIST_ENTRY Entry; // Link to VarStorage
- EFI_GUID Guid;
- CHAR16 *Name;
- UINT16 Size;
- UINT8 Type;
- LIST_ENTRY BlockEntry; // Link to its Block array
+ LIST_ENTRY Entry; // Link to VarStorage
+ EFI_GUID Guid;
+ CHAR16 *Name;
+ UINT16 Size;
+ UINT8 Type;
+ LIST_ENTRY BlockEntry; // Link to its Block array
} IFR_VARSTORAGE_DATA;
typedef struct {
- LIST_ENTRY Entry; // Link to Block array
- UINT16 Offset;
- UINT16 Width;
- UINT16 BitOffset;
- UINT16 BitWidth;
- EFI_QUESTION_ID QuestionId;
- UINT8 OpCode;
- UINT8 Scope;
- LIST_ENTRY DefaultValueEntry; // Link to its default value array
- CHAR16 *Name;
- BOOLEAN IsBitVar;
+ LIST_ENTRY Entry; // Link to Block array
+ UINT16 Offset;
+ UINT16 Width;
+ UINT16 BitOffset;
+ UINT16 BitWidth;
+ EFI_QUESTION_ID QuestionId;
+ UINT8 OpCode;
+ UINT8 Scope;
+ LIST_ENTRY DefaultValueEntry; // Link to its default value array
+ CHAR16 *Name;
+ BOOLEAN IsBitVar;
} IFR_BLOCK_DATA;
//
@@ -103,157 +103,155 @@ typedef enum { } DEFAULT_VALUE_TYPE;
typedef struct {
- LIST_ENTRY Entry;
- DEFAULT_VALUE_TYPE Type;
- BOOLEAN Cleaned; // Whether this value is cleaned
+ LIST_ENTRY Entry;
+ DEFAULT_VALUE_TYPE Type;
+ BOOLEAN Cleaned; // Whether this value is cleaned
// TRUE Cleaned, the value can't be used
// FALSE Not cleaned, the value can be used.
- UINT16 DefaultId;
- EFI_IFR_TYPE_VALUE Value;
+ UINT16 DefaultId;
+ EFI_IFR_TYPE_VALUE Value;
} IFR_DEFAULT_DATA;
//
// Storage types
//
-#define EFI_HII_VARSTORE_BUFFER 0
-#define EFI_HII_VARSTORE_NAME_VALUE 1
-#define EFI_HII_VARSTORE_EFI_VARIABLE 2
-#define EFI_HII_VARSTORE_EFI_VARIABLE_BUFFER 3
+#define EFI_HII_VARSTORE_BUFFER 0
+#define EFI_HII_VARSTORE_NAME_VALUE 1
+#define EFI_HII_VARSTORE_EFI_VARIABLE 2
+#define EFI_HII_VARSTORE_EFI_VARIABLE_BUFFER 3
//
// Keyword handler protocol filter type.
//
-#define EFI_KEYWORD_FILTER_READONY 0x01
-#define EFI_KEYWORD_FILTER_REAWRITE 0x02
-#define EFI_KEYWORD_FILTER_BUFFER 0x10
-#define EFI_KEYWORD_FILTER_NUMERIC 0x20
-#define EFI_KEYWORD_FILTER_NUMERIC_1 0x30
-#define EFI_KEYWORD_FILTER_NUMERIC_2 0x40
-#define EFI_KEYWORD_FILTER_NUMERIC_4 0x50
-#define EFI_KEYWORD_FILTER_NUMERIC_8 0x60
-
-
-#define HII_FORMSET_STORAGE_SIGNATURE SIGNATURE_32 ('H', 'S', 'T', 'G')
+#define EFI_KEYWORD_FILTER_READONY 0x01
+#define EFI_KEYWORD_FILTER_REAWRITE 0x02
+#define EFI_KEYWORD_FILTER_BUFFER 0x10
+#define EFI_KEYWORD_FILTER_NUMERIC 0x20
+#define EFI_KEYWORD_FILTER_NUMERIC_1 0x30
+#define EFI_KEYWORD_FILTER_NUMERIC_2 0x40
+#define EFI_KEYWORD_FILTER_NUMERIC_4 0x50
+#define EFI_KEYWORD_FILTER_NUMERIC_8 0x60
+
+#define HII_FORMSET_STORAGE_SIGNATURE SIGNATURE_32 ('H', 'S', 'T', 'G')
typedef struct {
- UINTN Signature;
- LIST_ENTRY Entry;
+ UINTN Signature;
+ LIST_ENTRY Entry;
- EFI_HII_HANDLE HiiHandle;
- EFI_HANDLE DriverHandle;
+ EFI_HII_HANDLE HiiHandle;
+ EFI_HANDLE DriverHandle;
- UINT8 Type; // EFI_HII_VARSTORE_BUFFER, EFI_HII_VARSTORE_NAME_VALUE, EFI_HII_VARSTORE_EFI_VARIABLE
- EFI_GUID Guid;
- CHAR16 *Name;
- UINT16 Size;
+ UINT8 Type; // EFI_HII_VARSTORE_BUFFER, EFI_HII_VARSTORE_NAME_VALUE, EFI_HII_VARSTORE_EFI_VARIABLE
+ EFI_GUID Guid;
+ CHAR16 *Name;
+ UINT16 Size;
} HII_FORMSET_STORAGE;
-
//
// String Package definitions
//
-#define HII_STRING_PACKAGE_SIGNATURE SIGNATURE_32 ('h','i','s','p')
+#define HII_STRING_PACKAGE_SIGNATURE SIGNATURE_32 ('h','i','s','p')
typedef struct _HII_STRING_PACKAGE_INSTANCE {
- UINTN Signature;
- EFI_HII_STRING_PACKAGE_HDR *StringPkgHdr;
- UINT8 *StringBlock;
- LIST_ENTRY StringEntry;
- LIST_ENTRY FontInfoList; // local font info list
- UINT8 FontId;
- EFI_STRING_ID MaxStringId; // record StringId
+ UINTN Signature;
+ EFI_HII_STRING_PACKAGE_HDR *StringPkgHdr;
+ UINT8 *StringBlock;
+ LIST_ENTRY StringEntry;
+ LIST_ENTRY FontInfoList; // local font info list
+ UINT8 FontId;
+ EFI_STRING_ID MaxStringId; // record StringId
} HII_STRING_PACKAGE_INSTANCE;
//
// Form Package definitions
//
-#define HII_IFR_PACKAGE_SIGNATURE SIGNATURE_32 ('h','f','r','p')
+#define HII_IFR_PACKAGE_SIGNATURE SIGNATURE_32 ('h','f','r','p')
typedef struct _HII_IFR_PACKAGE_INSTANCE {
- UINTN Signature;
- EFI_HII_PACKAGE_HEADER FormPkgHdr;
- UINT8 *IfrData;
- LIST_ENTRY IfrEntry;
+ UINTN Signature;
+ EFI_HII_PACKAGE_HEADER FormPkgHdr;
+ UINT8 *IfrData;
+ LIST_ENTRY IfrEntry;
} HII_IFR_PACKAGE_INSTANCE;
//
// Simple Font Package definitions
//
-#define HII_S_FONT_PACKAGE_SIGNATURE SIGNATURE_32 ('h','s','f','p')
+#define HII_S_FONT_PACKAGE_SIGNATURE SIGNATURE_32 ('h','s','f','p')
typedef struct _HII_SIMPLE_FONT_PACKAGE_INSTANCE {
- UINTN Signature;
- EFI_HII_SIMPLE_FONT_PACKAGE_HDR *SimpleFontPkgHdr;
- LIST_ENTRY SimpleFontEntry;
+ UINTN Signature;
+ EFI_HII_SIMPLE_FONT_PACKAGE_HDR *SimpleFontPkgHdr;
+ LIST_ENTRY SimpleFontEntry;
} HII_SIMPLE_FONT_PACKAGE_INSTANCE;
//
// Font Package definitions
//
-#define HII_FONT_PACKAGE_SIGNATURE SIGNATURE_32 ('h','i','f','p')
+#define HII_FONT_PACKAGE_SIGNATURE SIGNATURE_32 ('h','i','f','p')
typedef struct _HII_FONT_PACKAGE_INSTANCE {
- UINTN Signature;
- EFI_HII_FONT_PACKAGE_HDR *FontPkgHdr;
- UINT16 Height;
- UINT16 BaseLine;
- UINT8 *GlyphBlock;
- LIST_ENTRY FontEntry;
- LIST_ENTRY GlyphInfoList;
+ UINTN Signature;
+ EFI_HII_FONT_PACKAGE_HDR *FontPkgHdr;
+ UINT16 Height;
+ UINT16 BaseLine;
+ UINT8 *GlyphBlock;
+ LIST_ENTRY FontEntry;
+ LIST_ENTRY GlyphInfoList;
} HII_FONT_PACKAGE_INSTANCE;
-#define HII_GLYPH_INFO_SIGNATURE SIGNATURE_32 ('h','g','i','s')
+#define HII_GLYPH_INFO_SIGNATURE SIGNATURE_32 ('h','g','i','s')
typedef struct _HII_GLYPH_INFO {
- UINTN Signature;
- LIST_ENTRY Entry;
- CHAR16 CharId;
- EFI_HII_GLYPH_INFO Cell;
+ UINTN Signature;
+ LIST_ENTRY Entry;
+ CHAR16 CharId;
+ EFI_HII_GLYPH_INFO Cell;
} HII_GLYPH_INFO;
-#define HII_FONT_INFO_SIGNATURE SIGNATURE_32 ('h','l','f','i')
+#define HII_FONT_INFO_SIGNATURE SIGNATURE_32 ('h','l','f','i')
typedef struct _HII_FONT_INFO {
- UINTN Signature;
- LIST_ENTRY Entry;
- LIST_ENTRY *GlobalEntry;
- UINT8 FontId;
+ UINTN Signature;
+ LIST_ENTRY Entry;
+ LIST_ENTRY *GlobalEntry;
+ UINT8 FontId;
} HII_FONT_INFO;
#define HII_GLOBAL_FONT_INFO_SIGNATURE SIGNATURE_32 ('h','g','f','i')
typedef struct _HII_GLOBAL_FONT_INFO {
- UINTN Signature;
- LIST_ENTRY Entry;
- HII_FONT_PACKAGE_INSTANCE *FontPackage;
- UINTN FontInfoSize;
- EFI_FONT_INFO *FontInfo;
+ UINTN Signature;
+ LIST_ENTRY Entry;
+ HII_FONT_PACKAGE_INSTANCE *FontPackage;
+ UINTN FontInfoSize;
+ EFI_FONT_INFO *FontInfo;
} HII_GLOBAL_FONT_INFO;
//
// Image Package definitions
//
-#define HII_PIXEL_MASK 0x80
+#define HII_PIXEL_MASK 0x80
typedef struct _HII_IMAGE_PACKAGE_INSTANCE {
- EFI_HII_IMAGE_PACKAGE_HDR ImagePkgHdr;
- UINT32 ImageBlockSize;
- UINT32 PaletteInfoSize;
- EFI_HII_IMAGE_BLOCK *ImageBlock;
- UINT8 *PaletteBlock;
+ EFI_HII_IMAGE_PACKAGE_HDR ImagePkgHdr;
+ UINT32 ImageBlockSize;
+ UINT32 PaletteInfoSize;
+ EFI_HII_IMAGE_BLOCK *ImageBlock;
+ UINT8 *PaletteBlock;
} HII_IMAGE_PACKAGE_INSTANCE;
//
// Keyboard Layout Package definitions
//
-#define HII_KB_LAYOUT_PACKAGE_SIGNATURE SIGNATURE_32 ('h','k','l','p')
+#define HII_KB_LAYOUT_PACKAGE_SIGNATURE SIGNATURE_32 ('h','k','l','p')
typedef struct _HII_KEYBOARD_LAYOUT_PACKAGE_INSTANCE {
- UINTN Signature;
- UINT8 *KeyboardPkg;
- LIST_ENTRY KeyboardEntry;
+ UINTN Signature;
+ UINT8 *KeyboardPkg;
+ LIST_ENTRY KeyboardEntry;
} HII_KEYBOARD_LAYOUT_PACKAGE_INSTANCE;
//
// Guid Package definitions
//
-#define HII_GUID_PACKAGE_SIGNATURE SIGNATURE_32 ('h','i','g','p')
+#define HII_GUID_PACKAGE_SIGNATURE SIGNATURE_32 ('h','i','g','p')
typedef struct _HII_GUID_PACKAGE_INSTANCE {
- UINTN Signature;
- UINT8 *GuidPkg;
- LIST_ENTRY GuidEntry;
+ UINTN Signature;
+ UINT8 *GuidPkg;
+ LIST_ENTRY GuidEntry;
} HII_GUID_PACKAGE_INSTANCE;
//
@@ -261,26 +259,26 @@ typedef struct _HII_GUID_PACKAGE_INSTANCE { // This rule also applies to image package since ImageId can not be duplicate.
//
typedef struct _HII_DATABASE_PACKAGE_LIST_INSTANCE {
- EFI_HII_PACKAGE_LIST_HEADER PackageListHdr;
- LIST_ENTRY GuidPkgHdr;
- LIST_ENTRY FormPkgHdr;
- LIST_ENTRY KeyboardLayoutHdr;
- LIST_ENTRY StringPkgHdr;
- LIST_ENTRY FontPkgHdr;
- HII_IMAGE_PACKAGE_INSTANCE *ImagePkg;
- LIST_ENTRY SimpleFontPkgHdr;
- UINT8 *DevicePathPkg;
+ EFI_HII_PACKAGE_LIST_HEADER PackageListHdr;
+ LIST_ENTRY GuidPkgHdr;
+ LIST_ENTRY FormPkgHdr;
+ LIST_ENTRY KeyboardLayoutHdr;
+ LIST_ENTRY StringPkgHdr;
+ LIST_ENTRY FontPkgHdr;
+ HII_IMAGE_PACKAGE_INSTANCE *ImagePkg;
+ LIST_ENTRY SimpleFontPkgHdr;
+ UINT8 *DevicePathPkg;
} HII_DATABASE_PACKAGE_LIST_INSTANCE;
-#define HII_HANDLE_SIGNATURE SIGNATURE_32 ('h','i','h','l')
+#define HII_HANDLE_SIGNATURE SIGNATURE_32 ('h','i','h','l')
typedef struct {
- UINTN Signature;
- LIST_ENTRY Handle;
- UINTN Key;
+ UINTN Signature;
+ LIST_ENTRY Handle;
+ UINTN Key;
} HII_HANDLE;
-#define HII_DATABASE_RECORD_SIGNATURE SIGNATURE_32 ('h','i','d','r')
+#define HII_DATABASE_RECORD_SIGNATURE SIGNATURE_32 ('h','i','d','r')
typedef struct _HII_DATABASE_RECORD {
UINTN Signature;
@@ -290,37 +288,37 @@ typedef struct _HII_DATABASE_RECORD { LIST_ENTRY DatabaseEntry;
} HII_DATABASE_RECORD;
-#define HII_DATABASE_NOTIFY_SIGNATURE SIGNATURE_32 ('h','i','d','n')
+#define HII_DATABASE_NOTIFY_SIGNATURE SIGNATURE_32 ('h','i','d','n')
typedef struct _HII_DATABASE_NOTIFY {
- UINTN Signature;
- EFI_HANDLE NotifyHandle;
- UINT8 PackageType;
- EFI_GUID *PackageGuid;
- EFI_HII_DATABASE_NOTIFY PackageNotifyFn;
- EFI_HII_DATABASE_NOTIFY_TYPE NotifyType;
- LIST_ENTRY DatabaseNotifyEntry;
+ UINTN Signature;
+ EFI_HANDLE NotifyHandle;
+ UINT8 PackageType;
+ EFI_GUID *PackageGuid;
+ EFI_HII_DATABASE_NOTIFY PackageNotifyFn;
+ EFI_HII_DATABASE_NOTIFY_TYPE NotifyType;
+ LIST_ENTRY DatabaseNotifyEntry;
} HII_DATABASE_NOTIFY;
-#define HII_DATABASE_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('H', 'i', 'D', 'p')
+#define HII_DATABASE_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('H', 'i', 'D', 'p')
typedef struct _HII_DATABASE_PRIVATE_DATA {
- UINTN Signature;
- LIST_ENTRY DatabaseList;
- LIST_ENTRY DatabaseNotifyList;
- EFI_HII_FONT_PROTOCOL HiiFont;
- EFI_HII_IMAGE_PROTOCOL HiiImage;
- EFI_HII_IMAGE_EX_PROTOCOL HiiImageEx;
- EFI_HII_STRING_PROTOCOL HiiString;
- EFI_HII_DATABASE_PROTOCOL HiiDatabase;
- EFI_HII_CONFIG_ROUTING_PROTOCOL ConfigRouting;
- EFI_CONFIG_KEYWORD_HANDLER_PROTOCOL ConfigKeywordHandler;
- LIST_ENTRY HiiHandleList;
- INTN HiiHandleCount;
- LIST_ENTRY FontInfoList; // global font info list
- UINTN Attribute; // default system color
- EFI_GUID CurrentLayoutGuid;
- EFI_HII_KEYBOARD_LAYOUT *CurrentLayout;
+ UINTN Signature;
+ LIST_ENTRY DatabaseList;
+ LIST_ENTRY DatabaseNotifyList;
+ EFI_HII_FONT_PROTOCOL HiiFont;
+ EFI_HII_IMAGE_PROTOCOL HiiImage;
+ EFI_HII_IMAGE_EX_PROTOCOL HiiImageEx;
+ EFI_HII_STRING_PROTOCOL HiiString;
+ EFI_HII_DATABASE_PROTOCOL HiiDatabase;
+ EFI_HII_CONFIG_ROUTING_PROTOCOL ConfigRouting;
+ EFI_CONFIG_KEYWORD_HANDLER_PROTOCOL ConfigKeywordHandler;
+ LIST_ENTRY HiiHandleList;
+ INTN HiiHandleCount;
+ LIST_ENTRY FontInfoList; // global font info list
+ UINTN Attribute; // default system color
+ EFI_GUID CurrentLayoutGuid;
+ EFI_HII_KEYBOARD_LAYOUT *CurrentLayout;
} HII_DATABASE_PRIVATE_DATA;
#define HII_FONT_DATABASE_PRIVATE_DATA_FROM_THIS(a) \
@@ -400,11 +398,11 @@ typedef struct _HII_DATABASE_PRIVATE_DATA { **/
VOID
GenerateSubStr (
- IN CONST EFI_STRING String,
- IN UINTN BufferLen,
- IN VOID *Buffer,
- IN UINT8 Flag,
- OUT EFI_STRING *SubStr
+ IN CONST EFI_STRING String,
+ IN UINTN BufferLen,
+ IN VOID *Buffer,
+ IN UINT8 Flag,
+ OUT EFI_STRING *SubStr
);
/**
@@ -418,10 +416,9 @@ GenerateSubStr ( **/
BOOLEAN
IsHiiHandleValid (
- EFI_HII_HANDLE Handle
+ EFI_HII_HANDLE Handle
);
-
/**
This function checks whether EFI_FONT_INFO exists in current database. If
FontInfoMask is specified, check what options can be used to make a match.
@@ -446,11 +443,11 @@ IsHiiHandleValid ( **/
BOOLEAN
IsFontInfoExisted (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_FONT_INFO *FontInfo,
- IN EFI_FONT_INFO_MASK *FontInfoMask OPTIONAL,
- IN EFI_FONT_HANDLE FontHandle OPTIONAL,
- OUT HII_GLOBAL_FONT_INFO **GlobalFontInfo OPTIONAL
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_FONT_INFO *FontInfo,
+ IN EFI_FONT_INFO_MASK *FontInfoMask OPTIONAL,
+ IN EFI_FONT_HANDLE FontHandle OPTIONAL,
+ OUT HII_GLOBAL_FONT_INFO **GlobalFontInfo OPTIONAL
);
/**
@@ -470,11 +467,11 @@ IsFontInfoExisted ( **/
EFI_STATUS
InvokeRegisteredFunction (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
- IN VOID *PackageInstance,
- IN UINT8 PackageType,
- IN EFI_HII_HANDLE Handle
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
+ IN VOID *PackageInstance,
+ IN UINT8 PackageType,
+ IN EFI_HII_HANDLE Handle
)
;
@@ -495,12 +492,11 @@ InvokeRegisteredFunction ( **/
EFI_STATUS
GetSystemFont (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- OUT EFI_FONT_DISPLAY_INFO **FontInfo,
- OUT UINTN *FontInfoSize OPTIONAL
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ OUT EFI_FONT_DISPLAY_INFO **FontInfo,
+ OUT UINTN *FontInfoSize OPTIONAL
);
-
/**
Parse all string blocks to find a String block specified by StringId.
If StringId = (EFI_STRING_ID) (-1), find out all EFI_HII_SIBT_FONT blocks
@@ -529,17 +525,16 @@ GetSystemFont ( **/
EFI_STATUS
FindStringBlock (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN HII_STRING_PACKAGE_INSTANCE *StringPackage,
- IN EFI_STRING_ID StringId,
- OUT UINT8 *BlockType OPTIONAL,
- OUT UINT8 **StringBlockAddr OPTIONAL,
- OUT UINTN *StringTextOffset OPTIONAL,
- OUT EFI_STRING_ID *LastStringId OPTIONAL,
- OUT EFI_STRING_ID *StartStringId OPTIONAL
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN HII_STRING_PACKAGE_INSTANCE *StringPackage,
+ IN EFI_STRING_ID StringId,
+ OUT UINT8 *BlockType OPTIONAL,
+ OUT UINT8 **StringBlockAddr OPTIONAL,
+ OUT UINTN *StringTextOffset OPTIONAL,
+ OUT EFI_STRING_ID *LastStringId OPTIONAL,
+ OUT EFI_STRING_ID *StartStringId OPTIONAL
);
-
/**
Parse all glyph blocks to find a glyph block specified by CharValue.
If CharValue = (CHAR16) (-1), collect all default character cell information
@@ -563,11 +558,11 @@ FindStringBlock ( **/
EFI_STATUS
FindGlyphBlock (
- IN HII_FONT_PACKAGE_INSTANCE *FontPackage,
- IN CHAR16 CharValue,
- OUT UINT8 **GlyphBuffer OPTIONAL,
- OUT EFI_HII_GLYPH_INFO *Cell OPTIONAL,
- OUT UINTN *GlyphBufferLen OPTIONAL
+ IN HII_FONT_PACKAGE_INSTANCE *FontPackage,
+ IN CHAR16 CharValue,
+ OUT UINT8 **GlyphBuffer OPTIONAL,
+ OUT EFI_HII_GLYPH_INFO *Cell OPTIONAL,
+ OUT UINTN *GlyphBufferLen OPTIONAL
);
/**
@@ -589,20 +584,19 @@ FindGlyphBlock ( **/
EFI_STATUS
ExportFormPackages (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN EFI_HII_HANDLE Handle,
- IN HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
- IN UINTN UsedSize,
- IN UINTN BufferSize,
- IN OUT VOID *Buffer,
- IN OUT UINTN *ResultSize
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN EFI_HII_HANDLE Handle,
+ IN HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageList,
+ IN UINTN UsedSize,
+ IN UINTN BufferSize,
+ IN OUT VOID *Buffer,
+ IN OUT UINTN *ResultSize
);
//
// EFI_HII_FONT_PROTOCOL protocol interfaces
//
-
/**
Renders a string to a bitmap or to the display.
@@ -660,19 +654,18 @@ ExportFormPackages ( EFI_STATUS
EFIAPI
HiiStringToImage (
- IN CONST EFI_HII_FONT_PROTOCOL *This,
- IN EFI_HII_OUT_FLAGS Flags,
- IN CONST EFI_STRING String,
- IN CONST EFI_FONT_DISPLAY_INFO *StringInfo OPTIONAL,
- IN OUT EFI_IMAGE_OUTPUT **Blt,
- IN UINTN BltX,
- IN UINTN BltY,
- OUT EFI_HII_ROW_INFO **RowInfoArray OPTIONAL,
- OUT UINTN *RowInfoArraySize OPTIONAL,
- OUT UINTN *ColumnInfoArray OPTIONAL
+ IN CONST EFI_HII_FONT_PROTOCOL *This,
+ IN EFI_HII_OUT_FLAGS Flags,
+ IN CONST EFI_STRING String,
+ IN CONST EFI_FONT_DISPLAY_INFO *StringInfo OPTIONAL,
+ IN OUT EFI_IMAGE_OUTPUT **Blt,
+ IN UINTN BltX,
+ IN UINTN BltY,
+ OUT EFI_HII_ROW_INFO **RowInfoArray OPTIONAL,
+ OUT UINTN *RowInfoArraySize OPTIONAL,
+ OUT UINTN *ColumnInfoArray OPTIONAL
);
-
/**
Render a string to a bitmap or the screen containing the contents of the specified string.
@@ -737,21 +730,20 @@ HiiStringToImage ( EFI_STATUS
EFIAPI
HiiStringIdToImage (
- IN CONST EFI_HII_FONT_PROTOCOL *This,
- IN EFI_HII_OUT_FLAGS Flags,
- IN EFI_HII_HANDLE PackageList,
- IN EFI_STRING_ID StringId,
- IN CONST CHAR8* Language,
- IN CONST EFI_FONT_DISPLAY_INFO *StringInfo OPTIONAL,
- IN OUT EFI_IMAGE_OUTPUT **Blt,
- IN UINTN BltX,
- IN UINTN BltY,
- OUT EFI_HII_ROW_INFO **RowInfoArray OPTIONAL,
- OUT UINTN *RowInfoArraySize OPTIONAL,
- OUT UINTN *ColumnInfoArray OPTIONAL
+ IN CONST EFI_HII_FONT_PROTOCOL *This,
+ IN EFI_HII_OUT_FLAGS Flags,
+ IN EFI_HII_HANDLE PackageList,
+ IN EFI_STRING_ID StringId,
+ IN CONST CHAR8 *Language,
+ IN CONST EFI_FONT_DISPLAY_INFO *StringInfo OPTIONAL,
+ IN OUT EFI_IMAGE_OUTPUT **Blt,
+ IN UINTN BltX,
+ IN UINTN BltY,
+ OUT EFI_HII_ROW_INFO **RowInfoArray OPTIONAL,
+ OUT UINTN *RowInfoArraySize OPTIONAL,
+ OUT UINTN *ColumnInfoArray OPTIONAL
);
-
/**
Convert the glyph for a single character into a bitmap.
@@ -777,14 +769,13 @@ HiiStringIdToImage ( EFI_STATUS
EFIAPI
HiiGetGlyph (
- IN CONST EFI_HII_FONT_PROTOCOL *This,
- IN CHAR16 Char,
- IN CONST EFI_FONT_DISPLAY_INFO *StringInfo,
- OUT EFI_IMAGE_OUTPUT **Blt,
- OUT UINTN *Baseline OPTIONAL
+ IN CONST EFI_HII_FONT_PROTOCOL *This,
+ IN CHAR16 Char,
+ IN CONST EFI_FONT_DISPLAY_INFO *StringInfo,
+ OUT EFI_IMAGE_OUTPUT **Blt,
+ OUT UINTN *Baseline OPTIONAL
);
-
/**
This function iterates through fonts which match the specified font, using
the specified criteria. If String is non-NULL, then all of the characters in
@@ -819,11 +810,11 @@ HiiGetGlyph ( EFI_STATUS
EFIAPI
HiiGetFontInfo (
- IN CONST EFI_HII_FONT_PROTOCOL *This,
- IN OUT EFI_FONT_HANDLE *FontHandle,
- IN CONST EFI_FONT_DISPLAY_INFO *StringInfoIn OPTIONAL,
- OUT EFI_FONT_DISPLAY_INFO **StringInfoOut,
- IN CONST EFI_STRING String OPTIONAL
+ IN CONST EFI_HII_FONT_PROTOCOL *This,
+ IN OUT EFI_FONT_HANDLE *FontHandle,
+ IN CONST EFI_FONT_DISPLAY_INFO *StringInfoIn OPTIONAL,
+ OUT EFI_FONT_DISPLAY_INFO **StringInfoOut,
+ IN CONST EFI_STRING String OPTIONAL
);
//
@@ -846,8 +837,8 @@ HiiGetFontInfo ( **/
EFI_HII_IMAGE_BLOCK *
GetImageIdOrAddress (
- IN EFI_HII_IMAGE_BLOCK *ImageBlocks,
- IN OUT EFI_IMAGE_ID *ImageId
+ IN EFI_HII_IMAGE_BLOCK *ImageBlocks,
+ IN OUT EFI_IMAGE_ID *ImageId
);
/**
@@ -860,8 +851,8 @@ GetImageIdOrAddress ( **/
HII_DATABASE_PACKAGE_LIST_INSTANCE *
LocatePackageList (
- IN LIST_ENTRY *Database,
- IN EFI_HII_HANDLE PackageList
+ IN LIST_ENTRY *Database,
+ IN EFI_HII_HANDLE PackageList
);
/**
@@ -888,11 +879,11 @@ LocatePackageList ( **/
EFI_STATUS
IGetImage (
- IN LIST_ENTRY *Database,
- IN EFI_HII_HANDLE PackageList,
- IN EFI_IMAGE_ID ImageId,
- OUT EFI_IMAGE_INPUT *Image,
- IN BOOLEAN BitmapOnly
+ IN LIST_ENTRY *Database,
+ IN EFI_HII_HANDLE PackageList,
+ IN EFI_IMAGE_ID ImageId,
+ OUT EFI_IMAGE_INPUT *Image,
+ IN BOOLEAN BitmapOnly
);
/**
@@ -904,7 +895,7 @@ IGetImage ( **/
EFI_HII_IMAGE_DECODER_PROTOCOL *
LocateHiiImageDecoder (
- UINT8 BlockType
+ UINT8 BlockType
);
/**
@@ -928,13 +919,12 @@ LocateHiiImageDecoder ( EFI_STATUS
EFIAPI
HiiNewImage (
- IN CONST EFI_HII_IMAGE_PROTOCOL *This,
- IN EFI_HII_HANDLE PackageList,
- OUT EFI_IMAGE_ID *ImageId,
- IN CONST EFI_IMAGE_INPUT *Image
+ IN CONST EFI_HII_IMAGE_PROTOCOL *This,
+ IN EFI_HII_HANDLE PackageList,
+ OUT EFI_IMAGE_ID *ImageId,
+ IN CONST EFI_IMAGE_INPUT *Image
);
-
/**
This function retrieves the image specified by ImageId which is associated with
the specified PackageList and copies it into the buffer specified by Image.
@@ -959,13 +949,12 @@ HiiNewImage ( EFI_STATUS
EFIAPI
HiiGetImage (
- IN CONST EFI_HII_IMAGE_PROTOCOL *This,
- IN EFI_HII_HANDLE PackageList,
- IN EFI_IMAGE_ID ImageId,
- OUT EFI_IMAGE_INPUT *Image
+ IN CONST EFI_HII_IMAGE_PROTOCOL *This,
+ IN EFI_HII_HANDLE PackageList,
+ IN EFI_IMAGE_ID ImageId,
+ OUT EFI_IMAGE_INPUT *Image
);
-
/**
This function updates the image specified by ImageId in the specified PackageListHandle to
the image specified by Image.
@@ -985,13 +974,12 @@ HiiGetImage ( EFI_STATUS
EFIAPI
HiiSetImage (
- IN CONST EFI_HII_IMAGE_PROTOCOL *This,
- IN EFI_HII_HANDLE PackageList,
- IN EFI_IMAGE_ID ImageId,
- IN CONST EFI_IMAGE_INPUT *Image
+ IN CONST EFI_HII_IMAGE_PROTOCOL *This,
+ IN EFI_HII_HANDLE PackageList,
+ IN EFI_IMAGE_ID ImageId,
+ IN CONST EFI_IMAGE_INPUT *Image
);
-
/**
This function renders an image to a bitmap or the screen using the specified
color and options. It draws the image on an existing bitmap, allocates a new
@@ -1024,15 +1012,14 @@ HiiSetImage ( EFI_STATUS
EFIAPI
HiiDrawImage (
- IN CONST EFI_HII_IMAGE_PROTOCOL *This,
- IN EFI_HII_DRAW_FLAGS Flags,
- IN CONST EFI_IMAGE_INPUT *Image,
- IN OUT EFI_IMAGE_OUTPUT **Blt,
- IN UINTN BltX,
- IN UINTN BltY
+ IN CONST EFI_HII_IMAGE_PROTOCOL *This,
+ IN EFI_HII_DRAW_FLAGS Flags,
+ IN CONST EFI_IMAGE_INPUT *Image,
+ IN OUT EFI_IMAGE_OUTPUT **Blt,
+ IN UINTN BltX,
+ IN UINTN BltY
);
-
/**
This function renders an image to a bitmap or the screen using the specified
color and options. It draws the image on an existing bitmap, allocates a new
@@ -1070,13 +1057,13 @@ HiiDrawImage ( EFI_STATUS
EFIAPI
HiiDrawImageId (
- IN CONST EFI_HII_IMAGE_PROTOCOL *This,
- IN EFI_HII_DRAW_FLAGS Flags,
- IN EFI_HII_HANDLE PackageList,
- IN EFI_IMAGE_ID ImageId,
- IN OUT EFI_IMAGE_OUTPUT **Blt,
- IN UINTN BltX,
- IN UINTN BltY
+ IN CONST EFI_HII_IMAGE_PROTOCOL *This,
+ IN EFI_HII_DRAW_FLAGS Flags,
+ IN EFI_HII_HANDLE PackageList,
+ IN EFI_IMAGE_ID ImageId,
+ IN OUT EFI_IMAGE_OUTPUT **Blt,
+ IN UINTN BltX,
+ IN UINTN BltY
);
/**
@@ -1098,10 +1085,10 @@ HiiDrawImageId ( EFI_STATUS
EFIAPI
HiiNewImageEx (
- IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
- IN EFI_HII_HANDLE PackageList,
- OUT EFI_IMAGE_ID *ImageId,
- IN CONST EFI_IMAGE_INPUT *Image
+ IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
+ IN EFI_HII_HANDLE PackageList,
+ OUT EFI_IMAGE_ID *ImageId,
+ IN CONST EFI_IMAGE_INPUT *Image
);
/**
@@ -1132,10 +1119,10 @@ HiiNewImageEx ( EFI_STATUS
EFIAPI
HiiGetImageEx (
- IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
- IN EFI_HII_HANDLE PackageList,
- IN EFI_IMAGE_ID ImageId,
- OUT EFI_IMAGE_INPUT *Image
+ IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
+ IN EFI_HII_HANDLE PackageList,
+ IN EFI_IMAGE_ID ImageId,
+ OUT EFI_IMAGE_INPUT *Image
);
/**
@@ -1160,10 +1147,10 @@ HiiGetImageEx ( EFI_STATUS
EFIAPI
HiiSetImageEx (
- IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
- IN EFI_HII_HANDLE PackageList,
- IN EFI_IMAGE_ID ImageId,
- IN CONST EFI_IMAGE_INPUT *Image
+ IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
+ IN EFI_HII_HANDLE PackageList,
+ IN EFI_IMAGE_ID ImageId,
+ IN CONST EFI_IMAGE_INPUT *Image
);
/**
@@ -1197,12 +1184,12 @@ HiiSetImageEx ( EFI_STATUS
EFIAPI
HiiDrawImageEx (
- IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
- IN EFI_HII_DRAW_FLAGS Flags,
- IN CONST EFI_IMAGE_INPUT *Image,
- IN OUT EFI_IMAGE_OUTPUT **Blt,
- IN UINTN BltX,
- IN UINTN BltY
+ IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
+ IN EFI_HII_DRAW_FLAGS Flags,
+ IN CONST EFI_IMAGE_INPUT *Image,
+ IN OUT EFI_IMAGE_OUTPUT **Blt,
+ IN UINTN BltX,
+ IN UINTN BltY
);
/**
@@ -1244,13 +1231,13 @@ HiiDrawImageEx ( EFI_STATUS
EFIAPI
HiiDrawImageIdEx (
- IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
- IN EFI_HII_DRAW_FLAGS Flags,
- IN EFI_HII_HANDLE PackageList,
- IN EFI_IMAGE_ID ImageId,
- IN OUT EFI_IMAGE_OUTPUT **Blt,
- IN UINTN BltX,
- IN UINTN BltY
+ IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
+ IN EFI_HII_DRAW_FLAGS Flags,
+ IN EFI_HII_HANDLE PackageList,
+ IN EFI_IMAGE_ID ImageId,
+ IN OUT EFI_IMAGE_OUTPUT **Blt,
+ IN UINTN BltX,
+ IN UINTN BltY
);
/**
@@ -1279,16 +1266,16 @@ HiiDrawImageIdEx ( EFI_STATUS
EFIAPI
HiiGetImageInfo (
- IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
- IN EFI_HII_HANDLE PackageList,
- IN EFI_IMAGE_ID ImageId,
- OUT EFI_IMAGE_OUTPUT *Image
+ IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
+ IN EFI_HII_HANDLE PackageList,
+ IN EFI_IMAGE_ID ImageId,
+ OUT EFI_IMAGE_OUTPUT *Image
);
+
//
// EFI_HII_STRING_PROTOCOL
//
-
/**
This function adds the string String to the group of strings owned by PackageList, with the
specified font information StringFontInfo and returns a new string id.
@@ -1323,16 +1310,15 @@ HiiGetImageInfo ( EFI_STATUS
EFIAPI
HiiNewString (
- IN CONST EFI_HII_STRING_PROTOCOL *This,
- IN EFI_HII_HANDLE PackageList,
- OUT EFI_STRING_ID *StringId,
- IN CONST CHAR8 *Language,
- IN CONST CHAR16 *LanguageName OPTIONAL,
- IN CONST EFI_STRING String,
- IN CONST EFI_FONT_INFO *StringFontInfo OPTIONAL
+ IN CONST EFI_HII_STRING_PROTOCOL *This,
+ IN EFI_HII_HANDLE PackageList,
+ OUT EFI_STRING_ID *StringId,
+ IN CONST CHAR8 *Language,
+ IN CONST CHAR16 *LanguageName OPTIONAL,
+ IN CONST EFI_STRING String,
+ IN CONST EFI_FONT_INFO *StringFontInfo OPTIONAL
);
-
/**
This function retrieves the string specified by StringId which is associated
with the specified PackageList in the language Language and copies it into
@@ -1371,16 +1357,15 @@ HiiNewString ( EFI_STATUS
EFIAPI
HiiGetString (
- IN CONST EFI_HII_STRING_PROTOCOL *This,
- IN CONST CHAR8 *Language,
- IN EFI_HII_HANDLE PackageList,
- IN EFI_STRING_ID StringId,
- OUT EFI_STRING String,
- IN OUT UINTN *StringSize,
- OUT EFI_FONT_INFO **StringFontInfo OPTIONAL
+ IN CONST EFI_HII_STRING_PROTOCOL *This,
+ IN CONST CHAR8 *Language,
+ IN EFI_HII_HANDLE PackageList,
+ IN EFI_STRING_ID StringId,
+ OUT EFI_STRING String,
+ IN OUT UINTN *StringSize,
+ OUT EFI_FONT_INFO **StringFontInfo OPTIONAL
);
-
/**
This function updates the string specified by StringId in the specified PackageList to the text
specified by String and, optionally, the font information specified by StringFontInfo.
@@ -1406,15 +1391,14 @@ HiiGetString ( EFI_STATUS
EFIAPI
HiiSetString (
- IN CONST EFI_HII_STRING_PROTOCOL *This,
- IN EFI_HII_HANDLE PackageList,
- IN EFI_STRING_ID StringId,
- IN CONST CHAR8 *Language,
- IN CONST EFI_STRING String,
- IN CONST EFI_FONT_INFO *StringFontInfo OPTIONAL
+ IN CONST EFI_HII_STRING_PROTOCOL *This,
+ IN EFI_HII_HANDLE PackageList,
+ IN EFI_STRING_ID StringId,
+ IN CONST CHAR8 *Language,
+ IN CONST EFI_STRING String,
+ IN CONST EFI_FONT_INFO *StringFontInfo OPTIONAL
);
-
/**
This function returns the list of supported languages, in the format specified
in Appendix M of UEFI 2.1 spec.
@@ -1441,13 +1425,12 @@ HiiSetString ( EFI_STATUS
EFIAPI
HiiGetLanguages (
- IN CONST EFI_HII_STRING_PROTOCOL *This,
- IN EFI_HII_HANDLE PackageList,
- IN OUT CHAR8 *Languages,
- IN OUT UINTN *LanguagesSize
+ IN CONST EFI_HII_STRING_PROTOCOL *This,
+ IN EFI_HII_HANDLE PackageList,
+ IN OUT CHAR8 *Languages,
+ IN OUT UINTN *LanguagesSize
);
-
/**
Each string package has associated with it a single primary language and zero
or more secondary languages. This routine returns the secondary languages
@@ -1486,18 +1469,17 @@ HiiGetLanguages ( EFI_STATUS
EFIAPI
HiiGetSecondaryLanguages (
- IN CONST EFI_HII_STRING_PROTOCOL *This,
- IN EFI_HII_HANDLE PackageList,
- IN CONST CHAR8 *PrimaryLanguage,
- IN OUT CHAR8 *SecondaryLanguages,
- IN OUT UINTN *SecondaryLanguagesSize
+ IN CONST EFI_HII_STRING_PROTOCOL *This,
+ IN EFI_HII_HANDLE PackageList,
+ IN CONST CHAR8 *PrimaryLanguage,
+ IN OUT CHAR8 *SecondaryLanguages,
+ IN OUT UINTN *SecondaryLanguagesSize
);
//
// EFI_HII_DATABASE_PROTOCOL protocol interfaces
//
-
/**
This function adds the packages in the package list to the database and returns a handle. If there is a
EFI_DEVICE_PATH_PROTOCOL associated with the DriverHandle, then this function will
@@ -1528,7 +1510,6 @@ HiiNewPackageList ( OUT EFI_HII_HANDLE *Handle
);
-
/**
This function removes the package list that is associated with a handle Handle
from the HII database. Before removing the package, any registered functions
@@ -1547,11 +1528,10 @@ HiiNewPackageList ( EFI_STATUS
EFIAPI
HiiRemovePackageList (
- IN CONST EFI_HII_DATABASE_PROTOCOL *This,
- IN EFI_HII_HANDLE Handle
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This,
+ IN EFI_HII_HANDLE Handle
);
-
/**
This function updates the existing package list (which has the specified Handle)
in the HII databases, using the new package list specified by PackageList.
@@ -1578,7 +1558,6 @@ HiiUpdatePackageList ( IN CONST EFI_HII_PACKAGE_LIST_HEADER *PackageList
);
-
/**
This function returns a list of the package handles of the specified type
that are currently active in the database. The pseudo-type
@@ -1617,14 +1596,13 @@ HiiUpdatePackageList ( EFI_STATUS
EFIAPI
HiiListPackageLists (
- IN CONST EFI_HII_DATABASE_PROTOCOL *This,
- IN UINT8 PackageType,
- IN CONST EFI_GUID *PackageGuid,
- IN OUT UINTN *HandleBufferLength,
- OUT EFI_HII_HANDLE *Handle
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This,
+ IN UINT8 PackageType,
+ IN CONST EFI_GUID *PackageGuid,
+ IN OUT UINTN *HandleBufferLength,
+ OUT EFI_HII_HANDLE *Handle
);
-
/**
This function will export one or all package lists in the database to a buffer.
For each package list exported, this function will call functions registered
@@ -1657,13 +1635,12 @@ HiiListPackageLists ( EFI_STATUS
EFIAPI
HiiExportPackageLists (
- IN CONST EFI_HII_DATABASE_PROTOCOL *This,
- IN EFI_HII_HANDLE Handle,
- IN OUT UINTN *BufferSize,
- OUT EFI_HII_PACKAGE_LIST_HEADER *Buffer
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This,
+ IN EFI_HII_HANDLE Handle,
+ IN OUT UINTN *BufferSize,
+ OUT EFI_HII_PACKAGE_LIST_HEADER *Buffer
);
-
/**
This function registers a function which will be called when specified actions related to packages of
the specified type occur in the HII database. By registering a function, other HII-related drivers are
@@ -1703,15 +1680,14 @@ HiiExportPackageLists ( EFI_STATUS
EFIAPI
HiiRegisterPackageNotify (
- IN CONST EFI_HII_DATABASE_PROTOCOL *This,
- IN UINT8 PackageType,
- IN CONST EFI_GUID *PackageGuid,
- IN CONST EFI_HII_DATABASE_NOTIFY PackageNotifyFn,
- IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
- OUT EFI_HANDLE *NotifyHandle
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This,
+ IN UINT8 PackageType,
+ IN CONST EFI_GUID *PackageGuid,
+ IN CONST EFI_HII_DATABASE_NOTIFY PackageNotifyFn,
+ IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
+ OUT EFI_HANDLE *NotifyHandle
);
-
/**
Removes the specified HII database package-related notification.
@@ -1728,11 +1704,10 @@ HiiRegisterPackageNotify ( EFI_STATUS
EFIAPI
HiiUnregisterPackageNotify (
- IN CONST EFI_HII_DATABASE_PROTOCOL *This,
- IN EFI_HANDLE NotificationHandle
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This,
+ IN EFI_HANDLE NotificationHandle
);
-
/**
This routine retrieves an array of GUID values for each keyboard layout that
was previously registered in the system.
@@ -1760,12 +1735,11 @@ HiiUnregisterPackageNotify ( EFI_STATUS
EFIAPI
HiiFindKeyboardLayouts (
- IN CONST EFI_HII_DATABASE_PROTOCOL *This,
- IN OUT UINT16 *KeyGuidBufferLength,
- OUT EFI_GUID *KeyGuidBuffer
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This,
+ IN OUT UINT16 *KeyGuidBufferLength,
+ OUT EFI_GUID *KeyGuidBuffer
);
-
/**
This routine retrieves the requested keyboard layout. The layout is a physical description of the keys
on a keyboard and the character(s) that are associated with a particular set of key strokes.
@@ -1790,13 +1764,12 @@ HiiFindKeyboardLayouts ( EFI_STATUS
EFIAPI
HiiGetKeyboardLayout (
- IN CONST EFI_HII_DATABASE_PROTOCOL *This,
- IN CONST EFI_GUID *KeyGuid,
- IN OUT UINT16 *KeyboardLayoutLength,
- OUT EFI_HII_KEYBOARD_LAYOUT *KeyboardLayout
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This,
+ IN CONST EFI_GUID *KeyGuid,
+ IN OUT UINT16 *KeyboardLayoutLength,
+ OUT EFI_HII_KEYBOARD_LAYOUT *KeyboardLayout
);
-
/**
This routine sets the default keyboard layout to the one referenced by KeyGuid. When this routine
is called, an event will be signaled of the EFI_HII_SET_KEYBOARD_LAYOUT_EVENT_GUID
@@ -1817,11 +1790,10 @@ HiiGetKeyboardLayout ( EFI_STATUS
EFIAPI
HiiSetKeyboardLayout (
- IN CONST EFI_HII_DATABASE_PROTOCOL *This,
- IN CONST EFI_GUID *KeyGuid
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This,
+ IN CONST EFI_GUID *KeyGuid
);
-
/**
Return the EFI handle associated with a package list.
@@ -1841,16 +1813,15 @@ HiiSetKeyboardLayout ( EFI_STATUS
EFIAPI
HiiGetPackageListHandle (
- IN CONST EFI_HII_DATABASE_PROTOCOL *This,
- IN EFI_HII_HANDLE PackageListHandle,
- OUT EFI_HANDLE *DriverHandle
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This,
+ IN EFI_HII_HANDLE PackageListHandle,
+ OUT EFI_HANDLE *DriverHandle
);
//
// EFI_HII_CONFIG_ROUTING_PROTOCOL interfaces
//
-
/**
This function allows a caller to extract the current configuration
for one or more named elements from one or more drivers.
@@ -1899,7 +1870,6 @@ HiiConfigRoutingExtractConfig ( OUT EFI_STRING *Results
);
-
/**
This function allows the caller to request the current configuration for the
entirety of the current HII database and returns the data in a null-terminated Unicode string.
@@ -1928,7 +1898,6 @@ HiiConfigRoutingExportConfig ( OUT EFI_STRING *Results
);
-
/**
This function processes the results of processing forms and routes it to the
appropriate handlers or storage.
@@ -1962,8 +1931,6 @@ HiiConfigRoutingRouteConfig ( OUT EFI_STRING *Progress
);
-
-
/**
This helper function is to be called by drivers to map configuration data stored
in byte array ("block") formats such as UEFI Variables into current configuration strings.
@@ -2014,7 +1981,6 @@ HiiBlockToConfig ( OUT EFI_STRING *Progress
);
-
/**
This helper function is to be called by drivers to map configuration strings
to configurations stored in byte array ("block") formats such as UEFI Variables.
@@ -2067,14 +2033,13 @@ HiiBlockToConfig ( EFI_STATUS
EFIAPI
HiiConfigToBlock (
- IN CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This,
- IN CONST EFI_STRING ConfigResp,
- IN OUT UINT8 *Block,
- IN OUT UINTN *BlockSize,
- OUT EFI_STRING *Progress
+ IN CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This,
+ IN CONST EFI_STRING ConfigResp,
+ IN OUT UINT8 *Block,
+ IN OUT UINTN *BlockSize,
+ OUT EFI_STRING *Progress
);
-
/**
This helper function is to be called by drivers to extract portions of
a larger configuration string.
@@ -2118,13 +2083,13 @@ HiiConfigToBlock ( EFI_STATUS
EFIAPI
HiiGetAltCfg (
- IN CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This,
- IN CONST EFI_STRING Configuration,
- IN CONST EFI_GUID *Guid,
- IN CONST EFI_STRING Name,
- IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
- IN CONST UINT16 *AltCfgId,
- OUT EFI_STRING *AltCfgResp
+ IN CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This,
+ IN CONST EFI_STRING Configuration,
+ IN CONST EFI_GUID *Guid,
+ IN CONST EFI_STRING Name,
+ IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
+ IN CONST UINT16 *AltCfgId,
+ OUT EFI_STRING *AltCfgResp
);
/**
@@ -2189,10 +2154,10 @@ HiiGetAltCfg ( EFI_STATUS
EFIAPI
EfiConfigKeywordHandlerSetData (
- IN EFI_CONFIG_KEYWORD_HANDLER_PROTOCOL *This,
- IN CONST EFI_STRING KeywordString,
- OUT EFI_STRING *Progress,
- OUT UINT32 *ProgressErr
+ IN EFI_CONFIG_KEYWORD_HANDLER_PROTOCOL *This,
+ IN CONST EFI_STRING KeywordString,
+ OUT EFI_STRING *Progress,
+ OUT UINT32 *ProgressErr
);
/**
@@ -2312,7 +2277,7 @@ HiiCompareLanguage ( **/
CHAR8 *
GetSupportedLanguages (
- IN EFI_HII_HANDLE HiiHandle
+ IN EFI_HII_HANDLE HiiHandle
);
/**
@@ -2326,7 +2291,7 @@ This function mainly use to get HiiDatabase information. **/
EFI_STATUS
HiiGetDatabaseInfo (
- IN CONST EFI_HII_DATABASE_PROTOCOL *This
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This
);
/**
@@ -2340,13 +2305,13 @@ This function mainly use to get and update ConfigResp string. **/
EFI_STATUS
HiiGetConfigRespInfo (
- IN CONST EFI_HII_DATABASE_PROTOCOL *This
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This
);
//
// Global variables
//
-extern EFI_EVENT gHiiKeyboardLayoutChanged;
-extern BOOLEAN gExportAfterReadyToBoot;
+extern EFI_EVENT gHiiKeyboardLayoutChanged;
+extern BOOLEAN gExportAfterReadyToBoot;
#endif
diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseEntry.c b/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseEntry.c index bbf437bbb9..e4bdfdeed0 100644 --- a/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseEntry.c +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseEntry.c @@ -7,24 +7,23 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/
-
#include "HiiDatabase.h"
//
// Global variables
//
-EFI_EVENT gHiiKeyboardLayoutChanged;
-BOOLEAN gExportAfterReadyToBoot = FALSE;
+EFI_EVENT gHiiKeyboardLayoutChanged;
+BOOLEAN gExportAfterReadyToBoot = FALSE;
-HII_DATABASE_PRIVATE_DATA mPrivate = {
+HII_DATABASE_PRIVATE_DATA mPrivate = {
HII_DATABASE_PRIVATE_DATA_SIGNATURE,
{
- (LIST_ENTRY *) NULL,
- (LIST_ENTRY *) NULL
+ (LIST_ENTRY *)NULL,
+ (LIST_ENTRY *)NULL
},
{
- (LIST_ENTRY *) NULL,
- (LIST_ENTRY *) NULL
+ (LIST_ENTRY *)NULL,
+ (LIST_ENTRY *)NULL
},
{
HiiStringToImage,
@@ -80,20 +79,20 @@ HII_DATABASE_PRIVATE_DATA mPrivate = { EfiConfigKeywordHandlerGetData
},
{
- (LIST_ENTRY *) NULL,
- (LIST_ENTRY *) NULL
+ (LIST_ENTRY *)NULL,
+ (LIST_ENTRY *)NULL
},
0,
{
- (LIST_ENTRY *) NULL,
- (LIST_ENTRY *) NULL
+ (LIST_ENTRY *)NULL,
+ (LIST_ENTRY *)NULL
},
- EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK),
+ EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK),
{
0x00000000,
0x0000,
0x0000,
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+ { 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00 }
},
NULL
};
@@ -111,8 +110,8 @@ HII_DATABASE_PRIVATE_DATA mPrivate = { VOID
EFIAPI
KeyboardLayoutChangeNullEvent (
- IN EFI_EVENT Event,
- IN VOID *Context
+ IN EFI_EVENT Event,
+ IN VOID *Context
)
{
return;
@@ -130,8 +129,8 @@ KeyboardLayoutChangeNullEvent ( VOID
EFIAPI
OnReadyToBoot (
- IN EFI_EVENT Event,
- IN VOID *Context
+ IN EFI_EVENT Event,
+ IN VOID *Context
)
{
//
@@ -164,13 +163,13 @@ OnReadyToBoot ( EFI_STATUS
EFIAPI
InitializeHiiDatabase (
- IN EFI_HANDLE ImageHandle,
- IN EFI_SYSTEM_TABLE *SystemTable
+ IN EFI_HANDLE ImageHandle,
+ IN EFI_SYSTEM_TABLE *SystemTable
)
{
- EFI_STATUS Status;
- EFI_HANDLE Handle;
- EFI_EVENT ReadyToBootEvent;
+ EFI_STATUS Status;
+ EFI_HANDLE Handle;
+ EFI_EVENT ReadyToBootEvent;
//
// There will be only one HII Database in the system
@@ -227,14 +226,15 @@ InitializeHiiDatabase ( if (FeaturePcdGet (PcdSupportHiiImageProtocol)) {
Status = gBS->InstallMultipleProtocolInterfaces (
&Handle,
- &gEfiHiiImageProtocolGuid, &mPrivate.HiiImage,
- &gEfiHiiImageExProtocolGuid, &mPrivate.HiiImageEx,
+ &gEfiHiiImageProtocolGuid,
+ &mPrivate.HiiImage,
+ &gEfiHiiImageExProtocolGuid,
+ &mPrivate.HiiImageEx,
NULL
);
-
}
- if (FeaturePcdGet(PcdHiiOsRuntimeSupport)) {
+ if (FeaturePcdGet (PcdHiiOsRuntimeSupport)) {
Status = EfiCreateEventReadyToBootEx (
TPL_CALLBACK,
OnReadyToBoot,
@@ -248,4 +248,3 @@ InitializeHiiDatabase ( return Status;
}
-
diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/Image.c b/MdeModulePkg/Universal/HiiDatabaseDxe/Image.c index a108fc6157..b5b9625969 100644 --- a/MdeModulePkg/Universal/HiiDatabaseDxe/Image.c +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/Image.c @@ -7,10 +7,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/
-
#include "HiiDatabase.h"
-#define MAX_UINT24 0xFFFFFF
+#define MAX_UINT24 0xFFFFFF
/**
Get the imageid of last image block: EFI_HII_IIBT_END_BLOCK when input
@@ -28,13 +27,13 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/
EFI_HII_IMAGE_BLOCK *
GetImageIdOrAddress (
- IN EFI_HII_IMAGE_BLOCK *ImageBlocks,
- IN OUT EFI_IMAGE_ID *ImageId
+ IN EFI_HII_IMAGE_BLOCK *ImageBlocks,
+ IN OUT EFI_IMAGE_ID *ImageId
)
{
- EFI_IMAGE_ID ImageIdCurrent;
- EFI_HII_IMAGE_BLOCK *CurrentImageBlock;
- UINTN Length;
+ EFI_IMAGE_ID ImageIdCurrent;
+ EFI_HII_IMAGE_BLOCK *CurrentImageBlock;
+ UINTN Length;
ASSERT (ImageBlocks != NULL && ImageId != NULL);
CurrentImageBlock = ImageBlocks;
@@ -48,16 +47,17 @@ GetImageIdOrAddress ( // find the previous defined image block.
//
if (CurrentImageBlock->BlockType == EFI_HII_IIBT_DUPLICATE) {
- *ImageId = ReadUnaligned16 ((VOID *) &((EFI_HII_IIBT_DUPLICATE_BLOCK *) CurrentImageBlock)->ImageId);
+ *ImageId = ReadUnaligned16 ((VOID *)&((EFI_HII_IIBT_DUPLICATE_BLOCK *)CurrentImageBlock)->ImageId);
ASSERT (*ImageId != ImageIdCurrent);
ASSERT (*ImageId != 0);
CurrentImageBlock = ImageBlocks;
- ImageIdCurrent = 1;
+ ImageIdCurrent = 1;
continue;
}
return CurrentImageBlock;
}
+
if (*ImageId < ImageIdCurrent) {
//
// Can not find the specified image block in this image.
@@ -65,93 +65,93 @@ GetImageIdOrAddress ( return NULL;
}
}
- switch (CurrentImageBlock->BlockType) {
- case EFI_HII_IIBT_EXT1:
- Length = ((EFI_HII_IIBT_EXT1_BLOCK *) CurrentImageBlock)->Length;
- break;
- case EFI_HII_IIBT_EXT2:
- Length = ReadUnaligned16 (&((EFI_HII_IIBT_EXT2_BLOCK *) CurrentImageBlock)->Length);
- break;
- case EFI_HII_IIBT_EXT4:
- Length = ReadUnaligned32 ((VOID *) &((EFI_HII_IIBT_EXT4_BLOCK *) CurrentImageBlock)->Length);
- break;
-
- case EFI_HII_IIBT_IMAGE_1BIT:
- case EFI_HII_IIBT_IMAGE_1BIT_TRANS:
- Length = sizeof (EFI_HII_IIBT_IMAGE_1BIT_BLOCK) - sizeof (UINT8) +
- BITMAP_LEN_1_BIT (
- ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_1BIT_BLOCK *) CurrentImageBlock)->Bitmap.Width),
- ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_1BIT_BLOCK *) CurrentImageBlock)->Bitmap.Height)
- );
- ImageIdCurrent++;
- break;
-
- case EFI_HII_IIBT_IMAGE_4BIT:
- case EFI_HII_IIBT_IMAGE_4BIT_TRANS:
- Length = sizeof (EFI_HII_IIBT_IMAGE_4BIT_BLOCK) - sizeof (UINT8) +
- BITMAP_LEN_4_BIT (
- ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_4BIT_BLOCK *) CurrentImageBlock)->Bitmap.Width),
- ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_4BIT_BLOCK *) CurrentImageBlock)->Bitmap.Height)
- );
- ImageIdCurrent++;
- break;
-
- case EFI_HII_IIBT_IMAGE_8BIT:
- case EFI_HII_IIBT_IMAGE_8BIT_TRANS:
- Length = sizeof (EFI_HII_IIBT_IMAGE_8BIT_BLOCK) - sizeof (UINT8) +
- BITMAP_LEN_8_BIT (
- (UINT32) ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_8BIT_BLOCK *) CurrentImageBlock)->Bitmap.Width),
- ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_8BIT_BLOCK *) CurrentImageBlock)->Bitmap.Height)
- );
- ImageIdCurrent++;
- break;
-
- case EFI_HII_IIBT_IMAGE_24BIT:
- case EFI_HII_IIBT_IMAGE_24BIT_TRANS:
- Length = sizeof (EFI_HII_IIBT_IMAGE_24BIT_BLOCK) - sizeof (EFI_HII_RGB_PIXEL) +
- BITMAP_LEN_24_BIT (
- (UINT32) ReadUnaligned16 ((VOID *) &((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *) CurrentImageBlock)->Bitmap.Width),
- ReadUnaligned16 ((VOID *) &((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *) CurrentImageBlock)->Bitmap.Height)
- );
- ImageIdCurrent++;
- break;
-
- case EFI_HII_IIBT_DUPLICATE:
- Length = sizeof (EFI_HII_IIBT_DUPLICATE_BLOCK);
- ImageIdCurrent++;
- break;
-
- case EFI_HII_IIBT_IMAGE_JPEG:
- Length = OFFSET_OF (EFI_HII_IIBT_JPEG_BLOCK, Data) + ReadUnaligned32 ((VOID *) &((EFI_HII_IIBT_JPEG_BLOCK *) CurrentImageBlock)->Size);
- ImageIdCurrent++;
- break;
-
- case EFI_HII_IIBT_IMAGE_PNG:
- Length = OFFSET_OF (EFI_HII_IIBT_PNG_BLOCK, Data) + ReadUnaligned32 ((VOID *) &((EFI_HII_IIBT_PNG_BLOCK *) CurrentImageBlock)->Size);
- ImageIdCurrent++;
- break;
-
- case EFI_HII_IIBT_SKIP1:
- Length = sizeof (EFI_HII_IIBT_SKIP1_BLOCK);
- ImageIdCurrent += ((EFI_HII_IIBT_SKIP1_BLOCK *) CurrentImageBlock)->SkipCount;
- break;
-
- case EFI_HII_IIBT_SKIP2:
- Length = sizeof (EFI_HII_IIBT_SKIP2_BLOCK);
- ImageIdCurrent += ReadUnaligned16 ((VOID *) &((EFI_HII_IIBT_SKIP2_BLOCK *) CurrentImageBlock)->SkipCount);
- break;
- default:
- //
- // Unknown image blocks can not be skipped, processing halts.
- //
- ASSERT (FALSE);
- Length = 0;
- break;
+ switch (CurrentImageBlock->BlockType) {
+ case EFI_HII_IIBT_EXT1:
+ Length = ((EFI_HII_IIBT_EXT1_BLOCK *)CurrentImageBlock)->Length;
+ break;
+ case EFI_HII_IIBT_EXT2:
+ Length = ReadUnaligned16 (&((EFI_HII_IIBT_EXT2_BLOCK *)CurrentImageBlock)->Length);
+ break;
+ case EFI_HII_IIBT_EXT4:
+ Length = ReadUnaligned32 ((VOID *)&((EFI_HII_IIBT_EXT4_BLOCK *)CurrentImageBlock)->Length);
+ break;
+
+ case EFI_HII_IIBT_IMAGE_1BIT:
+ case EFI_HII_IIBT_IMAGE_1BIT_TRANS:
+ Length = sizeof (EFI_HII_IIBT_IMAGE_1BIT_BLOCK) - sizeof (UINT8) +
+ BITMAP_LEN_1_BIT (
+ ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_1BIT_BLOCK *)CurrentImageBlock)->Bitmap.Width),
+ ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_1BIT_BLOCK *)CurrentImageBlock)->Bitmap.Height)
+ );
+ ImageIdCurrent++;
+ break;
+
+ case EFI_HII_IIBT_IMAGE_4BIT:
+ case EFI_HII_IIBT_IMAGE_4BIT_TRANS:
+ Length = sizeof (EFI_HII_IIBT_IMAGE_4BIT_BLOCK) - sizeof (UINT8) +
+ BITMAP_LEN_4_BIT (
+ ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_4BIT_BLOCK *)CurrentImageBlock)->Bitmap.Width),
+ ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_4BIT_BLOCK *)CurrentImageBlock)->Bitmap.Height)
+ );
+ ImageIdCurrent++;
+ break;
+
+ case EFI_HII_IIBT_IMAGE_8BIT:
+ case EFI_HII_IIBT_IMAGE_8BIT_TRANS:
+ Length = sizeof (EFI_HII_IIBT_IMAGE_8BIT_BLOCK) - sizeof (UINT8) +
+ BITMAP_LEN_8_BIT (
+ (UINT32)ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_8BIT_BLOCK *)CurrentImageBlock)->Bitmap.Width),
+ ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_8BIT_BLOCK *)CurrentImageBlock)->Bitmap.Height)
+ );
+ ImageIdCurrent++;
+ break;
+
+ case EFI_HII_IIBT_IMAGE_24BIT:
+ case EFI_HII_IIBT_IMAGE_24BIT_TRANS:
+ Length = sizeof (EFI_HII_IIBT_IMAGE_24BIT_BLOCK) - sizeof (EFI_HII_RGB_PIXEL) +
+ BITMAP_LEN_24_BIT (
+ (UINT32)ReadUnaligned16 ((VOID *)&((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *)CurrentImageBlock)->Bitmap.Width),
+ ReadUnaligned16 ((VOID *)&((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *)CurrentImageBlock)->Bitmap.Height)
+ );
+ ImageIdCurrent++;
+ break;
+
+ case EFI_HII_IIBT_DUPLICATE:
+ Length = sizeof (EFI_HII_IIBT_DUPLICATE_BLOCK);
+ ImageIdCurrent++;
+ break;
+
+ case EFI_HII_IIBT_IMAGE_JPEG:
+ Length = OFFSET_OF (EFI_HII_IIBT_JPEG_BLOCK, Data) + ReadUnaligned32 ((VOID *)&((EFI_HII_IIBT_JPEG_BLOCK *)CurrentImageBlock)->Size);
+ ImageIdCurrent++;
+ break;
+
+ case EFI_HII_IIBT_IMAGE_PNG:
+ Length = OFFSET_OF (EFI_HII_IIBT_PNG_BLOCK, Data) + ReadUnaligned32 ((VOID *)&((EFI_HII_IIBT_PNG_BLOCK *)CurrentImageBlock)->Size);
+ ImageIdCurrent++;
+ break;
+
+ case EFI_HII_IIBT_SKIP1:
+ Length = sizeof (EFI_HII_IIBT_SKIP1_BLOCK);
+ ImageIdCurrent += ((EFI_HII_IIBT_SKIP1_BLOCK *)CurrentImageBlock)->SkipCount;
+ break;
+
+ case EFI_HII_IIBT_SKIP2:
+ Length = sizeof (EFI_HII_IIBT_SKIP2_BLOCK);
+ ImageIdCurrent += ReadUnaligned16 ((VOID *)&((EFI_HII_IIBT_SKIP2_BLOCK *)CurrentImageBlock)->SkipCount);
+ break;
+
+ default:
+ //
+ // Unknown image blocks can not be skipped, processing halts.
+ //
+ ASSERT (FALSE);
+ Length = 0;
+ break;
}
- CurrentImageBlock = (EFI_HII_IMAGE_BLOCK *) ((UINT8 *) CurrentImageBlock + Length);
-
+ CurrentImageBlock = (EFI_HII_IMAGE_BLOCK *)((UINT8 *)CurrentImageBlock + Length);
}
//
@@ -165,8 +165,6 @@ GetImageIdOrAddress ( return NULL;
}
-
-
/**
Convert pixels from EFI_GRAPHICS_OUTPUT_BLT_PIXEL to EFI_HII_RGB_PIXEL style.
@@ -186,7 +184,7 @@ CopyGopToRgbPixel ( IN UINTN PixelNum
)
{
- UINTN Index;
+ UINTN Index;
ASSERT (BitMapOut != NULL && BitMapIn != NULL);
@@ -195,7 +193,6 @@ CopyGopToRgbPixel ( }
}
-
/**
Convert pixels from EFI_HII_RGB_PIXEL to EFI_GRAPHICS_OUTPUT_BLT_PIXEL style.
@@ -215,7 +212,7 @@ CopyRgbToGopPixel ( IN UINTN PixelNum
)
{
- UINTN Index;
+ UINTN Index;
ASSERT (BitMapOut != NULL && BitMapIn != NULL);
@@ -224,7 +221,6 @@ CopyRgbToGopPixel ( }
}
-
/**
Output pixels in "1 bit per pixel" format to an image.
@@ -241,20 +237,20 @@ CopyRgbToGopPixel ( **/
VOID
Output1bitPixel (
- IN OUT EFI_IMAGE_INPUT *Image,
- IN UINT8 *Data,
- IN EFI_HII_IMAGE_PALETTE_INFO *PaletteInfo
+ IN OUT EFI_IMAGE_INPUT *Image,
+ IN UINT8 *Data,
+ IN EFI_HII_IMAGE_PALETTE_INFO *PaletteInfo
)
{
- UINT16 Xpos;
- UINT16 Ypos;
- UINTN OffsetY;
- UINT8 Index;
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BitMapPtr;
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL PaletteValue[2];
- EFI_HII_IMAGE_PALETTE_INFO *Palette;
- UINTN PaletteSize;
- UINT8 Byte;
+ UINT16 Xpos;
+ UINT16 Ypos;
+ UINTN OffsetY;
+ UINT8 Index;
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BitMapPtr;
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL PaletteValue[2];
+ EFI_HII_IMAGE_PALETTE_INFO *Palette;
+ UINTN PaletteSize;
+ UINT8 Byte;
ASSERT (Image != NULL && Data != NULL && PaletteInfo != NULL);
@@ -266,11 +262,12 @@ Output1bitPixel ( PaletteSize = 0;
CopyMem (&PaletteSize, PaletteInfo, sizeof (UINT16));
PaletteSize += sizeof (UINT16);
- Palette = AllocateZeroPool (PaletteSize);
+ Palette = AllocateZeroPool (PaletteSize);
ASSERT (Palette != NULL);
if (Palette == NULL) {
return;
}
+
CopyMem (Palette, PaletteInfo, PaletteSize);
ZeroMem (PaletteValue, sizeof (PaletteValue));
@@ -313,7 +310,6 @@ Output1bitPixel ( }
}
-
/**
Output pixels in "4 bit per pixel" format to an image.
@@ -330,20 +326,20 @@ Output1bitPixel ( **/
VOID
Output4bitPixel (
- IN OUT EFI_IMAGE_INPUT *Image,
- IN UINT8 *Data,
- IN EFI_HII_IMAGE_PALETTE_INFO *PaletteInfo
+ IN OUT EFI_IMAGE_INPUT *Image,
+ IN UINT8 *Data,
+ IN EFI_HII_IMAGE_PALETTE_INFO *PaletteInfo
)
{
- UINT16 Xpos;
- UINT16 Ypos;
- UINTN OffsetY;
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BitMapPtr;
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL PaletteValue[16];
- EFI_HII_IMAGE_PALETTE_INFO *Palette;
- UINTN PaletteSize;
- UINT16 PaletteNum;
- UINT8 Byte;
+ UINT16 Xpos;
+ UINT16 Ypos;
+ UINTN OffsetY;
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BitMapPtr;
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL PaletteValue[16];
+ EFI_HII_IMAGE_PALETTE_INFO *Palette;
+ UINTN PaletteSize;
+ UINT16 PaletteNum;
+ UINT8 Byte;
ASSERT (Image != NULL && Data != NULL && PaletteInfo != NULL);
@@ -355,11 +351,12 @@ Output4bitPixel ( PaletteSize = 0;
CopyMem (&PaletteSize, PaletteInfo, sizeof (UINT16));
PaletteSize += sizeof (UINT16);
- Palette = AllocateZeroPool (PaletteSize);
+ Palette = AllocateZeroPool (PaletteSize);
ASSERT (Palette != NULL);
if (Palette == NULL) {
return;
}
+
CopyMem (Palette, PaletteInfo, PaletteSize);
PaletteNum = (UINT16)(Palette->PaletteSize / sizeof (EFI_HII_RGB_PIXEL));
@@ -376,7 +373,7 @@ Output4bitPixel ( // All bits in these bytes are meaningful
//
for (Xpos = 0; Xpos < Image->Width / 2; Xpos++) {
- Byte = *(Data + OffsetY + Xpos);
+ Byte = *(Data + OffsetY + Xpos);
BitMapPtr[Ypos * Image->Width + Xpos * 2] = PaletteValue[Byte >> 4];
BitMapPtr[Ypos * Image->Width + Xpos * 2 + 1] = PaletteValue[Byte & 0x0F];
}
@@ -385,13 +382,12 @@ Output4bitPixel ( //
// Padding bits in this byte should be ignored.
//
- Byte = *(Data + OffsetY + Xpos);
- BitMapPtr[Ypos * Image->Width + Xpos * 2] = PaletteValue[Byte >> 4];
+ Byte = *(Data + OffsetY + Xpos);
+ BitMapPtr[Ypos * Image->Width + Xpos * 2] = PaletteValue[Byte >> 4];
}
}
}
-
/**
Output pixels in "8 bit per pixel" format to an image.
@@ -408,20 +404,20 @@ Output4bitPixel ( **/
VOID
Output8bitPixel (
- IN OUT EFI_IMAGE_INPUT *Image,
- IN UINT8 *Data,
- IN EFI_HII_IMAGE_PALETTE_INFO *PaletteInfo
+ IN OUT EFI_IMAGE_INPUT *Image,
+ IN UINT8 *Data,
+ IN EFI_HII_IMAGE_PALETTE_INFO *PaletteInfo
)
{
- UINT16 Xpos;
- UINT16 Ypos;
- UINTN OffsetY;
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BitMapPtr;
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL PaletteValue[256];
- EFI_HII_IMAGE_PALETTE_INFO *Palette;
- UINTN PaletteSize;
- UINT16 PaletteNum;
- UINT8 Byte;
+ UINT16 Xpos;
+ UINT16 Ypos;
+ UINTN OffsetY;
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BitMapPtr;
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL PaletteValue[256];
+ EFI_HII_IMAGE_PALETTE_INFO *Palette;
+ UINTN PaletteSize;
+ UINT16 PaletteNum;
+ UINT8 Byte;
ASSERT (Image != NULL && Data != NULL && PaletteInfo != NULL);
@@ -433,11 +429,12 @@ Output8bitPixel ( PaletteSize = 0;
CopyMem (&PaletteSize, PaletteInfo, sizeof (UINT16));
PaletteSize += sizeof (UINT16);
- Palette = AllocateZeroPool (PaletteSize);
+ Palette = AllocateZeroPool (PaletteSize);
ASSERT (Palette != NULL);
if (Palette == NULL) {
return;
}
+
CopyMem (Palette, PaletteInfo, PaletteSize);
PaletteNum = (UINT16)(Palette->PaletteSize / sizeof (EFI_HII_RGB_PIXEL));
ZeroMem (PaletteValue, sizeof (PaletteValue));
@@ -448,19 +445,17 @@ Output8bitPixel ( // Convert the pixel from 8 bits to corresponding color.
//
for (Ypos = 0; Ypos < Image->Height; Ypos++) {
- OffsetY = BITMAP_LEN_8_BIT ((UINT32) Image->Width, Ypos);
+ OffsetY = BITMAP_LEN_8_BIT ((UINT32)Image->Width, Ypos);
//
// All bits are meaningful since the bitmap is 8 bits per pixel.
//
for (Xpos = 0; Xpos < Image->Width; Xpos++) {
- Byte = *(Data + OffsetY + Xpos);
+ Byte = *(Data + OffsetY + Xpos);
BitMapPtr[OffsetY + Xpos] = PaletteValue[Byte];
}
}
-
}
-
/**
Output pixels in "24 bit per pixel" format to an image.
@@ -475,26 +470,24 @@ Output8bitPixel ( **/
VOID
Output24bitPixel (
- IN OUT EFI_IMAGE_INPUT *Image,
- IN EFI_HII_RGB_PIXEL *Data
+ IN OUT EFI_IMAGE_INPUT *Image,
+ IN EFI_HII_RGB_PIXEL *Data
)
{
- UINT16 Ypos;
- UINTN OffsetY;
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BitMapPtr;
+ UINT16 Ypos;
+ UINTN OffsetY;
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BitMapPtr;
ASSERT (Image != NULL && Data != NULL);
BitMapPtr = Image->Bitmap;
for (Ypos = 0; Ypos < Image->Height; Ypos++) {
- OffsetY = BITMAP_LEN_8_BIT ((UINT32) Image->Width, Ypos);
+ OffsetY = BITMAP_LEN_8_BIT ((UINT32)Image->Width, Ypos);
CopyRgbToGopPixel (&BitMapPtr[OffsetY], &Data[OffsetY], Image->Width);
}
-
}
-
/**
Convert the image from EFI_IMAGE_INPUT to EFI_IMAGE_OUTPUT format.
@@ -519,24 +512,24 @@ Output24bitPixel ( **/
EFI_STATUS
ImageToBlt (
- IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer,
- IN UINTN BltX,
- IN UINTN BltY,
- IN UINTN Width,
- IN UINTN Height,
- IN BOOLEAN Transparent,
- IN OUT EFI_IMAGE_OUTPUT **Blt
+ IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer,
+ IN UINTN BltX,
+ IN UINTN BltY,
+ IN UINTN Width,
+ IN UINTN Height,
+ IN BOOLEAN Transparent,
+ IN OUT EFI_IMAGE_OUTPUT **Blt
)
{
- EFI_IMAGE_OUTPUT *ImageOut;
- UINTN Xpos;
- UINTN Ypos;
- UINTN OffsetY1; // src buffer
- UINTN OffsetY2; // dest buffer
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL SrcPixel;
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL ZeroPixel;
-
- if (BltBuffer == NULL || Blt == NULL || *Blt == NULL) {
+ EFI_IMAGE_OUTPUT *ImageOut;
+ UINTN Xpos;
+ UINTN Ypos;
+ UINTN OffsetY1; // src buffer
+ UINTN OffsetY2; // dest buffer
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL SrcPixel;
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL ZeroPixel;
+
+ if ((BltBuffer == NULL) || (Blt == NULL) || (*Blt == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -545,6 +538,7 @@ ImageToBlt ( if (Width + BltX > ImageOut->Width) {
return EFI_INVALID_PARAMETER;
}
+
if (Height + BltY > ImageOut->Height) {
return EFI_INVALID_PARAMETER;
}
@@ -579,12 +573,12 @@ ImageToBlt ( **/
HII_DATABASE_PACKAGE_LIST_INSTANCE *
LocatePackageList (
- IN LIST_ENTRY *Database,
- IN EFI_HII_HANDLE PackageList
+ IN LIST_ENTRY *Database,
+ IN EFI_HII_HANDLE PackageList
)
{
- LIST_ENTRY *Link;
- HII_DATABASE_RECORD *Record;
+ LIST_ENTRY *Link;
+ HII_DATABASE_RECORD *Record;
//
// Get the specified package list and image package.
@@ -592,12 +586,14 @@ LocatePackageList ( for (Link = GetFirstNode (Database);
!IsNull (Database, Link);
Link = GetNextNode (Database, Link)
- ) {
+ )
+ {
Record = CR (Link, HII_DATABASE_RECORD, DatabaseEntry, HII_DATABASE_RECORD_SIGNATURE);
if (Record->Handle == PackageList) {
return Record->PackageList;
}
}
+
return NULL;
}
@@ -622,10 +618,10 @@ LocatePackageList ( EFI_STATUS
EFIAPI
HiiNewImage (
- IN CONST EFI_HII_IMAGE_PROTOCOL *This,
- IN EFI_HII_HANDLE PackageList,
- OUT EFI_IMAGE_ID *ImageId,
- IN CONST EFI_IMAGE_INPUT *Image
+ IN CONST EFI_HII_IMAGE_PROTOCOL *This,
+ IN EFI_HII_HANDLE PackageList,
+ OUT EFI_IMAGE_ID *ImageId,
+ IN CONST EFI_IMAGE_INPUT *Image
)
{
HII_DATABASE_PRIVATE_DATA *Private;
@@ -634,11 +630,11 @@ HiiNewImage ( EFI_HII_IMAGE_BLOCK *ImageBlocks;
UINT32 NewBlockSize;
- if (This == NULL || ImageId == NULL || Image == NULL || Image->Bitmap == NULL) {
+ if ((This == NULL) || (ImageId == NULL) || (Image == NULL) || (Image->Bitmap == NULL)) {
return EFI_INVALID_PARAMETER;
}
- Private = HII_IMAGE_DATABASE_PRIVATE_DATA_FROM_THIS (This);
+ Private = HII_IMAGE_DATABASE_PRIVATE_DATA_FROM_THIS (This);
PackageListNode = LocatePackageList (&Private->DatabaseList, PackageList);
if (PackageListNode == NULL) {
return EFI_NOT_FOUND;
@@ -656,6 +652,7 @@ HiiNewImage ( EfiReleaseLock (&mHiiDatabaseLock);
return EFI_OUT_OF_RESOURCES;
}
+
NewBlockSize = NewBlockSize * 3 + (sizeof (EFI_HII_IIBT_IMAGE_24BIT_BLOCK) - sizeof (EFI_HII_RGB_PIXEL));
//
@@ -684,6 +681,7 @@ HiiNewImage ( EfiReleaseLock (&mHiiDatabaseLock);
return EFI_OUT_OF_RESOURCES;
}
+
//
// Because ImagePackage->ImageBlockSize < ImagePackage->ImagePkgHdr.Header.Length,
// So (ImagePackage->ImageBlockSize + NewBlockSize) <= MAX_UINT24
@@ -693,6 +691,7 @@ HiiNewImage ( EfiReleaseLock (&mHiiDatabaseLock);
return EFI_OUT_OF_RESOURCES;
}
+
//
// Copy the original content.
//
@@ -707,16 +706,15 @@ HiiNewImage ( //
// Point to the very last block.
//
- ImageBlocks = (EFI_HII_IMAGE_BLOCK *) (
- (UINT8 *) ImageBlocks + ImagePackage->ImageBlockSize - sizeof (EFI_HII_IIBT_END_BLOCK)
- );
+ ImageBlocks = (EFI_HII_IMAGE_BLOCK *)(
+ (UINT8 *)ImageBlocks + ImagePackage->ImageBlockSize - sizeof (EFI_HII_IIBT_END_BLOCK)
+ );
//
// Update the length record.
//
ImagePackage->ImageBlockSize += NewBlockSize;
ImagePackage->ImagePkgHdr.Header.Length += NewBlockSize;
PackageListNode->PackageListHdr.PackageLength += NewBlockSize;
-
} else {
//
// Make sure the final package length doesn't overflow.
@@ -726,15 +724,17 @@ HiiNewImage ( EfiReleaseLock (&mHiiDatabaseLock);
return EFI_OUT_OF_RESOURCES;
}
+
//
// The specified package list does not contain image package.
// Create one to add this image block.
//
- ImagePackage = (HII_IMAGE_PACKAGE_INSTANCE *) AllocateZeroPool (sizeof (HII_IMAGE_PACKAGE_INSTANCE));
+ ImagePackage = (HII_IMAGE_PACKAGE_INSTANCE *)AllocateZeroPool (sizeof (HII_IMAGE_PACKAGE_INSTANCE));
if (ImagePackage == NULL) {
EfiReleaseLock (&mHiiDatabaseLock);
return EFI_OUT_OF_RESOURCES;
}
+
//
// Output the image id of the incoming image being inserted, which is the
// first image block so that id is initially to one.
@@ -758,18 +758,19 @@ HiiNewImage ( // Fill in image blocks.
//
ImagePackage->ImageBlockSize = NewBlockSize + sizeof (EFI_HII_IIBT_END_BLOCK);
- ImagePackage->ImageBlock = AllocateZeroPool (NewBlockSize + sizeof (EFI_HII_IIBT_END_BLOCK));
+ ImagePackage->ImageBlock = AllocateZeroPool (NewBlockSize + sizeof (EFI_HII_IIBT_END_BLOCK));
if (ImagePackage->ImageBlock == NULL) {
FreePool (ImagePackage);
EfiReleaseLock (&mHiiDatabaseLock);
return EFI_OUT_OF_RESOURCES;
}
+
ImageBlocks = ImagePackage->ImageBlock;
//
// Insert this image package.
//
- PackageListNode->ImagePkg = ImagePackage;
+ PackageListNode->ImagePkg = ImagePackage;
PackageListNode->PackageListHdr.PackageLength += ImagePackage->ImagePkgHdr.Header.Length;
}
@@ -781,14 +782,15 @@ HiiNewImage ( } else {
ImageBlocks->BlockType = EFI_HII_IIBT_IMAGE_24BIT;
}
- WriteUnaligned16 ((VOID *) &((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *) ImageBlocks)->Bitmap.Width, Image->Width);
- WriteUnaligned16 ((VOID *) &((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *) ImageBlocks)->Bitmap.Height, Image->Height);
- CopyGopToRgbPixel (((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *) ImageBlocks)->Bitmap.Bitmap, Image->Bitmap, (UINT32) Image->Width * Image->Height);
+
+ WriteUnaligned16 ((VOID *)&((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *)ImageBlocks)->Bitmap.Width, Image->Width);
+ WriteUnaligned16 ((VOID *)&((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *)ImageBlocks)->Bitmap.Height, Image->Height);
+ CopyGopToRgbPixel (((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *)ImageBlocks)->Bitmap.Bitmap, Image->Bitmap, (UINT32)Image->Width * Image->Height);
//
// Append the block end
//
- ImageBlocks = (EFI_HII_IMAGE_BLOCK *) ((UINT8 *) ImageBlocks + NewBlockSize);
+ ImageBlocks = (EFI_HII_IMAGE_BLOCK *)((UINT8 *)ImageBlocks + NewBlockSize);
ImageBlocks->BlockType = EFI_HII_IIBT_END;
//
@@ -796,7 +798,7 @@ HiiNewImage ( // Only after ReadyToBoot to do the export.
//
if (gExportAfterReadyToBoot) {
- HiiGetDatabaseInfo(&Private->HiiDatabase);
+ HiiGetDatabaseInfo (&Private->HiiDatabase);
}
EfiReleaseLock (&mHiiDatabaseLock);
@@ -804,7 +806,6 @@ HiiNewImage ( return EFI_SUCCESS;
}
-
/**
This function retrieves the image specified by ImageId which is associated with
the specified PackageList and copies it into the buffer specified by Image.
@@ -829,11 +830,11 @@ HiiNewImage ( **/
EFI_STATUS
IGetImage (
- IN LIST_ENTRY *Database,
- IN EFI_HII_HANDLE PackageList,
- IN EFI_IMAGE_ID ImageId,
- OUT EFI_IMAGE_INPUT *Image,
- IN BOOLEAN BitmapOnly
+ IN LIST_ENTRY *Database,
+ IN EFI_HII_HANDLE PackageList,
+ IN EFI_IMAGE_ID ImageId,
+ OUT EFI_IMAGE_INPUT *Image,
+ IN BOOLEAN BitmapOnly
)
{
EFI_STATUS Status;
@@ -850,7 +851,7 @@ IGetImage ( EFI_HII_IMAGE_DECODER_PROTOCOL *Decoder;
EFI_IMAGE_OUTPUT *ImageOut;
- if (Image == NULL || ImageId == 0) {
+ if ((Image == NULL) || (ImageId == 0)) {
return EFI_INVALID_PARAMETER;
}
@@ -858,6 +859,7 @@ IGetImage ( if (PackageListNode == NULL) {
return EFI_NOT_FOUND;
}
+
ImagePackage = PackageListNode->ImagePkg;
if (ImagePackage == NULL) {
return EFI_NOT_FOUND;
@@ -873,139 +875,150 @@ IGetImage ( Image->Flags = 0;
switch (CurrentImageBlock->BlockType) {
- case EFI_HII_IIBT_IMAGE_JPEG:
- case EFI_HII_IIBT_IMAGE_PNG:
- if (BitmapOnly) {
- return EFI_UNSUPPORTED;
- }
+ case EFI_HII_IIBT_IMAGE_JPEG:
+ case EFI_HII_IIBT_IMAGE_PNG:
+ if (BitmapOnly) {
+ return EFI_UNSUPPORTED;
+ }
- ImageOut = NULL;
- Decoder = LocateHiiImageDecoder (CurrentImageBlock->BlockType);
- if (Decoder == NULL) {
- return EFI_UNSUPPORTED;
- }
- //
- // Use the common block code since the definition of two structures is the same.
- //
- ASSERT (OFFSET_OF (EFI_HII_IIBT_JPEG_BLOCK, Data) == OFFSET_OF (EFI_HII_IIBT_PNG_BLOCK, Data));
- ASSERT (sizeof (((EFI_HII_IIBT_JPEG_BLOCK *) CurrentImageBlock)->Data) ==
- sizeof (((EFI_HII_IIBT_PNG_BLOCK *) CurrentImageBlock)->Data));
- ASSERT (OFFSET_OF (EFI_HII_IIBT_JPEG_BLOCK, Size) == OFFSET_OF (EFI_HII_IIBT_PNG_BLOCK, Size));
- ASSERT (sizeof (((EFI_HII_IIBT_JPEG_BLOCK *) CurrentImageBlock)->Size) ==
- sizeof (((EFI_HII_IIBT_PNG_BLOCK *) CurrentImageBlock)->Size));
- Status = Decoder->DecodeImage (
- Decoder,
- ((EFI_HII_IIBT_JPEG_BLOCK *) CurrentImageBlock)->Data,
- ((EFI_HII_IIBT_JPEG_BLOCK *) CurrentImageBlock)->Size,
- &ImageOut,
- FALSE
- );
+ ImageOut = NULL;
+ Decoder = LocateHiiImageDecoder (CurrentImageBlock->BlockType);
+ if (Decoder == NULL) {
+ return EFI_UNSUPPORTED;
+ }
- //
- // Spec requires to use the first capable image decoder instance.
- // The first image decoder instance may fail to decode the image.
- //
- if (!EFI_ERROR (Status)) {
- Image->Bitmap = ImageOut->Image.Bitmap;
- Image->Height = ImageOut->Height;
- Image->Width = ImageOut->Width;
- FreePool (ImageOut);
- }
- return Status;
+ //
+ // Use the common block code since the definition of two structures is the same.
+ //
+ ASSERT (OFFSET_OF (EFI_HII_IIBT_JPEG_BLOCK, Data) == OFFSET_OF (EFI_HII_IIBT_PNG_BLOCK, Data));
+ ASSERT (
+ sizeof (((EFI_HII_IIBT_JPEG_BLOCK *)CurrentImageBlock)->Data) ==
+ sizeof (((EFI_HII_IIBT_PNG_BLOCK *)CurrentImageBlock)->Data)
+ );
+ ASSERT (OFFSET_OF (EFI_HII_IIBT_JPEG_BLOCK, Size) == OFFSET_OF (EFI_HII_IIBT_PNG_BLOCK, Size));
+ ASSERT (
+ sizeof (((EFI_HII_IIBT_JPEG_BLOCK *)CurrentImageBlock)->Size) ==
+ sizeof (((EFI_HII_IIBT_PNG_BLOCK *)CurrentImageBlock)->Size)
+ );
+ Status = Decoder->DecodeImage (
+ Decoder,
+ ((EFI_HII_IIBT_JPEG_BLOCK *)CurrentImageBlock)->Data,
+ ((EFI_HII_IIBT_JPEG_BLOCK *)CurrentImageBlock)->Size,
+ &ImageOut,
+ FALSE
+ );
+
+ //
+ // Spec requires to use the first capable image decoder instance.
+ // The first image decoder instance may fail to decode the image.
+ //
+ if (!EFI_ERROR (Status)) {
+ Image->Bitmap = ImageOut->Image.Bitmap;
+ Image->Height = ImageOut->Height;
+ Image->Width = ImageOut->Width;
+ FreePool (ImageOut);
+ }
+
+ return Status;
- case EFI_HII_IIBT_IMAGE_1BIT_TRANS:
- case EFI_HII_IIBT_IMAGE_4BIT_TRANS:
- case EFI_HII_IIBT_IMAGE_8BIT_TRANS:
- Image->Flags = EFI_IMAGE_TRANSPARENT;
+ case EFI_HII_IIBT_IMAGE_1BIT_TRANS:
+ case EFI_HII_IIBT_IMAGE_4BIT_TRANS:
+ case EFI_HII_IIBT_IMAGE_8BIT_TRANS:
+ Image->Flags = EFI_IMAGE_TRANSPARENT;
//
// fall through
//
- case EFI_HII_IIBT_IMAGE_1BIT:
- case EFI_HII_IIBT_IMAGE_4BIT:
- case EFI_HII_IIBT_IMAGE_8BIT:
- //
- // Use the common block code since the definition of these structures is the same.
- //
- CopyMem (&Iibt1bit, CurrentImageBlock, sizeof (EFI_HII_IIBT_IMAGE_1BIT_BLOCK));
- ImageLength = (UINTN) Iibt1bit.Bitmap.Width * Iibt1bit.Bitmap.Height;
- if (ImageLength > MAX_UINTN / sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL)) {
- return EFI_OUT_OF_RESOURCES;
- }
- ImageLength *= sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL);
- Image->Bitmap = AllocateZeroPool (ImageLength);
- if (Image->Bitmap == NULL) {
- return EFI_OUT_OF_RESOURCES;
- }
+ case EFI_HII_IIBT_IMAGE_1BIT:
+ case EFI_HII_IIBT_IMAGE_4BIT:
+ case EFI_HII_IIBT_IMAGE_8BIT:
+ //
+ // Use the common block code since the definition of these structures is the same.
+ //
+ CopyMem (&Iibt1bit, CurrentImageBlock, sizeof (EFI_HII_IIBT_IMAGE_1BIT_BLOCK));
+ ImageLength = (UINTN)Iibt1bit.Bitmap.Width * Iibt1bit.Bitmap.Height;
+ if (ImageLength > MAX_UINTN / sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL)) {
+ return EFI_OUT_OF_RESOURCES;
+ }
- Image->Width = Iibt1bit.Bitmap.Width;
- Image->Height = Iibt1bit.Bitmap.Height;
+ ImageLength *= sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL);
+ Image->Bitmap = AllocateZeroPool (ImageLength);
+ if (Image->Bitmap == NULL) {
+ return EFI_OUT_OF_RESOURCES;
+ }
- PaletteInfo = ImagePackage->PaletteBlock + sizeof (EFI_HII_IMAGE_PALETTE_INFO_HEADER);
- for (PaletteIndex = 1; PaletteIndex < Iibt1bit.PaletteIndex; PaletteIndex++) {
- CopyMem (&PaletteSize, PaletteInfo, sizeof (UINT16));
- PaletteInfo += PaletteSize + sizeof (UINT16);
- }
- ASSERT (PaletteIndex == Iibt1bit.PaletteIndex);
+ Image->Width = Iibt1bit.Bitmap.Width;
+ Image->Height = Iibt1bit.Bitmap.Height;
- //
- // Output bitmap data
- //
- if (CurrentImageBlock->BlockType == EFI_HII_IIBT_IMAGE_1BIT ||
- CurrentImageBlock->BlockType == EFI_HII_IIBT_IMAGE_1BIT_TRANS) {
- Output1bitPixel (
- Image,
- ((EFI_HII_IIBT_IMAGE_1BIT_BLOCK *) CurrentImageBlock)->Bitmap.Data,
- (EFI_HII_IMAGE_PALETTE_INFO *) PaletteInfo
- );
- } else if (CurrentImageBlock->BlockType == EFI_HII_IIBT_IMAGE_4BIT ||
- CurrentImageBlock->BlockType == EFI_HII_IIBT_IMAGE_4BIT_TRANS) {
- Output4bitPixel (
- Image,
- ((EFI_HII_IIBT_IMAGE_4BIT_BLOCK *) CurrentImageBlock)->Bitmap.Data,
- (EFI_HII_IMAGE_PALETTE_INFO *) PaletteInfo
- );
- } else {
- Output8bitPixel (
- Image,
- ((EFI_HII_IIBT_IMAGE_8BIT_BLOCK *) CurrentImageBlock)->Bitmap.Data,
- (EFI_HII_IMAGE_PALETTE_INFO *) PaletteInfo
- );
- }
+ PaletteInfo = ImagePackage->PaletteBlock + sizeof (EFI_HII_IMAGE_PALETTE_INFO_HEADER);
+ for (PaletteIndex = 1; PaletteIndex < Iibt1bit.PaletteIndex; PaletteIndex++) {
+ CopyMem (&PaletteSize, PaletteInfo, sizeof (UINT16));
+ PaletteInfo += PaletteSize + sizeof (UINT16);
+ }
- return EFI_SUCCESS;
+ ASSERT (PaletteIndex == Iibt1bit.PaletteIndex);
- case EFI_HII_IIBT_IMAGE_24BIT_TRANS:
- Image->Flags = EFI_IMAGE_TRANSPARENT;
+ //
+ // Output bitmap data
+ //
+ if ((CurrentImageBlock->BlockType == EFI_HII_IIBT_IMAGE_1BIT) ||
+ (CurrentImageBlock->BlockType == EFI_HII_IIBT_IMAGE_1BIT_TRANS))
+ {
+ Output1bitPixel (
+ Image,
+ ((EFI_HII_IIBT_IMAGE_1BIT_BLOCK *)CurrentImageBlock)->Bitmap.Data,
+ (EFI_HII_IMAGE_PALETTE_INFO *)PaletteInfo
+ );
+ } else if ((CurrentImageBlock->BlockType == EFI_HII_IIBT_IMAGE_4BIT) ||
+ (CurrentImageBlock->BlockType == EFI_HII_IIBT_IMAGE_4BIT_TRANS))
+ {
+ Output4bitPixel (
+ Image,
+ ((EFI_HII_IIBT_IMAGE_4BIT_BLOCK *)CurrentImageBlock)->Bitmap.Data,
+ (EFI_HII_IMAGE_PALETTE_INFO *)PaletteInfo
+ );
+ } else {
+ Output8bitPixel (
+ Image,
+ ((EFI_HII_IIBT_IMAGE_8BIT_BLOCK *)CurrentImageBlock)->Bitmap.Data,
+ (EFI_HII_IMAGE_PALETTE_INFO *)PaletteInfo
+ );
+ }
+
+ return EFI_SUCCESS;
+
+ case EFI_HII_IIBT_IMAGE_24BIT_TRANS:
+ Image->Flags = EFI_IMAGE_TRANSPARENT;
//
// fall through
//
- case EFI_HII_IIBT_IMAGE_24BIT:
- Width = ReadUnaligned16 ((VOID *) &((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *) CurrentImageBlock)->Bitmap.Width);
- Height = ReadUnaligned16 ((VOID *) &((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *) CurrentImageBlock)->Bitmap.Height);
- ImageLength = (UINTN)Width * Height;
- if (ImageLength > MAX_UINTN / sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL)) {
- return EFI_OUT_OF_RESOURCES;
- }
- ImageLength *= sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL);
- Image->Bitmap = AllocateZeroPool (ImageLength);
- if (Image->Bitmap == NULL) {
- return EFI_OUT_OF_RESOURCES;
- }
+ case EFI_HII_IIBT_IMAGE_24BIT:
+ Width = ReadUnaligned16 ((VOID *)&((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *)CurrentImageBlock)->Bitmap.Width);
+ Height = ReadUnaligned16 ((VOID *)&((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *)CurrentImageBlock)->Bitmap.Height);
+ ImageLength = (UINTN)Width * Height;
+ if (ImageLength > MAX_UINTN / sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL)) {
+ return EFI_OUT_OF_RESOURCES;
+ }
- Image->Width = Width;
- Image->Height = Height;
+ ImageLength *= sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL);
+ Image->Bitmap = AllocateZeroPool (ImageLength);
+ if (Image->Bitmap == NULL) {
+ return EFI_OUT_OF_RESOURCES;
+ }
- //
- // Output the bitmap data directly.
- //
- Output24bitPixel (
- Image,
- ((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *) CurrentImageBlock)->Bitmap.Bitmap
- );
- return EFI_SUCCESS;
+ Image->Width = Width;
+ Image->Height = Height;
- default:
- return EFI_NOT_FOUND;
+ //
+ // Output the bitmap data directly.
+ //
+ Output24bitPixel (
+ Image,
+ ((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *)CurrentImageBlock)->Bitmap.Bitmap
+ );
+ return EFI_SUCCESS;
+
+ default:
+ return EFI_NOT_FOUND;
}
}
@@ -1033,18 +1046,18 @@ IGetImage ( EFI_STATUS
EFIAPI
HiiGetImage (
- IN CONST EFI_HII_IMAGE_PROTOCOL *This,
- IN EFI_HII_HANDLE PackageList,
- IN EFI_IMAGE_ID ImageId,
- OUT EFI_IMAGE_INPUT *Image
+ IN CONST EFI_HII_IMAGE_PROTOCOL *This,
+ IN EFI_HII_HANDLE PackageList,
+ IN EFI_IMAGE_ID ImageId,
+ OUT EFI_IMAGE_INPUT *Image
)
{
- HII_DATABASE_PRIVATE_DATA *Private;
+ HII_DATABASE_PRIVATE_DATA *Private;
+
Private = HII_IMAGE_DATABASE_PRIVATE_DATA_FROM_THIS (This);
return IGetImage (&Private->DatabaseList, PackageList, ImageId, Image, TRUE);
}
-
/**
This function updates the image specified by ImageId in the specified PackageListHandle to
the image specified by Image.
@@ -1064,10 +1077,10 @@ HiiGetImage ( EFI_STATUS
EFIAPI
HiiSetImage (
- IN CONST EFI_HII_IMAGE_PROTOCOL *This,
- IN EFI_HII_HANDLE PackageList,
- IN EFI_IMAGE_ID ImageId,
- IN CONST EFI_IMAGE_INPUT *Image
+ IN CONST EFI_HII_IMAGE_PROTOCOL *This,
+ IN EFI_HII_HANDLE PackageList,
+ IN EFI_IMAGE_ID ImageId,
+ IN CONST EFI_IMAGE_INPUT *Image
)
{
HII_DATABASE_PRIVATE_DATA *Private;
@@ -1078,18 +1091,19 @@ HiiSetImage ( EFI_HII_IMAGE_BLOCK *NewImageBlock;
UINT32 NewBlockSize;
UINT32 OldBlockSize;
- UINT32 Part1Size;
- UINT32 Part2Size;
+ UINT32 Part1Size;
+ UINT32 Part2Size;
- if (This == NULL || Image == NULL || ImageId == 0 || Image->Bitmap == NULL) {
+ if ((This == NULL) || (Image == NULL) || (ImageId == 0) || (Image->Bitmap == NULL)) {
return EFI_INVALID_PARAMETER;
}
- Private = HII_IMAGE_DATABASE_PRIVATE_DATA_FROM_THIS (This);
+ Private = HII_IMAGE_DATABASE_PRIVATE_DATA_FROM_THIS (This);
PackageListNode = LocatePackageList (&Private->DatabaseList, PackageList);
if (PackageListNode == NULL) {
return EFI_NOT_FOUND;
}
+
ImagePackage = PackageListNode->ImagePkg;
if (ImagePackage == NULL) {
return EFI_NOT_FOUND;
@@ -1110,47 +1124,47 @@ HiiSetImage ( // since the definition of some structures is the same.
//
switch (CurrentImageBlock->BlockType) {
- case EFI_HII_IIBT_IMAGE_JPEG:
- OldBlockSize = OFFSET_OF (EFI_HII_IIBT_JPEG_BLOCK, Data) + ReadUnaligned32 ((VOID *) &((EFI_HII_IIBT_JPEG_BLOCK *) CurrentImageBlock)->Size);
- break;
- case EFI_HII_IIBT_IMAGE_PNG:
- OldBlockSize = OFFSET_OF (EFI_HII_IIBT_PNG_BLOCK, Data) + ReadUnaligned32 ((VOID *) &((EFI_HII_IIBT_PNG_BLOCK *) CurrentImageBlock)->Size);
- break;
- case EFI_HII_IIBT_IMAGE_1BIT:
- case EFI_HII_IIBT_IMAGE_1BIT_TRANS:
- OldBlockSize = sizeof (EFI_HII_IIBT_IMAGE_1BIT_BLOCK) - sizeof (UINT8) +
- BITMAP_LEN_1_BIT (
- ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_1BIT_BLOCK *) CurrentImageBlock)->Bitmap.Width),
- ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_1BIT_BLOCK *) CurrentImageBlock)->Bitmap.Height)
- );
- break;
- case EFI_HII_IIBT_IMAGE_4BIT:
- case EFI_HII_IIBT_IMAGE_4BIT_TRANS:
- OldBlockSize = sizeof (EFI_HII_IIBT_IMAGE_4BIT_BLOCK) - sizeof (UINT8) +
- BITMAP_LEN_4_BIT (
- ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_4BIT_BLOCK *) CurrentImageBlock)->Bitmap.Width),
- ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_4BIT_BLOCK *) CurrentImageBlock)->Bitmap.Height)
- );
- break;
- case EFI_HII_IIBT_IMAGE_8BIT:
- case EFI_HII_IIBT_IMAGE_8BIT_TRANS:
- OldBlockSize = sizeof (EFI_HII_IIBT_IMAGE_8BIT_BLOCK) - sizeof (UINT8) +
- BITMAP_LEN_8_BIT (
- (UINT32) ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_8BIT_BLOCK *) CurrentImageBlock)->Bitmap.Width),
- ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_8BIT_BLOCK *) CurrentImageBlock)->Bitmap.Height)
- );
- break;
- case EFI_HII_IIBT_IMAGE_24BIT:
- case EFI_HII_IIBT_IMAGE_24BIT_TRANS:
- OldBlockSize = sizeof (EFI_HII_IIBT_IMAGE_24BIT_BLOCK) - sizeof (EFI_HII_RGB_PIXEL) +
- BITMAP_LEN_24_BIT (
- (UINT32) ReadUnaligned16 ((VOID *) &((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *) CurrentImageBlock)->Bitmap.Width),
- ReadUnaligned16 ((VOID *) &((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *) CurrentImageBlock)->Bitmap.Height)
- );
- break;
- default:
- EfiReleaseLock (&mHiiDatabaseLock);
- return EFI_NOT_FOUND;
+ case EFI_HII_IIBT_IMAGE_JPEG:
+ OldBlockSize = OFFSET_OF (EFI_HII_IIBT_JPEG_BLOCK, Data) + ReadUnaligned32 ((VOID *)&((EFI_HII_IIBT_JPEG_BLOCK *)CurrentImageBlock)->Size);
+ break;
+ case EFI_HII_IIBT_IMAGE_PNG:
+ OldBlockSize = OFFSET_OF (EFI_HII_IIBT_PNG_BLOCK, Data) + ReadUnaligned32 ((VOID *)&((EFI_HII_IIBT_PNG_BLOCK *)CurrentImageBlock)->Size);
+ break;
+ case EFI_HII_IIBT_IMAGE_1BIT:
+ case EFI_HII_IIBT_IMAGE_1BIT_TRANS:
+ OldBlockSize = sizeof (EFI_HII_IIBT_IMAGE_1BIT_BLOCK) - sizeof (UINT8) +
+ BITMAP_LEN_1_BIT (
+ ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_1BIT_BLOCK *)CurrentImageBlock)->Bitmap.Width),
+ ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_1BIT_BLOCK *)CurrentImageBlock)->Bitmap.Height)
+ );
+ break;
+ case EFI_HII_IIBT_IMAGE_4BIT:
+ case EFI_HII_IIBT_IMAGE_4BIT_TRANS:
+ OldBlockSize = sizeof (EFI_HII_IIBT_IMAGE_4BIT_BLOCK) - sizeof (UINT8) +
+ BITMAP_LEN_4_BIT (
+ ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_4BIT_BLOCK *)CurrentImageBlock)->Bitmap.Width),
+ ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_4BIT_BLOCK *)CurrentImageBlock)->Bitmap.Height)
+ );
+ break;
+ case EFI_HII_IIBT_IMAGE_8BIT:
+ case EFI_HII_IIBT_IMAGE_8BIT_TRANS:
+ OldBlockSize = sizeof (EFI_HII_IIBT_IMAGE_8BIT_BLOCK) - sizeof (UINT8) +
+ BITMAP_LEN_8_BIT (
+ (UINT32)ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_8BIT_BLOCK *)CurrentImageBlock)->Bitmap.Width),
+ ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_8BIT_BLOCK *)CurrentImageBlock)->Bitmap.Height)
+ );
+ break;
+ case EFI_HII_IIBT_IMAGE_24BIT:
+ case EFI_HII_IIBT_IMAGE_24BIT_TRANS:
+ OldBlockSize = sizeof (EFI_HII_IIBT_IMAGE_24BIT_BLOCK) - sizeof (EFI_HII_RGB_PIXEL) +
+ BITMAP_LEN_24_BIT (
+ (UINT32)ReadUnaligned16 ((VOID *)&((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *)CurrentImageBlock)->Bitmap.Width),
+ ReadUnaligned16 ((VOID *)&((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *)CurrentImageBlock)->Bitmap.Height)
+ );
+ break;
+ default:
+ EfiReleaseLock (&mHiiDatabaseLock);
+ return EFI_NOT_FOUND;
}
//
@@ -1167,10 +1181,12 @@ HiiSetImage ( EfiReleaseLock (&mHiiDatabaseLock);
return EFI_OUT_OF_RESOURCES;
}
+
NewBlockSize = NewBlockSize * 3 + (sizeof (EFI_HII_IIBT_IMAGE_24BIT_BLOCK) - sizeof (EFI_HII_RGB_PIXEL));
if ((NewBlockSize > OldBlockSize) &&
(NewBlockSize - OldBlockSize > MAX_UINT24 - ImagePackage->ImagePkgHdr.Header.Length)
- ) {
+ )
+ {
EfiReleaseLock (&mHiiDatabaseLock);
return EFI_OUT_OF_RESOURCES;
}
@@ -1184,25 +1200,29 @@ HiiSetImage ( return EFI_OUT_OF_RESOURCES;
}
- Part1Size = (UINT32) ((UINTN) CurrentImageBlock - (UINTN) ImagePackage->ImageBlock);
+ Part1Size = (UINT32)((UINTN)CurrentImageBlock - (UINTN)ImagePackage->ImageBlock);
Part2Size = ImagePackage->ImageBlockSize - Part1Size - OldBlockSize;
CopyMem (ImageBlocks, ImagePackage->ImageBlock, Part1Size);
//
// Set the new image block
//
- NewImageBlock = (EFI_HII_IMAGE_BLOCK *) ((UINT8 *) ImageBlocks + Part1Size);
+ NewImageBlock = (EFI_HII_IMAGE_BLOCK *)((UINT8 *)ImageBlocks + Part1Size);
if ((Image->Flags & EFI_IMAGE_TRANSPARENT) == EFI_IMAGE_TRANSPARENT) {
- NewImageBlock->BlockType= EFI_HII_IIBT_IMAGE_24BIT_TRANS;
+ NewImageBlock->BlockType = EFI_HII_IIBT_IMAGE_24BIT_TRANS;
} else {
NewImageBlock->BlockType = EFI_HII_IIBT_IMAGE_24BIT;
}
- WriteUnaligned16 ((VOID *) &((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *) NewImageBlock)->Bitmap.Width, Image->Width);
- WriteUnaligned16 ((VOID *) &((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *) NewImageBlock)->Bitmap.Height, Image->Height);
- CopyGopToRgbPixel (((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *) NewImageBlock)->Bitmap.Bitmap,
- Image->Bitmap, (UINT32) Image->Width * Image->Height);
- CopyMem ((UINT8 *) NewImageBlock + NewBlockSize, (UINT8 *) CurrentImageBlock + OldBlockSize, Part2Size);
+ WriteUnaligned16 ((VOID *)&((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *)NewImageBlock)->Bitmap.Width, Image->Width);
+ WriteUnaligned16 ((VOID *)&((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *)NewImageBlock)->Bitmap.Height, Image->Height);
+ CopyGopToRgbPixel (
+ ((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *)NewImageBlock)->Bitmap.Bitmap,
+ Image->Bitmap,
+ (UINT32)Image->Width * Image->Height
+ );
+
+ CopyMem ((UINT8 *)NewImageBlock + NewBlockSize, (UINT8 *)CurrentImageBlock + OldBlockSize, Part2Size);
FreePool (ImagePackage->ImageBlock);
ImagePackage->ImageBlock = ImageBlocks;
@@ -1215,15 +1235,13 @@ HiiSetImage ( // Only after ReadyToBoot to do the export.
//
if (gExportAfterReadyToBoot) {
- HiiGetDatabaseInfo(&Private->HiiDatabase);
+ HiiGetDatabaseInfo (&Private->HiiDatabase);
}
EfiReleaseLock (&mHiiDatabaseLock);
return EFI_SUCCESS;
-
}
-
/**
This function renders an image to a bitmap or the screen using the specified
color and options. It draws the image on an existing bitmap, allocates a new
@@ -1254,34 +1272,34 @@ HiiSetImage ( EFI_STATUS
EFIAPI
HiiDrawImage (
- IN CONST EFI_HII_IMAGE_PROTOCOL *This,
- IN EFI_HII_DRAW_FLAGS Flags,
- IN CONST EFI_IMAGE_INPUT *Image,
- IN OUT EFI_IMAGE_OUTPUT **Blt,
- IN UINTN BltX,
- IN UINTN BltY
+ IN CONST EFI_HII_IMAGE_PROTOCOL *This,
+ IN EFI_HII_DRAW_FLAGS Flags,
+ IN CONST EFI_IMAGE_INPUT *Image,
+ IN OUT EFI_IMAGE_OUTPUT **Blt,
+ IN UINTN BltX,
+ IN UINTN BltY
)
{
- EFI_STATUS Status;
- HII_DATABASE_PRIVATE_DATA *Private;
- BOOLEAN Transparent;
- EFI_IMAGE_OUTPUT *ImageOut;
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer;
- UINTN BufferLen;
- UINT16 Width;
- UINT16 Height;
- UINTN Xpos;
- UINTN Ypos;
- UINTN OffsetY1;
- UINTN OffsetY2;
- EFI_FONT_DISPLAY_INFO *FontInfo;
- UINTN Index;
-
- if (This == NULL || Image == NULL || Blt == NULL) {
+ EFI_STATUS Status;
+ HII_DATABASE_PRIVATE_DATA *Private;
+ BOOLEAN Transparent;
+ EFI_IMAGE_OUTPUT *ImageOut;
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer;
+ UINTN BufferLen;
+ UINT16 Width;
+ UINT16 Height;
+ UINTN Xpos;
+ UINTN Ypos;
+ UINTN OffsetY1;
+ UINTN OffsetY2;
+ EFI_FONT_DISPLAY_INFO *FontInfo;
+ UINTN Index;
+
+ if ((This == NULL) || (Image == NULL) || (Blt == NULL)) {
return EFI_INVALID_PARAMETER;
}
- if ((Flags & EFI_HII_DRAW_FLAG_CLIP) == EFI_HII_DRAW_FLAG_CLIP && *Blt == NULL) {
+ if (((Flags & EFI_HII_DRAW_FLAG_CLIP) == EFI_HII_DRAW_FLAG_CLIP) && (*Blt == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -1297,7 +1315,7 @@ HiiDrawImage ( Transparent = FALSE;
if ((Flags & EFI_HII_DRAW_FLAG_TRANSPARENT) == EFI_HII_DRAW_FLAG_FORCE_TRANS) {
Transparent = TRUE;
- } else if ((Flags & EFI_HII_DRAW_FLAG_TRANSPARENT) == EFI_HII_DRAW_FLAG_FORCE_OPAQUE){
+ } else if ((Flags & EFI_HII_DRAW_FLAG_TRANSPARENT) == EFI_HII_DRAW_FLAG_FORCE_OPAQUE) {
Transparent = FALSE;
} else {
//
@@ -1346,6 +1364,7 @@ HiiDrawImage ( if (Width > (*Blt)->Width - (UINT16)BltX) {
Width = (*Blt)->Width - (UINT16)BltX;
}
+
if (Height > (*Blt)->Height - (UINT16)BltY) {
Height = (*Blt)->Height - (UINT16)BltY;
}
@@ -1358,13 +1377,14 @@ HiiDrawImage ( if (BufferLen > MAX_UINTN / sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL)) {
return EFI_OUT_OF_RESOURCES;
}
+
BufferLen *= sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL);
BltBuffer = AllocateZeroPool (BufferLen);
if (BltBuffer == NULL) {
return EFI_OUT_OF_RESOURCES;
}
- if (Width == Image->Width && Height == Image->Height) {
+ if ((Width == Image->Width) && (Height == Image->Height)) {
CopyMem (BltBuffer, Image->Bitmap, BufferLen);
} else {
for (Ypos = 0; Ypos < Height; Ypos++) {
@@ -1412,12 +1432,10 @@ HiiDrawImage ( Transparent,
Blt
);
-
}
FreePool (BltBuffer);
return Status;
-
} else {
//
// Allocate a new bitmap to hold the incoming image.
@@ -1440,17 +1458,19 @@ HiiDrawImage ( if (BufferLen > MAX_UINTN / sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL)) {
return EFI_OUT_OF_RESOURCES;
}
+
BufferLen *= sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL);
BltBuffer = AllocateZeroPool (BufferLen);
if (BltBuffer == NULL) {
return EFI_OUT_OF_RESOURCES;
}
- ImageOut = (EFI_IMAGE_OUTPUT *) AllocateZeroPool (sizeof (EFI_IMAGE_OUTPUT));
+ ImageOut = (EFI_IMAGE_OUTPUT *)AllocateZeroPool (sizeof (EFI_IMAGE_OUTPUT));
if (ImageOut == NULL) {
FreePool (BltBuffer);
return EFI_OUT_OF_RESOURCES;
}
+
ImageOut->Width = Width;
ImageOut->Height = Height;
ImageOut->Image.Bitmap = BltBuffer;
@@ -1465,10 +1485,12 @@ HiiDrawImage ( FreePool (ImageOut);
return Status;
}
+
ASSERT (FontInfo != NULL);
for (Index = 0; Index < (UINTN)Width * Height; Index++) {
BltBuffer[Index] = FontInfo->BackgroundColor;
}
+
FreePool (FontInfo);
//
@@ -1484,11 +1506,9 @@ HiiDrawImage ( Transparent,
Blt
);
-
}
}
-
/**
This function renders an image to a bitmap or the screen using the specified
color and options. It draws the image on an existing bitmap, allocates a new
@@ -1524,22 +1544,22 @@ HiiDrawImage ( EFI_STATUS
EFIAPI
HiiDrawImageId (
- IN CONST EFI_HII_IMAGE_PROTOCOL *This,
- IN EFI_HII_DRAW_FLAGS Flags,
- IN EFI_HII_HANDLE PackageList,
- IN EFI_IMAGE_ID ImageId,
- IN OUT EFI_IMAGE_OUTPUT **Blt,
- IN UINTN BltX,
- IN UINTN BltY
+ IN CONST EFI_HII_IMAGE_PROTOCOL *This,
+ IN EFI_HII_DRAW_FLAGS Flags,
+ IN EFI_HII_HANDLE PackageList,
+ IN EFI_IMAGE_ID ImageId,
+ IN OUT EFI_IMAGE_OUTPUT **Blt,
+ IN UINTN BltX,
+ IN UINTN BltY
)
{
- EFI_STATUS Status;
- EFI_IMAGE_INPUT Image;
+ EFI_STATUS Status;
+ EFI_IMAGE_INPUT Image;
//
// Check input parameter.
//
- if (This == NULL || Blt == NULL) {
+ if ((This == NULL) || (Blt == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -1558,6 +1578,6 @@ HiiDrawImageId ( if (Image.Bitmap != NULL) {
FreePool (Image.Bitmap);
}
+
return Status;
}
-
diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/ImageEx.c b/MdeModulePkg/Universal/HiiDatabaseDxe/ImageEx.c index 07e8b3b569..f394e1333c 100644 --- a/MdeModulePkg/Universal/HiiDatabaseDxe/ImageEx.c +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/ImageEx.c @@ -7,7 +7,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/
-
#include "HiiDatabase.h"
/**
@@ -29,13 +28,13 @@ SPDX-License-Identifier: BSD-2-Clause-Patent EFI_STATUS
EFIAPI
HiiNewImageEx (
- IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
- IN EFI_HII_HANDLE PackageList,
- OUT EFI_IMAGE_ID *ImageId,
- IN CONST EFI_IMAGE_INPUT *Image
+ IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
+ IN EFI_HII_HANDLE PackageList,
+ OUT EFI_IMAGE_ID *ImageId,
+ IN CONST EFI_IMAGE_INPUT *Image
)
{
- HII_DATABASE_PRIVATE_DATA *Private;
+ HII_DATABASE_PRIVATE_DATA *Private;
Private = HII_IMAGE_EX_DATABASE_PRIVATE_DATA_FROM_THIS (This);
return HiiNewImage (&Private->HiiImage, PackageList, ImageId, Image);
@@ -69,19 +68,18 @@ HiiNewImageEx ( EFI_STATUS
EFIAPI
HiiGetImageEx (
- IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
- IN EFI_HII_HANDLE PackageList,
- IN EFI_IMAGE_ID ImageId,
- OUT EFI_IMAGE_INPUT *Image
+ IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
+ IN EFI_HII_HANDLE PackageList,
+ IN EFI_IMAGE_ID ImageId,
+ OUT EFI_IMAGE_INPUT *Image
)
{
- HII_DATABASE_PRIVATE_DATA *Private;
+ HII_DATABASE_PRIVATE_DATA *Private;
Private = HII_IMAGE_EX_DATABASE_PRIVATE_DATA_FROM_THIS (This);
return IGetImage (&Private->DatabaseList, PackageList, ImageId, Image, FALSE);
}
-
/**
Change the information about the image.
@@ -104,18 +102,18 @@ HiiGetImageEx ( EFI_STATUS
EFIAPI
HiiSetImageEx (
- IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
- IN EFI_HII_HANDLE PackageList,
- IN EFI_IMAGE_ID ImageId,
- IN CONST EFI_IMAGE_INPUT *Image
+ IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
+ IN EFI_HII_HANDLE PackageList,
+ IN EFI_IMAGE_ID ImageId,
+ IN CONST EFI_IMAGE_INPUT *Image
)
{
- HII_DATABASE_PRIVATE_DATA *Private;
+ HII_DATABASE_PRIVATE_DATA *Private;
+
Private = HII_IMAGE_EX_DATABASE_PRIVATE_DATA_FROM_THIS (This);
return HiiSetImage (&Private->HiiImage, PackageList, ImageId, Image);
}
-
/**
Renders an image to a bitmap or to the display.
@@ -147,20 +145,20 @@ HiiSetImageEx ( EFI_STATUS
EFIAPI
HiiDrawImageEx (
- IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
- IN EFI_HII_DRAW_FLAGS Flags,
- IN CONST EFI_IMAGE_INPUT *Image,
- IN OUT EFI_IMAGE_OUTPUT **Blt,
- IN UINTN BltX,
- IN UINTN BltY
+ IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
+ IN EFI_HII_DRAW_FLAGS Flags,
+ IN CONST EFI_IMAGE_INPUT *Image,
+ IN OUT EFI_IMAGE_OUTPUT **Blt,
+ IN UINTN BltX,
+ IN UINTN BltY
)
{
- HII_DATABASE_PRIVATE_DATA *Private;
+ HII_DATABASE_PRIVATE_DATA *Private;
+
Private = HII_IMAGE_EX_DATABASE_PRIVATE_DATA_FROM_THIS (This);
return HiiDrawImage (&Private->HiiImage, Flags, Image, Blt, BltX, BltY);
}
-
/**
Renders an image to a bitmap or the screen containing the contents of the specified
image.
@@ -200,22 +198,22 @@ HiiDrawImageEx ( EFI_STATUS
EFIAPI
HiiDrawImageIdEx (
- IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
- IN EFI_HII_DRAW_FLAGS Flags,
- IN EFI_HII_HANDLE PackageList,
- IN EFI_IMAGE_ID ImageId,
- IN OUT EFI_IMAGE_OUTPUT **Blt,
- IN UINTN BltX,
- IN UINTN BltY
+ IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
+ IN EFI_HII_DRAW_FLAGS Flags,
+ IN EFI_HII_HANDLE PackageList,
+ IN EFI_IMAGE_ID ImageId,
+ IN OUT EFI_IMAGE_OUTPUT **Blt,
+ IN UINTN BltX,
+ IN UINTN BltY
)
{
- EFI_STATUS Status;
- EFI_IMAGE_INPUT Image;
+ EFI_STATUS Status;
+ EFI_IMAGE_INPUT Image;
//
// Check input parameter.
//
- if (This == NULL || Blt == NULL) {
+ if ((This == NULL) || (Blt == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -234,6 +232,7 @@ HiiDrawImageIdEx ( if (Image.Bitmap != NULL) {
FreePool (Image.Bitmap);
}
+
return Status;
}
@@ -246,39 +245,40 @@ HiiDrawImageIdEx ( **/
EFI_HII_IMAGE_DECODER_PROTOCOL *
LocateHiiImageDecoder (
- UINT8 BlockType
+ UINT8 BlockType
)
{
- EFI_STATUS Status;
- EFI_HII_IMAGE_DECODER_PROTOCOL *Decoder;
- EFI_HANDLE *Handles;
- UINTN HandleNum;
- UINTN Index;
- EFI_GUID *DecoderNames;
- UINT16 NumberOfDecoderName;
- UINT16 DecoderNameIndex;
- EFI_GUID *DecoderName;
+ EFI_STATUS Status;
+ EFI_HII_IMAGE_DECODER_PROTOCOL *Decoder;
+ EFI_HANDLE *Handles;
+ UINTN HandleNum;
+ UINTN Index;
+ EFI_GUID *DecoderNames;
+ UINT16 NumberOfDecoderName;
+ UINT16 DecoderNameIndex;
+ EFI_GUID *DecoderName;
switch (BlockType) {
- case EFI_HII_IIBT_IMAGE_JPEG:
- DecoderName = &gEfiHiiImageDecoderNameJpegGuid;
- break;
+ case EFI_HII_IIBT_IMAGE_JPEG:
+ DecoderName = &gEfiHiiImageDecoderNameJpegGuid;
+ break;
- case EFI_HII_IIBT_IMAGE_PNG:
- DecoderName = &gEfiHiiImageDecoderNamePngGuid;
- break;
+ case EFI_HII_IIBT_IMAGE_PNG:
+ DecoderName = &gEfiHiiImageDecoderNamePngGuid;
+ break;
- default:
- ASSERT (FALSE);
- return NULL;
+ default:
+ ASSERT (FALSE);
+ return NULL;
}
Status = gBS->LocateHandleBuffer (ByProtocol, &gEfiHiiImageDecoderProtocolGuid, NULL, &HandleNum, &Handles);
if (EFI_ERROR (Status)) {
return NULL;
}
+
for (Index = 0; Index < HandleNum; Index++) {
- Status = gBS->HandleProtocol (Handles[Index], &gEfiHiiImageDecoderProtocolGuid, (VOID **) &Decoder);
+ Status = gBS->HandleProtocol (Handles[Index], &gEfiHiiImageDecoderProtocolGuid, (VOID **)&Decoder);
if (EFI_ERROR (Status)) {
continue;
}
@@ -287,6 +287,7 @@ LocateHiiImageDecoder ( if (EFI_ERROR (Status)) {
continue;
}
+
for (DecoderNameIndex = 0; DecoderNameIndex < NumberOfDecoderName; DecoderNameIndex++) {
if (CompareGuid (DecoderName, &DecoderNames[DecoderNameIndex])) {
return Decoder;
@@ -323,29 +324,30 @@ LocateHiiImageDecoder ( EFI_STATUS
EFIAPI
HiiGetImageInfo (
- IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
- IN EFI_HII_HANDLE PackageList,
- IN EFI_IMAGE_ID ImageId,
- OUT EFI_IMAGE_OUTPUT *Image
+ IN CONST EFI_HII_IMAGE_EX_PROTOCOL *This,
+ IN EFI_HII_HANDLE PackageList,
+ IN EFI_IMAGE_ID ImageId,
+ OUT EFI_IMAGE_OUTPUT *Image
)
{
- EFI_STATUS Status;
- HII_DATABASE_PRIVATE_DATA *Private;
- HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageListNode;
- HII_IMAGE_PACKAGE_INSTANCE *ImagePackage;
- EFI_HII_IMAGE_BLOCK *CurrentImageBlock;
- EFI_HII_IMAGE_DECODER_PROTOCOL *Decoder;
- EFI_HII_IMAGE_DECODER_IMAGE_INFO_HEADER *ImageInfo;
-
- if (Image == NULL || ImageId == 0) {
+ EFI_STATUS Status;
+ HII_DATABASE_PRIVATE_DATA *Private;
+ HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageListNode;
+ HII_IMAGE_PACKAGE_INSTANCE *ImagePackage;
+ EFI_HII_IMAGE_BLOCK *CurrentImageBlock;
+ EFI_HII_IMAGE_DECODER_PROTOCOL *Decoder;
+ EFI_HII_IMAGE_DECODER_IMAGE_INFO_HEADER *ImageInfo;
+
+ if ((Image == NULL) || (ImageId == 0)) {
return EFI_INVALID_PARAMETER;
}
- Private = HII_IMAGE_EX_DATABASE_PRIVATE_DATA_FROM_THIS (This);
+ Private = HII_IMAGE_EX_DATABASE_PRIVATE_DATA_FROM_THIS (This);
PackageListNode = LocatePackageList (&Private->DatabaseList, PackageList);
if (PackageListNode == NULL) {
return EFI_NOT_FOUND;
}
+
ImagePackage = PackageListNode->ImagePkg;
if (ImagePackage == NULL) {
return EFI_NOT_FOUND;
@@ -360,62 +362,68 @@ HiiGetImageInfo ( }
switch (CurrentImageBlock->BlockType) {
- case EFI_HII_IIBT_IMAGE_JPEG:
- case EFI_HII_IIBT_IMAGE_PNG:
- Decoder = LocateHiiImageDecoder (CurrentImageBlock->BlockType);
- if (Decoder == NULL) {
- return EFI_UNSUPPORTED;
- }
- //
- // Use the common block code since the definition of two structures is the same.
- //
- ASSERT (OFFSET_OF (EFI_HII_IIBT_JPEG_BLOCK, Data) == OFFSET_OF (EFI_HII_IIBT_PNG_BLOCK, Data));
- ASSERT (sizeof (((EFI_HII_IIBT_JPEG_BLOCK *) CurrentImageBlock)->Data) ==
- sizeof (((EFI_HII_IIBT_PNG_BLOCK *) CurrentImageBlock)->Data));
- ASSERT (OFFSET_OF (EFI_HII_IIBT_JPEG_BLOCK, Size) == OFFSET_OF (EFI_HII_IIBT_PNG_BLOCK, Size));
- ASSERT (sizeof (((EFI_HII_IIBT_JPEG_BLOCK *) CurrentImageBlock)->Size) ==
- sizeof (((EFI_HII_IIBT_PNG_BLOCK *) CurrentImageBlock)->Size));
- Status = Decoder->GetImageInfo (
- Decoder,
- ((EFI_HII_IIBT_JPEG_BLOCK *) CurrentImageBlock)->Data,
- ((EFI_HII_IIBT_JPEG_BLOCK *) CurrentImageBlock)->Size,
- &ImageInfo
- );
-
- //
- // Spec requires to use the first capable image decoder instance.
- // The first image decoder instance may fail to decode the image.
- //
- if (!EFI_ERROR (Status)) {
- Image->Height = ImageInfo->ImageHeight;
- Image->Width = ImageInfo->ImageWidth;
+ case EFI_HII_IIBT_IMAGE_JPEG:
+ case EFI_HII_IIBT_IMAGE_PNG:
+ Decoder = LocateHiiImageDecoder (CurrentImageBlock->BlockType);
+ if (Decoder == NULL) {
+ return EFI_UNSUPPORTED;
+ }
+
+ //
+ // Use the common block code since the definition of two structures is the same.
+ //
+ ASSERT (OFFSET_OF (EFI_HII_IIBT_JPEG_BLOCK, Data) == OFFSET_OF (EFI_HII_IIBT_PNG_BLOCK, Data));
+ ASSERT (
+ sizeof (((EFI_HII_IIBT_JPEG_BLOCK *)CurrentImageBlock)->Data) ==
+ sizeof (((EFI_HII_IIBT_PNG_BLOCK *)CurrentImageBlock)->Data)
+ );
+ ASSERT (OFFSET_OF (EFI_HII_IIBT_JPEG_BLOCK, Size) == OFFSET_OF (EFI_HII_IIBT_PNG_BLOCK, Size));
+ ASSERT (
+ sizeof (((EFI_HII_IIBT_JPEG_BLOCK *)CurrentImageBlock)->Size) ==
+ sizeof (((EFI_HII_IIBT_PNG_BLOCK *)CurrentImageBlock)->Size)
+ );
+ Status = Decoder->GetImageInfo (
+ Decoder,
+ ((EFI_HII_IIBT_JPEG_BLOCK *)CurrentImageBlock)->Data,
+ ((EFI_HII_IIBT_JPEG_BLOCK *)CurrentImageBlock)->Size,
+ &ImageInfo
+ );
+
+ //
+ // Spec requires to use the first capable image decoder instance.
+ // The first image decoder instance may fail to decode the image.
+ //
+ if (!EFI_ERROR (Status)) {
+ Image->Height = ImageInfo->ImageHeight;
+ Image->Width = ImageInfo->ImageWidth;
+ Image->Image.Bitmap = NULL;
+ FreePool (ImageInfo);
+ }
+
+ return Status;
+
+ case EFI_HII_IIBT_IMAGE_1BIT_TRANS:
+ case EFI_HII_IIBT_IMAGE_4BIT_TRANS:
+ case EFI_HII_IIBT_IMAGE_8BIT_TRANS:
+ case EFI_HII_IIBT_IMAGE_1BIT:
+ case EFI_HII_IIBT_IMAGE_4BIT:
+ case EFI_HII_IIBT_IMAGE_8BIT:
+ //
+ // Use the common block code since the definition of these structures is the same.
+ //
+ Image->Width = ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_1BIT_BLOCK *)CurrentImageBlock)->Bitmap.Width);
+ Image->Height = ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_1BIT_BLOCK *)CurrentImageBlock)->Bitmap.Height);
Image->Image.Bitmap = NULL;
- FreePool (ImageInfo);
- }
- return Status;
+ return EFI_SUCCESS;
- case EFI_HII_IIBT_IMAGE_1BIT_TRANS:
- case EFI_HII_IIBT_IMAGE_4BIT_TRANS:
- case EFI_HII_IIBT_IMAGE_8BIT_TRANS:
- case EFI_HII_IIBT_IMAGE_1BIT:
- case EFI_HII_IIBT_IMAGE_4BIT:
- case EFI_HII_IIBT_IMAGE_8BIT:
- //
- // Use the common block code since the definition of these structures is the same.
- //
- Image->Width = ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_1BIT_BLOCK *) CurrentImageBlock)->Bitmap.Width);
- Image->Height = ReadUnaligned16 (&((EFI_HII_IIBT_IMAGE_1BIT_BLOCK *) CurrentImageBlock)->Bitmap.Height);
- Image->Image.Bitmap = NULL;
- return EFI_SUCCESS;
-
- case EFI_HII_IIBT_IMAGE_24BIT_TRANS:
- case EFI_HII_IIBT_IMAGE_24BIT:
- Image->Width = ReadUnaligned16 ((VOID *) &((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *) CurrentImageBlock)->Bitmap.Width);
- Image->Height = ReadUnaligned16 ((VOID *) &((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *) CurrentImageBlock)->Bitmap.Height);
- Image->Image.Bitmap = NULL;
- return EFI_SUCCESS;
-
- default:
- return EFI_NOT_FOUND;
+ case EFI_HII_IIBT_IMAGE_24BIT_TRANS:
+ case EFI_HII_IIBT_IMAGE_24BIT:
+ Image->Width = ReadUnaligned16 ((VOID *)&((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *)CurrentImageBlock)->Bitmap.Width);
+ Image->Height = ReadUnaligned16 ((VOID *)&((EFI_HII_IIBT_IMAGE_24BIT_BLOCK *)CurrentImageBlock)->Bitmap.Height);
+ Image->Image.Bitmap = NULL;
+ return EFI_SUCCESS;
+
+ default:
+ return EFI_NOT_FOUND;
}
}
diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/String.c b/MdeModulePkg/Universal/HiiDatabaseDxe/String.c index 43e3b360cb..e3fceed7c4 100644 --- a/MdeModulePkg/Universal/HiiDatabaseDxe/String.c +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/String.c @@ -8,17 +8,15 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/
-
#include "HiiDatabase.h"
-CHAR16 mLanguageWindow[16] = {
+CHAR16 mLanguageWindow[16] = {
0x0000, 0x0080, 0x0100, 0x0300,
0x2000, 0x2080, 0x2100, 0x3000,
0x0080, 0x00C0, 0x0400, 0x0600,
0x0900, 0x3040, 0x30A0, 0xFF00
};
-
/**
This function checks whether a global font info is referred by local
font info list or not. (i.e. HII_FONT_INFO is generated.) If not, create
@@ -44,16 +42,16 @@ CHAR16 mLanguageWindow[16] = { **/
BOOLEAN
ReferFontInfoLocally (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN HII_STRING_PACKAGE_INSTANCE *StringPackage,
- IN UINT8 FontId,
- IN BOOLEAN DuplicateEnable,
- IN HII_GLOBAL_FONT_INFO *GlobalFontInfo,
- OUT HII_FONT_INFO **LocalFontInfo
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN HII_STRING_PACKAGE_INSTANCE *StringPackage,
+ IN UINT8 FontId,
+ IN BOOLEAN DuplicateEnable,
+ IN HII_GLOBAL_FONT_INFO *GlobalFontInfo,
+ OUT HII_FONT_INFO **LocalFontInfo
)
{
- HII_FONT_INFO *LocalFont;
- LIST_ENTRY *Link;
+ HII_FONT_INFO *LocalFont;
+ LIST_ENTRY *Link;
ASSERT (Private != NULL && StringPackage != NULL && GlobalFontInfo != NULL && LocalFontInfo != NULL);
@@ -61,7 +59,8 @@ ReferFontInfoLocally ( for (Link = StringPackage->FontInfoList.ForwardLink;
Link != &StringPackage->FontInfoList;
Link = Link->ForwardLink
- ) {
+ )
+ {
LocalFont = CR (Link, HII_FONT_INFO, Entry, HII_FONT_INFO_SIGNATURE);
if (LocalFont->GlobalEntry == &GlobalFontInfo->Entry) {
//
@@ -72,11 +71,12 @@ ReferFontInfoLocally ( }
}
}
+
// FontId identifies EFI_FONT_INFO in local string package uniquely.
// GlobalEntry points to a HII_GLOBAL_FONT_INFO which identifies
// EFI_FONT_INFO uniquely in whole hii database.
//
- LocalFont = (HII_FONT_INFO *) AllocateZeroPool (sizeof (HII_FONT_INFO));
+ LocalFont = (HII_FONT_INFO *)AllocateZeroPool (sizeof (HII_FONT_INFO));
ASSERT (LocalFont != NULL);
LocalFont->Signature = HII_FONT_INFO_SIGNATURE;
@@ -88,7 +88,6 @@ ReferFontInfoLocally ( return FALSE;
}
-
/**
Convert Ascii string text to unicode string test.
@@ -108,9 +107,9 @@ ReferFontInfoLocally ( **/
EFI_STATUS
ConvertToUnicodeText (
- OUT EFI_STRING StringDest,
- IN CHAR8 *StringSrc,
- IN OUT UINTN *BufferSize
+ OUT EFI_STRING StringDest,
+ IN CHAR8 *StringSrc,
+ IN OUT UINTN *BufferSize
)
{
UINTN StringSize;
@@ -119,20 +118,19 @@ ConvertToUnicodeText ( ASSERT (StringSrc != NULL && BufferSize != NULL);
StringSize = AsciiStrSize (StringSrc) * 2;
- if (*BufferSize < StringSize || StringDest == NULL) {
+ if ((*BufferSize < StringSize) || (StringDest == NULL)) {
*BufferSize = StringSize;
return EFI_BUFFER_TOO_SMALL;
}
for (Index = 0; Index < AsciiStrLen (StringSrc); Index++) {
- StringDest[Index] = (CHAR16) StringSrc[Index];
+ StringDest[Index] = (CHAR16)StringSrc[Index];
}
StringDest[Index] = 0;
return EFI_SUCCESS;
}
-
/**
Calculate the size of StringSrc and output it. If StringDest is not NULL,
copy string text from src to dest.
@@ -152,9 +150,9 @@ ConvertToUnicodeText ( **/
EFI_STATUS
GetUnicodeStringTextOrSize (
- OUT EFI_STRING StringDest OPTIONAL,
- IN UINT8 *StringSrc,
- IN OUT UINTN *BufferSize
+ OUT EFI_STRING StringDest OPTIONAL,
+ IN UINT8 *StringSrc,
+ IN OUT UINTN *BufferSize
)
{
UINTN StringSize;
@@ -164,15 +162,16 @@ GetUnicodeStringTextOrSize ( StringSize = sizeof (CHAR16);
StringPtr = StringSrc;
- while (ReadUnaligned16 ((UINT16 *) StringPtr) != 0) {
+ while (ReadUnaligned16 ((UINT16 *)StringPtr) != 0) {
StringSize += sizeof (CHAR16);
- StringPtr += sizeof (CHAR16);
+ StringPtr += sizeof (CHAR16);
}
if (*BufferSize < StringSize) {
*BufferSize = StringSize;
return EFI_BUFFER_TOO_SMALL;
}
+
if (StringDest != NULL) {
CopyMem (StringDest, StringSrc, StringSize);
}
@@ -181,7 +180,6 @@ GetUnicodeStringTextOrSize ( return EFI_SUCCESS;
}
-
/**
Copy string font info to a buffer.
@@ -199,25 +197,26 @@ GetUnicodeStringTextOrSize ( **/
EFI_STATUS
GetStringFontInfo (
- IN HII_STRING_PACKAGE_INSTANCE *StringPackage,
- IN UINT8 FontId,
- OUT EFI_FONT_INFO **StringFontInfo
+ IN HII_STRING_PACKAGE_INSTANCE *StringPackage,
+ IN UINT8 FontId,
+ OUT EFI_FONT_INFO **StringFontInfo
)
{
- LIST_ENTRY *Link;
- HII_FONT_INFO *FontInfo;
- HII_GLOBAL_FONT_INFO *GlobalFont;
+ LIST_ENTRY *Link;
+ HII_FONT_INFO *FontInfo;
+ HII_GLOBAL_FONT_INFO *GlobalFont;
ASSERT (StringFontInfo != NULL && StringPackage != NULL);
for (Link = StringPackage->FontInfoList.ForwardLink; Link != &StringPackage->FontInfoList; Link = Link->ForwardLink) {
FontInfo = CR (Link, HII_FONT_INFO, Entry, HII_FONT_INFO_SIGNATURE);
if (FontInfo->FontId == FontId) {
- GlobalFont = CR (FontInfo->GlobalEntry, HII_GLOBAL_FONT_INFO, Entry, HII_GLOBAL_FONT_INFO_SIGNATURE);
- *StringFontInfo = (EFI_FONT_INFO *) AllocateZeroPool (GlobalFont->FontInfoSize);
+ GlobalFont = CR (FontInfo->GlobalEntry, HII_GLOBAL_FONT_INFO, Entry, HII_GLOBAL_FONT_INFO_SIGNATURE);
+ *StringFontInfo = (EFI_FONT_INFO *)AllocateZeroPool (GlobalFont->FontInfoSize);
if (*StringFontInfo == NULL) {
return EFI_OUT_OF_RESOURCES;
}
+
CopyMem (*StringFontInfo, GlobalFont->FontInfo, GlobalFont->FontInfoSize);
return EFI_SUCCESS;
}
@@ -226,7 +225,6 @@ GetStringFontInfo ( return EFI_NOT_FOUND;
}
-
/**
Parse all string blocks to find a String block specified by StringId.
If StringId = (EFI_STRING_ID) (-1), find out all EFI_HII_SIBT_FONT blocks
@@ -255,51 +253,51 @@ GetStringFontInfo ( **/
EFI_STATUS
FindStringBlock (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN HII_STRING_PACKAGE_INSTANCE *StringPackage,
- IN EFI_STRING_ID StringId,
- OUT UINT8 *BlockType OPTIONAL,
- OUT UINT8 **StringBlockAddr OPTIONAL,
- OUT UINTN *StringTextOffset OPTIONAL,
- OUT EFI_STRING_ID *LastStringId OPTIONAL,
- OUT EFI_STRING_ID *StartStringId OPTIONAL
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN HII_STRING_PACKAGE_INSTANCE *StringPackage,
+ IN EFI_STRING_ID StringId,
+ OUT UINT8 *BlockType OPTIONAL,
+ OUT UINT8 **StringBlockAddr OPTIONAL,
+ OUT UINTN *StringTextOffset OPTIONAL,
+ OUT EFI_STRING_ID *LastStringId OPTIONAL,
+ OUT EFI_STRING_ID *StartStringId OPTIONAL
)
{
- UINT8 *BlockHdr;
- EFI_STRING_ID CurrentStringId;
- UINTN BlockSize;
- UINTN Index;
- UINT8 *StringTextPtr;
- UINTN Offset;
- HII_FONT_INFO *LocalFont;
- EFI_FONT_INFO *FontInfo;
- HII_GLOBAL_FONT_INFO *GlobalFont;
- UINTN FontInfoSize;
- UINT16 StringCount;
- UINT16 SkipCount;
- EFI_HII_FONT_STYLE FontStyle;
- UINT16 FontSize;
- UINT8 Length8;
- EFI_HII_SIBT_EXT2_BLOCK Ext2;
- UINT8 FontId;
- UINT32 Length32;
- UINTN StringSize;
- CHAR16 Zero;
+ UINT8 *BlockHdr;
+ EFI_STRING_ID CurrentStringId;
+ UINTN BlockSize;
+ UINTN Index;
+ UINT8 *StringTextPtr;
+ UINTN Offset;
+ HII_FONT_INFO *LocalFont;
+ EFI_FONT_INFO *FontInfo;
+ HII_GLOBAL_FONT_INFO *GlobalFont;
+ UINTN FontInfoSize;
+ UINT16 StringCount;
+ UINT16 SkipCount;
+ EFI_HII_FONT_STYLE FontStyle;
+ UINT16 FontSize;
+ UINT8 Length8;
+ EFI_HII_SIBT_EXT2_BLOCK Ext2;
+ UINT8 FontId;
+ UINT32 Length32;
+ UINTN StringSize;
+ CHAR16 Zero;
ASSERT (StringPackage != NULL);
ASSERT (StringPackage->Signature == HII_STRING_PACKAGE_SIGNATURE);
CurrentStringId = 1;
- StringSize = 0;
+ StringSize = 0;
- if (StringId != (EFI_STRING_ID) (-1) && StringId != 0) {
+ if ((StringId != (EFI_STRING_ID)(-1)) && (StringId != 0)) {
ASSERT (BlockType != NULL && StringBlockAddr != NULL && StringTextOffset != NULL);
if (StringId > StringPackage->MaxStringId) {
return EFI_NOT_FOUND;
}
} else {
ASSERT (Private != NULL && Private->Signature == HII_DATABASE_PRIVATE_DATA_SIGNATURE);
- if (StringId == 0 && LastStringId != NULL) {
+ if ((StringId == 0) && (LastStringId != NULL)) {
*LastStringId = StringPackage->MaxStringId;
return EFI_SUCCESS;
}
@@ -315,234 +313,244 @@ FindStringBlock ( Offset = 0;
while (*BlockHdr != EFI_HII_SIBT_END) {
switch (*BlockHdr) {
- case EFI_HII_SIBT_STRING_SCSU:
- Offset = sizeof (EFI_HII_STRING_BLOCK);
- StringTextPtr = BlockHdr + Offset;
- BlockSize += Offset + AsciiStrSize ((CHAR8 *) StringTextPtr);
- CurrentStringId++;
- break;
-
- case EFI_HII_SIBT_STRING_SCSU_FONT:
- Offset = sizeof (EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK) - sizeof (UINT8);
- StringTextPtr = BlockHdr + Offset;
- BlockSize += Offset + AsciiStrSize ((CHAR8 *) StringTextPtr);
- CurrentStringId++;
- break;
-
- case EFI_HII_SIBT_STRINGS_SCSU:
- CopyMem (&StringCount, BlockHdr + sizeof (EFI_HII_STRING_BLOCK), sizeof (UINT16));
- StringTextPtr = (UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_SIBT_STRINGS_SCSU_BLOCK) - sizeof (UINT8));
- BlockSize += StringTextPtr - BlockHdr;
+ case EFI_HII_SIBT_STRING_SCSU:
+ Offset = sizeof (EFI_HII_STRING_BLOCK);
+ StringTextPtr = BlockHdr + Offset;
+ BlockSize += Offset + AsciiStrSize ((CHAR8 *)StringTextPtr);
+ CurrentStringId++;
+ break;
- for (Index = 0; Index < StringCount; Index++) {
- BlockSize += AsciiStrSize ((CHAR8 *) StringTextPtr);
- if (CurrentStringId == StringId) {
- ASSERT (BlockType != NULL && StringBlockAddr != NULL && StringTextOffset != NULL);
- *BlockType = *BlockHdr;
- *StringBlockAddr = BlockHdr;
- *StringTextOffset = StringTextPtr - BlockHdr;
- return EFI_SUCCESS;
- }
- StringTextPtr = StringTextPtr + AsciiStrSize ((CHAR8 *) StringTextPtr);
+ case EFI_HII_SIBT_STRING_SCSU_FONT:
+ Offset = sizeof (EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK) - sizeof (UINT8);
+ StringTextPtr = BlockHdr + Offset;
+ BlockSize += Offset + AsciiStrSize ((CHAR8 *)StringTextPtr);
CurrentStringId++;
- }
- break;
+ break;
- case EFI_HII_SIBT_STRINGS_SCSU_FONT:
- CopyMem (
- &StringCount,
- (UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),
- sizeof (UINT16)
- );
- StringTextPtr = (UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK) - sizeof (UINT8));
- BlockSize += StringTextPtr - BlockHdr;
+ case EFI_HII_SIBT_STRINGS_SCSU:
+ CopyMem (&StringCount, BlockHdr + sizeof (EFI_HII_STRING_BLOCK), sizeof (UINT16));
+ StringTextPtr = (UINT8 *)((UINTN)BlockHdr + sizeof (EFI_HII_SIBT_STRINGS_SCSU_BLOCK) - sizeof (UINT8));
+ BlockSize += StringTextPtr - BlockHdr;
+
+ for (Index = 0; Index < StringCount; Index++) {
+ BlockSize += AsciiStrSize ((CHAR8 *)StringTextPtr);
+ if (CurrentStringId == StringId) {
+ ASSERT (BlockType != NULL && StringBlockAddr != NULL && StringTextOffset != NULL);
+ *BlockType = *BlockHdr;
+ *StringBlockAddr = BlockHdr;
+ *StringTextOffset = StringTextPtr - BlockHdr;
+ return EFI_SUCCESS;
+ }
- for (Index = 0; Index < StringCount; Index++) {
- BlockSize += AsciiStrSize ((CHAR8 *) StringTextPtr);
- if (CurrentStringId == StringId) {
- ASSERT (BlockType != NULL && StringBlockAddr != NULL && StringTextOffset != NULL);
- *BlockType = *BlockHdr;
- *StringBlockAddr = BlockHdr;
- *StringTextOffset = StringTextPtr - BlockHdr;
- return EFI_SUCCESS;
+ StringTextPtr = StringTextPtr + AsciiStrSize ((CHAR8 *)StringTextPtr);
+ CurrentStringId++;
}
- StringTextPtr = StringTextPtr + AsciiStrSize ((CHAR8 *) StringTextPtr);
- CurrentStringId++;
- }
- break;
- case EFI_HII_SIBT_STRING_UCS2:
- Offset = sizeof (EFI_HII_STRING_BLOCK);
- StringTextPtr = BlockHdr + Offset;
- //
- // Use StringSize to store the size of the specified string, including the NULL
- // terminator.
- //
- GetUnicodeStringTextOrSize (NULL, StringTextPtr, &StringSize);
- BlockSize += Offset + StringSize;
- CurrentStringId++;
- break;
+ break;
- case EFI_HII_SIBT_STRING_UCS2_FONT:
- Offset = sizeof (EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK) - sizeof (CHAR16);
- StringTextPtr = BlockHdr + Offset;
- //
- // Use StrSize to store the size of the specified string, including the NULL
- // terminator.
- //
- GetUnicodeStringTextOrSize (NULL, StringTextPtr, &StringSize);
- BlockSize += Offset + StringSize;
- CurrentStringId++;
- break;
+ case EFI_HII_SIBT_STRINGS_SCSU_FONT:
+ CopyMem (
+ &StringCount,
+ (UINT8 *)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),
+ sizeof (UINT16)
+ );
+ StringTextPtr = (UINT8 *)((UINTN)BlockHdr + sizeof (EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK) - sizeof (UINT8));
+ BlockSize += StringTextPtr - BlockHdr;
+
+ for (Index = 0; Index < StringCount; Index++) {
+ BlockSize += AsciiStrSize ((CHAR8 *)StringTextPtr);
+ if (CurrentStringId == StringId) {
+ ASSERT (BlockType != NULL && StringBlockAddr != NULL && StringTextOffset != NULL);
+ *BlockType = *BlockHdr;
+ *StringBlockAddr = BlockHdr;
+ *StringTextOffset = StringTextPtr - BlockHdr;
+ return EFI_SUCCESS;
+ }
- case EFI_HII_SIBT_STRINGS_UCS2:
- Offset = sizeof (EFI_HII_SIBT_STRINGS_UCS2_BLOCK) - sizeof (CHAR16);
- StringTextPtr = BlockHdr + Offset;
- BlockSize += Offset;
- CopyMem (&StringCount, BlockHdr + sizeof (EFI_HII_STRING_BLOCK), sizeof (UINT16));
- for (Index = 0; Index < StringCount; Index++) {
- GetUnicodeStringTextOrSize (NULL, StringTextPtr, &StringSize);
- BlockSize += StringSize;
- if (CurrentStringId == StringId) {
- ASSERT (BlockType != NULL && StringBlockAddr != NULL && StringTextOffset != NULL);
- *BlockType = *BlockHdr;
- *StringBlockAddr = BlockHdr;
- *StringTextOffset = StringTextPtr - BlockHdr;
- return EFI_SUCCESS;
+ StringTextPtr = StringTextPtr + AsciiStrSize ((CHAR8 *)StringTextPtr);
+ CurrentStringId++;
}
- StringTextPtr = StringTextPtr + StringSize;
- CurrentStringId++;
- }
- break;
- case EFI_HII_SIBT_STRINGS_UCS2_FONT:
- Offset = sizeof (EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK) - sizeof (CHAR16);
- StringTextPtr = BlockHdr + Offset;
- BlockSize += Offset;
- CopyMem (
- &StringCount,
- (UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),
- sizeof (UINT16)
- );
- for (Index = 0; Index < StringCount; Index++) {
+ break;
+
+ case EFI_HII_SIBT_STRING_UCS2:
+ Offset = sizeof (EFI_HII_STRING_BLOCK);
+ StringTextPtr = BlockHdr + Offset;
+ //
+ // Use StringSize to store the size of the specified string, including the NULL
+ // terminator.
+ //
GetUnicodeStringTextOrSize (NULL, StringTextPtr, &StringSize);
- BlockSize += StringSize;
- if (CurrentStringId == StringId) {
- ASSERT (BlockType != NULL && StringBlockAddr != NULL && StringTextOffset != NULL);
- *BlockType = *BlockHdr;
- *StringBlockAddr = BlockHdr;
- *StringTextOffset = StringTextPtr - BlockHdr;
- return EFI_SUCCESS;
- }
- StringTextPtr = StringTextPtr + StringSize;
+ BlockSize += Offset + StringSize;
CurrentStringId++;
- }
- break;
+ break;
- case EFI_HII_SIBT_DUPLICATE:
- if (CurrentStringId == StringId) {
+ case EFI_HII_SIBT_STRING_UCS2_FONT:
+ Offset = sizeof (EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK) - sizeof (CHAR16);
+ StringTextPtr = BlockHdr + Offset;
//
- // Incoming StringId is an id of a duplicate string block.
- // Update the StringId to be the previous string block.
- // Go back to the header of string block to search.
+ // Use StrSize to store the size of the specified string, including the NULL
+ // terminator.
//
- CopyMem (
- &StringId,
- BlockHdr + sizeof (EFI_HII_STRING_BLOCK),
- sizeof (EFI_STRING_ID)
- );
- ASSERT (StringId != CurrentStringId);
- CurrentStringId = 1;
- BlockSize = 0;
- } else {
- BlockSize += sizeof (EFI_HII_SIBT_DUPLICATE_BLOCK);
+ GetUnicodeStringTextOrSize (NULL, StringTextPtr, &StringSize);
+ BlockSize += Offset + StringSize;
CurrentStringId++;
- }
- break;
+ break;
- case EFI_HII_SIBT_SKIP1:
- SkipCount = (UINT16) (*(UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK)));
- CurrentStringId = (UINT16) (CurrentStringId + SkipCount);
- BlockSize += sizeof (EFI_HII_SIBT_SKIP1_BLOCK);
- break;
+ case EFI_HII_SIBT_STRINGS_UCS2:
+ Offset = sizeof (EFI_HII_SIBT_STRINGS_UCS2_BLOCK) - sizeof (CHAR16);
+ StringTextPtr = BlockHdr + Offset;
+ BlockSize += Offset;
+ CopyMem (&StringCount, BlockHdr + sizeof (EFI_HII_STRING_BLOCK), sizeof (UINT16));
+ for (Index = 0; Index < StringCount; Index++) {
+ GetUnicodeStringTextOrSize (NULL, StringTextPtr, &StringSize);
+ BlockSize += StringSize;
+ if (CurrentStringId == StringId) {
+ ASSERT (BlockType != NULL && StringBlockAddr != NULL && StringTextOffset != NULL);
+ *BlockType = *BlockHdr;
+ *StringBlockAddr = BlockHdr;
+ *StringTextOffset = StringTextPtr - BlockHdr;
+ return EFI_SUCCESS;
+ }
- case EFI_HII_SIBT_SKIP2:
- CopyMem (&SkipCount, BlockHdr + sizeof (EFI_HII_STRING_BLOCK), sizeof (UINT16));
- CurrentStringId = (UINT16) (CurrentStringId + SkipCount);
- BlockSize += sizeof (EFI_HII_SIBT_SKIP2_BLOCK);
- break;
+ StringTextPtr = StringTextPtr + StringSize;
+ CurrentStringId++;
+ }
- case EFI_HII_SIBT_EXT1:
- CopyMem (
- &Length8,
- (UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),
- sizeof (UINT8)
- );
- BlockSize += Length8;
- break;
+ break;
- case EFI_HII_SIBT_EXT2:
- CopyMem (&Ext2, BlockHdr, sizeof (EFI_HII_SIBT_EXT2_BLOCK));
- if (Ext2.BlockType2 == EFI_HII_SIBT_FONT && StringId == (EFI_STRING_ID) (-1)) {
- //
- // Find the relationship between global font info and the font info of
- // this EFI_HII_SIBT_FONT block then backup its information in local package.
- //
- BlockHdr += sizeof (EFI_HII_SIBT_EXT2_BLOCK);
- CopyMem (&FontId, BlockHdr, sizeof (UINT8));
- BlockHdr ++;
- CopyMem (&FontSize, BlockHdr, sizeof (UINT16));
- BlockHdr += sizeof (UINT16);
- CopyMem (&FontStyle, BlockHdr, sizeof (EFI_HII_FONT_STYLE));
- BlockHdr += sizeof (EFI_HII_FONT_STYLE);
- GetUnicodeStringTextOrSize (NULL, BlockHdr, &StringSize);
-
- FontInfoSize = sizeof (EFI_FONT_INFO) - sizeof (CHAR16) + StringSize;
- FontInfo = (EFI_FONT_INFO *) AllocateZeroPool (FontInfoSize);
- if (FontInfo == NULL) {
- return EFI_OUT_OF_RESOURCES;
+ case EFI_HII_SIBT_STRINGS_UCS2_FONT:
+ Offset = sizeof (EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK) - sizeof (CHAR16);
+ StringTextPtr = BlockHdr + Offset;
+ BlockSize += Offset;
+ CopyMem (
+ &StringCount,
+ (UINT8 *)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),
+ sizeof (UINT16)
+ );
+ for (Index = 0; Index < StringCount; Index++) {
+ GetUnicodeStringTextOrSize (NULL, StringTextPtr, &StringSize);
+ BlockSize += StringSize;
+ if (CurrentStringId == StringId) {
+ ASSERT (BlockType != NULL && StringBlockAddr != NULL && StringTextOffset != NULL);
+ *BlockType = *BlockHdr;
+ *StringBlockAddr = BlockHdr;
+ *StringTextOffset = StringTextPtr - BlockHdr;
+ return EFI_SUCCESS;
+ }
+
+ StringTextPtr = StringTextPtr + StringSize;
+ CurrentStringId++;
}
- FontInfo->FontStyle = FontStyle;
- FontInfo->FontSize = FontSize;
- CopyMem (FontInfo->FontName, BlockHdr, StringSize);
- //
- // If find the corresponding global font info, save the relationship.
- // Otherwise ignore this EFI_HII_SIBT_FONT block.
- //
- if (IsFontInfoExisted (Private, FontInfo, NULL, NULL, &GlobalFont)) {
- ReferFontInfoLocally (Private, StringPackage, FontId, TRUE, GlobalFont, &LocalFont);
+ break;
+
+ case EFI_HII_SIBT_DUPLICATE:
+ if (CurrentStringId == StringId) {
+ //
+ // Incoming StringId is an id of a duplicate string block.
+ // Update the StringId to be the previous string block.
+ // Go back to the header of string block to search.
+ //
+ CopyMem (
+ &StringId,
+ BlockHdr + sizeof (EFI_HII_STRING_BLOCK),
+ sizeof (EFI_STRING_ID)
+ );
+ ASSERT (StringId != CurrentStringId);
+ CurrentStringId = 1;
+ BlockSize = 0;
+ } else {
+ BlockSize += sizeof (EFI_HII_SIBT_DUPLICATE_BLOCK);
+ CurrentStringId++;
}
- //
- // Since string package tool set FontId initially to 0 and increases it
- // progressively by one, StringPackage->FondId always represents an unique
- // and available FontId.
- //
- StringPackage->FontId++;
+ break;
- FreePool (FontInfo);
- }
+ case EFI_HII_SIBT_SKIP1:
+ SkipCount = (UINT16)(*(UINT8 *)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK)));
+ CurrentStringId = (UINT16)(CurrentStringId + SkipCount);
+ BlockSize += sizeof (EFI_HII_SIBT_SKIP1_BLOCK);
+ break;
- BlockSize += Ext2.Length;
+ case EFI_HII_SIBT_SKIP2:
+ CopyMem (&SkipCount, BlockHdr + sizeof (EFI_HII_STRING_BLOCK), sizeof (UINT16));
+ CurrentStringId = (UINT16)(CurrentStringId + SkipCount);
+ BlockSize += sizeof (EFI_HII_SIBT_SKIP2_BLOCK);
+ break;
- break;
+ case EFI_HII_SIBT_EXT1:
+ CopyMem (
+ &Length8,
+ (UINT8 *)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),
+ sizeof (UINT8)
+ );
+ BlockSize += Length8;
+ break;
- case EFI_HII_SIBT_EXT4:
- CopyMem (
- &Length32,
- (UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),
- sizeof (UINT32)
- );
+ case EFI_HII_SIBT_EXT2:
+ CopyMem (&Ext2, BlockHdr, sizeof (EFI_HII_SIBT_EXT2_BLOCK));
+ if ((Ext2.BlockType2 == EFI_HII_SIBT_FONT) && (StringId == (EFI_STRING_ID)(-1))) {
+ //
+ // Find the relationship between global font info and the font info of
+ // this EFI_HII_SIBT_FONT block then backup its information in local package.
+ //
+ BlockHdr += sizeof (EFI_HII_SIBT_EXT2_BLOCK);
+ CopyMem (&FontId, BlockHdr, sizeof (UINT8));
+ BlockHdr++;
+ CopyMem (&FontSize, BlockHdr, sizeof (UINT16));
+ BlockHdr += sizeof (UINT16);
+ CopyMem (&FontStyle, BlockHdr, sizeof (EFI_HII_FONT_STYLE));
+ BlockHdr += sizeof (EFI_HII_FONT_STYLE);
+ GetUnicodeStringTextOrSize (NULL, BlockHdr, &StringSize);
+
+ FontInfoSize = sizeof (EFI_FONT_INFO) - sizeof (CHAR16) + StringSize;
+ FontInfo = (EFI_FONT_INFO *)AllocateZeroPool (FontInfoSize);
+ if (FontInfo == NULL) {
+ return EFI_OUT_OF_RESOURCES;
+ }
- BlockSize += Length32;
- break;
+ FontInfo->FontStyle = FontStyle;
+ FontInfo->FontSize = FontSize;
+ CopyMem (FontInfo->FontName, BlockHdr, StringSize);
- default:
- break;
+ //
+ // If find the corresponding global font info, save the relationship.
+ // Otherwise ignore this EFI_HII_SIBT_FONT block.
+ //
+ if (IsFontInfoExisted (Private, FontInfo, NULL, NULL, &GlobalFont)) {
+ ReferFontInfoLocally (Private, StringPackage, FontId, TRUE, GlobalFont, &LocalFont);
+ }
+
+ //
+ // Since string package tool set FontId initially to 0 and increases it
+ // progressively by one, StringPackage->FondId always represents an unique
+ // and available FontId.
+ //
+ StringPackage->FontId++;
+
+ FreePool (FontInfo);
+ }
+
+ BlockSize += Ext2.Length;
+
+ break;
+
+ case EFI_HII_SIBT_EXT4:
+ CopyMem (
+ &Length32,
+ (UINT8 *)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),
+ sizeof (UINT32)
+ );
+
+ BlockSize += Length32;
+ break;
+
+ default:
+ break;
}
- if (StringId > 0 && StringId != (EFI_STRING_ID)(-1)) {
+ if ((StringId > 0) && (StringId != (EFI_STRING_ID)(-1))) {
ASSERT (BlockType != NULL && StringBlockAddr != NULL && StringTextOffset != NULL);
*BlockType = *BlockHdr;
*StringBlockAddr = BlockHdr;
@@ -552,7 +560,7 @@ FindStringBlock ( //
// if only one skip item, return EFI_NOT_FOUND.
//
- if(*BlockType == EFI_HII_SIBT_SKIP2 || *BlockType == EFI_HII_SIBT_SKIP1) {
+ if ((*BlockType == EFI_HII_SIBT_SKIP2) || (*BlockType == EFI_HII_SIBT_SKIP1)) {
return EFI_NOT_FOUND;
} else {
return EFI_SUCCESS;
@@ -563,24 +571,24 @@ FindStringBlock ( return EFI_NOT_FOUND;
}
}
- BlockHdr = StringPackage->StringBlock + BlockSize;
+
+ BlockHdr = StringPackage->StringBlock + BlockSize;
if (StartStringId != NULL) {
- *StartStringId = CurrentStringId;
+ *StartStringId = CurrentStringId;
}
}
//
// Get last string ID
//
- if (StringId == (EFI_STRING_ID) (-1) && LastStringId != NULL) {
- *LastStringId = (EFI_STRING_ID) (CurrentStringId - 1);
+ if ((StringId == (EFI_STRING_ID)(-1)) && (LastStringId != NULL)) {
+ *LastStringId = (EFI_STRING_ID)(CurrentStringId - 1);
return EFI_SUCCESS;
}
return EFI_NOT_FOUND;
}
-
/**
Parse all string blocks to get a string specified by StringId.
@@ -608,20 +616,20 @@ FindStringBlock ( **/
EFI_STATUS
GetStringWorker (
- IN HII_DATABASE_PRIVATE_DATA *Private,
- IN HII_STRING_PACKAGE_INSTANCE *StringPackage,
- IN EFI_STRING_ID StringId,
- OUT EFI_STRING String,
- IN OUT UINTN *StringSize OPTIONAL,
- OUT EFI_FONT_INFO **StringFontInfo OPTIONAL
+ IN HII_DATABASE_PRIVATE_DATA *Private,
+ IN HII_STRING_PACKAGE_INSTANCE *StringPackage,
+ IN EFI_STRING_ID StringId,
+ OUT EFI_STRING String,
+ IN OUT UINTN *StringSize OPTIONAL,
+ OUT EFI_FONT_INFO **StringFontInfo OPTIONAL
)
{
- UINT8 *StringTextPtr;
- UINT8 BlockType;
- UINT8 *StringBlockAddr;
- UINTN StringTextOffset;
- EFI_STATUS Status;
- UINT8 FontId;
+ UINT8 *StringTextPtr;
+ UINT8 BlockType;
+ UINT8 *StringBlockAddr;
+ UINTN StringTextOffset;
+ EFI_STATUS Status;
+ UINT8 FontId;
ASSERT (StringPackage != NULL);
ASSERT (Private != NULL && Private->Signature == HII_DATABASE_PRIVATE_DATA_SIGNATURE);
@@ -655,21 +663,22 @@ GetStringWorker ( //
StringTextPtr = StringBlockAddr + StringTextOffset;
switch (BlockType) {
- case EFI_HII_SIBT_STRING_SCSU:
- case EFI_HII_SIBT_STRING_SCSU_FONT:
- case EFI_HII_SIBT_STRINGS_SCSU:
- case EFI_HII_SIBT_STRINGS_SCSU_FONT:
- Status = ConvertToUnicodeText (String, (CHAR8 *) StringTextPtr, StringSize);
- break;
- case EFI_HII_SIBT_STRING_UCS2:
- case EFI_HII_SIBT_STRING_UCS2_FONT:
- case EFI_HII_SIBT_STRINGS_UCS2:
- case EFI_HII_SIBT_STRINGS_UCS2_FONT:
- Status = GetUnicodeStringTextOrSize (String, StringTextPtr, StringSize);
- break;
- default:
- return EFI_NOT_FOUND;
+ case EFI_HII_SIBT_STRING_SCSU:
+ case EFI_HII_SIBT_STRING_SCSU_FONT:
+ case EFI_HII_SIBT_STRINGS_SCSU:
+ case EFI_HII_SIBT_STRINGS_SCSU_FONT:
+ Status = ConvertToUnicodeText (String, (CHAR8 *)StringTextPtr, StringSize);
+ break;
+ case EFI_HII_SIBT_STRING_UCS2:
+ case EFI_HII_SIBT_STRING_UCS2_FONT:
+ case EFI_HII_SIBT_STRINGS_UCS2:
+ case EFI_HII_SIBT_STRINGS_UCS2_FONT:
+ Status = GetUnicodeStringTextOrSize (String, StringTextPtr, StringSize);
+ break;
+ default:
+ return EFI_NOT_FOUND;
}
+
if (EFI_ERROR (Status)) {
return Status;
}
@@ -680,18 +689,19 @@ GetStringWorker ( //
if (StringFontInfo != NULL) {
switch (BlockType) {
- case EFI_HII_SIBT_STRING_SCSU_FONT:
- case EFI_HII_SIBT_STRINGS_SCSU_FONT:
- case EFI_HII_SIBT_STRING_UCS2_FONT:
- case EFI_HII_SIBT_STRINGS_UCS2_FONT:
- FontId = *(StringBlockAddr + sizeof (EFI_HII_STRING_BLOCK));
- break;
- default:
- FontId = 0;
+ case EFI_HII_SIBT_STRING_SCSU_FONT:
+ case EFI_HII_SIBT_STRINGS_SCSU_FONT:
+ case EFI_HII_SIBT_STRING_UCS2_FONT:
+ case EFI_HII_SIBT_STRINGS_UCS2_FONT:
+ FontId = *(StringBlockAddr + sizeof (EFI_HII_STRING_BLOCK));
+ break;
+ default:
+ FontId = 0;
}
+
Status = GetStringFontInfo (StringPackage, FontId, StringFontInfo);
if (Status == EFI_NOT_FOUND) {
- *StringFontInfo = NULL;
+ *StringFontInfo = NULL;
}
}
@@ -719,23 +729,23 @@ GetStringWorker ( **/
EFI_STATUS
InsertLackStringBlock (
- IN OUT HII_STRING_PACKAGE_INSTANCE *StringPackage,
- IN EFI_STRING_ID StartStringId,
- IN EFI_STRING_ID StringId,
- IN OUT UINT8 *BlockType,
- IN OUT UINT8 **StringBlockAddr,
- IN BOOLEAN FontBlock
+ IN OUT HII_STRING_PACKAGE_INSTANCE *StringPackage,
+ IN EFI_STRING_ID StartStringId,
+ IN EFI_STRING_ID StringId,
+ IN OUT UINT8 *BlockType,
+ IN OUT UINT8 **StringBlockAddr,
+ IN BOOLEAN FontBlock
)
{
- UINT8 *BlockPtr;
- UINT8 *StringBlock;
- UINT32 SkipLen;
- UINT32 OldBlockSize;
- UINT32 NewBlockSize;
- UINT32 FrontSkipNum;
- UINT32 NewUCSBlockLen;
- UINT8 *OldStringAddr;
- UINT32 IdCount;
+ UINT8 *BlockPtr;
+ UINT8 *StringBlock;
+ UINT32 SkipLen;
+ UINT32 OldBlockSize;
+ UINT32 NewBlockSize;
+ UINT32 FrontSkipNum;
+ UINT32 NewUCSBlockLen;
+ UINT8 *OldStringAddr;
+ UINT32 IdCount;
FrontSkipNum = 0;
SkipLen = 0;
@@ -747,10 +757,10 @@ InsertLackStringBlock ( //
if (*BlockType == EFI_HII_SIBT_SKIP1) {
SkipLen = sizeof (EFI_HII_SIBT_SKIP1_BLOCK);
- IdCount = *(UINT8*)(OldStringAddr + sizeof (EFI_HII_STRING_BLOCK));
+ IdCount = *(UINT8 *)(OldStringAddr + sizeof (EFI_HII_STRING_BLOCK));
} else {
SkipLen = sizeof (EFI_HII_SIBT_SKIP2_BLOCK);
- IdCount = *(UINT16*)(OldStringAddr + sizeof (EFI_HII_STRING_BLOCK));
+ IdCount = *(UINT16 *)(OldStringAddr + sizeof (EFI_HII_STRING_BLOCK));
}
//
@@ -773,7 +783,7 @@ InsertLackStringBlock ( } else {
NewBlockSize = OldBlockSize + NewUCSBlockLen - SkipLen;
}
- } else if (StartStringId + IdCount - 1 == StringId){
+ } else if (StartStringId + IdCount - 1 == StringId) {
//
// Skip block + New block
//
@@ -787,7 +797,7 @@ InsertLackStringBlock ( FrontSkipNum = StringId - StartStringId;
}
- StringBlock = (UINT8 *) AllocateZeroPool (NewBlockSize);
+ StringBlock = (UINT8 *)AllocateZeroPool (NewBlockSize);
if (StringBlock == NULL) {
return EFI_OUT_OF_RESOURCES;
}
@@ -801,10 +811,11 @@ InsertLackStringBlock ( if (FrontSkipNum > 0) {
*BlockPtr = *BlockType;
if (*BlockType == EFI_HII_SIBT_SKIP1) {
- *(BlockPtr + sizeof (EFI_HII_STRING_BLOCK)) = (UINT8) FrontSkipNum;
+ *(BlockPtr + sizeof (EFI_HII_STRING_BLOCK)) = (UINT8)FrontSkipNum;
} else {
- *(UINT16 *)(BlockPtr + sizeof (EFI_HII_STRING_BLOCK)) = (UINT16) FrontSkipNum;
+ *(UINT16 *)(BlockPtr + sizeof (EFI_HII_STRING_BLOCK)) = (UINT16)FrontSkipNum;
}
+
BlockPtr += SkipLen;
}
@@ -817,15 +828,17 @@ InsertLackStringBlock ( } else {
*BlockPtr = EFI_HII_SIBT_STRING_UCS2;
}
+
BlockPtr += NewUCSBlockLen;
if (IdCount > FrontSkipNum + 1) {
*BlockPtr = *BlockType;
if (*BlockType == EFI_HII_SIBT_SKIP1) {
- *(BlockPtr + sizeof (EFI_HII_STRING_BLOCK)) = (UINT8) (IdCount - FrontSkipNum - 1);
+ *(BlockPtr + sizeof (EFI_HII_STRING_BLOCK)) = (UINT8)(IdCount - FrontSkipNum - 1);
} else {
- *(UINT16 *)(BlockPtr + sizeof (EFI_HII_STRING_BLOCK)) = (UINT16) (IdCount - FrontSkipNum - 1);
+ *(UINT16 *)(BlockPtr + sizeof (EFI_HII_STRING_BLOCK)) = (UINT16)(IdCount - FrontSkipNum - 1);
}
+
BlockPtr += SkipLen;
}
@@ -839,8 +852,9 @@ InsertLackStringBlock ( } else {
*BlockType = EFI_HII_SIBT_STRING_UCS2;
}
+
FreePool (StringPackage->StringBlock);
- StringPackage->StringBlock = StringBlock;
+ StringPackage->StringBlock = StringBlock;
StringPackage->StringPkgHdr->Header.Length += NewBlockSize - OldBlockSize;
return EFI_SUCCESS;
@@ -877,22 +891,22 @@ SetStringWorker ( IN EFI_FONT_INFO *StringFontInfo OPTIONAL
)
{
- UINT8 *StringTextPtr;
- UINT8 BlockType;
- UINT8 *StringBlockAddr;
- UINTN StringTextOffset;
- EFI_STATUS Status;
- UINT8 *Block;
- UINT8 *BlockPtr;
- UINTN BlockSize;
- UINTN OldBlockSize;
- HII_FONT_INFO *LocalFont;
- HII_GLOBAL_FONT_INFO *GlobalFont;
- BOOLEAN Referred;
- EFI_HII_SIBT_EXT2_BLOCK Ext2;
- UINTN StringSize;
- UINTN TmpSize;
- EFI_STRING_ID StartStringId;
+ UINT8 *StringTextPtr;
+ UINT8 BlockType;
+ UINT8 *StringBlockAddr;
+ UINTN StringTextOffset;
+ EFI_STATUS Status;
+ UINT8 *Block;
+ UINT8 *BlockPtr;
+ UINTN BlockSize;
+ UINTN OldBlockSize;
+ HII_FONT_INFO *LocalFont;
+ HII_GLOBAL_FONT_INFO *GlobalFont;
+ BOOLEAN Referred;
+ EFI_HII_SIBT_EXT2_BLOCK Ext2;
+ UINTN StringSize;
+ UINTN TmpSize;
+ EFI_STRING_ID StartStringId;
StartStringId = 0;
StringSize = 0;
@@ -911,17 +925,19 @@ SetStringWorker ( NULL,
&StartStringId
);
- if (EFI_ERROR (Status) && (BlockType == EFI_HII_SIBT_SKIP1 || BlockType == EFI_HII_SIBT_SKIP2)) {
- Status = InsertLackStringBlock(StringPackage,
- StartStringId,
- StringId,
- &BlockType,
- &StringBlockAddr,
- (BOOLEAN)(StringFontInfo != NULL)
- );
+ if (EFI_ERROR (Status) && ((BlockType == EFI_HII_SIBT_SKIP1) || (BlockType == EFI_HII_SIBT_SKIP2))) {
+ Status = InsertLackStringBlock (
+ StringPackage,
+ StartStringId,
+ StringId,
+ &BlockType,
+ &StringBlockAddr,
+ (BOOLEAN)(StringFontInfo != NULL)
+ );
if (EFI_ERROR (Status)) {
return Status;
}
+
if (StringFontInfo != NULL) {
StringTextOffset = sizeof (EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK) - sizeof (CHAR16);
} else {
@@ -952,23 +968,24 @@ SetStringWorker ( StringPackage->FontId++;
}
}
+
//
// Update the FontId of the specified string block to input font info.
//
switch (BlockType) {
- case EFI_HII_SIBT_STRING_SCSU_FONT:
- case EFI_HII_SIBT_STRINGS_SCSU_FONT:
- case EFI_HII_SIBT_STRING_UCS2_FONT:
- case EFI_HII_SIBT_STRINGS_UCS2_FONT:
- *(StringBlockAddr + sizeof (EFI_HII_STRING_BLOCK)) = LocalFont->FontId;
- break;
- default:
- //
- // When modify the font info of these blocks, the block type should be updated
- // to contain font info thus the whole structure should be revised.
- // It is recommended to use tool to modify the block type not in the code.
- //
- return EFI_UNSUPPORTED;
+ case EFI_HII_SIBT_STRING_SCSU_FONT:
+ case EFI_HII_SIBT_STRINGS_SCSU_FONT:
+ case EFI_HII_SIBT_STRING_UCS2_FONT:
+ case EFI_HII_SIBT_STRINGS_UCS2_FONT:
+ *(StringBlockAddr + sizeof (EFI_HII_STRING_BLOCK)) = LocalFont->FontId;
+ break;
+ default:
+ //
+ // When modify the font info of these blocks, the block type should be updated
+ // to contain font info thus the whole structure should be revised.
+ // It is recommended to use tool to modify the block type not in the code.
+ //
+ return EFI_UNSUPPORTED;
}
}
@@ -979,75 +996,75 @@ SetStringWorker ( //
StringTextPtr = StringBlockAddr + StringTextOffset;
switch (BlockType) {
- case EFI_HII_SIBT_STRING_SCSU:
- case EFI_HII_SIBT_STRING_SCSU_FONT:
- case EFI_HII_SIBT_STRINGS_SCSU:
- case EFI_HII_SIBT_STRINGS_SCSU_FONT:
- BlockSize = OldBlockSize + StrLen (String);
- BlockSize -= AsciiStrSize ((CHAR8 *) StringTextPtr);
- Block = AllocateZeroPool (BlockSize);
- if (Block == NULL) {
- return EFI_OUT_OF_RESOURCES;
- }
+ case EFI_HII_SIBT_STRING_SCSU:
+ case EFI_HII_SIBT_STRING_SCSU_FONT:
+ case EFI_HII_SIBT_STRINGS_SCSU:
+ case EFI_HII_SIBT_STRINGS_SCSU_FONT:
+ BlockSize = OldBlockSize + StrLen (String);
+ BlockSize -= AsciiStrSize ((CHAR8 *)StringTextPtr);
+ Block = AllocateZeroPool (BlockSize);
+ if (Block == NULL) {
+ return EFI_OUT_OF_RESOURCES;
+ }
- CopyMem (Block, StringPackage->StringBlock, StringTextPtr - StringPackage->StringBlock);
- BlockPtr = Block + (StringTextPtr - StringPackage->StringBlock);
+ CopyMem (Block, StringPackage->StringBlock, StringTextPtr - StringPackage->StringBlock);
+ BlockPtr = Block + (StringTextPtr - StringPackage->StringBlock);
- while (*String != 0) {
- *BlockPtr++ = (CHAR8) *String++;
- }
- *BlockPtr++ = 0;
+ while (*String != 0) {
+ *BlockPtr++ = (CHAR8)*String++;
+ }
+ *BlockPtr++ = 0;
- TmpSize = OldBlockSize - (StringTextPtr - StringPackage->StringBlock) - AsciiStrSize ((CHAR8 *) StringTextPtr);
- CopyMem (
- BlockPtr,
- StringTextPtr + AsciiStrSize ((CHAR8 *)StringTextPtr),
- TmpSize
- );
+ TmpSize = OldBlockSize - (StringTextPtr - StringPackage->StringBlock) - AsciiStrSize ((CHAR8 *)StringTextPtr);
+ CopyMem (
+ BlockPtr,
+ StringTextPtr + AsciiStrSize ((CHAR8 *)StringTextPtr),
+ TmpSize
+ );
- ZeroMem (StringPackage->StringBlock, OldBlockSize);
- FreePool (StringPackage->StringBlock);
- StringPackage->StringBlock = Block;
- StringPackage->StringPkgHdr->Header.Length += (UINT32) (BlockSize - OldBlockSize);
- break;
-
- case EFI_HII_SIBT_STRING_UCS2:
- case EFI_HII_SIBT_STRING_UCS2_FONT:
- case EFI_HII_SIBT_STRINGS_UCS2:
- case EFI_HII_SIBT_STRINGS_UCS2_FONT:
- //
- // Use StrSize to store the size of the specified string, including the NULL
- // terminator.
- //
- GetUnicodeStringTextOrSize (NULL, StringTextPtr, &StringSize);
+ ZeroMem (StringPackage->StringBlock, OldBlockSize);
+ FreePool (StringPackage->StringBlock);
+ StringPackage->StringBlock = Block;
+ StringPackage->StringPkgHdr->Header.Length += (UINT32)(BlockSize - OldBlockSize);
+ break;
- BlockSize = OldBlockSize + StrSize (String) - StringSize;
- Block = AllocateZeroPool (BlockSize);
- if (Block == NULL) {
- return EFI_OUT_OF_RESOURCES;
- }
+ case EFI_HII_SIBT_STRING_UCS2:
+ case EFI_HII_SIBT_STRING_UCS2_FONT:
+ case EFI_HII_SIBT_STRINGS_UCS2:
+ case EFI_HII_SIBT_STRINGS_UCS2_FONT:
+ //
+ // Use StrSize to store the size of the specified string, including the NULL
+ // terminator.
+ //
+ GetUnicodeStringTextOrSize (NULL, StringTextPtr, &StringSize);
- CopyMem (Block, StringPackage->StringBlock, StringTextPtr - StringPackage->StringBlock);
- BlockPtr = Block + (StringTextPtr - StringPackage->StringBlock);
+ BlockSize = OldBlockSize + StrSize (String) - StringSize;
+ Block = AllocateZeroPool (BlockSize);
+ if (Block == NULL) {
+ return EFI_OUT_OF_RESOURCES;
+ }
- CopyMem (BlockPtr, String, StrSize (String));
- BlockPtr += StrSize (String);
+ CopyMem (Block, StringPackage->StringBlock, StringTextPtr - StringPackage->StringBlock);
+ BlockPtr = Block + (StringTextPtr - StringPackage->StringBlock);
- CopyMem (
- BlockPtr,
- StringTextPtr + StringSize,
- OldBlockSize - (StringTextPtr - StringPackage->StringBlock) - StringSize
- );
+ CopyMem (BlockPtr, String, StrSize (String));
+ BlockPtr += StrSize (String);
- ZeroMem (StringPackage->StringBlock, OldBlockSize);
- FreePool (StringPackage->StringBlock);
- StringPackage->StringBlock = Block;
- StringPackage->StringPkgHdr->Header.Length += (UINT32) (BlockSize - OldBlockSize);
- break;
+ CopyMem (
+ BlockPtr,
+ StringTextPtr + StringSize,
+ OldBlockSize - (StringTextPtr - StringPackage->StringBlock) - StringSize
+ );
- default:
- return EFI_NOT_FOUND;
+ ZeroMem (StringPackage->StringBlock, OldBlockSize);
+ FreePool (StringPackage->StringBlock);
+ StringPackage->StringBlock = Block;
+ StringPackage->StringPkgHdr->Header.Length += (UINT32)(BlockSize - OldBlockSize);
+ break;
+
+ default:
+ return EFI_NOT_FOUND;
}
//
@@ -1057,28 +1074,28 @@ SetStringWorker ( // This new block does not impact on the value of StringId.
//
//
- if (StringFontInfo == NULL || Referred) {
+ if ((StringFontInfo == NULL) || Referred) {
return EFI_SUCCESS;
}
OldBlockSize = StringPackage->StringPkgHdr->Header.Length - StringPackage->StringPkgHdr->HdrSize;
- BlockSize = OldBlockSize + sizeof (EFI_HII_SIBT_FONT_BLOCK) - sizeof (CHAR16) +
- StrSize (GlobalFont->FontInfo->FontName);
+ BlockSize = OldBlockSize + sizeof (EFI_HII_SIBT_FONT_BLOCK) - sizeof (CHAR16) +
+ StrSize (GlobalFont->FontInfo->FontName);
Block = AllocateZeroPool (BlockSize);
if (Block == NULL) {
return EFI_OUT_OF_RESOURCES;
}
- BlockPtr = Block;
+ BlockPtr = Block;
Ext2.Header.BlockType = EFI_HII_SIBT_EXT2;
Ext2.BlockType2 = EFI_HII_SIBT_FONT;
- Ext2.Length = (UINT16) (BlockSize - OldBlockSize);
+ Ext2.Length = (UINT16)(BlockSize - OldBlockSize);
CopyMem (BlockPtr, &Ext2, sizeof (EFI_HII_SIBT_EXT2_BLOCK));
BlockPtr += sizeof (EFI_HII_SIBT_EXT2_BLOCK);
*BlockPtr = LocalFont->FontId;
- BlockPtr ++;
+ BlockPtr++;
CopyMem (BlockPtr, &GlobalFont->FontInfo->FontSize, sizeof (UINT16));
BlockPtr += sizeof (UINT16);
CopyMem (BlockPtr, &GlobalFont->FontInfo->FontStyle, sizeof (UINT32));
@@ -1094,14 +1111,12 @@ SetStringWorker ( ZeroMem (StringPackage->StringBlock, OldBlockSize);
FreePool (StringPackage->StringBlock);
- StringPackage->StringBlock = Block;
+ StringPackage->StringBlock = Block;
StringPackage->StringPkgHdr->Header.Length += Ext2.Length;
return EFI_SUCCESS;
-
}
-
/**
This function adds the string String to the group of strings owned by PackageList, with the
specified font information StringFontInfo and returns a new string id.
@@ -1139,13 +1154,13 @@ SetStringWorker ( EFI_STATUS
EFIAPI
HiiNewString (
- IN CONST EFI_HII_STRING_PROTOCOL *This,
- IN EFI_HII_HANDLE PackageList,
- OUT EFI_STRING_ID *StringId,
- IN CONST CHAR8 *Language,
- IN CONST CHAR16 *LanguageName OPTIONAL,
- IN CONST EFI_STRING String,
- IN CONST EFI_FONT_INFO *StringFontInfo OPTIONAL
+ IN CONST EFI_HII_STRING_PROTOCOL *This,
+ IN EFI_HII_HANDLE PackageList,
+ OUT EFI_STRING_ID *StringId,
+ IN CONST CHAR8 *Language,
+ IN CONST CHAR16 *LanguageName OPTIONAL,
+ IN CONST EFI_STRING String,
+ IN CONST EFI_FONT_INFO *StringFontInfo OPTIONAL
)
{
EFI_STATUS Status;
@@ -1171,8 +1186,7 @@ HiiNewString ( HII_STRING_PACKAGE_INSTANCE *MatchStringPackage;
BOOLEAN NewStringPackageCreated;
-
- if (This == NULL || String == NULL || StringId == NULL || Language == NULL || PackageList == NULL) {
+ if ((This == NULL) || (String == NULL) || (StringId == NULL) || (Language == NULL) || (PackageList == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -1187,7 +1201,7 @@ HiiNewString ( // If StringFontInfo specify a paritcular font, it should exist in current database.
//
if (StringFontInfo != NULL) {
- if (!IsFontInfoExisted (Private, (EFI_FONT_INFO *) StringFontInfo, NULL, NULL, &GlobalFont)) {
+ if (!IsFontInfoExisted (Private, (EFI_FONT_INFO *)StringFontInfo, NULL, NULL, &GlobalFont)) {
return EFI_INVALID_PARAMETER;
}
}
@@ -1203,22 +1217,24 @@ HiiNewString ( break;
}
}
+
if (PackageListNode == NULL) {
return EFI_NOT_FOUND;
}
EfiAcquireLock (&mHiiDatabaseLock);
- Status = EFI_SUCCESS;
+ Status = EFI_SUCCESS;
NewStringPackageCreated = FALSE;
- NewStringId = 0;
- NextStringId = 0;
- StringPackage = NULL;
- MatchStringPackage = NULL;
+ NewStringId = 0;
+ NextStringId = 0;
+ StringPackage = NULL;
+ MatchStringPackage = NULL;
for (Link = PackageListNode->StringPkgHdr.ForwardLink;
Link != &PackageListNode->StringPkgHdr;
Link = Link->ForwardLink
- ) {
+ )
+ {
StringPackage = CR (Link, HII_STRING_PACKAGE_INSTANCE, StringEntry, HII_STRING_PACKAGE_SIGNATURE);
//
// Create a string block and corresponding font block if exists, then append them
@@ -1237,32 +1253,35 @@ HiiNewString ( if (EFI_ERROR (Status)) {
goto Done;
}
+
//
// Make sure that new StringId is same in all String Packages for the different language.
//
- if (NewStringId != 0 && NewStringId != NextStringId) {
+ if ((NewStringId != 0) && (NewStringId != NextStringId)) {
ASSERT (FALSE);
Status = EFI_INVALID_PARAMETER;
goto Done;
}
+
NewStringId = NextStringId;
//
// Get the matched string package with language.
//
- if (HiiCompareLanguage (StringPackage->StringPkgHdr->Language, (CHAR8 *) Language)) {
+ if (HiiCompareLanguage (StringPackage->StringPkgHdr->Language, (CHAR8 *)Language)) {
MatchStringPackage = StringPackage;
} else {
OldBlockSize = StringPackage->StringPkgHdr->Header.Length - StringPackage->StringPkgHdr->HdrSize;
//
// Create a blank EFI_HII_SIBT_STRING_UCS2_BLOCK to reserve new string ID.
//
- Ucs2BlockSize = (UINT32) sizeof (EFI_HII_SIBT_STRING_UCS2_BLOCK);
+ Ucs2BlockSize = (UINT32)sizeof (EFI_HII_SIBT_STRING_UCS2_BLOCK);
- StringBlock = (UINT8 *) AllocateZeroPool (OldBlockSize + Ucs2BlockSize);
+ StringBlock = (UINT8 *)AllocateZeroPool (OldBlockSize + Ucs2BlockSize);
if (StringBlock == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Done;
}
+
//
// Copy original string blocks, except the EFI_HII_SIBT_END.
//
@@ -1272,7 +1291,7 @@ HiiNewString ( //
BlockPtr = StringBlock + OldBlockSize - sizeof (EFI_HII_SIBT_END_BLOCK);
*BlockPtr = EFI_HII_SIBT_STRING_UCS2;
- BlockPtr += sizeof (EFI_HII_SIBT_STRING_UCS2_BLOCK);
+ BlockPtr += sizeof (EFI_HII_SIBT_STRING_UCS2_BLOCK);
//
// Append a EFI_HII_SIBT_END block to the end.
@@ -1280,11 +1299,12 @@ HiiNewString ( *BlockPtr = EFI_HII_SIBT_END;
ZeroMem (StringPackage->StringBlock, OldBlockSize);
FreePool (StringPackage->StringBlock);
- StringPackage->StringBlock = StringBlock;
- StringPackage->StringPkgHdr->Header.Length += Ucs2BlockSize;
+ StringPackage->StringBlock = StringBlock;
+ StringPackage->StringPkgHdr->Header.Length += Ucs2BlockSize;
PackageListNode->PackageListHdr.PackageLength += Ucs2BlockSize;
}
}
+
if (NewStringId == 0) {
//
// No string package is found.
@@ -1295,7 +1315,7 @@ HiiNewString ( //
// Set new StringId
//
- *StringId = (EFI_STRING_ID) (NewStringId + 1);
+ *StringId = (EFI_STRING_ID)(NewStringId + 1);
}
if (MatchStringPackage != NULL) {
@@ -1323,29 +1343,30 @@ HiiNewString ( //
// Fill in the string package header
//
- HeaderSize = (UINT32) (AsciiStrSize ((CHAR8 *) Language) - 1 + sizeof (EFI_HII_STRING_PACKAGE_HDR));
+ HeaderSize = (UINT32)(AsciiStrSize ((CHAR8 *)Language) - 1 + sizeof (EFI_HII_STRING_PACKAGE_HDR));
StringPackage->StringPkgHdr = AllocateZeroPool (HeaderSize);
if (StringPackage->StringPkgHdr == NULL) {
FreePool (StringPackage);
Status = EFI_OUT_OF_RESOURCES;
goto Done;
}
+
StringPackage->StringPkgHdr->Header.Type = EFI_HII_PACKAGE_STRINGS;
StringPackage->StringPkgHdr->HdrSize = HeaderSize;
StringPackage->StringPkgHdr->StringInfoOffset = HeaderSize;
CopyMem (StringPackage->StringPkgHdr->LanguageWindow, mLanguageWindow, 16 * sizeof (CHAR16));
- StringPackage->StringPkgHdr->LanguageName = 1;
- AsciiStrCpyS (StringPackage->StringPkgHdr->Language, (HeaderSize - OFFSET_OF(EFI_HII_STRING_PACKAGE_HDR,Language)) / sizeof (CHAR8), (CHAR8 *) Language);
+ StringPackage->StringPkgHdr->LanguageName = 1;
+ AsciiStrCpyS (StringPackage->StringPkgHdr->Language, (HeaderSize - OFFSET_OF (EFI_HII_STRING_PACKAGE_HDR, Language)) / sizeof (CHAR8), (CHAR8 *)Language);
//
// Calculate the length of the string blocks, including string block to record
// printable language full name and EFI_HII_SIBT_END_BLOCK.
//
- Ucs2BlockSize = (UINT32) (StrSize ((CHAR16 *) LanguageName) +
- (*StringId - 1) * sizeof (EFI_HII_SIBT_STRING_UCS2_BLOCK) - sizeof (CHAR16));
+ Ucs2BlockSize = (UINT32)(StrSize ((CHAR16 *)LanguageName) +
+ (*StringId - 1) * sizeof (EFI_HII_SIBT_STRING_UCS2_BLOCK) - sizeof (CHAR16));
- BlockSize = Ucs2BlockSize + sizeof (EFI_HII_SIBT_END_BLOCK);
- StringPackage->StringBlock = (UINT8 *) AllocateZeroPool (BlockSize);
+ BlockSize = Ucs2BlockSize + sizeof (EFI_HII_SIBT_END_BLOCK);
+ StringPackage->StringBlock = (UINT8 *)AllocateZeroPool (BlockSize);
if (StringPackage->StringBlock == NULL) {
FreePool (StringPackage->StringPkgHdr);
FreePool (StringPackage);
@@ -1358,13 +1379,14 @@ HiiNewString ( //
BlockPtr = StringPackage->StringBlock;
*BlockPtr = EFI_HII_SIBT_STRING_UCS2;
- BlockPtr += sizeof (EFI_HII_STRING_BLOCK);
- CopyMem (BlockPtr, (EFI_STRING) LanguageName, StrSize ((EFI_STRING) LanguageName));
- BlockPtr += StrSize ((EFI_STRING) LanguageName);
- for (Index = 2; Index <= *StringId - 1; Index ++) {
+ BlockPtr += sizeof (EFI_HII_STRING_BLOCK);
+ CopyMem (BlockPtr, (EFI_STRING)LanguageName, StrSize ((EFI_STRING)LanguageName));
+ BlockPtr += StrSize ((EFI_STRING)LanguageName);
+ for (Index = 2; Index <= *StringId - 1; Index++) {
*BlockPtr = EFI_HII_SIBT_STRING_UCS2;
BlockPtr += sizeof (EFI_HII_SIBT_STRING_UCS2_BLOCK);
}
+
//
// Insert the end block
//
@@ -1373,7 +1395,7 @@ HiiNewString ( //
// Append this string package node to string package array in this package list.
//
- StringPackage->StringPkgHdr->Header.Length = HeaderSize + BlockSize;
+ StringPackage->StringPkgHdr->Header.Length = HeaderSize + BlockSize;
PackageListNode->PackageListHdr.PackageLength += StringPackage->StringPkgHdr->Header.Length;
InsertTailList (&PackageListNode->StringPkgHdr, &StringPackage->StringEntry);
NewStringPackageCreated = TRUE;
@@ -1385,14 +1407,15 @@ HiiNewString ( //
// Create a EFI_HII_SIBT_STRING_UCS2_BLOCK since font info is not specified.
//
- Ucs2BlockSize = (UINT32) (StrSize (String) + sizeof (EFI_HII_SIBT_STRING_UCS2_BLOCK)
- - sizeof (CHAR16));
+ Ucs2BlockSize = (UINT32)(StrSize (String) + sizeof (EFI_HII_SIBT_STRING_UCS2_BLOCK)
+ - sizeof (CHAR16));
- StringBlock = (UINT8 *) AllocateZeroPool (OldBlockSize + Ucs2BlockSize);
+ StringBlock = (UINT8 *)AllocateZeroPool (OldBlockSize + Ucs2BlockSize);
if (StringBlock == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Done;
}
+
//
// Copy original string blocks, except the EFI_HII_SIBT_END.
//
@@ -1402,9 +1425,9 @@ HiiNewString ( //
BlockPtr = StringBlock + OldBlockSize - sizeof (EFI_HII_SIBT_END_BLOCK);
*BlockPtr = EFI_HII_SIBT_STRING_UCS2;
- BlockPtr += sizeof (EFI_HII_STRING_BLOCK);
- CopyMem (BlockPtr, (EFI_STRING) String, StrSize ((EFI_STRING) String));
- BlockPtr += StrSize ((EFI_STRING) String);
+ BlockPtr += sizeof (EFI_HII_STRING_BLOCK);
+ CopyMem (BlockPtr, (EFI_STRING)String, StrSize ((EFI_STRING)String));
+ BlockPtr += StrSize ((EFI_STRING)String);
//
// Append a EFI_HII_SIBT_END block to the end.
@@ -1412,10 +1435,9 @@ HiiNewString ( *BlockPtr = EFI_HII_SIBT_END;
ZeroMem (StringPackage->StringBlock, OldBlockSize);
FreePool (StringPackage->StringBlock);
- StringPackage->StringBlock = StringBlock;
- StringPackage->StringPkgHdr->Header.Length += Ucs2BlockSize;
+ StringPackage->StringBlock = StringBlock;
+ StringPackage->StringPkgHdr->Header.Length += Ucs2BlockSize;
PackageListNode->PackageListHdr.PackageLength += Ucs2BlockSize;
-
} else {
//
// StringFontInfo is specified here. If there is a EFI_HII_SIBT_FONT_BLOCK
@@ -1423,17 +1445,18 @@ HiiNewString ( // only. Otherwise create a EFI_HII_SIBT_FONT block with a EFI_HII_SIBT_STRING
// _UCS2_FONT block.
//
- Ucs2FontBlockSize = (UINT32) (StrSize (String) + sizeof (EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK) -
- sizeof (CHAR16));
+ Ucs2FontBlockSize = (UINT32)(StrSize (String) + sizeof (EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK) -
+ sizeof (CHAR16));
if (ReferFontInfoLocally (Private, StringPackage, StringPackage->FontId, FALSE, GlobalFont, &LocalFont)) {
//
// Create a EFI_HII_SIBT_STRING_UCS2_FONT block only.
//
- StringBlock = (UINT8 *) AllocateZeroPool (OldBlockSize + Ucs2FontBlockSize);
+ StringBlock = (UINT8 *)AllocateZeroPool (OldBlockSize + Ucs2FontBlockSize);
if (StringBlock == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Done;
}
+
//
// Copy original string blocks, except the EFI_HII_SIBT_END.
//
@@ -1443,11 +1466,11 @@ HiiNewString ( //
BlockPtr = StringBlock + OldBlockSize - sizeof (EFI_HII_SIBT_END_BLOCK);
*BlockPtr = EFI_HII_SIBT_STRING_UCS2_FONT;
- BlockPtr += sizeof (EFI_HII_STRING_BLOCK);
+ BlockPtr += sizeof (EFI_HII_STRING_BLOCK);
*BlockPtr = LocalFont->FontId;
- BlockPtr ++;
- CopyMem (BlockPtr, (EFI_STRING) String, StrSize ((EFI_STRING) String));
- BlockPtr += StrSize ((EFI_STRING) String);
+ BlockPtr++;
+ CopyMem (BlockPtr, (EFI_STRING)String, StrSize ((EFI_STRING)String));
+ BlockPtr += StrSize ((EFI_STRING)String);
//
// Append a EFI_HII_SIBT_END block to the end.
@@ -1455,23 +1478,23 @@ HiiNewString ( *BlockPtr = EFI_HII_SIBT_END;
ZeroMem (StringPackage->StringBlock, OldBlockSize);
FreePool (StringPackage->StringBlock);
- StringPackage->StringBlock = StringBlock;
- StringPackage->StringPkgHdr->Header.Length += Ucs2FontBlockSize;
+ StringPackage->StringBlock = StringBlock;
+ StringPackage->StringPkgHdr->Header.Length += Ucs2FontBlockSize;
PackageListNode->PackageListHdr.PackageLength += Ucs2FontBlockSize;
-
} else {
//
// EFI_HII_SIBT_FONT_BLOCK does not exist in current string package, so
// create a EFI_HII_SIBT_FONT block to record the font info, then generate
// a EFI_HII_SIBT_STRING_UCS2_FONT block to record the incoming string.
//
- FontBlockSize = (UINT32) (StrSize (((EFI_FONT_INFO *) StringFontInfo)->FontName) +
- sizeof (EFI_HII_SIBT_FONT_BLOCK) - sizeof (CHAR16));
- StringBlock = (UINT8 *) AllocateZeroPool (OldBlockSize + FontBlockSize + Ucs2FontBlockSize);
+ FontBlockSize = (UINT32)(StrSize (((EFI_FONT_INFO *)StringFontInfo)->FontName) +
+ sizeof (EFI_HII_SIBT_FONT_BLOCK) - sizeof (CHAR16));
+ StringBlock = (UINT8 *)AllocateZeroPool (OldBlockSize + FontBlockSize + Ucs2FontBlockSize);
if (StringBlock == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Done;
}
+
//
// Copy original string blocks, except the EFI_HII_SIBT_END.
//
@@ -1485,31 +1508,31 @@ HiiNewString ( Ext2.Header.BlockType = EFI_HII_SIBT_EXT2;
Ext2.BlockType2 = EFI_HII_SIBT_FONT;
- Ext2.Length = (UINT16) FontBlockSize;
+ Ext2.Length = (UINT16)FontBlockSize;
CopyMem (BlockPtr, &Ext2, sizeof (EFI_HII_SIBT_EXT2_BLOCK));
BlockPtr += sizeof (EFI_HII_SIBT_EXT2_BLOCK);
*BlockPtr = LocalFont->FontId;
- BlockPtr ++;
- CopyMem (BlockPtr, &((EFI_FONT_INFO *) StringFontInfo)->FontSize, sizeof (UINT16));
+ BlockPtr++;
+ CopyMem (BlockPtr, &((EFI_FONT_INFO *)StringFontInfo)->FontSize, sizeof (UINT16));
BlockPtr += sizeof (UINT16);
- CopyMem (BlockPtr, &((EFI_FONT_INFO *) StringFontInfo)->FontStyle, sizeof (EFI_HII_FONT_STYLE));
+ CopyMem (BlockPtr, &((EFI_FONT_INFO *)StringFontInfo)->FontStyle, sizeof (EFI_HII_FONT_STYLE));
BlockPtr += sizeof (EFI_HII_FONT_STYLE);
CopyMem (
BlockPtr,
- &((EFI_FONT_INFO *) StringFontInfo)->FontName,
- StrSize (((EFI_FONT_INFO *) StringFontInfo)->FontName)
+ &((EFI_FONT_INFO *)StringFontInfo)->FontName,
+ StrSize (((EFI_FONT_INFO *)StringFontInfo)->FontName)
);
- BlockPtr += StrSize (((EFI_FONT_INFO *) StringFontInfo)->FontName);
+ BlockPtr += StrSize (((EFI_FONT_INFO *)StringFontInfo)->FontName);
//
// Create a EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK
//
*BlockPtr = EFI_HII_SIBT_STRING_UCS2_FONT;
- BlockPtr += sizeof (EFI_HII_STRING_BLOCK);
+ BlockPtr += sizeof (EFI_HII_STRING_BLOCK);
*BlockPtr = LocalFont->FontId;
- BlockPtr ++;
- CopyMem (BlockPtr, (EFI_STRING) String, StrSize ((EFI_STRING) String));
- BlockPtr += StrSize ((EFI_STRING) String);
+ BlockPtr++;
+ CopyMem (BlockPtr, (EFI_STRING)String, StrSize ((EFI_STRING)String));
+ BlockPtr += StrSize ((EFI_STRING)String);
//
// Append a EFI_HII_SIBT_END block to the end.
@@ -1517,8 +1540,8 @@ HiiNewString ( *BlockPtr = EFI_HII_SIBT_END;
ZeroMem (StringPackage->StringBlock, OldBlockSize);
FreePool (StringPackage->StringBlock);
- StringPackage->StringBlock = StringBlock;
- StringPackage->StringPkgHdr->Header.Length += FontBlockSize + Ucs2FontBlockSize;
+ StringPackage->StringBlock = StringBlock;
+ StringPackage->StringPkgHdr->Header.Length += FontBlockSize + Ucs2FontBlockSize;
PackageListNode->PackageListHdr.PackageLength += FontBlockSize + Ucs2FontBlockSize;
//
@@ -1535,12 +1558,12 @@ Done: // Trigger any registered notification function for new string package
//
Status = InvokeRegisteredFunction (
- Private,
- EFI_HII_DATABASE_NOTIFY_NEW_PACK,
- (VOID *) StringPackage,
- EFI_HII_PACKAGE_STRINGS,
- PackageList
- );
+ Private,
+ EFI_HII_DATABASE_NOTIFY_NEW_PACK,
+ (VOID *)StringPackage,
+ EFI_HII_PACKAGE_STRINGS,
+ PackageList
+ );
}
if (!EFI_ERROR (Status)) {
@@ -1548,11 +1571,12 @@ Done: // Update MaxString Id to new StringId
//
for (Link = PackageListNode->StringPkgHdr.ForwardLink;
- Link != &PackageListNode->StringPkgHdr;
- Link = Link->ForwardLink
- ) {
- StringPackage = CR (Link, HII_STRING_PACKAGE_INSTANCE, StringEntry, HII_STRING_PACKAGE_SIGNATURE);
- StringPackage->MaxStringId = *StringId;
+ Link != &PackageListNode->StringPkgHdr;
+ Link = Link->ForwardLink
+ )
+ {
+ StringPackage = CR (Link, HII_STRING_PACKAGE_INSTANCE, StringEntry, HII_STRING_PACKAGE_SIGNATURE);
+ StringPackage->MaxStringId = *StringId;
}
} else if (NewStringPackageCreated) {
//
@@ -1563,6 +1587,7 @@ Done: FreePool (StringPackage->StringPkgHdr);
FreePool (StringPackage);
}
+
//
// The contents of HiiDataBase may updated,need to check.
//
@@ -1572,7 +1597,7 @@ Done: //
if (gExportAfterReadyToBoot) {
if (!EFI_ERROR (Status)) {
- HiiGetDatabaseInfo(&Private->HiiDatabase);
+ HiiGetDatabaseInfo (&Private->HiiDatabase);
}
}
@@ -1581,7 +1606,6 @@ Done: return Status;
}
-
/**
This function retrieves the string specified by StringId which is associated
with the specified PackageList in the language Language and copies it into
@@ -1618,13 +1642,13 @@ Done: EFI_STATUS
EFIAPI
HiiGetString (
- IN CONST EFI_HII_STRING_PROTOCOL *This,
- IN CONST CHAR8 *Language,
- IN EFI_HII_HANDLE PackageList,
- IN EFI_STRING_ID StringId,
- OUT EFI_STRING String,
- IN OUT UINTN *StringSize,
- OUT EFI_FONT_INFO **StringFontInfo OPTIONAL
+ IN CONST EFI_HII_STRING_PROTOCOL *This,
+ IN CONST CHAR8 *Language,
+ IN EFI_HII_HANDLE PackageList,
+ IN EFI_STRING_ID StringId,
+ OUT EFI_STRING String,
+ IN OUT UINTN *StringSize,
+ OUT EFI_FONT_INFO **StringFontInfo OPTIONAL
)
{
EFI_STATUS Status;
@@ -1634,11 +1658,11 @@ HiiGetString ( HII_DATABASE_PACKAGE_LIST_INSTANCE *PackageListNode;
HII_STRING_PACKAGE_INSTANCE *StringPackage;
- if (This == NULL || Language == NULL || StringId < 1 || StringSize == NULL || PackageList == NULL) {
+ if ((This == NULL) || (Language == NULL) || (StringId < 1) || (StringSize == NULL) || (PackageList == NULL)) {
return EFI_INVALID_PARAMETER;
}
- if (String == NULL && *StringSize != 0) {
+ if ((String == NULL) && (*StringSize != 0)) {
return EFI_INVALID_PARAMETER;
}
@@ -1646,7 +1670,7 @@ HiiGetString ( return EFI_NOT_FOUND;
}
- Private = HII_STRING_DATABASE_PRIVATE_DATA_FROM_THIS (This);
+ Private = HII_STRING_DATABASE_PRIVATE_DATA_FROM_THIS (This);
PackageListNode = NULL;
for (Link = Private->DatabaseList.ForwardLink; Link != &Private->DatabaseList; Link = Link->ForwardLink) {
@@ -1664,24 +1688,27 @@ HiiGetString ( for (Link = PackageListNode->StringPkgHdr.ForwardLink;
Link != &PackageListNode->StringPkgHdr;
Link = Link->ForwardLink
- ) {
- StringPackage = CR (Link, HII_STRING_PACKAGE_INSTANCE, StringEntry, HII_STRING_PACKAGE_SIGNATURE);
- if (HiiCompareLanguage (StringPackage->StringPkgHdr->Language, (CHAR8 *) Language)) {
- Status = GetStringWorker (Private, StringPackage, StringId, String, StringSize, StringFontInfo);
- if (Status != EFI_NOT_FOUND) {
- return Status;
- }
+ )
+ {
+ StringPackage = CR (Link, HII_STRING_PACKAGE_INSTANCE, StringEntry, HII_STRING_PACKAGE_SIGNATURE);
+ if (HiiCompareLanguage (StringPackage->StringPkgHdr->Language, (CHAR8 *)Language)) {
+ Status = GetStringWorker (Private, StringPackage, StringId, String, StringSize, StringFontInfo);
+ if (Status != EFI_NOT_FOUND) {
+ return Status;
}
}
- //
- // Second search: to match the StringId in other available languages if exist.
- //
- for (Link = PackageListNode->StringPkgHdr.ForwardLink;
- Link != &PackageListNode->StringPkgHdr;
- Link = Link->ForwardLink
- ) {
+ }
+
+ //
+ // Second search: to match the StringId in other available languages if exist.
+ //
+ for (Link = PackageListNode->StringPkgHdr.ForwardLink;
+ Link != &PackageListNode->StringPkgHdr;
+ Link = Link->ForwardLink
+ )
+ {
StringPackage = CR (Link, HII_STRING_PACKAGE_INSTANCE, StringEntry, HII_STRING_PACKAGE_SIGNATURE);
- Status = GetStringWorker (Private, StringPackage, StringId, NULL, NULL, NULL);
+ Status = GetStringWorker (Private, StringPackage, StringId, NULL, NULL, NULL);
if (!EFI_ERROR (Status)) {
return EFI_INVALID_LANGUAGE;
}
@@ -1691,8 +1718,6 @@ HiiGetString ( return EFI_NOT_FOUND;
}
-
-
/**
This function updates the string specified by StringId in the specified PackageList to the text
specified by String and, optionally, the font information specified by StringFontInfo.
@@ -1719,12 +1744,12 @@ HiiGetString ( EFI_STATUS
EFIAPI
HiiSetString (
- IN CONST EFI_HII_STRING_PROTOCOL *This,
- IN EFI_HII_HANDLE PackageList,
- IN EFI_STRING_ID StringId,
- IN CONST CHAR8 *Language,
- IN CONST EFI_STRING String,
- IN CONST EFI_FONT_INFO *StringFontInfo OPTIONAL
+ IN CONST EFI_HII_STRING_PROTOCOL *This,
+ IN EFI_HII_HANDLE PackageList,
+ IN EFI_STRING_ID StringId,
+ IN CONST CHAR8 *Language,
+ IN CONST EFI_STRING String,
+ IN CONST EFI_FONT_INFO *StringFontInfo OPTIONAL
)
{
EFI_STATUS Status;
@@ -1735,7 +1760,7 @@ HiiSetString ( HII_STRING_PACKAGE_INSTANCE *StringPackage;
UINT32 OldPackageLen;
- if (This == NULL || Language == NULL || StringId < 1 || String == NULL || PackageList == NULL) {
+ if ((This == NULL) || (Language == NULL) || (StringId < 1) || (String == NULL) || (PackageList == NULL)) {
return EFI_INVALID_PARAMETER;
}
@@ -1745,13 +1770,13 @@ HiiSetString ( EfiAcquireLock (&mHiiDatabaseLock);
- Private = HII_STRING_DATABASE_PRIVATE_DATA_FROM_THIS (This);
+ Private = HII_STRING_DATABASE_PRIVATE_DATA_FROM_THIS (This);
PackageListNode = NULL;
for (Link = Private->DatabaseList.ForwardLink; Link != &Private->DatabaseList; Link = Link->ForwardLink) {
DatabaseRecord = CR (Link, HII_DATABASE_RECORD, DatabaseEntry, HII_DATABASE_RECORD_SIGNATURE);
if (DatabaseRecord->Handle == PackageList) {
- PackageListNode = (HII_DATABASE_PACKAGE_LIST_INSTANCE *) (DatabaseRecord->PackageList);
+ PackageListNode = (HII_DATABASE_PACKAGE_LIST_INSTANCE *)(DatabaseRecord->PackageList);
}
}
@@ -1759,29 +1784,32 @@ HiiSetString ( for (Link = PackageListNode->StringPkgHdr.ForwardLink;
Link != &PackageListNode->StringPkgHdr;
Link = Link->ForwardLink
- ) {
+ )
+ {
StringPackage = CR (Link, HII_STRING_PACKAGE_INSTANCE, StringEntry, HII_STRING_PACKAGE_SIGNATURE);
- if (HiiCompareLanguage (StringPackage->StringPkgHdr->Language, (CHAR8 *) Language)) {
+ if (HiiCompareLanguage (StringPackage->StringPkgHdr->Language, (CHAR8 *)Language)) {
OldPackageLen = StringPackage->StringPkgHdr->Header.Length;
- Status = SetStringWorker (
- Private,
- StringPackage,
- StringId,
- (EFI_STRING) String,
- (EFI_FONT_INFO *) StringFontInfo
- );
+ Status = SetStringWorker (
+ Private,
+ StringPackage,
+ StringId,
+ (EFI_STRING)String,
+ (EFI_FONT_INFO *)StringFontInfo
+ );
if (EFI_ERROR (Status)) {
EfiReleaseLock (&mHiiDatabaseLock);
return Status;
}
+
PackageListNode->PackageListHdr.PackageLength += StringPackage->StringPkgHdr->Header.Length - OldPackageLen;
//
// Check whether need to get the contents of HiiDataBase.
// Only after ReadyToBoot to do the export.
//
if (gExportAfterReadyToBoot) {
- HiiGetDatabaseInfo(&Private->HiiDatabase);
+ HiiGetDatabaseInfo (&Private->HiiDatabase);
}
+
EfiReleaseLock (&mHiiDatabaseLock);
return EFI_SUCCESS;
}
@@ -1792,8 +1820,6 @@ HiiSetString ( return EFI_NOT_FOUND;
}
-
-
/**
This function returns the list of supported languages, in the format specified
in Appendix M of UEFI 2.1 spec.
@@ -1819,10 +1845,10 @@ HiiSetString ( EFI_STATUS
EFIAPI
HiiGetLanguages (
- IN CONST EFI_HII_STRING_PROTOCOL *This,
- IN EFI_HII_HANDLE PackageList,
- IN OUT CHAR8 *Languages,
- IN OUT UINTN *LanguagesSize
+ IN CONST EFI_HII_STRING_PROTOCOL *This,
+ IN EFI_HII_HANDLE PackageList,
+ IN OUT CHAR8 *Languages,
+ IN OUT UINTN *LanguagesSize
)
{
LIST_ENTRY *Link;
@@ -1832,12 +1858,14 @@ HiiGetLanguages ( HII_STRING_PACKAGE_INSTANCE *StringPackage;
UINTN ResultSize;
- if (This == NULL || LanguagesSize == NULL || PackageList == NULL) {
+ if ((This == NULL) || (LanguagesSize == NULL) || (PackageList == NULL)) {
return EFI_INVALID_PARAMETER;
}
- if (*LanguagesSize != 0 && Languages == NULL) {
+
+ if ((*LanguagesSize != 0) && (Languages == NULL)) {
return EFI_INVALID_PARAMETER;
}
+
if (!IsHiiHandleValid (PackageList)) {
return EFI_NOT_FOUND;
}
@@ -1846,12 +1874,13 @@ HiiGetLanguages ( PackageListNode = NULL;
for (Link = Private->DatabaseList.ForwardLink; Link != &Private->DatabaseList; Link = Link->ForwardLink) {
- DatabaseRecord = CR (Link, HII_DATABASE_RECORD, DatabaseEntry, HII_DATABASE_RECORD_SIGNATURE);
+ DatabaseRecord = CR (Link, HII_DATABASE_RECORD, DatabaseEntry, HII_DATABASE_RECORD_SIGNATURE);
if (DatabaseRecord->Handle == PackageList) {
PackageListNode = DatabaseRecord->PackageList;
break;
}
}
+
if (PackageListNode == NULL) {
return EFI_NOT_FOUND;
}
@@ -1863,15 +1892,17 @@ HiiGetLanguages ( for (Link = PackageListNode->StringPkgHdr.ForwardLink;
Link != &PackageListNode->StringPkgHdr;
Link = Link->ForwardLink
- ) {
+ )
+ {
StringPackage = CR (Link, HII_STRING_PACKAGE_INSTANCE, StringEntry, HII_STRING_PACKAGE_SIGNATURE);
- ResultSize += AsciiStrSize (StringPackage->StringPkgHdr->Language);
+ ResultSize += AsciiStrSize (StringPackage->StringPkgHdr->Language);
if (ResultSize <= *LanguagesSize) {
AsciiStrCpyS (Languages, *LanguagesSize / sizeof (CHAR8), StringPackage->StringPkgHdr->Language);
- Languages += AsciiStrSize (StringPackage->StringPkgHdr->Language);
+ Languages += AsciiStrSize (StringPackage->StringPkgHdr->Language);
*(Languages - 1) = L';';
}
}
+
if (ResultSize == 0) {
return EFI_NOT_FOUND;
}
@@ -1885,7 +1916,6 @@ HiiGetLanguages ( return EFI_SUCCESS;
}
-
/**
Each string package has associated with it a single primary language and zero
or more secondary languages. This routine returns the secondary languages
@@ -1922,11 +1952,11 @@ HiiGetLanguages ( EFI_STATUS
EFIAPI
HiiGetSecondaryLanguages (
- IN CONST EFI_HII_STRING_PROTOCOL *This,
- IN EFI_HII_HANDLE PackageList,
- IN CONST CHAR8 *PrimaryLanguage,
- IN OUT CHAR8 *SecondaryLanguages,
- IN OUT UINTN *SecondaryLanguagesSize
+ IN CONST EFI_HII_STRING_PROTOCOL *This,
+ IN EFI_HII_HANDLE PackageList,
+ IN CONST CHAR8 *PrimaryLanguage,
+ IN OUT CHAR8 *SecondaryLanguages,
+ IN OUT UINTN *SecondaryLanguagesSize
)
{
LIST_ENTRY *Link;
@@ -1938,38 +1968,42 @@ HiiGetSecondaryLanguages ( CHAR8 *Languages;
UINTN ResultSize;
- if (This == NULL || PackageList == NULL || PrimaryLanguage == NULL || SecondaryLanguagesSize == NULL) {
+ if ((This == NULL) || (PackageList == NULL) || (PrimaryLanguage == NULL) || (SecondaryLanguagesSize == NULL)) {
return EFI_INVALID_PARAMETER;
}
- if (SecondaryLanguages == NULL && *SecondaryLanguagesSize != 0) {
+
+ if ((SecondaryLanguages == NULL) && (*SecondaryLanguagesSize != 0)) {
return EFI_INVALID_PARAMETER;
}
+
if (!IsHiiHandleValid (PackageList)) {
return EFI_NOT_FOUND;
}
- Private = HII_STRING_DATABASE_PRIVATE_DATA_FROM_THIS (This);
+ Private = HII_STRING_DATABASE_PRIVATE_DATA_FROM_THIS (This);
PackageListNode = NULL;
for (Link = Private->DatabaseList.ForwardLink; Link != &Private->DatabaseList; Link = Link->ForwardLink) {
- DatabaseRecord = CR (Link, HII_DATABASE_RECORD, DatabaseEntry, HII_DATABASE_RECORD_SIGNATURE);
+ DatabaseRecord = CR (Link, HII_DATABASE_RECORD, DatabaseEntry, HII_DATABASE_RECORD_SIGNATURE);
if (DatabaseRecord->Handle == PackageList) {
- PackageListNode = (HII_DATABASE_PACKAGE_LIST_INSTANCE *) (DatabaseRecord->PackageList);
- break;
- }
- }
- if (PackageListNode == NULL) {
- return EFI_NOT_FOUND;
+ PackageListNode = (HII_DATABASE_PACKAGE_LIST_INSTANCE *)(DatabaseRecord->PackageList);
+ break;
}
+ }
- Languages = NULL;
- ResultSize = 0;
- for (Link1 = PackageListNode->StringPkgHdr.ForwardLink;
- Link1 != &PackageListNode->StringPkgHdr;
- Link1 = Link1->ForwardLink
- ) {
+ if (PackageListNode == NULL) {
+ return EFI_NOT_FOUND;
+ }
+
+ Languages = NULL;
+ ResultSize = 0;
+ for (Link1 = PackageListNode->StringPkgHdr.ForwardLink;
+ Link1 != &PackageListNode->StringPkgHdr;
+ Link1 = Link1->ForwardLink
+ )
+ {
StringPackage = CR (Link1, HII_STRING_PACKAGE_INSTANCE, StringEntry, HII_STRING_PACKAGE_SIGNATURE);
- if (HiiCompareLanguage (StringPackage->StringPkgHdr->Language, (CHAR8 *) PrimaryLanguage)) {
+ if (HiiCompareLanguage (StringPackage->StringPkgHdr->Language, (CHAR8 *)PrimaryLanguage)) {
Languages = StringPackage->StringPkgHdr->Language;
//
// Language is a series of ';' terminated strings, first one is primary
@@ -1980,6 +2014,7 @@ HiiGetSecondaryLanguages ( if (Languages == NULL) {
break;
}
+
Languages++;
ResultSize = AsciiStrSize (Languages);
@@ -2015,9 +2050,9 @@ AsciiHiiToLower ( //
// Convert all hex digits in range [A-F] in the configuration header to [a-f]
//
- for (; *ConfigString != '\0'; ConfigString++) {
- if ( *ConfigString >= 'A' && *ConfigString <= 'Z') {
- *ConfigString = (CHAR8) (*ConfigString - 'A' + 'a');
+ for ( ; *ConfigString != '\0'; ConfigString++) {
+ if ((*ConfigString >= 'A') && (*ConfigString <= 'Z')) {
+ *ConfigString = (CHAR8)(*ConfigString - 'A' + 'a');
}
}
}
@@ -2049,13 +2084,13 @@ HiiCompareLanguage ( StrLen = AsciiStrSize (Language1);
Lan1 = AllocateZeroPool (StrLen);
ASSERT (Lan1 != NULL);
- AsciiStrCpyS(Lan1, StrLen / sizeof (CHAR8), Language1);
+ AsciiStrCpyS (Lan1, StrLen / sizeof (CHAR8), Language1);
AsciiHiiToLower (Lan1);
StrLen = AsciiStrSize (Language2);
Lan2 = AllocateZeroPool (StrLen);
ASSERT (Lan2 != NULL);
- AsciiStrCpyS(Lan2, StrLen / sizeof (CHAR8), Language2);
+ AsciiStrCpyS (Lan2, StrLen / sizeof (CHAR8), Language2);
AsciiHiiToLower (Lan2);
//
@@ -2081,5 +2116,5 @@ HiiCompareLanguage ( // Language2[Index] is not a Null-terminator, then Language2 is longer than
// the Primary Language in Language1, and FALSE must be returned.
//
- return (BOOLEAN) (Language2[Index] == 0);
+ return (BOOLEAN)(Language2[Index] == 0);
}
|