\r
**/\r
\r
-\r
#include "HiiDatabase.h"\r
-extern HII_DATABASE_PRIVATE_DATA mPrivate;\r
+extern HII_DATABASE_PRIVATE_DATA mPrivate;\r
\r
/**\r
Calculate the number of Unicode characters of the incoming Configuration string,\r
**/\r
UINTN\r
CalculateConfigStringLen (\r
- IN EFI_STRING String\r
+ IN EFI_STRING String\r
)\r
{\r
EFI_STRING TmpPtr;\r
return (TmpPtr - String);\r
}\r
\r
-\r
/**\r
Convert the hex UNICODE %02x encoding of a UEFI device path to binary\r
from <PathHdr> of <ConfigHdr>.\r
**/\r
EFI_STATUS\r
GetDevicePath (\r
- IN EFI_STRING String,\r
- OUT UINT8 **DevicePathData\r
+ IN EFI_STRING String,\r
+ OUT UINT8 **DevicePathData\r
)\r
{\r
- UINTN Length;\r
- EFI_STRING PathHdr;\r
- UINT8 *DevicePathBuffer;\r
- CHAR16 TemStr[2];\r
- UINTN Index;\r
- UINT8 DigitUint8;\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
-\r
-\r
- if (String == NULL || DevicePathData == NULL) {\r
+ UINTN Length;\r
+ EFI_STRING PathHdr;\r
+ UINT8 *DevicePathBuffer;\r
+ CHAR16 TemStr[2];\r
+ UINTN Index;\r
+ UINT8 DigitUint8;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
+\r
+ if ((String == NULL) || (DevicePathData == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
//\r
// Find the 'PATH=' of <PathHdr> and skip it.\r
//\r
- for (; (*String != 0 && StrnCmp (String, L"PATH=", StrLen (L"PATH=")) != 0); String++);\r
+ for ( ; (*String != 0 && StrnCmp (String, L"PATH=", StrLen (L"PATH=")) != 0); String++) {\r
+ }\r
+\r
if (*String == 0) {\r
return EFI_INVALID_PARAMETER;\r
}\r
+\r
//\r
// Check whether path data does exist.\r
//\r
if (*String == 0) {\r
return EFI_INVALID_PARAMETER;\r
}\r
+\r
PathHdr = String;\r
\r
//\r
// or '\0' (end of configuration string) is the UNICODE %02x bytes encoding\r
// of UEFI device path.\r
//\r
- for (Length = 0; *String != 0 && *String != L'&'; String++, Length++);\r
+ for (Length = 0; *String != 0 && *String != L'&'; String++, Length++) {\r
+ }\r
+\r
//\r
// Check DevicePath Length\r
//\r
// as the device path resides in RAM memory.\r
// Translate the data into binary.\r
//\r
- DevicePathBuffer = (UINT8 *) AllocateZeroPool ((Length + 1) / 2);\r
+ DevicePathBuffer = (UINT8 *)AllocateZeroPool ((Length + 1) / 2);\r
if (DevicePathBuffer == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
// Convert DevicePath\r
//\r
ZeroMem (TemStr, sizeof (TemStr));\r
- for (Index = 0; Index < Length; Index ++) {\r
- TemStr[0] = PathHdr[Index];\r
- DigitUint8 = (UINT8) StrHexToUint64 (TemStr);\r
+ for (Index = 0; Index < Length; Index++) {\r
+ TemStr[0] = PathHdr[Index];\r
+ DigitUint8 = (UINT8)StrHexToUint64 (TemStr);\r
if ((Index & 1) == 0) {\r
- DevicePathBuffer [Index/2] = DigitUint8;\r
+ DevicePathBuffer[Index/2] = DigitUint8;\r
} else {\r
- DevicePathBuffer [Index/2] = (UINT8) ((DevicePathBuffer [Index/2] << 4) + DigitUint8);\r
+ DevicePathBuffer[Index/2] = (UINT8)((DevicePathBuffer[Index/2] << 4) + DigitUint8);\r
}\r
}\r
\r
//\r
// Validate DevicePath\r
//\r
- DevicePath = (EFI_DEVICE_PATH_PROTOCOL *) DevicePathBuffer;\r
+ DevicePath = (EFI_DEVICE_PATH_PROTOCOL *)DevicePathBuffer;\r
while (!IsDevicePathEnd (DevicePath)) {\r
if ((DevicePath->Type == 0) || (DevicePath->SubType == 0) || (DevicePathNodeLength (DevicePath) < sizeof (EFI_DEVICE_PATH_PROTOCOL))) {\r
//\r
FreePool (DevicePathBuffer);\r
return EFI_NOT_FOUND;\r
}\r
+\r
DevicePath = NextDevicePathNode (DevicePath);\r
}\r
\r
Lower = TRUE;\r
} else if (*String == L'&') {\r
Lower = FALSE;\r
- } else if (Lower && *String >= L'A' && *String <= L'F') {\r
- *String = (CHAR16) (*String - L'A' + L'a');\r
+ } else if (Lower && (*String >= L'A') && (*String <= L'F')) {\r
+ *String = (CHAR16)(*String - L'A' + L'a');\r
}\r
}\r
\r
**/\r
VOID\r
GenerateSubStr (\r
- IN CONST EFI_STRING String,\r
- IN UINTN BufferLen,\r
- IN VOID *Buffer,\r
- IN UINT8 Flag,\r
- OUT EFI_STRING *SubStr\r
+ IN CONST EFI_STRING String,\r
+ IN UINTN BufferLen,\r
+ IN VOID *Buffer,\r
+ IN UINT8 Flag,\r
+ OUT EFI_STRING *SubStr\r
)\r
{\r
UINTN Length;\r
StrCpyS (Str, Length, String);\r
\r
StringHeader = Str + StrLen (String);\r
- TemString = (CHAR16 *) StringHeader;\r
+ TemString = (CHAR16 *)StringHeader;\r
\r
switch (Flag) {\r
- case 1:\r
- //\r
- // Convert Buffer to Hex String in reverse order\r
- //\r
- TemBuffer = ((UINT8 *) Buffer);\r
- for (Index = 0; Index < BufferLen; Index ++, TemBuffer ++) {\r
- UnicodeValueToStringS (\r
- TemString,\r
- sizeof (CHAR16) * (Length - StrnLenS (Str, Length)),\r
- PREFIX_ZERO | RADIX_HEX,\r
- *TemBuffer,\r
- 2\r
- );\r
- TemString += StrnLenS (TemString, Length - StrnLenS (Str, Length));\r
- }\r
- break;\r
- case 2:\r
- //\r
- // Check buffer is enough\r
- //\r
- TemName = (CHAR16 *) Buffer;\r
- ASSERT ((BufferLen * 2 + 1) >= (StrLen (TemName) * 4 + 1));\r
- //\r
- // Convert Unicode String to Config String, e.g. "ABCD" => "0041004200430044"\r
- //\r
- for (; *TemName != L'\0'; TemName++) {\r
- UnicodeValueToStringS (\r
- TemString,\r
- sizeof (CHAR16) * (Length - StrnLenS (Str, Length)),\r
- PREFIX_ZERO | RADIX_HEX,\r
- *TemName,\r
- 4\r
- );\r
- TemString += StrnLenS (TemString, Length - StrnLenS (Str, Length));\r
- }\r
- break;\r
- case 3:\r
- //\r
- // Convert Buffer to Hex String\r
- //\r
- TemBuffer = ((UINT8 *) Buffer) + BufferLen - 1;\r
- for (Index = 0; Index < BufferLen; Index ++, TemBuffer --) {\r
- UnicodeValueToStringS (\r
- TemString,\r
- sizeof (CHAR16) * (Length - StrnLenS (Str, Length)),\r
- PREFIX_ZERO | RADIX_HEX,\r
- *TemBuffer,\r
- 2\r
- );\r
- TemString += StrnLenS (TemString, Length - StrnLenS (Str, Length));\r
- }\r
- break;\r
- default:\r
- break;\r
+ case 1:\r
+ //\r
+ // Convert Buffer to Hex String in reverse order\r
+ //\r
+ TemBuffer = ((UINT8 *)Buffer);\r
+ for (Index = 0; Index < BufferLen; Index++, TemBuffer++) {\r
+ UnicodeValueToStringS (\r
+ TemString,\r
+ sizeof (CHAR16) * (Length - StrnLenS (Str, Length)),\r
+ PREFIX_ZERO | RADIX_HEX,\r
+ *TemBuffer,\r
+ 2\r
+ );\r
+ TemString += StrnLenS (TemString, Length - StrnLenS (Str, Length));\r
+ }\r
+\r
+ break;\r
+ case 2:\r
+ //\r
+ // Check buffer is enough\r
+ //\r
+ TemName = (CHAR16 *)Buffer;\r
+ ASSERT ((BufferLen * 2 + 1) >= (StrLen (TemName) * 4 + 1));\r
+ //\r
+ // Convert Unicode String to Config String, e.g. "ABCD" => "0041004200430044"\r
+ //\r
+ for ( ; *TemName != L'\0'; TemName++) {\r
+ UnicodeValueToStringS (\r
+ TemString,\r
+ sizeof (CHAR16) * (Length - StrnLenS (Str, Length)),\r
+ PREFIX_ZERO | RADIX_HEX,\r
+ *TemName,\r
+ 4\r
+ );\r
+ TemString += StrnLenS (TemString, Length - StrnLenS (Str, Length));\r
+ }\r
+\r
+ break;\r
+ case 3:\r
+ //\r
+ // Convert Buffer to Hex String\r
+ //\r
+ TemBuffer = ((UINT8 *)Buffer) + BufferLen - 1;\r
+ for (Index = 0; Index < BufferLen; Index++, TemBuffer--) {\r
+ UnicodeValueToStringS (\r
+ TemString,\r
+ sizeof (CHAR16) * (Length - StrnLenS (Str, Length)),\r
+ PREFIX_ZERO | RADIX_HEX,\r
+ *TemBuffer,\r
+ 2\r
+ );\r
+ TemString += StrnLenS (TemString, Length - StrnLenS (Str, Length));\r
+ }\r
+\r
+ break;\r
+ default:\r
+ break;\r
}\r
\r
//\r
*SubStr = Str;\r
}\r
\r
-\r
/**\r
Retrieve the <ConfigBody> from String then output it.\r
\r
**/\r
EFI_STATUS\r
OutputConfigBody (\r
- IN EFI_STRING String,\r
- OUT EFI_STRING *ConfigBody\r
+ IN EFI_STRING String,\r
+ OUT EFI_STRING *ConfigBody\r
)\r
{\r
EFI_STRING TmpPtr;\r
EFI_STRING Result;\r
UINTN Length;\r
\r
- if (String == NULL || ConfigBody == NULL) {\r
+ if ((String == NULL) || (ConfigBody == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
if (Length == 0) {\r
return EFI_NOT_FOUND;\r
}\r
+\r
Result = AllocateCopyPool (Length * sizeof (CHAR16), String);\r
if (Result == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
*(Result + Length - 1) = 0;\r
- *ConfigBody = Result;\r
+ *ConfigBody = Result;\r
return EFI_SUCCESS;\r
}\r
\r
**/\r
EFI_STATUS\r
AppendToMultiString (\r
- IN OUT EFI_STRING *MultiString,\r
- IN EFI_STRING AppendString\r
+ IN OUT EFI_STRING *MultiString,\r
+ IN EFI_STRING AppendString\r
)\r
{\r
- UINTN AppendStringSize;\r
- UINTN MultiStringSize;\r
- UINTN MaxLen;\r
+ UINTN AppendStringSize;\r
+ UINTN MultiStringSize;\r
+ UINTN MaxLen;\r
\r
- if (MultiString == NULL || *MultiString == NULL || AppendString == NULL) {\r
+ if ((MultiString == NULL) || (*MultiString == NULL) || (AppendString == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
AppendStringSize = StrSize (AppendString);\r
MultiStringSize = StrSize (*MultiString);\r
- MaxLen = MAX_STRING_LENGTH / sizeof (CHAR16);\r
+ MaxLen = MAX_STRING_LENGTH / sizeof (CHAR16);\r
\r
//\r
// Enlarge the buffer each time when length exceeds MAX_STRING_LENGTH.\r
//\r
- if (MultiStringSize + AppendStringSize > MAX_STRING_LENGTH ||\r
- MultiStringSize > MAX_STRING_LENGTH) {\r
- *MultiString = (EFI_STRING) ReallocatePool (\r
- MultiStringSize,\r
- MultiStringSize + AppendStringSize,\r
- (VOID *) (*MultiString)\r
- );\r
+ if ((MultiStringSize + AppendStringSize > MAX_STRING_LENGTH) ||\r
+ (MultiStringSize > MAX_STRING_LENGTH))\r
+ {\r
+ *MultiString = (EFI_STRING)ReallocatePool (\r
+ MultiStringSize,\r
+ MultiStringSize + AppendStringSize,\r
+ (VOID *)(*MultiString)\r
+ );\r
MaxLen = (MultiStringSize + AppendStringSize) / sizeof (CHAR16);\r
ASSERT (*MultiString != NULL);\r
}\r
+\r
//\r
// Append the incoming string\r
//\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
Get the value of <Number> in <BlockConfig> format, i.e. the value of OFFSET\r
or WIDTH or VALUE.\r
**/\r
EFI_STATUS\r
GetValueOfNumber (\r
- IN EFI_STRING StringPtr,\r
- OUT UINT8 **Number,\r
- OUT UINTN *Len\r
+ IN EFI_STRING StringPtr,\r
+ OUT UINT8 **Number,\r
+ OUT UINTN *Len\r
)\r
{\r
- EFI_STRING TmpPtr;\r
- UINTN Length;\r
- EFI_STRING Str;\r
- UINT8 *Buf;\r
- EFI_STATUS Status;\r
- UINT8 DigitUint8;\r
- UINTN Index;\r
- CHAR16 TemStr[2];\r
-\r
- if (StringPtr == NULL || *StringPtr == L'\0' || Number == NULL || Len == NULL) {\r
+ EFI_STRING TmpPtr;\r
+ UINTN Length;\r
+ EFI_STRING Str;\r
+ UINT8 *Buf;\r
+ EFI_STATUS Status;\r
+ UINT8 DigitUint8;\r
+ UINTN Index;\r
+ CHAR16 TemStr[2];\r
+\r
+ if ((StringPtr == NULL) || (*StringPtr == L'\0') || (Number == NULL) || (Len == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
while (*StringPtr != L'\0' && *StringPtr != L'&') {\r
StringPtr++;\r
}\r
+\r
*Len = StringPtr - TmpPtr;\r
Length = *Len + 1;\r
\r
- Str = (EFI_STRING) AllocateZeroPool (Length * sizeof (CHAR16));\r
+ Str = (EFI_STRING)AllocateZeroPool (Length * sizeof (CHAR16));\r
if (Str == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Exit;\r
}\r
+\r
CopyMem (Str, TmpPtr, *Len * sizeof (CHAR16));\r
*(Str + *Len) = L'\0';\r
\r
Length = (Length + 1) / 2;\r
- Buf = (UINT8 *) AllocateZeroPool (Length);\r
+ Buf = (UINT8 *)AllocateZeroPool (Length);\r
if (Buf == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Exit;\r
\r
Length = *Len;\r
ZeroMem (TemStr, sizeof (TemStr));\r
- for (Index = 0; Index < Length; Index ++) {\r
- TemStr[0] = Str[Length - Index - 1];\r
- DigitUint8 = (UINT8) StrHexToUint64 (TemStr);\r
+ for (Index = 0; Index < Length; Index++) {\r
+ TemStr[0] = Str[Length - Index - 1];\r
+ DigitUint8 = (UINT8)StrHexToUint64 (TemStr);\r
if ((Index & 1) == 0) {\r
- Buf [Index/2] = DigitUint8;\r
+ Buf[Index/2] = DigitUint8;\r
} else {\r
- Buf [Index/2] = (UINT8) ((DigitUint8 << 4) + Buf [Index/2]);\r
+ Buf[Index/2] = (UINT8)((DigitUint8 << 4) + Buf[Index/2]);\r
}\r
}\r
\r
\r
**/\r
EFI_STATUS\r
-FindSameBlockElement(\r
- IN EFI_STRING String,\r
- IN EFI_STRING BlockName,\r
- IN UINT8 *Buffer,\r
- OUT BOOLEAN *Found,\r
- IN UINTN BufferLen\r
+FindSameBlockElement (\r
+ IN EFI_STRING String,\r
+ IN EFI_STRING BlockName,\r
+ IN UINT8 *Buffer,\r
+ OUT BOOLEAN *Found,\r
+ IN UINTN BufferLen\r
)\r
{\r
- EFI_STRING BlockPtr;\r
- UINTN Length;\r
- UINT8 *TempBuffer;\r
- EFI_STATUS Status;\r
+ EFI_STRING BlockPtr;\r
+ UINTN Length;\r
+ UINT8 *TempBuffer;\r
+ EFI_STATUS Status;\r
\r
TempBuffer = NULL;\r
- *Found = FALSE;\r
- BlockPtr = StrStr (String, BlockName);\r
+ *Found = FALSE;\r
+ BlockPtr = StrStr (String, BlockName);\r
\r
while (BlockPtr != NULL) {\r
BlockPtr += StrLen (BlockName);\r
- Status = GetValueOfNumber (BlockPtr, &TempBuffer, &Length);\r
+ Status = GetValueOfNumber (BlockPtr, &TempBuffer, &Length);\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
+\r
ASSERT (TempBuffer != NULL);\r
if ((BufferLen == Length) && (0 == CompareMem (Buffer, TempBuffer, Length))) {\r
*Found = TRUE;\r
} else {\r
FreePool (TempBuffer);\r
TempBuffer = NULL;\r
- BlockPtr = StrStr (BlockPtr + 1, BlockName);\r
+ BlockPtr = StrStr (BlockPtr + 1, BlockName);\r
}\r
}\r
+\r
return EFI_SUCCESS;\r
}\r
\r
IN OUT EFI_STRING *ConfigAltResp,\r
IN EFI_STRING AltConfigHdr,\r
IN OUT BOOLEAN *ConfigAltRespChanged\r
-)\r
+ )\r
{\r
- EFI_STATUS Status;\r
- EFI_STRING BlockPtr;\r
- EFI_STRING BlockPtrStart;\r
- EFI_STRING StringPtr;\r
- EFI_STRING AppendString;\r
- EFI_STRING AltConfigHdrPtr;\r
- UINT8 *TempBuffer;\r
- UINTN OffsetLength;\r
- UINTN AppendSize;\r
- UINTN TotalSize;\r
- BOOLEAN FoundOffset;\r
+ EFI_STATUS Status;\r
+ EFI_STRING BlockPtr;\r
+ EFI_STRING BlockPtrStart;\r
+ EFI_STRING StringPtr;\r
+ EFI_STRING AppendString;\r
+ EFI_STRING AltConfigHdrPtr;\r
+ UINT8 *TempBuffer;\r
+ UINTN OffsetLength;\r
+ UINTN AppendSize;\r
+ UINTN TotalSize;\r
+ BOOLEAN FoundOffset;\r
\r
AppendString = NULL;\r
TempBuffer = NULL;\r
// Find the "&OFFSET=<Number>" block and get the value of the Number with AltConfigHdr in DefaultAltCfgResp.\r
//\r
BlockPtrStart = BlockPtr;\r
- BlockPtr += StrLen (L"&OFFSET=");\r
- Status = GetValueOfNumber (BlockPtr, &TempBuffer, &OffsetLength);\r
+ BlockPtr += StrLen (L"&OFFSET=");\r
+ Status = GetValueOfNumber (BlockPtr, &TempBuffer, &OffsetLength);\r
if (EFI_ERROR (Status)) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Exit;\r
}\r
+\r
//\r
// To find the same "&OFFSET=<Number>" block in ConfigAltResp.\r
//\r
FreePool (TempBuffer);\r
TempBuffer = NULL;\r
}\r
+\r
if (EFI_ERROR (Status)) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Exit;\r
}\r
+\r
if (!FoundOffset) {\r
//\r
// Don't find the same "&OFFSET=<Number>" block in ConfigAltResp.\r
} else {\r
AppendSize = StrSize (BlockPtrStart);\r
}\r
+\r
//\r
// Copy the <BlockConfig> to AppendString.\r
//\r
if (AppendString == NULL) {\r
- AppendString = (EFI_STRING) AllocateZeroPool (AppendSize + sizeof (CHAR16));\r
+ AppendString = (EFI_STRING)AllocateZeroPool (AppendSize + sizeof (CHAR16));\r
StrnCatS (AppendString, AppendSize / sizeof (CHAR16) + 1, BlockPtrStart, AppendSize / sizeof (CHAR16));\r
} else {\r
- TotalSize = StrSize (AppendString) + AppendSize + sizeof (CHAR16);\r
- AppendString = (EFI_STRING) ReallocatePool (\r
- StrSize (AppendString),\r
- TotalSize,\r
- AppendString\r
- );\r
+ TotalSize = StrSize (AppendString) + AppendSize + sizeof (CHAR16);\r
+ AppendString = (EFI_STRING)ReallocatePool (\r
+ StrSize (AppendString),\r
+ TotalSize,\r
+ AppendString\r
+ );\r
if (AppendString == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Exit;\r
}\r
+\r
StrnCatS (AppendString, TotalSize / sizeof (CHAR16), BlockPtrStart, AppendSize / sizeof (CHAR16));\r
}\r
} else {\r
//\r
// Reallocate ConfigAltResp to copy the AppendString.\r
//\r
- TotalSize = StrSize (*ConfigAltResp) + StrSize (AppendString) + sizeof (CHAR16);\r
- *ConfigAltResp = (EFI_STRING) ReallocatePool (\r
- StrSize (*ConfigAltResp),\r
- TotalSize,\r
- *ConfigAltResp\r
- );\r
+ TotalSize = StrSize (*ConfigAltResp) + StrSize (AppendString) + sizeof (CHAR16);\r
+ *ConfigAltResp = (EFI_STRING)ReallocatePool (\r
+ StrSize (*ConfigAltResp),\r
+ TotalSize,\r
+ *ConfigAltResp\r
+ );\r
if (*ConfigAltResp == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Exit;\r
}\r
+\r
StrCatS (*ConfigAltResp, TotalSize / sizeof (CHAR16), AppendString);\r
*ConfigAltRespChanged = TRUE;\r
}\r
IN OUT EFI_STRING *ConfigAltResp,\r
IN EFI_STRING AltConfigHdr,\r
IN OUT BOOLEAN *ConfigAltRespChanged\r
-)\r
+ )\r
{\r
- EFI_STATUS Status;\r
- EFI_STRING NvConfigPtr;\r
- EFI_STRING NvConfigStart;\r
- EFI_STRING NvConfigValuePtr;\r
- EFI_STRING StringPtr;\r
- EFI_STRING NvConfigExist;\r
- EFI_STRING AppendString;\r
- CHAR16 TempChar;\r
- UINTN AppendSize;\r
- UINTN TotalSize;\r
-\r
- AppendString = NULL;\r
+ EFI_STATUS Status;\r
+ EFI_STRING NvConfigPtr;\r
+ EFI_STRING NvConfigStart;\r
+ EFI_STRING NvConfigValuePtr;\r
+ EFI_STRING StringPtr;\r
+ EFI_STRING NvConfigExist;\r
+ EFI_STRING AppendString;\r
+ CHAR16 TempChar;\r
+ UINTN AppendSize;\r
+ UINTN TotalSize;\r
+\r
+ AppendString = NULL;\r
NvConfigExist = NULL;\r
//\r
// Make NvConfigPtr point to the first <NvConfig> with AltConfigHdr in DefaultAltCfgResp.\r
//\r
NvConfigPtr = StrStr (DefaultAltCfgResp, AltConfigHdr);\r
ASSERT (NvConfigPtr != NULL);\r
- NvConfigPtr = StrStr (NvConfigPtr + StrLen(AltConfigHdr),L"&");\r
+ NvConfigPtr = StrStr (NvConfigPtr + StrLen (AltConfigHdr), L"&");\r
//\r
// Make StringPtr point to the first <NvConfig> with AltConfigHdr in ConfigAltResp.\r
//\r
// <NvConfig> ::= <Label>'='<String> | <Label>'='<Number>.\r
// Get the <Label> with AltConfigHdr in DefaultAltCfgResp.\r
//\r
- NvConfigStart = NvConfigPtr;\r
+ NvConfigStart = NvConfigPtr;\r
NvConfigValuePtr = StrStr (NvConfigPtr + 1, L"=");\r
ASSERT (NvConfigValuePtr != NULL);\r
- TempChar = *NvConfigValuePtr;\r
+ TempChar = *NvConfigValuePtr;\r
*NvConfigValuePtr = L'\0';\r
//\r
// Get the <Label> with AltConfigHdr in ConfigAltResp.\r
// Calculate the size of <NvConfig>.\r
//\r
*NvConfigValuePtr = TempChar;\r
- NvConfigPtr = StrStr (NvConfigPtr + 1, L"&");\r
+ NvConfigPtr = StrStr (NvConfigPtr + 1, L"&");\r
if (NvConfigPtr != NULL) {\r
AppendSize = (NvConfigPtr - NvConfigStart) * sizeof (CHAR16);\r
} else {\r
AppendSize = StrSize (NvConfigStart);\r
}\r
+\r
//\r
// Copy the <NvConfig> to AppendString.\r
//\r
if (AppendString == NULL) {\r
- AppendString = (EFI_STRING) AllocateZeroPool (AppendSize + sizeof (CHAR16));\r
+ AppendString = (EFI_STRING)AllocateZeroPool (AppendSize + sizeof (CHAR16));\r
StrnCatS (AppendString, AppendSize / sizeof (CHAR16) + 1, NvConfigStart, AppendSize / sizeof (CHAR16));\r
} else {\r
- TotalSize = StrSize (AppendString) + AppendSize + sizeof (CHAR16);\r
- AppendString = (EFI_STRING) ReallocatePool (\r
- StrSize (AppendString),\r
- TotalSize,\r
- AppendString\r
- );\r
+ TotalSize = StrSize (AppendString) + AppendSize + sizeof (CHAR16);\r
+ AppendString = (EFI_STRING)ReallocatePool (\r
+ StrSize (AppendString),\r
+ TotalSize,\r
+ AppendString\r
+ );\r
if (AppendString == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Exit;\r
}\r
+\r
StrnCatS (AppendString, TotalSize / sizeof (CHAR16), NvConfigStart, AppendSize / sizeof (CHAR16));\r
}\r
} else {\r
// To find next <Label> in DefaultAltCfgResp.\r
//\r
*NvConfigValuePtr = TempChar;\r
- NvConfigPtr = StrStr (NvConfigPtr + 1, L"&");\r
+ NvConfigPtr = StrStr (NvConfigPtr + 1, L"&");\r
}\r
}\r
+\r
if (AppendString != NULL) {\r
//\r
// Reallocate ConfigAltResp to copy the AppendString.\r
//\r
- TotalSize = StrSize (*ConfigAltResp) + StrSize (AppendString) + sizeof (CHAR16);\r
- *ConfigAltResp = (EFI_STRING) ReallocatePool (\r
- StrSize (*ConfigAltResp),\r
- StrSize (*ConfigAltResp) + StrSize (AppendString) + sizeof (CHAR16),\r
- *ConfigAltResp\r
- );\r
+ TotalSize = StrSize (*ConfigAltResp) + StrSize (AppendString) + sizeof (CHAR16);\r
+ *ConfigAltResp = (EFI_STRING)ReallocatePool (\r
+ StrSize (*ConfigAltResp),\r
+ StrSize (*ConfigAltResp) + StrSize (AppendString) + sizeof (CHAR16),\r
+ *ConfigAltResp\r
+ );\r
if (*ConfigAltResp == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Exit;\r
}\r
+\r
StrCatS (*ConfigAltResp, TotalSize / sizeof (CHAR16), AppendString);\r
*ConfigAltRespChanged = TRUE;\r
}\r
+\r
Status = EFI_SUCCESS;\r
\r
Exit:\r
if (AppendString != NULL) {\r
FreePool (AppendString);\r
}\r
+\r
return Status;\r
}\r
\r
IN EFI_STRING AltConfigHdr\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_STRING AltCfgRespBackup;\r
- EFI_STRING AltConfigHdrPtr;\r
- EFI_STRING AltConfigHdrPtrNext;\r
- EFI_STRING ConfigAltResp;\r
- EFI_STRING StringPtr;\r
- EFI_STRING StringPtrNext;\r
- EFI_STRING BlockPtr;\r
- UINTN ReallocateSize;\r
- CHAR16 TempChar;\r
- CHAR16 TempCharA;\r
- BOOLEAN ConfigAltRespChanged;\r
-\r
- Status = EFI_OUT_OF_RESOURCES;\r
+ EFI_STATUS Status;\r
+ EFI_STRING AltCfgRespBackup;\r
+ EFI_STRING AltConfigHdrPtr;\r
+ EFI_STRING AltConfigHdrPtrNext;\r
+ EFI_STRING ConfigAltResp;\r
+ EFI_STRING StringPtr;\r
+ EFI_STRING StringPtrNext;\r
+ EFI_STRING BlockPtr;\r
+ UINTN ReallocateSize;\r
+ CHAR16 TempChar;\r
+ CHAR16 TempCharA;\r
+ BOOLEAN ConfigAltRespChanged;\r
+\r
+ Status = EFI_OUT_OF_RESOURCES;\r
BlockPtr = NULL;\r
AltConfigHdrPtrNext = NULL;\r
StringPtrNext = NULL;\r
ConfigAltRespChanged = FALSE;\r
\r
//\r
- //To find the <AltResp> with AltConfigHdr in DefaultAltCfgResp, ignore other <AltResp> which follow it.\r
+ // To find the <AltResp> with AltConfigHdr in DefaultAltCfgResp, ignore other <AltResp> which follow it.\r
//\r
AltConfigHdrPtr = StrStr (DefaultAltCfgResp, AltConfigHdr);\r
ASSERT (AltConfigHdrPtr != NULL);\r
AltConfigHdrPtrNext = StrStr (AltConfigHdrPtr + 1, L"&GUID");\r
if (AltConfigHdrPtrNext != NULL) {\r
- TempChar = *AltConfigHdrPtrNext;\r
+ TempChar = *AltConfigHdrPtrNext;\r
*AltConfigHdrPtrNext = L'\0';\r
}\r
+\r
//\r
// To find the <AltResp> with AltConfigHdr in AltCfgResp, ignore other <AltResp> which follow it.\r
//\r
ASSERT (StringPtr != NULL);\r
StringPtrNext = StrStr (StringPtr + 1, L"&GUID");\r
if (StringPtrNext != NULL) {\r
- TempCharA = *StringPtrNext;\r
+ TempCharA = *StringPtrNext;\r
*StringPtrNext = L'\0';\r
}\r
+\r
//\r
// Copy the content of <ConfigAltResp> which contain current AltConfigHdr in AltCfgResp.\r
//\r
if (ConfigAltResp == NULL) {\r
goto Exit;\r
}\r
+\r
//\r
// To find the <ConfigBody> with AltConfigHdr in DefaultAltCfgResp.\r
//\r
// The ConfigAltResp which may contain the new <BlockConfig> get from DefaultAltCfgResp.\r
//\r
Status = CompareBlockElementDefault (DefaultAltCfgResp, &ConfigAltResp, AltConfigHdr, &ConfigAltRespChanged);\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
goto Exit;\r
}\r
} else {\r
// The ConfigAltResp which may contain the new <NvConfig> get from DefaultAltCfgResp.\r
//\r
Status = CompareNameElementDefault (DefaultAltCfgResp, &ConfigAltResp, AltConfigHdr, &ConfigAltRespChanged);\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
goto Exit;\r
}\r
}\r
+\r
//\r
// Restore the AltCfgResp.\r
//\r
Status = EFI_SUCCESS;\r
goto Exit;\r
}\r
+\r
//\r
// ConfigAltResp has been changed, need to update the content in AltCfgResp.\r
//\r
ReallocateSize = StrSize (ConfigAltResp) + sizeof (CHAR16);\r
}\r
\r
- AltCfgRespBackup = (EFI_STRING) AllocateZeroPool (ReallocateSize);\r
+ AltCfgRespBackup = (EFI_STRING)AllocateZeroPool (ReallocateSize);\r
if (AltCfgRespBackup == NULL) {\r
goto Exit;\r
}\r
\r
Exit:\r
if (ConfigAltResp != NULL) {\r
- FreePool(ConfigAltResp);\r
+ FreePool (ConfigAltResp);\r
}\r
+\r
//\r
// Restore the DefaultAltCfgResp.\r
//\r
if ( AltConfigHdrPtrNext != NULL) {\r
*AltConfigHdrPtrNext = TempChar;\r
- AltConfigHdrPtrNext = NULL;\r
+ AltConfigHdrPtrNext = NULL;\r
}\r
\r
return Status;\r
IN EFI_STRING DefaultAltCfgResp\r
)\r
{\r
- EFI_STRING StringPtrDefault;\r
- EFI_STRING StringPtrEnd;\r
- CHAR16 TempChar;\r
- EFI_STRING StringPtr;\r
- EFI_STRING AltConfigHdr;\r
- UINTN HeaderLength;\r
- UINTN SizeAltCfgResp;\r
- UINTN MaxLen;\r
- UINTN TotalSize;\r
+ EFI_STRING StringPtrDefault;\r
+ EFI_STRING StringPtrEnd;\r
+ CHAR16 TempChar;\r
+ EFI_STRING StringPtr;\r
+ EFI_STRING AltConfigHdr;\r
+ UINTN HeaderLength;\r
+ UINTN SizeAltCfgResp;\r
+ UINTN MaxLen;\r
+ UINTN TotalSize;\r
\r
if (*AltCfgResp == NULL) {\r
return EFI_INVALID_PARAMETER;\r
//\r
// Get the request ConfigHdr\r
//\r
- SizeAltCfgResp = 0;\r
- StringPtr = *AltCfgResp;\r
+ SizeAltCfgResp = 0;\r
+ StringPtr = *AltCfgResp;\r
\r
//\r
// Find <ConfigHdr> GUID=...&NAME=...&PATH=...\r
if (StrnCmp (StringPtr, L"GUID=", StrLen (L"GUID=")) != 0) {\r
return EFI_INVALID_PARAMETER;\r
}\r
+\r
while (*StringPtr != L'\0' && StrnCmp (StringPtr, L"&NAME=", StrLen (L"&NAME=")) != 0) {\r
StringPtr++;\r
}\r
+\r
while (*StringPtr != L'\0' && StrnCmp (StringPtr, L"&PATH=", StrLen (L"&PATH=")) != 0) {\r
StringPtr++;\r
}\r
+\r
if (*StringPtr == L'\0') {\r
return EFI_INVALID_PARAMETER;\r
}\r
+\r
StringPtr += StrLen (L"&PATH=");\r
while (*StringPtr != L'\0' && *StringPtr != L'&') {\r
- StringPtr ++;\r
+ StringPtr++;\r
}\r
+\r
HeaderLength = StringPtr - *AltCfgResp;\r
\r
//\r
// Construct AltConfigHdr string "&<ConfigHdr>&ALTCFG=XXXX\0"\r
// |1| StrLen (ConfigHdr) | 8 | 4 | 1 |\r
//\r
- MaxLen = 1 + HeaderLength + 8 + 4 + 1;\r
+ MaxLen = 1 + HeaderLength + 8 + 4 + 1;\r
AltConfigHdr = AllocateZeroPool (MaxLen * sizeof (CHAR16));\r
if (AltConfigHdr == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
+\r
StrCpyS (AltConfigHdr, MaxLen, L"&");\r
StrnCatS (AltConfigHdr, MaxLen, *AltCfgResp, HeaderLength);\r
StrCatS (AltConfigHdr, MaxLen, L"&ALTCFG=");\r
//\r
// No more default string is found.\r
//\r
- TotalSize = SizeAltCfgResp + StrSize (StringPtrDefault);\r
- *AltCfgResp = (EFI_STRING) ReallocatePool (\r
- SizeAltCfgResp,\r
- TotalSize,\r
- (VOID *) (*AltCfgResp)\r
- );\r
+ TotalSize = SizeAltCfgResp + StrSize (StringPtrDefault);\r
+ *AltCfgResp = (EFI_STRING)ReallocatePool (\r
+ SizeAltCfgResp,\r
+ TotalSize,\r
+ (VOID *)(*AltCfgResp)\r
+ );\r
if (*AltCfgResp == NULL) {\r
FreePool (AltConfigHdr);\r
return EFI_OUT_OF_RESOURCES;\r
}\r
+\r
StrCatS (*AltCfgResp, TotalSize / sizeof (CHAR16), StringPtrDefault);\r
break;\r
} else {\r
- TempChar = *StringPtrEnd;\r
+ TempChar = *StringPtrEnd;\r
*StringPtrEnd = L'\0';\r
- TotalSize = SizeAltCfgResp + StrSize (StringPtrDefault);\r
- *AltCfgResp = (EFI_STRING) ReallocatePool (\r
- SizeAltCfgResp,\r
- TotalSize,\r
- (VOID *) (*AltCfgResp)\r
- );\r
+ TotalSize = SizeAltCfgResp + StrSize (StringPtrDefault);\r
+ *AltCfgResp = (EFI_STRING)ReallocatePool (\r
+ SizeAltCfgResp,\r
+ TotalSize,\r
+ (VOID *)(*AltCfgResp)\r
+ );\r
if (*AltCfgResp == NULL) {\r
FreePool (AltConfigHdr);\r
return EFI_OUT_OF_RESOURCES;\r
}\r
+\r
StrCatS (*AltCfgResp, TotalSize / sizeof (CHAR16), StringPtrDefault);\r
*StringPtrEnd = TempChar;\r
}\r
// Find next AltCfg String\r
//\r
*(AltConfigHdr + HeaderLength) = L'\0';\r
- StringPtrDefault = StrStr (StringPtrDefault + 1, AltConfigHdr);\r
+ StringPtrDefault = StrStr (StringPtrDefault + 1, AltConfigHdr);\r
}\r
\r
FreePool (AltConfigHdr);\r
**/\r
VOID\r
InsertDefaultValue (\r
- IN IFR_BLOCK_DATA *BlockData,\r
- IN IFR_DEFAULT_DATA *DefaultValueData\r
+ IN IFR_BLOCK_DATA *BlockData,\r
+ IN IFR_DEFAULT_DATA *DefaultValueData\r
)\r
{\r
- LIST_ENTRY *Link;\r
- IFR_DEFAULT_DATA *DefaultValueArray;\r
- LIST_ENTRY *DefaultLink;\r
+ LIST_ENTRY *Link;\r
+ IFR_DEFAULT_DATA *DefaultValueArray;\r
+ LIST_ENTRY *DefaultLink;\r
\r
- DefaultLink = &BlockData->DefaultValueEntry;\r
+ DefaultLink = &BlockData->DefaultValueEntry;\r
\r
for (Link = DefaultLink->ForwardLink; Link != DefaultLink; Link = Link->ForwardLink) {\r
DefaultValueArray = BASE_CR (Link, IFR_DEFAULT_DATA, Entry);\r
// DEFAULT_VALUE_FROM_OPCODE has high priority, DEFAULT_VALUE_FROM_DEFAULT has low priority.\r
// When default types are DEFAULT_VALUE_FROM_OTHER_DEFAULT, the default value can be overrode.\r
//\r
- if ((DefaultValueData->Type > DefaultValueArray->Type) || (DefaultValueData->Type == DefaultValueArray->Type && DefaultValueData->Type == DefaultValueFromOtherDefault)) {\r
+ if ((DefaultValueData->Type > DefaultValueArray->Type) || ((DefaultValueData->Type == DefaultValueArray->Type) && (DefaultValueData->Type == DefaultValueFromOtherDefault))) {\r
//\r
// Update the default value array in BlockData.\r
//\r
CopyMem (&DefaultValueArray->Value, &DefaultValueData->Value, sizeof (EFI_IFR_TYPE_VALUE));\r
- DefaultValueArray->Type = DefaultValueData->Type;\r
+ DefaultValueArray->Type = DefaultValueData->Type;\r
DefaultValueArray->Cleaned = DefaultValueData->Cleaned;\r
}\r
+\r
return;\r
}\r
}\r
**/\r
VOID\r
InsertBlockData (\r
- IN LIST_ENTRY *BlockLink,\r
- IN IFR_BLOCK_DATA **BlockData\r
+ IN LIST_ENTRY *BlockLink,\r
+ IN IFR_BLOCK_DATA **BlockData\r
)\r
{\r
- LIST_ENTRY *Link;\r
- IFR_BLOCK_DATA *BlockArray;\r
- IFR_BLOCK_DATA *BlockSingleData;\r
+ LIST_ENTRY *Link;\r
+ IFR_BLOCK_DATA *BlockArray;\r
+ IFR_BLOCK_DATA *BlockSingleData;\r
\r
BlockSingleData = *BlockData;\r
\r
for (Link = BlockLink->ForwardLink; Link != BlockLink; Link = Link->ForwardLink) {\r
BlockArray = BASE_CR (Link, IFR_BLOCK_DATA, Entry);\r
if (BlockArray->Offset == BlockSingleData->Offset) {\r
- if ((BlockArray->Width > BlockSingleData->Width) || (BlockSingleData->IsBitVar && BlockArray->Width == BlockSingleData->Width)) {\r
+ if ((BlockArray->Width > BlockSingleData->Width) || (BlockSingleData->IsBitVar && (BlockArray->Width == BlockSingleData->Width))) {\r
//\r
// Insert this block data in the front of block array\r
//\r
return;\r
}\r
\r
- if ((!BlockSingleData->IsBitVar) && BlockArray->Width == BlockSingleData->Width) {\r
+ if ((!BlockSingleData->IsBitVar) && (BlockArray->Width == BlockSingleData->Width)) {\r
//\r
// The same block array has been added.\r
//\r
FreePool (BlockSingleData);\r
*BlockData = BlockArray;\r
}\r
+\r
return;\r
}\r
} else if (BlockArray->Offset > BlockSingleData->Offset) {\r
**/\r
CHAR8 *\r
GetSupportedLanguages (\r
- IN EFI_HII_HANDLE HiiHandle\r
+ IN EFI_HII_HANDLE HiiHandle\r
)\r
{\r
EFI_STATUS Status;\r
// Retrieve the size required for the supported languages buffer.\r
//\r
LanguageSize = 0;\r
- Status = mPrivate.HiiString.GetLanguages (&mPrivate.HiiString, HiiHandle, &TempSupportedLanguages, &LanguageSize);\r
+ Status = mPrivate.HiiString.GetLanguages (&mPrivate.HiiString, HiiHandle, &TempSupportedLanguages, &LanguageSize);\r
\r
//\r
// If GetLanguages() returns EFI_SUCCESS for a zero size,\r
//\r
// Get the current platform language setting\r
//\r
- GetEfiGlobalVariable2 (L"PlatformLang", (VOID**)&PlatformLanguage, NULL);\r
+ GetEfiGlobalVariable2 (L"PlatformLang", (VOID **)&PlatformLanguage, NULL);\r
\r
//\r
// Get the best matching language from SupportedLanguages\r
// Retrieve the size of the string in the string package for the BestLanguage\r
//\r
StringSize = 0;\r
- Status = mPrivate.HiiString.GetString (\r
- &mPrivate.HiiString,\r
- BestLanguage,\r
- HiiHandle,\r
- StringId,\r
- &TempString,\r
- &StringSize,\r
- NULL\r
- );\r
+ Status = mPrivate.HiiString.GetString (\r
+ &mPrivate.HiiString,\r
+ BestLanguage,\r
+ HiiHandle,\r
+ StringId,\r
+ &TempString,\r
+ &StringSize,\r
+ NULL\r
+ );\r
//\r
// If GetString() returns EFI_SUCCESS for a zero size,\r
// then there are no supported languages registered for HiiHandle. If GetString()\r
// Retrieve the string from the string package\r
//\r
Status = mPrivate.HiiString.GetString (\r
- &mPrivate.HiiString,\r
- BestLanguage,\r
- HiiHandle,\r
- StringId,\r
- String,\r
- &StringSize,\r
- NULL\r
- );\r
+ &mPrivate.HiiString,\r
+ BestLanguage,\r
+ HiiHandle,\r
+ StringId,\r
+ String,\r
+ &StringSize,\r
+ NULL\r
+ );\r
if (EFI_ERROR (Status)) {\r
//\r
// Free the buffer and return NULL if the supported languages can not be retrieved.\r
if (SupportedLanguages != NULL) {\r
FreePool (SupportedLanguages);\r
}\r
+\r
if (PlatformLanguage != NULL) {\r
FreePool (PlatformLanguage);\r
}\r
+\r
if (BestLanguage != NULL) {\r
FreePool (BestLanguage);\r
}\r
IN EFI_HII_HANDLE HiiHandle\r
)\r
{\r
- LIST_ENTRY *Link;\r
- IFR_BLOCK_DATA *BlockData;\r
- EFI_STRING Name;\r
+ LIST_ENTRY *Link;\r
+ IFR_BLOCK_DATA *BlockData;\r
+ EFI_STRING Name;\r
\r
//\r
// No Request Block array, all vars are got.\r
FreePool (Name);\r
return TRUE;\r
}\r
+\r
FreePool (Name);\r
} else {\r
if ((VarOffset >= BlockData->Offset) && ((VarOffset + VarWidth) <= (BlockData->Offset + BlockData->Width))) {\r
**/\r
EFI_STATUS\r
GetFormPackageData (\r
- IN HII_DATABASE_RECORD *DataBaseRecord,\r
- IN OUT UINT8 **HiiFormPackage,\r
- OUT UINTN *PackageSize\r
+ IN HII_DATABASE_RECORD *DataBaseRecord,\r
+ IN OUT UINT8 **HiiFormPackage,\r
+ OUT UINTN *PackageSize\r
)\r
{\r
- EFI_STATUS Status;\r
- UINTN Size;\r
- UINTN ResultSize;\r
+ EFI_STATUS Status;\r
+ UINTN Size;\r
+ UINTN ResultSize;\r
\r
- if (DataBaseRecord == NULL || HiiFormPackage == NULL || PackageSize == NULL) {\r
+ if ((DataBaseRecord == NULL) || (HiiFormPackage == NULL) || (PackageSize == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
Size,\r
HiiFormPackage,\r
&ResultSize\r
- );\r
+ );\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
//\r
// Get HiiFormPackage by HiiHandle\r
//\r
- Size = ResultSize;\r
- ResultSize = 0;\r
- Status = ExportFormPackages (\r
- &mPrivate,\r
- DataBaseRecord->Handle,\r
- DataBaseRecord->PackageList,\r
- 0,\r
- Size,\r
- *HiiFormPackage,\r
- &ResultSize\r
- );\r
+ Size = ResultSize;\r
+ ResultSize = 0;\r
+ Status = ExportFormPackages (\r
+ &mPrivate,\r
+ DataBaseRecord->Handle,\r
+ DataBaseRecord->PackageList,\r
+ 0,\r
+ Size,\r
+ *HiiFormPackage,\r
+ &ResultSize\r
+ );\r
if (EFI_ERROR (Status)) {\r
FreePool (*HiiFormPackage);\r
}\r
return Status;\r
}\r
\r
-\r
/**\r
This function parses Form Package to get the efi varstore info according to the request ConfigHdr.\r
\r
**/\r
EFI_STATUS\r
GetVarStoreType (\r
- IN HII_DATABASE_RECORD *DataBaseRecord,\r
- IN EFI_STRING ConfigHdr,\r
- OUT BOOLEAN *IsEfiVarstore,\r
- OUT EFI_IFR_VARSTORE_EFI **EfiVarStore\r
+ IN HII_DATABASE_RECORD *DataBaseRecord,\r
+ IN EFI_STRING ConfigHdr,\r
+ OUT BOOLEAN *IsEfiVarstore,\r
+ OUT EFI_IFR_VARSTORE_EFI **EfiVarStore\r
)\r
{\r
- EFI_STATUS Status;\r
- UINTN IfrOffset;\r
- UINTN PackageOffset;\r
- EFI_IFR_OP_HEADER *IfrOpHdr;\r
- CHAR16 *VarStoreName;\r
- UINTN NameSize;\r
- EFI_STRING GuidStr;\r
- EFI_STRING NameStr;\r
- EFI_STRING TempStr;\r
- UINTN LengthString;\r
- UINT8 *HiiFormPackage;\r
- UINTN PackageSize;\r
- EFI_IFR_VARSTORE_EFI *IfrEfiVarStore;\r
- EFI_HII_PACKAGE_HEADER *PackageHeader;\r
+ EFI_STATUS Status;\r
+ UINTN IfrOffset;\r
+ UINTN PackageOffset;\r
+ EFI_IFR_OP_HEADER *IfrOpHdr;\r
+ CHAR16 *VarStoreName;\r
+ UINTN NameSize;\r
+ EFI_STRING GuidStr;\r
+ EFI_STRING NameStr;\r
+ EFI_STRING TempStr;\r
+ UINTN LengthString;\r
+ UINT8 *HiiFormPackage;\r
+ UINTN PackageSize;\r
+ EFI_IFR_VARSTORE_EFI *IfrEfiVarStore;\r
+ EFI_HII_PACKAGE_HEADER *PackageHeader;\r
\r
HiiFormPackage = NULL;\r
- LengthString = 0;\r
- Status = EFI_SUCCESS;\r
- GuidStr = NULL;\r
- NameStr = NULL;\r
- TempStr = NULL;\r
- *IsEfiVarstore = FALSE;\r
+ LengthString = 0;\r
+ Status = EFI_SUCCESS;\r
+ GuidStr = NULL;\r
+ NameStr = NULL;\r
+ TempStr = NULL;\r
+ *IsEfiVarstore = FALSE;\r
\r
- Status = GetFormPackageData(DataBaseRecord, &HiiFormPackage, &PackageSize);\r
+ Status = GetFormPackageData (DataBaseRecord, &HiiFormPackage, &PackageSize);\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
\r
IfrOffset = sizeof (EFI_HII_PACKAGE_HEADER);\r
PackageOffset = IfrOffset;\r
- PackageHeader = (EFI_HII_PACKAGE_HEADER *) HiiFormPackage;\r
+ PackageHeader = (EFI_HII_PACKAGE_HEADER *)HiiFormPackage;\r
\r
while (IfrOffset < PackageSize) {\r
//\r
// More than one form packages exist.\r
//\r
if (PackageOffset >= PackageHeader->Length) {\r
- //\r
- // Process the new form package.\r
- //\r
- PackageOffset = sizeof (EFI_HII_PACKAGE_HEADER);\r
- IfrOffset += PackageOffset;\r
- PackageHeader = (EFI_HII_PACKAGE_HEADER *) (HiiFormPackage + IfrOffset);\r
+ //\r
+ // Process the new form package.\r
+ //\r
+ PackageOffset = sizeof (EFI_HII_PACKAGE_HEADER);\r
+ IfrOffset += PackageOffset;\r
+ PackageHeader = (EFI_HII_PACKAGE_HEADER *)(HiiFormPackage + IfrOffset);\r
}\r
\r
- IfrOpHdr = (EFI_IFR_OP_HEADER *) (HiiFormPackage + IfrOffset);\r
- IfrOffset += IfrOpHdr->Length;\r
+ IfrOpHdr = (EFI_IFR_OP_HEADER *)(HiiFormPackage + IfrOffset);\r
+ IfrOffset += IfrOpHdr->Length;\r
PackageOffset += IfrOpHdr->Length;\r
\r
if (IfrOpHdr->OpCode == EFI_IFR_VARSTORE_EFI_OP ) {\r
- IfrEfiVarStore = (EFI_IFR_VARSTORE_EFI *) IfrOpHdr;\r
+ IfrEfiVarStore = (EFI_IFR_VARSTORE_EFI *)IfrOpHdr;\r
//\r
// If the length is small than the structure, this is from old efi\r
// varstore definition. Old efi varstore get config directly from\r
continue;\r
}\r
\r
- NameSize = AsciiStrSize ((CHAR8 *)IfrEfiVarStore->Name);\r
+ NameSize = AsciiStrSize ((CHAR8 *)IfrEfiVarStore->Name);\r
VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));\r
if (VarStoreName == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Done;\r
}\r
- AsciiStrToUnicodeStrS ((CHAR8 *) IfrEfiVarStore->Name, VarStoreName, NameSize);\r
\r
- GenerateSubStr (L"GUID=", sizeof (EFI_GUID), (VOID *) &IfrEfiVarStore->Guid, 1, &GuidStr);\r
- GenerateSubStr (L"NAME=", StrLen (VarStoreName) * sizeof (CHAR16), (VOID *) VarStoreName, 2, &NameStr);\r
+ AsciiStrToUnicodeStrS ((CHAR8 *)IfrEfiVarStore->Name, VarStoreName, NameSize);\r
+\r
+ GenerateSubStr (L"GUID=", sizeof (EFI_GUID), (VOID *)&IfrEfiVarStore->Guid, 1, &GuidStr);\r
+ GenerateSubStr (L"NAME=", StrLen (VarStoreName) * sizeof (CHAR16), (VOID *)VarStoreName, 2, &NameStr);\r
LengthString = StrLen (GuidStr);\r
LengthString = LengthString + StrLen (NameStr) + 1;\r
- TempStr = AllocateZeroPool (LengthString * sizeof (CHAR16));\r
+ TempStr = AllocateZeroPool (LengthString * sizeof (CHAR16));\r
if (TempStr == NULL) {\r
FreePool (GuidStr);\r
FreePool (NameStr);\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Done;\r
}\r
+\r
StrCpyS (TempStr, LengthString, GuidStr);\r
StrCatS (TempStr, LengthString, NameStr);\r
- if (ConfigHdr == NULL || StrnCmp (ConfigHdr, TempStr, StrLen (TempStr)) == 0) {\r
- *EfiVarStore = (EFI_IFR_VARSTORE_EFI *) AllocateZeroPool (IfrOpHdr->Length);\r
+ if ((ConfigHdr == NULL) || (StrnCmp (ConfigHdr, TempStr, StrLen (TempStr)) == 0)) {\r
+ *EfiVarStore = (EFI_IFR_VARSTORE_EFI *)AllocateZeroPool (IfrOpHdr->Length);\r
if (*EfiVarStore == NULL) {\r
FreePool (VarStoreName);\r
FreePool (GuidStr);\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Done;\r
}\r
+\r
*IsEfiVarstore = TRUE;\r
CopyMem (*EfiVarStore, IfrEfiVarStore, IfrOpHdr->Length);\r
}\r
}\r
}\r
}\r
+\r
Done:\r
if (HiiFormPackage != NULL) {\r
FreePool (HiiFormPackage);\r
**/\r
BOOLEAN\r
GetElementsFromRequest (\r
- IN EFI_STRING ConfigRequest\r
+ IN EFI_STRING ConfigRequest\r
)\r
{\r
- EFI_STRING TmpRequest;\r
+ EFI_STRING TmpRequest;\r
\r
TmpRequest = StrStr (ConfigRequest, L"PATH=");\r
ASSERT (TmpRequest != NULL);\r
**/\r
BOOLEAN\r
IsThisVarstore (\r
- IN EFI_GUID *VarstoreGuid,\r
- IN CHAR16 *Name,\r
- IN CHAR16 *ConfigHdr\r
+ IN EFI_GUID *VarstoreGuid,\r
+ IN CHAR16 *Name,\r
+ IN CHAR16 *ConfigHdr\r
)\r
{\r
- EFI_STRING GuidStr;\r
- EFI_STRING NameStr;\r
- EFI_STRING TempStr;\r
- UINTN LengthString;\r
- BOOLEAN RetVal;\r
+ EFI_STRING GuidStr;\r
+ EFI_STRING NameStr;\r
+ EFI_STRING TempStr;\r
+ UINTN LengthString;\r
+ BOOLEAN RetVal;\r
\r
- RetVal = FALSE;\r
- GuidStr = NULL;\r
- TempStr = NULL;\r
+ RetVal = FALSE;\r
+ GuidStr = NULL;\r
+ TempStr = NULL;\r
\r
//\r
// If ConfigHdr has name field and varstore not has name, return FALSE.\r
//\r
- if (Name == NULL && ConfigHdr != NULL && StrStr (ConfigHdr, L"NAME=&") == NULL) {\r
+ if ((Name == NULL) && (ConfigHdr != NULL) && (StrStr (ConfigHdr, L"NAME=&") == NULL)) {\r
return FALSE;\r
}\r
\r
GenerateSubStr (L"GUID=", sizeof (EFI_GUID), (VOID *)VarstoreGuid, 1, &GuidStr);\r
if (Name != NULL) {\r
- GenerateSubStr (L"NAME=", StrLen (Name) * sizeof (CHAR16), (VOID *) Name, 2, &NameStr);\r
+ GenerateSubStr (L"NAME=", StrLen (Name) * sizeof (CHAR16), (VOID *)Name, 2, &NameStr);\r
} else {\r
GenerateSubStr (L"NAME=", 0, NULL, 2, &NameStr);\r
}\r
+\r
LengthString = StrLen (GuidStr);\r
LengthString = LengthString + StrLen (NameStr) + 1;\r
- TempStr = AllocateZeroPool (LengthString * sizeof (CHAR16));\r
+ TempStr = AllocateZeroPool (LengthString * sizeof (CHAR16));\r
if (TempStr == NULL) {\r
goto Done;\r
}\r
StrCpyS (TempStr, LengthString, GuidStr);\r
StrCatS (TempStr, LengthString, NameStr);\r
\r
- if (ConfigHdr == NULL || StrnCmp (ConfigHdr, TempStr, StrLen (TempStr)) == 0) {\r
+ if ((ConfigHdr == NULL) || (StrnCmp (ConfigHdr, TempStr, StrLen (TempStr)) == 0)) {\r
RetVal = TRUE;\r
}\r
\r
**/\r
BOOLEAN\r
IsThisPackageList (\r
- IN HII_DATABASE_RECORD *DataBaseRecord,\r
- IN EFI_STRING ConfigHdr\r
+ IN HII_DATABASE_RECORD *DataBaseRecord,\r
+ IN EFI_STRING ConfigHdr\r
)\r
{\r
- EFI_STATUS Status;\r
- UINTN IfrOffset;\r
- UINTN PackageOffset;\r
- EFI_IFR_OP_HEADER *IfrOpHdr;\r
- CHAR16 *VarStoreName;\r
- UINTN NameSize;\r
- UINT8 *HiiFormPackage;\r
- UINTN PackageSize;\r
- EFI_IFR_VARSTORE_EFI *IfrEfiVarStore;\r
- EFI_HII_PACKAGE_HEADER *PackageHeader;\r
- EFI_IFR_VARSTORE *IfrVarStore;\r
- EFI_IFR_VARSTORE_NAME_VALUE *IfrNameValueVarStore;\r
- BOOLEAN FindVarstore;\r
-\r
- HiiFormPackage = NULL;\r
- VarStoreName = NULL;\r
- Status = EFI_SUCCESS;\r
- FindVarstore = FALSE;\r
+ EFI_STATUS Status;\r
+ UINTN IfrOffset;\r
+ UINTN PackageOffset;\r
+ EFI_IFR_OP_HEADER *IfrOpHdr;\r
+ CHAR16 *VarStoreName;\r
+ UINTN NameSize;\r
+ UINT8 *HiiFormPackage;\r
+ UINTN PackageSize;\r
+ EFI_IFR_VARSTORE_EFI *IfrEfiVarStore;\r
+ EFI_HII_PACKAGE_HEADER *PackageHeader;\r
+ EFI_IFR_VARSTORE *IfrVarStore;\r
+ EFI_IFR_VARSTORE_NAME_VALUE *IfrNameValueVarStore;\r
+ BOOLEAN FindVarstore;\r
+\r
+ HiiFormPackage = NULL;\r
+ VarStoreName = NULL;\r
+ Status = EFI_SUCCESS;\r
+ FindVarstore = FALSE;\r
\r
- Status = GetFormPackageData(DataBaseRecord, &HiiFormPackage, &PackageSize);\r
+ Status = GetFormPackageData (DataBaseRecord, &HiiFormPackage, &PackageSize);\r
if (EFI_ERROR (Status)) {\r
return FALSE;\r
}\r
\r
IfrOffset = sizeof (EFI_HII_PACKAGE_HEADER);\r
PackageOffset = IfrOffset;\r
- PackageHeader = (EFI_HII_PACKAGE_HEADER *) HiiFormPackage;\r
+ PackageHeader = (EFI_HII_PACKAGE_HEADER *)HiiFormPackage;\r
\r
while (IfrOffset < PackageSize) {\r
//\r
// More than one form packages exist.\r
//\r
if (PackageOffset >= PackageHeader->Length) {\r
- //\r
- // Process the new form package.\r
- //\r
- PackageOffset = sizeof (EFI_HII_PACKAGE_HEADER);\r
- IfrOffset += PackageOffset;\r
- PackageHeader = (EFI_HII_PACKAGE_HEADER *) (HiiFormPackage + IfrOffset);\r
+ //\r
+ // Process the new form package.\r
+ //\r
+ PackageOffset = sizeof (EFI_HII_PACKAGE_HEADER);\r
+ IfrOffset += PackageOffset;\r
+ PackageHeader = (EFI_HII_PACKAGE_HEADER *)(HiiFormPackage + IfrOffset);\r
}\r
\r
- IfrOpHdr = (EFI_IFR_OP_HEADER *) (HiiFormPackage + IfrOffset);\r
- IfrOffset += IfrOpHdr->Length;\r
+ IfrOpHdr = (EFI_IFR_OP_HEADER *)(HiiFormPackage + IfrOffset);\r
+ IfrOffset += IfrOpHdr->Length;\r
PackageOffset += IfrOpHdr->Length;\r
\r
switch (IfrOpHdr->OpCode) {\r
+ case EFI_IFR_VARSTORE_OP:\r
+ IfrVarStore = (EFI_IFR_VARSTORE *)IfrOpHdr;\r
\r
- case EFI_IFR_VARSTORE_OP:\r
- IfrVarStore = (EFI_IFR_VARSTORE *) IfrOpHdr;\r
+ NameSize = AsciiStrSize ((CHAR8 *)IfrVarStore->Name);\r
+ VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));\r
+ if (VarStoreName == NULL) {\r
+ goto Done;\r
+ }\r
\r
- NameSize = AsciiStrSize ((CHAR8 *)IfrVarStore->Name);\r
- VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));\r
- if (VarStoreName == NULL) {\r
- goto Done;\r
- }\r
- AsciiStrToUnicodeStrS ((CHAR8 *)IfrVarStore->Name, VarStoreName, NameSize);\r
+ AsciiStrToUnicodeStrS ((CHAR8 *)IfrVarStore->Name, VarStoreName, NameSize);\r
\r
- if (IsThisVarstore((VOID *)&IfrVarStore->Guid, VarStoreName, ConfigHdr)) {\r
- FindVarstore = TRUE;\r
- goto Done;\r
- } else {\r
- FreePool (VarStoreName);\r
- VarStoreName = NULL;\r
- }\r
- break;\r
+ if (IsThisVarstore ((VOID *)&IfrVarStore->Guid, VarStoreName, ConfigHdr)) {\r
+ FindVarstore = TRUE;\r
+ goto Done;\r
+ } else {\r
+ FreePool (VarStoreName);\r
+ VarStoreName = NULL;\r
+ }\r
\r
- case EFI_IFR_VARSTORE_EFI_OP:\r
- IfrEfiVarStore = (EFI_IFR_VARSTORE_EFI *) IfrOpHdr;\r
- NameSize = AsciiStrSize ((CHAR8 *)IfrEfiVarStore->Name);\r
- VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));\r
- if (VarStoreName == NULL) {\r
- goto Done;\r
- }\r
- AsciiStrToUnicodeStrS ((CHAR8 *)IfrEfiVarStore->Name, VarStoreName, NameSize);\r
+ break;\r
\r
- if (IsThisVarstore (&IfrEfiVarStore->Guid, VarStoreName, ConfigHdr)) {\r
- FindVarstore = TRUE;\r
- goto Done;\r
- } else {\r
- FreePool (VarStoreName);\r
- VarStoreName = NULL;\r
- }\r
- break;\r
+ case EFI_IFR_VARSTORE_EFI_OP:\r
+ IfrEfiVarStore = (EFI_IFR_VARSTORE_EFI *)IfrOpHdr;\r
+ NameSize = AsciiStrSize ((CHAR8 *)IfrEfiVarStore->Name);\r
+ VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));\r
+ if (VarStoreName == NULL) {\r
+ goto Done;\r
+ }\r
\r
- case EFI_IFR_VARSTORE_NAME_VALUE_OP:\r
- IfrNameValueVarStore = (EFI_IFR_VARSTORE_NAME_VALUE *) IfrOpHdr;\r
+ AsciiStrToUnicodeStrS ((CHAR8 *)IfrEfiVarStore->Name, VarStoreName, NameSize);\r
\r
- if (IsThisVarstore (&IfrNameValueVarStore->Guid, NULL, ConfigHdr)) {\r
- FindVarstore = TRUE;\r
- goto Done;\r
- }\r
- break;\r
+ if (IsThisVarstore (&IfrEfiVarStore->Guid, VarStoreName, ConfigHdr)) {\r
+ FindVarstore = TRUE;\r
+ goto Done;\r
+ } else {\r
+ FreePool (VarStoreName);\r
+ VarStoreName = NULL;\r
+ }\r
\r
- case EFI_IFR_FORM_OP:\r
- case EFI_IFR_FORM_MAP_OP:\r
- //\r
- // No matched varstore is found and directly return.\r
- //\r
- goto Done;\r
+ break;\r
\r
- default:\r
- break;\r
+ case EFI_IFR_VARSTORE_NAME_VALUE_OP:\r
+ IfrNameValueVarStore = (EFI_IFR_VARSTORE_NAME_VALUE *)IfrOpHdr;\r
+\r
+ if (IsThisVarstore (&IfrNameValueVarStore->Guid, NULL, ConfigHdr)) {\r
+ FindVarstore = TRUE;\r
+ goto Done;\r
+ }\r
+\r
+ break;\r
+\r
+ case EFI_IFR_FORM_OP:\r
+ case EFI_IFR_FORM_MAP_OP:\r
+ //\r
+ // No matched varstore is found and directly return.\r
+ //\r
+ goto Done;\r
+\r
+ default:\r
+ break;\r
}\r
}\r
+\r
Done:\r
if (HiiFormPackage != NULL) {\r
FreePool (HiiFormPackage);\r
**/\r
EFI_STATUS\r
IsThisOpcodeRequired (\r
- IN IFR_BLOCK_DATA *RequestBlockArray,\r
- IN EFI_HII_HANDLE HiiHandle,\r
- IN OUT IFR_VARSTORAGE_DATA *VarStorageData,\r
- IN EFI_IFR_OP_HEADER *IfrOpHdr,\r
- IN UINT16 VarWidth,\r
- OUT IFR_BLOCK_DATA **ReturnData,\r
- IN BOOLEAN IsBitVar\r
+ IN IFR_BLOCK_DATA *RequestBlockArray,\r
+ IN EFI_HII_HANDLE HiiHandle,\r
+ IN OUT IFR_VARSTORAGE_DATA *VarStorageData,\r
+ IN EFI_IFR_OP_HEADER *IfrOpHdr,\r
+ IN UINT16 VarWidth,\r
+ OUT IFR_BLOCK_DATA **ReturnData,\r
+ IN BOOLEAN IsBitVar\r
)\r
{\r
IFR_BLOCK_DATA *BlockData;\r
UINT16 BitWidth;\r
UINT16 TotalBits;\r
\r
- NameId = 0;\r
- VarOffset = 0;\r
- BitOffset = 0;\r
- BitWidth = 0;\r
- IfrQuestionHdr = (EFI_IFR_QUESTION_HEADER *)((CHAR8 *) IfrOpHdr + sizeof (EFI_IFR_OP_HEADER));\r
+ NameId = 0;\r
+ VarOffset = 0;\r
+ BitOffset = 0;\r
+ BitWidth = 0;\r
+ IfrQuestionHdr = (EFI_IFR_QUESTION_HEADER *)((CHAR8 *)IfrOpHdr + sizeof (EFI_IFR_OP_HEADER));\r
\r
if (VarStorageData->Type == EFI_HII_VARSTORE_NAME_VALUE) {\r
NameId = IfrQuestionHdr->VarStoreInfo.VarName;\r
//\r
if (IsBitVar) {\r
BitOffset = IfrQuestionHdr->VarStoreInfo.VarOffset;\r
- BitWidth = VarWidth;\r
+ BitWidth = VarWidth;\r
VarOffset = BitOffset / 8;\r
//\r
// Use current bit width and the bit width before current bit (with same byte offset) to calculate the byte width.\r
//\r
TotalBits = BitOffset % 8 + BitWidth;\r
- VarWidth = (TotalBits % 8 == 0 ? TotalBits / 8: TotalBits / 8 + 1);\r
+ VarWidth = (TotalBits % 8 == 0 ? TotalBits / 8 : TotalBits / 8 + 1);\r
} else {\r
VarOffset = IfrQuestionHdr->VarStoreInfo.VarOffset;\r
- BitWidth = VarWidth;\r
+ BitWidth = VarWidth;\r
BitOffset = VarOffset * 8;\r
}\r
\r
}\r
}\r
\r
- BlockData = (IFR_BLOCK_DATA *) AllocateZeroPool (sizeof (IFR_BLOCK_DATA));\r
+ BlockData = (IFR_BLOCK_DATA *)AllocateZeroPool (sizeof (IFR_BLOCK_DATA));\r
if (BlockData == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
if (VarStorageData->Type == EFI_HII_VARSTORE_NAME_VALUE) {\r
- BlockData->Name = InternalGetString(HiiHandle, NameId);\r
+ BlockData->Name = InternalGetString (HiiHandle, NameId);\r
} else {\r
BlockData->Offset = VarOffset;\r
}\r
EFI_STATUS\r
EFIAPI\r
ParseIfrData (\r
- IN EFI_HII_HANDLE HiiHandle,\r
- IN UINT8 *Package,\r
- IN UINT32 PackageLength,\r
- IN EFI_STRING ConfigHdr,\r
- IN IFR_BLOCK_DATA *RequestBlockArray,\r
- IN OUT IFR_VARSTORAGE_DATA *VarStorageData,\r
- OUT IFR_DEFAULT_DATA *DefaultIdArray\r
+ IN EFI_HII_HANDLE HiiHandle,\r
+ IN UINT8 *Package,\r
+ IN UINT32 PackageLength,\r
+ IN EFI_STRING ConfigHdr,\r
+ IN IFR_BLOCK_DATA *RequestBlockArray,\r
+ IN OUT IFR_VARSTORAGE_DATA *VarStorageData,\r
+ OUT IFR_DEFAULT_DATA *DefaultIdArray\r
)\r
{\r
- EFI_STATUS Status;\r
- UINTN IfrOffset;\r
- UINTN PackageOffset;\r
- EFI_IFR_VARSTORE *IfrVarStore;\r
- EFI_IFR_VARSTORE_EFI *IfrEfiVarStore;\r
- EFI_IFR_OP_HEADER *IfrOpHdr;\r
- EFI_IFR_ONE_OF *IfrOneOf;\r
- EFI_IFR_REF4 *IfrRef;\r
- EFI_IFR_ONE_OF_OPTION *IfrOneOfOption;\r
- EFI_IFR_DEFAULT *IfrDefault;\r
- EFI_IFR_ORDERED_LIST *IfrOrderedList;\r
- EFI_IFR_CHECKBOX *IfrCheckBox;\r
- EFI_IFR_PASSWORD *IfrPassword;\r
- EFI_IFR_STRING *IfrString;\r
- EFI_IFR_DATE *IfrDate;\r
- EFI_IFR_TIME *IfrTime;\r
- IFR_DEFAULT_DATA DefaultData;\r
- IFR_DEFAULT_DATA *DefaultDataPtr;\r
- IFR_BLOCK_DATA *BlockData;\r
- CHAR16 *VarStoreName;\r
- UINTN NameSize;\r
- UINT16 VarWidth;\r
- UINT16 VarDefaultId;\r
- BOOLEAN FirstOneOfOption;\r
- BOOLEAN FirstOrderedList;\r
- LIST_ENTRY *LinkData;\r
- LIST_ENTRY *LinkDefault;\r
- EFI_IFR_VARSTORE_NAME_VALUE *IfrNameValueVarStore;\r
- EFI_HII_PACKAGE_HEADER *PackageHeader;\r
- EFI_VARSTORE_ID VarStoreId;\r
- UINT16 SmallestDefaultId;\r
- BOOLEAN SmallestIdFromFlag;\r
- BOOLEAN FromOtherDefaultOpcode;\r
- BOOLEAN QuestionReferBitField;\r
+ EFI_STATUS Status;\r
+ UINTN IfrOffset;\r
+ UINTN PackageOffset;\r
+ EFI_IFR_VARSTORE *IfrVarStore;\r
+ EFI_IFR_VARSTORE_EFI *IfrEfiVarStore;\r
+ EFI_IFR_VARSTORE_EFI *IfrEfiVarStoreTmp;\r
+ EFI_IFR_OP_HEADER *IfrOpHdr;\r
+ EFI_IFR_ONE_OF *IfrOneOf;\r
+ EFI_IFR_REF4 *IfrRef;\r
+ EFI_IFR_ONE_OF_OPTION *IfrOneOfOption;\r
+ EFI_IFR_DEFAULT *IfrDefault;\r
+ EFI_IFR_ORDERED_LIST *IfrOrderedList;\r
+ EFI_IFR_CHECKBOX *IfrCheckBox;\r
+ EFI_IFR_PASSWORD *IfrPassword;\r
+ EFI_IFR_STRING *IfrString;\r
+ EFI_IFR_DATE *IfrDate;\r
+ EFI_IFR_TIME *IfrTime;\r
+ IFR_DEFAULT_DATA DefaultData;\r
+ IFR_DEFAULT_DATA *DefaultDataPtr;\r
+ IFR_BLOCK_DATA *BlockData;\r
+ CHAR16 *VarStoreName;\r
+ UINTN NameSize;\r
+ UINTN NvDefaultStoreSize;\r
+ UINT16 VarWidth;\r
+ UINT16 VarDefaultId;\r
+ BOOLEAN FirstOneOfOption;\r
+ BOOLEAN FirstOrderedList;\r
+ LIST_ENTRY *LinkData;\r
+ LIST_ENTRY *LinkDefault;\r
+ EFI_IFR_VARSTORE_NAME_VALUE *IfrNameValueVarStore;\r
+ EFI_HII_PACKAGE_HEADER *PackageHeader;\r
+ EFI_VARSTORE_ID VarStoreId;\r
+ UINT16 SmallestDefaultId;\r
+ BOOLEAN SmallestIdFromFlag;\r
+ BOOLEAN FromOtherDefaultOpcode;\r
+ BOOLEAN QuestionReferBitField;\r
\r
Status = EFI_SUCCESS;\r
BlockData = NULL;\r
FirstOrderedList = FALSE;\r
VarStoreName = NULL;\r
ZeroMem (&DefaultData, sizeof (IFR_DEFAULT_DATA));\r
- SmallestDefaultId = 0xFFFF;\r
+ SmallestDefaultId = 0xFFFF;\r
FromOtherDefaultOpcode = FALSE;\r
- QuestionReferBitField = FALSE;\r
+ QuestionReferBitField = FALSE;\r
+ IfrEfiVarStoreTmp = NULL;\r
\r
//\r
// Go through the form package to parse OpCode one by one.\r
//\r
PackageOffset = sizeof (EFI_HII_PACKAGE_HEADER);\r
- PackageHeader = (EFI_HII_PACKAGE_HEADER *) Package;\r
+ PackageHeader = (EFI_HII_PACKAGE_HEADER *)Package;\r
IfrOffset = PackageOffset;\r
while (IfrOffset < PackageLength) {\r
-\r
//\r
// More than one form package found.\r
//\r
if (PackageOffset >= PackageHeader->Length) {\r
- //\r
- // Already found varstore for this request, break;\r
- //\r
- if (VarStoreId != 0) {\r
- VarStoreId = 0;\r
- }\r
-\r
- //\r
- // Get next package header info.\r
- //\r
- IfrOffset += sizeof (EFI_HII_PACKAGE_HEADER);\r
- PackageOffset = sizeof (EFI_HII_PACKAGE_HEADER);\r
- PackageHeader = (EFI_HII_PACKAGE_HEADER *) (Package + IfrOffset);\r
- }\r
-\r
- IfrOpHdr = (EFI_IFR_OP_HEADER *) (Package + IfrOffset);\r
- switch (IfrOpHdr->OpCode) {\r
- case EFI_IFR_VARSTORE_OP:\r
//\r
- // VarStore is found. Don't need to search any more.\r
+ // Already found varstore for this request, break;\r
//\r
if (VarStoreId != 0) {\r
- break;\r
+ VarStoreId = 0;\r
}\r
\r
- IfrVarStore = (EFI_IFR_VARSTORE *) IfrOpHdr;\r
-\r
- NameSize = AsciiStrSize ((CHAR8 *)IfrVarStore->Name);\r
- VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));\r
- if (VarStoreName == NULL) {\r
- Status = EFI_OUT_OF_RESOURCES;\r
- goto Done;\r
- }\r
- AsciiStrToUnicodeStrS ((CHAR8 *)IfrVarStore->Name, VarStoreName, NameSize);\r
+ //\r
+ // Get next package header info.\r
+ //\r
+ IfrOffset += sizeof (EFI_HII_PACKAGE_HEADER);\r
+ PackageOffset = sizeof (EFI_HII_PACKAGE_HEADER);\r
+ PackageHeader = (EFI_HII_PACKAGE_HEADER *)(Package + IfrOffset);\r
+ }\r
\r
- if (IsThisVarstore((VOID *)&IfrVarStore->Guid, VarStoreName, ConfigHdr)) {\r
+ IfrOpHdr = (EFI_IFR_OP_HEADER *)(Package + IfrOffset);\r
+ switch (IfrOpHdr->OpCode) {\r
+ case EFI_IFR_VARSTORE_OP:\r
//\r
- // Find the matched VarStore\r
+ // VarStore is found. Don't need to search any more.\r
//\r
- CopyGuid (&VarStorageData->Guid, (EFI_GUID *) (VOID *) &IfrVarStore->Guid);\r
- VarStorageData->Size = IfrVarStore->Size;\r
- VarStorageData->Name = VarStoreName;\r
- VarStorageData->Type = EFI_HII_VARSTORE_BUFFER;\r
- VarStoreId = IfrVarStore->VarStoreId;\r
- } else {\r
- FreePool (VarStoreName);\r
- VarStoreName = NULL;\r
- }\r
- break;\r
+ if (VarStoreId != 0) {\r
+ break;\r
+ }\r
\r
- case EFI_IFR_VARSTORE_EFI_OP:\r
- //\r
- // VarStore is found. Don't need to search any more.\r
- //\r
- if (VarStoreId != 0) {\r
- break;\r
- }\r
+ IfrVarStore = (EFI_IFR_VARSTORE *)IfrOpHdr;\r
\r
- IfrEfiVarStore = (EFI_IFR_VARSTORE_EFI *) IfrOpHdr;\r
+ NameSize = AsciiStrSize ((CHAR8 *)IfrVarStore->Name);\r
+ VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));\r
+ if (VarStoreName == NULL) {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ goto Done;\r
+ }\r
\r
- //\r
- // If the length is small than the structure, this is from old efi\r
- // varstore definition. Old efi varstore get config directly from\r
- // GetVariable function.\r
- //\r
- if (IfrOpHdr->Length < sizeof (EFI_IFR_VARSTORE_EFI)) {\r
- break;\r
- }\r
+ AsciiStrToUnicodeStrS ((CHAR8 *)IfrVarStore->Name, VarStoreName, NameSize);\r
\r
- NameSize = AsciiStrSize ((CHAR8 *)IfrEfiVarStore->Name);\r
- VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));\r
- if (VarStoreName == NULL) {\r
- Status = EFI_OUT_OF_RESOURCES;\r
- goto Done;\r
- }\r
- AsciiStrToUnicodeStrS ((CHAR8 *)IfrEfiVarStore->Name, VarStoreName, NameSize);\r
+ if (IsThisVarstore ((VOID *)&IfrVarStore->Guid, VarStoreName, ConfigHdr)) {\r
+ //\r
+ // Find the matched VarStore\r
+ //\r
+ CopyGuid (&VarStorageData->Guid, (EFI_GUID *)(VOID *)&IfrVarStore->Guid);\r
+ VarStorageData->Size = IfrVarStore->Size;\r
+ VarStorageData->Name = VarStoreName;\r
+ VarStorageData->Type = EFI_HII_VARSTORE_BUFFER;\r
+ VarStoreId = IfrVarStore->VarStoreId;\r
+ } else {\r
+ FreePool (VarStoreName);\r
+ VarStoreName = NULL;\r
+ }\r
\r
- if (IsThisVarstore (&IfrEfiVarStore->Guid, VarStoreName, ConfigHdr)) {\r
+ break;\r
+\r
+ case EFI_IFR_VARSTORE_EFI_OP:\r
//\r
- // Find the matched VarStore\r
+ // VarStore is found. Don't need to search any more.\r
//\r
- CopyGuid (&VarStorageData->Guid, (EFI_GUID *) (VOID *) &IfrEfiVarStore->Guid);\r
- VarStorageData->Size = IfrEfiVarStore->Size;\r
- VarStorageData->Name = VarStoreName;\r
- VarStorageData->Type = EFI_HII_VARSTORE_EFI_VARIABLE_BUFFER;\r
- VarStoreId = IfrEfiVarStore->VarStoreId;\r
- } else {\r
- FreePool (VarStoreName);\r
- VarStoreName = NULL;\r
- }\r
- break;\r
-\r
- case EFI_IFR_VARSTORE_NAME_VALUE_OP:\r
- //\r
- // VarStore is found. Don't need to search any more.\r
- //\r
- if (VarStoreId != 0) {\r
- break;\r
- }\r
+ if (VarStoreId != 0) {\r
+ break;\r
+ }\r
\r
- IfrNameValueVarStore = (EFI_IFR_VARSTORE_NAME_VALUE *) IfrOpHdr;\r
+ IfrEfiVarStore = (EFI_IFR_VARSTORE_EFI *)IfrOpHdr;\r
\r
- if (IsThisVarstore (&IfrNameValueVarStore->Guid, NULL, ConfigHdr)) {\r
//\r
- // Find the matched VarStore\r
+ // If the length is small than the structure, this is from old efi\r
+ // varstore definition. Old efi varstore get config directly from\r
+ // GetVariable function.\r
//\r
- CopyGuid (&VarStorageData->Guid, (EFI_GUID *) (VOID *) &IfrNameValueVarStore->Guid);\r
- VarStorageData->Type = EFI_HII_VARSTORE_NAME_VALUE;\r
- VarStoreId = IfrNameValueVarStore->VarStoreId;\r
- }\r
- break;\r
+ if (IfrOpHdr->Length < sizeof (EFI_IFR_VARSTORE_EFI)) {\r
+ break;\r
+ }\r
\r
- case EFI_IFR_DEFAULTSTORE_OP:\r
- //\r
- // Add new the map between default id and default name.\r
- //\r
- DefaultDataPtr = (IFR_DEFAULT_DATA *) AllocateZeroPool (sizeof (IFR_DEFAULT_DATA));\r
- if (DefaultDataPtr == NULL) {\r
- Status = EFI_OUT_OF_RESOURCES;\r
- goto Done;\r
- }\r
- DefaultDataPtr->DefaultId = ((EFI_IFR_DEFAULTSTORE *) IfrOpHdr)->DefaultId;\r
- InsertTailList (&DefaultIdArray->Entry, &DefaultDataPtr->Entry);\r
- DefaultDataPtr = NULL;\r
- break;\r
+ NameSize = AsciiStrSize ((CHAR8 *)IfrEfiVarStore->Name);\r
+ VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));\r
+ if (VarStoreName == NULL) {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ goto Done;\r
+ }\r
\r
- case EFI_IFR_FORM_OP:\r
- case EFI_IFR_FORM_MAP_OP:\r
- //\r
- // No matched varstore is found and directly return.\r
- //\r
- if ( VarStoreId == 0) {\r
- Status = EFI_SUCCESS;\r
- goto Done;\r
- }\r
- break;\r
+ AsciiStrToUnicodeStrS ((CHAR8 *)IfrEfiVarStore->Name, VarStoreName, NameSize);\r
+ if (IfrEfiVarStoreTmp != NULL) {\r
+ FreePool (IfrEfiVarStoreTmp);\r
+ }\r
\r
- case EFI_IFR_REF_OP:\r
- //\r
- // Ref question is not in IFR Form. This IFR form is not valid.\r
- //\r
- if ( VarStoreId == 0) {\r
- Status = EFI_INVALID_PARAMETER;\r
- goto Done;\r
- }\r
- //\r
- // Check whether this question is for the requested varstore.\r
- //\r
- IfrRef = (EFI_IFR_REF4 *) IfrOpHdr;\r
- if (IfrRef->Question.VarStoreId != VarStoreId) {\r
- break;\r
- }\r
- VarWidth = (UINT16) (sizeof (EFI_HII_REF));\r
+ IfrEfiVarStoreTmp = AllocatePool (IfrEfiVarStore->Header.Length + AsciiStrSize ((CHAR8 *)IfrEfiVarStore->Name));\r
+ if (IfrEfiVarStoreTmp == NULL) {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ goto Done;\r
+ }\r
\r
- //\r
- // The BlockData may allocate by other opcode,need to clean.\r
- //\r
- if (BlockData != NULL){\r
- BlockData = NULL;\r
- }\r
+ CopyMem (IfrEfiVarStoreTmp, IfrEfiVarStore, IfrEfiVarStore->Header.Length);\r
+ AsciiStrToUnicodeStrS ((CHAR8 *)IfrEfiVarStore->Name, (CHAR16 *)&(IfrEfiVarStoreTmp->Name[0]), AsciiStrSize ((CHAR8 *)IfrEfiVarStore->Name) * sizeof (CHAR16));\r
\r
- Status = IsThisOpcodeRequired(RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, FALSE);\r
- if (EFI_ERROR (Status)) {\r
- if (Status == EFI_NOT_FOUND){\r
+ if (IsThisVarstore (&IfrEfiVarStore->Guid, VarStoreName, ConfigHdr)) {\r
//\r
- //The opcode is not required,exit and parse other opcode.\r
+ // Find the matched VarStore\r
//\r
- break;\r
+ CopyGuid (&VarStorageData->Guid, (EFI_GUID *)(VOID *)&IfrEfiVarStore->Guid);\r
+ VarStorageData->Size = IfrEfiVarStore->Size;\r
+ VarStorageData->Name = VarStoreName;\r
+ VarStorageData->Type = EFI_HII_VARSTORE_EFI_VARIABLE_BUFFER;\r
+ VarStoreId = IfrEfiVarStore->VarStoreId;\r
+ } else {\r
+ FreePool (VarStoreName);\r
+ VarStoreName = NULL;\r
}\r
- goto Done;\r
- }\r
- break;\r
\r
- case EFI_IFR_ONE_OF_OP:\r
- case EFI_IFR_NUMERIC_OP:\r
- //\r
- // Numeric and OneOf has the same opcode structure.\r
- //\r
-\r
- //\r
- // Numeric and OneOf question is not in IFR Form. This IFR form is not valid.\r
- //\r
- if (VarStoreId == 0) {\r
- Status = EFI_INVALID_PARAMETER;\r
- goto Done;\r
- }\r
- //\r
- // Check whether this question is for the requested varstore.\r
- //\r
- IfrOneOf = (EFI_IFR_ONE_OF *) IfrOpHdr;\r
- if (IfrOneOf->Question.VarStoreId != VarStoreId) {\r
break;\r
- }\r
\r
- if (QuestionReferBitField) {\r
- VarWidth = IfrOneOf->Flags & EDKII_IFR_NUMERIC_SIZE_BIT;\r
- } else {\r
- VarWidth = (UINT16) (1 << (IfrOneOf->Flags & EFI_IFR_NUMERIC_SIZE));\r
- }\r
+ case EFI_IFR_VARSTORE_NAME_VALUE_OP:\r
+ //\r
+ // VarStore is found. Don't need to search any more.\r
+ //\r
+ if (VarStoreId != 0) {\r
+ break;\r
+ }\r
\r
- //\r
- // The BlockData may allocate by other opcode,need to clean.\r
- //\r
- if (BlockData != NULL){\r
- BlockData = NULL;\r
- }\r
+ IfrNameValueVarStore = (EFI_IFR_VARSTORE_NAME_VALUE *)IfrOpHdr;\r
\r
- Status = IsThisOpcodeRequired(RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, QuestionReferBitField);\r
- if (EFI_ERROR (Status)) {\r
- if (Status == EFI_NOT_FOUND){\r
+ if (IsThisVarstore (&IfrNameValueVarStore->Guid, NULL, ConfigHdr)) {\r
//\r
- //The opcode is not required,exit and parse other opcode.\r
+ // Find the matched VarStore\r
//\r
+ CopyGuid (&VarStorageData->Guid, (EFI_GUID *)(VOID *)&IfrNameValueVarStore->Guid);\r
+ VarStorageData->Type = EFI_HII_VARSTORE_NAME_VALUE;\r
+ VarStoreId = IfrNameValueVarStore->VarStoreId;\r
+ }\r
+\r
+ break;\r
+\r
+ case EFI_IFR_DEFAULTSTORE_OP:\r
+ //\r
+ // Add new the map between default id and default name.\r
+ //\r
+ DefaultDataPtr = (IFR_DEFAULT_DATA *)AllocateZeroPool (sizeof (IFR_DEFAULT_DATA));\r
+ if (DefaultDataPtr == NULL) {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ goto Done;\r
+ }\r
+\r
+ DefaultDataPtr->DefaultId = ((EFI_IFR_DEFAULTSTORE *)IfrOpHdr)->DefaultId;\r
+ InsertTailList (&DefaultIdArray->Entry, &DefaultDataPtr->Entry);\r
+ DefaultDataPtr = NULL;\r
+ break;\r
+\r
+ case EFI_IFR_FORM_OP:\r
+ case EFI_IFR_FORM_MAP_OP:\r
+ //\r
+ // No matched varstore is found and directly return.\r
+ //\r
+ if ( VarStoreId == 0) {\r
+ Status = EFI_SUCCESS;\r
+ goto Done;\r
+ }\r
+\r
+ break;\r
+\r
+ case EFI_IFR_REF_OP:\r
+ //\r
+ // Ref question is not in IFR Form. This IFR form is not valid.\r
+ //\r
+ if ( VarStoreId == 0) {\r
+ Status = EFI_INVALID_PARAMETER;\r
+ goto Done;\r
+ }\r
+\r
+ //\r
+ // Check whether this question is for the requested varstore.\r
+ //\r
+ IfrRef = (EFI_IFR_REF4 *)IfrOpHdr;\r
+ if (IfrRef->Question.VarStoreId != VarStoreId) {\r
break;\r
}\r
- goto Done;\r
- }\r
\r
- //\r
- //when go to there,BlockData can't be NULLL.\r
- //\r
- ASSERT (BlockData != NULL);\r
+ VarWidth = (UINT16)(sizeof (EFI_HII_REF));\r
+\r
+ //\r
+ // The BlockData may allocate by other opcode,need to clean.\r
+ //\r
+ if (BlockData != NULL) {\r
+ BlockData = NULL;\r
+ }\r
+\r
+ Status = IsThisOpcodeRequired (RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, FALSE);\r
+ if (EFI_ERROR (Status)) {\r
+ if (Status == EFI_NOT_FOUND) {\r
+ //\r
+ // The opcode is not required,exit and parse other opcode.\r
+ //\r
+ break;\r
+ }\r
\r
- if (IfrOpHdr->OpCode == EFI_IFR_ONE_OF_OP) {\r
+ goto Done;\r
+ }\r
+\r
+ break;\r
+\r
+ case EFI_IFR_ONE_OF_OP:\r
+ case EFI_IFR_NUMERIC_OP:\r
//\r
- // Set this flag to TRUE for the first oneof option.\r
+ // Numeric and OneOf has the same opcode structure.\r
//\r
- FirstOneOfOption = TRUE;\r
- } else if (IfrOpHdr->OpCode == EFI_IFR_NUMERIC_OP) {\r
+\r
//\r
- // Numeric minimum value will be used as default value when no default is specified.\r
+ // Numeric and OneOf question is not in IFR Form. This IFR form is not valid.\r
//\r
- DefaultData.Type = DefaultValueFromDefault;\r
+ if (VarStoreId == 0) {\r
+ Status = EFI_INVALID_PARAMETER;\r
+ goto Done;\r
+ }\r
+\r
+ //\r
+ // Check whether this question is for the requested varstore.\r
+ //\r
+ IfrOneOf = (EFI_IFR_ONE_OF *)IfrOpHdr;\r
+ if (IfrOneOf->Question.VarStoreId != VarStoreId) {\r
+ break;\r
+ }\r
+\r
if (QuestionReferBitField) {\r
- //\r
- // Since default value in bit field was stored as UINT32 type.\r
- //\r
- CopyMem (&DefaultData.Value.u32, &IfrOneOf->data.u32.MinValue, sizeof (UINT32));\r
+ VarWidth = IfrOneOf->Flags & EDKII_IFR_NUMERIC_SIZE_BIT;\r
} else {\r
- switch (IfrOneOf->Flags & EFI_IFR_NUMERIC_SIZE) {\r
- case EFI_IFR_NUMERIC_SIZE_1:\r
- DefaultData.Value.u8 = IfrOneOf->data.u8.MinValue;\r
+ VarWidth = (UINT16)(1 << (IfrOneOf->Flags & EFI_IFR_NUMERIC_SIZE));\r
+ }\r
+\r
+ //\r
+ // The BlockData may allocate by other opcode,need to clean.\r
+ //\r
+ if (BlockData != NULL) {\r
+ BlockData = NULL;\r
+ }\r
+\r
+ Status = IsThisOpcodeRequired (RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, QuestionReferBitField);\r
+ if (EFI_ERROR (Status)) {\r
+ if (Status == EFI_NOT_FOUND) {\r
+ //\r
+ // The opcode is not required,exit and parse other opcode.\r
+ //\r
break;\r
+ }\r
\r
- case EFI_IFR_NUMERIC_SIZE_2:\r
- CopyMem (&DefaultData.Value.u16, &IfrOneOf->data.u16.MinValue, sizeof (UINT16));\r
- break;\r
+ goto Done;\r
+ }\r
+\r
+ //\r
+ // when go to there,BlockData can't be NULLL.\r
+ //\r
+ ASSERT (BlockData != NULL);\r
\r
- case EFI_IFR_NUMERIC_SIZE_4:\r
+ if (IfrOpHdr->OpCode == EFI_IFR_ONE_OF_OP) {\r
+ //\r
+ // Set this flag to TRUE for the first oneof option.\r
+ //\r
+ FirstOneOfOption = TRUE;\r
+ } else if (IfrOpHdr->OpCode == EFI_IFR_NUMERIC_OP) {\r
+ //\r
+ // Numeric minimum value will be used as default value when no default is specified.\r
+ //\r
+ DefaultData.Type = DefaultValueFromDefault;\r
+ if (QuestionReferBitField) {\r
+ //\r
+ // Since default value in bit field was stored as UINT32 type.\r
+ //\r
CopyMem (&DefaultData.Value.u32, &IfrOneOf->data.u32.MinValue, sizeof (UINT32));\r
+ } else {\r
+ switch (IfrOneOf->Flags & EFI_IFR_NUMERIC_SIZE) {\r
+ case EFI_IFR_NUMERIC_SIZE_1:\r
+ DefaultData.Value.u8 = IfrOneOf->data.u8.MinValue;\r
+ break;\r
+\r
+ case EFI_IFR_NUMERIC_SIZE_2:\r
+ CopyMem (&DefaultData.Value.u16, &IfrOneOf->data.u16.MinValue, sizeof (UINT16));\r
+ break;\r
+\r
+ case EFI_IFR_NUMERIC_SIZE_4:\r
+ CopyMem (&DefaultData.Value.u32, &IfrOneOf->data.u32.MinValue, sizeof (UINT32));\r
+ break;\r
+\r
+ case EFI_IFR_NUMERIC_SIZE_8:\r
+ CopyMem (&DefaultData.Value.u64, &IfrOneOf->data.u64.MinValue, sizeof (UINT64));\r
+ break;\r
+\r
+ default:\r
+ Status = EFI_INVALID_PARAMETER;\r
+ goto Done;\r
+ }\r
+ }\r
+\r
+ //\r
+ // Set default value base on the DefaultId list get from IFR data.\r
+ //\r
+ NvDefaultStoreSize = PcdGetSize (PcdNvStoreDefaultValueBuffer);\r
+ for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {\r
+ DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);\r
+ DefaultData.DefaultId = DefaultDataPtr->DefaultId;\r
+ if (NvDefaultStoreSize > sizeof (PCD_NV_STORE_DEFAULT_BUFFER_HEADER)) {\r
+ FindQuestionDefaultSetting (DefaultData.DefaultId, IfrEfiVarStoreTmp, &(IfrOneOf->Question), &DefaultData.Value, VarWidth, QuestionReferBitField);\r
+ }\r
+\r
+ InsertDefaultValue (BlockData, &DefaultData);\r
+ }\r
+ }\r
+\r
+ break;\r
+\r
+ case EFI_IFR_ORDERED_LIST_OP:\r
+ //\r
+ // offset by question header\r
+ // width by EFI_IFR_ORDERED_LIST MaxContainers * OneofOption Type\r
+ //\r
+\r
+ FirstOrderedList = TRUE;\r
+ //\r
+ // OrderedList question is not in IFR Form. This IFR form is not valid.\r
+ //\r
+ if (VarStoreId == 0) {\r
+ Status = EFI_INVALID_PARAMETER;\r
+ goto Done;\r
+ }\r
+\r
+ //\r
+ // Check whether this question is for the requested varstore.\r
+ //\r
+ IfrOrderedList = (EFI_IFR_ORDERED_LIST *)IfrOpHdr;\r
+ if (IfrOrderedList->Question.VarStoreId != VarStoreId) {\r
+ BlockData = NULL;\r
+ break;\r
+ }\r
+\r
+ VarWidth = IfrOrderedList->MaxContainers;\r
+\r
+ //\r
+ // The BlockData may allocate by other opcode,need to clean.\r
+ //\r
+ if (BlockData != NULL) {\r
+ BlockData = NULL;\r
+ }\r
+\r
+ Status = IsThisOpcodeRequired (RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, FALSE);\r
+ if (EFI_ERROR (Status)) {\r
+ if (Status == EFI_NOT_FOUND) {\r
+ //\r
+ // The opcode is not required,exit and parse other opcode.\r
+ //\r
break;\r
+ }\r
+\r
+ goto Done;\r
+ }\r
+\r
+ break;\r
+\r
+ case EFI_IFR_CHECKBOX_OP:\r
+ //\r
+ // EFI_IFR_DEFAULT_OP\r
+ // offset by question header\r
+ // width is 1 sizeof (BOOLEAN)\r
+ // default id by CheckBox Flags if CheckBox flags (Default or Mau) is set, the default value is 1 to be set.\r
+ // value by DefaultOption\r
+ // default id by DeaultOption DefaultId can override CheckBox Flags and Default value.\r
+ //\r
+\r
+ //\r
+ // CheckBox question is not in IFR Form. This IFR form is not valid.\r
+ //\r
+ if (VarStoreId == 0) {\r
+ Status = EFI_INVALID_PARAMETER;\r
+ goto Done;\r
+ }\r
+\r
+ //\r
+ // Check whether this question is for the requested varstore.\r
+ //\r
+ IfrCheckBox = (EFI_IFR_CHECKBOX *)IfrOpHdr;\r
+ if (IfrCheckBox->Question.VarStoreId != VarStoreId) {\r
+ break;\r
+ }\r
+\r
+ VarWidth = (UINT16)sizeof (BOOLEAN);\r
+\r
+ //\r
+ // The BlockData may allocate by other opcode,need to clean.\r
+ //\r
+ if (BlockData != NULL) {\r
+ BlockData = NULL;\r
+ }\r
\r
- case EFI_IFR_NUMERIC_SIZE_8:\r
- CopyMem (&DefaultData.Value.u64, &IfrOneOf->data.u64.MinValue, sizeof (UINT64));\r
+ if (QuestionReferBitField) {\r
+ VarWidth = 1;\r
+ }\r
+\r
+ Status = IsThisOpcodeRequired (RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, QuestionReferBitField);\r
+ if (EFI_ERROR (Status)) {\r
+ if (Status == EFI_NOT_FOUND) {\r
+ //\r
+ // The opcode is not required,exit and parse other opcode.\r
+ //\r
break;\r
+ }\r
\r
- default:\r
- Status = EFI_INVALID_PARAMETER;\r
- goto Done;\r
- }\r
+ goto Done;\r
}\r
+\r
//\r
- // Set default value base on the DefaultId list get from IFR data.\r
+ // when go to there,BlockData can't be NULLL.\r
//\r
- for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {\r
- DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);\r
- DefaultData.DefaultId = DefaultDataPtr->DefaultId;\r
+ ASSERT (BlockData != NULL);\r
+\r
+ SmallestIdFromFlag = FALSE;\r
+\r
+ //\r
+ // Add default value for standard ID by CheckBox Flag\r
+ //\r
+ VarDefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;\r
+ //\r
+ // Prepare new DefaultValue\r
+ //\r
+ DefaultData.DefaultId = VarDefaultId;\r
+ if ((IfrCheckBox->Flags & EFI_IFR_CHECKBOX_DEFAULT) == EFI_IFR_CHECKBOX_DEFAULT) {\r
+ //\r
+ // When flag is set, default value is TRUE.\r
+ //\r
+ DefaultData.Type = DefaultValueFromFlag;\r
+ if (QuestionReferBitField) {\r
+ DefaultData.Value.u32 = TRUE;\r
+ } else {\r
+ DefaultData.Value.b = TRUE;\r
+ }\r
+\r
InsertDefaultValue (BlockData, &DefaultData);\r
+\r
+ if (SmallestDefaultId > EFI_HII_DEFAULT_CLASS_STANDARD) {\r
+ //\r
+ // Record the SmallestDefaultId and update the SmallestIdFromFlag.\r
+ //\r
+ SmallestDefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;\r
+ SmallestIdFromFlag = TRUE;\r
+ }\r
}\r
- }\r
- break;\r
\r
- case EFI_IFR_ORDERED_LIST_OP:\r
- //\r
- // offset by question header\r
- // width by EFI_IFR_ORDERED_LIST MaxContainers * OneofOption Type\r
- //\r
+ //\r
+ // Add default value for Manufacture ID by CheckBox Flag\r
+ //\r
+ VarDefaultId = EFI_HII_DEFAULT_CLASS_MANUFACTURING;\r
+ //\r
+ // Prepare new DefaultValue\r
+ //\r
+ DefaultData.DefaultId = VarDefaultId;\r
+ if ((IfrCheckBox->Flags & EFI_IFR_CHECKBOX_DEFAULT_MFG) == EFI_IFR_CHECKBOX_DEFAULT_MFG) {\r
+ //\r
+ // When flag is set, default value is TRUE.\r
+ //\r
+ DefaultData.Type = DefaultValueFromFlag;\r
+ if (QuestionReferBitField) {\r
+ DefaultData.Value.u32 = TRUE;\r
+ } else {\r
+ DefaultData.Value.b = TRUE;\r
+ }\r
\r
- FirstOrderedList = TRUE;\r
- //\r
- // OrderedList question is not in IFR Form. This IFR form is not valid.\r
- //\r
- if (VarStoreId == 0) {\r
- Status = EFI_INVALID_PARAMETER;\r
- goto Done;\r
- }\r
- //\r
- // Check whether this question is for the requested varstore.\r
- //\r
- IfrOrderedList = (EFI_IFR_ORDERED_LIST *) IfrOpHdr;\r
- if (IfrOrderedList->Question.VarStoreId != VarStoreId) {\r
- BlockData = NULL;\r
- break;\r
- }\r
- VarWidth = IfrOrderedList->MaxContainers;\r
+ InsertDefaultValue (BlockData, &DefaultData);\r
\r
- //\r
- // The BlockData may allocate by other opcode,need to clean.\r
- //\r
- if (BlockData != NULL){\r
- BlockData = NULL;\r
- }\r
+ if (SmallestDefaultId > EFI_HII_DEFAULT_CLASS_MANUFACTURING) {\r
+ //\r
+ // Record the SmallestDefaultId and update the SmallestIdFromFlag.\r
+ //\r
+ SmallestDefaultId = EFI_HII_DEFAULT_CLASS_MANUFACTURING;\r
+ SmallestIdFromFlag = TRUE;\r
+ }\r
+ }\r
\r
- Status = IsThisOpcodeRequired(RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, FALSE);\r
- if (EFI_ERROR (Status)) {\r
- if (Status == EFI_NOT_FOUND){\r
+ if (SmallestIdFromFlag) {\r
+ //\r
+ // When smallest default Id is given by the flag of CheckBox, set default value with TRUE for other default Id in the DefaultId list.\r
+ //\r
+ DefaultData.Type = DefaultValueFromOtherDefault;\r
+ if (QuestionReferBitField) {\r
+ DefaultData.Value.u32 = TRUE;\r
+ } else {\r
+ DefaultData.Value.b = TRUE;\r
+ }\r
+\r
+ //\r
+ // Set default value for all the default id in the DefaultId list.\r
+ //\r
+ for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {\r
+ DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);\r
+ DefaultData.DefaultId = DefaultDataPtr->DefaultId;\r
+ InsertDefaultValue (BlockData, &DefaultData);\r
+ }\r
+ } else {\r
//\r
- //The opcode is not required,exit and parse other opcode.\r
+ // When flag is not set, default value is FASLE.\r
//\r
+ DefaultData.Type = DefaultValueFromDefault;\r
+ if (QuestionReferBitField) {\r
+ DefaultData.Value.u32 = FALSE;\r
+ } else {\r
+ DefaultData.Value.b = FALSE;\r
+ }\r
+\r
+ //\r
+ // Set default value for all the default id in the DefaultId list.\r
+ //\r
+ for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {\r
+ DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);\r
+ DefaultData.DefaultId = DefaultDataPtr->DefaultId;\r
+ InsertDefaultValue (BlockData, &DefaultData);\r
+ }\r
+ }\r
+\r
+ break;\r
+\r
+ case EFI_IFR_DATE_OP:\r
+ //\r
+ // offset by question header\r
+ // width MaxSize * sizeof (CHAR16)\r
+ // no default value, only block array\r
+ //\r
+\r
+ //\r
+ // Date question is not in IFR Form. This IFR form is not valid.\r
+ //\r
+ if (VarStoreId == 0) {\r
+ Status = EFI_INVALID_PARAMETER;\r
+ goto Done;\r
+ }\r
+\r
+ //\r
+ // Check whether this question is for the requested varstore.\r
+ //\r
+ IfrDate = (EFI_IFR_DATE *)IfrOpHdr;\r
+ if (IfrDate->Question.VarStoreId != VarStoreId) {\r
break;\r
}\r
- goto Done;\r
- }\r
- break;\r
\r
- case EFI_IFR_CHECKBOX_OP:\r
- //\r
- // EFI_IFR_DEFAULT_OP\r
- // offset by question header\r
- // width is 1 sizeof (BOOLEAN)\r
- // default id by CheckBox Flags if CheckBox flags (Default or Mau) is set, the default value is 1 to be set.\r
- // value by DefaultOption\r
- // default id by DeaultOption DefaultId can override CheckBox Flags and Default value.\r
- //\r
+ //\r
+ // The BlockData may allocate by other opcode,need to clean.\r
+ //\r
+ if (BlockData != NULL) {\r
+ BlockData = NULL;\r
+ }\r
+\r
+ VarWidth = (UINT16)sizeof (EFI_HII_DATE);\r
+ Status = IsThisOpcodeRequired (RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, FALSE);\r
+ if (EFI_ERROR (Status)) {\r
+ if (Status == EFI_NOT_FOUND) {\r
+ //\r
+ // The opcode is not required,exit and parse other opcode.\r
+ //\r
+ break;\r
+ }\r
+\r
+ goto Done;\r
+ }\r
\r
- //\r
- // CheckBox question is not in IFR Form. This IFR form is not valid.\r
- //\r
- if (VarStoreId == 0) {\r
- Status = EFI_INVALID_PARAMETER;\r
- goto Done;\r
- }\r
- //\r
- // Check whether this question is for the requested varstore.\r
- //\r
- IfrCheckBox = (EFI_IFR_CHECKBOX *) IfrOpHdr;\r
- if (IfrCheckBox->Question.VarStoreId != VarStoreId) {\r
break;\r
- }\r
- VarWidth = (UINT16) sizeof (BOOLEAN);\r
\r
- //\r
- // The BlockData may allocate by other opcode,need to clean.\r
- //\r
- if (BlockData != NULL){\r
- BlockData = NULL;\r
- }\r
+ case EFI_IFR_TIME_OP:\r
+ //\r
+ // offset by question header\r
+ // width MaxSize * sizeof (CHAR16)\r
+ // no default value, only block array\r
+ //\r
+\r
+ //\r
+ // Time question is not in IFR Form. This IFR form is not valid.\r
+ //\r
+ if (VarStoreId == 0) {\r
+ Status = EFI_INVALID_PARAMETER;\r
+ goto Done;\r
+ }\r
+\r
+ //\r
+ // Check whether this question is for the requested varstore.\r
+ //\r
+ IfrTime = (EFI_IFR_TIME *)IfrOpHdr;\r
+ if (IfrTime->Question.VarStoreId != VarStoreId) {\r
+ break;\r
+ }\r
+\r
+ //\r
+ // The BlockData may allocate by other opcode,need to clean.\r
+ //\r
+ if (BlockData != NULL) {\r
+ BlockData = NULL;\r
+ }\r
+\r
+ VarWidth = (UINT16)sizeof (EFI_HII_TIME);\r
+ Status = IsThisOpcodeRequired (RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, FALSE);\r
+ if (EFI_ERROR (Status)) {\r
+ if (Status == EFI_NOT_FOUND) {\r
+ //\r
+ // The opcode is not required,exit and parse other opcode.\r
+ //\r
+ break;\r
+ }\r
\r
- if (QuestionReferBitField) {\r
- VarWidth = 1;\r
- }\r
- Status = IsThisOpcodeRequired(RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, QuestionReferBitField);\r
- if (EFI_ERROR (Status)) {\r
- if (Status == EFI_NOT_FOUND){\r
- //\r
- //The opcode is not required,exit and parse other opcode.\r
- //\r
- break;\r
+ goto Done;\r
}\r
- goto Done;\r
- }\r
\r
- //\r
- //when go to there,BlockData can't be NULLL.\r
- //\r
- ASSERT (BlockData != NULL);\r
+ break;\r
\r
- SmallestIdFromFlag = FALSE;\r
+ case EFI_IFR_STRING_OP:\r
+ //\r
+ // offset by question header\r
+ // width MaxSize * sizeof (CHAR16)\r
+ // no default value, only block array\r
+ //\r
\r
- //\r
- // Add default value for standard ID by CheckBox Flag\r
- //\r
- VarDefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;\r
- //\r
- // Prepare new DefaultValue\r
- //\r
- DefaultData.DefaultId = VarDefaultId;\r
- if ((IfrCheckBox->Flags & EFI_IFR_CHECKBOX_DEFAULT) == EFI_IFR_CHECKBOX_DEFAULT) {\r
//\r
- // When flag is set, default value is TRUE.\r
+ // String question is not in IFR Form. This IFR form is not valid.\r
//\r
- DefaultData.Type = DefaultValueFromFlag;\r
- if (QuestionReferBitField) {\r
- DefaultData.Value.u32 = TRUE;\r
- } else {\r
- DefaultData.Value.b = TRUE;\r
+ if (VarStoreId == 0) {\r
+ Status = EFI_INVALID_PARAMETER;\r
+ goto Done;\r
}\r
- InsertDefaultValue (BlockData, &DefaultData);\r
\r
- if (SmallestDefaultId > EFI_HII_DEFAULT_CLASS_STANDARD) {\r
- //\r
- // Record the SmallestDefaultId and update the SmallestIdFromFlag.\r
- //\r
- SmallestDefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;\r
- SmallestIdFromFlag = TRUE;\r
+ //\r
+ // Check whether this question is for the requested varstore.\r
+ //\r
+ IfrString = (EFI_IFR_STRING *)IfrOpHdr;\r
+ if (IfrString->Question.VarStoreId != VarStoreId) {\r
+ break;\r
}\r
- }\r
\r
- //\r
- // Add default value for Manufacture ID by CheckBox Flag\r
- //\r
- VarDefaultId = EFI_HII_DEFAULT_CLASS_MANUFACTURING;\r
- //\r
- // Prepare new DefaultValue\r
- //\r
- DefaultData.DefaultId = VarDefaultId;\r
- if ((IfrCheckBox->Flags & EFI_IFR_CHECKBOX_DEFAULT_MFG) == EFI_IFR_CHECKBOX_DEFAULT_MFG) {\r
//\r
- // When flag is set, default value is TRUE.\r
+ // The BlockData may allocate by other opcode,need to clean.\r
//\r
- DefaultData.Type = DefaultValueFromFlag;\r
- if (QuestionReferBitField) {\r
- DefaultData.Value.u32 = TRUE;\r
- } else {\r
- DefaultData.Value.b = TRUE;\r
+ if (BlockData != NULL) {\r
+ BlockData = NULL;\r
}\r
- InsertDefaultValue (BlockData, &DefaultData);\r
\r
- if (SmallestDefaultId > EFI_HII_DEFAULT_CLASS_MANUFACTURING) {\r
- //\r
- // Record the SmallestDefaultId and update the SmallestIdFromFlag.\r
- //\r
- SmallestDefaultId = EFI_HII_DEFAULT_CLASS_MANUFACTURING;\r
- SmallestIdFromFlag = TRUE;\r
+ VarWidth = (UINT16)(IfrString->MaxSize * sizeof (UINT16));\r
+ Status = IsThisOpcodeRequired (RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, FALSE);\r
+ if (EFI_ERROR (Status)) {\r
+ if (Status == EFI_NOT_FOUND) {\r
+ //\r
+ // The opcode is not required,exit and parse other opcode.\r
+ //\r
+ break;\r
+ }\r
+\r
+ goto Done;\r
}\r
- }\r
- if (SmallestIdFromFlag) {\r
+\r
+ break;\r
+\r
+ case EFI_IFR_PASSWORD_OP:\r
//\r
- // When smallest default Id is given by the flag of CheckBox, set default value with TRUE for other default Id in the DefaultId list.\r
+ // offset by question header\r
+ // width MaxSize * sizeof (CHAR16)\r
+ // no default value, only block array\r
//\r
- DefaultData.Type = DefaultValueFromOtherDefault;\r
- if (QuestionReferBitField) {\r
- DefaultData.Value.u32 = TRUE;\r
- } else {\r
- DefaultData.Value.b = TRUE;\r
- }\r
+\r
//\r
- // Set default value for all the default id in the DefaultId list.\r
+ // Password question is not in IFR Form. This IFR form is not valid.\r
//\r
- for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {\r
- DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);\r
- DefaultData.DefaultId = DefaultDataPtr->DefaultId;\r
- InsertDefaultValue (BlockData, &DefaultData);\r
+ if (VarStoreId == 0) {\r
+ Status = EFI_INVALID_PARAMETER;\r
+ goto Done;\r
}\r
- } else {\r
+\r
//\r
- // When flag is not set, default value is FASLE.\r
+ // Check whether this question is for the requested varstore.\r
//\r
- DefaultData.Type = DefaultValueFromDefault;\r
- if (QuestionReferBitField) {\r
- DefaultData.Value.u32 = FALSE;\r
- } else {\r
- DefaultData.Value.b = FALSE;\r
+ IfrPassword = (EFI_IFR_PASSWORD *)IfrOpHdr;\r
+ if (IfrPassword->Question.VarStoreId != VarStoreId) {\r
+ break;\r
}\r
+\r
//\r
- // Set default value for all the default id in the DefaultId list.\r
+ // The BlockData may allocate by other opcode,need to clean.\r
//\r
- for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {\r
- DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);\r
- DefaultData.DefaultId = DefaultDataPtr->DefaultId;\r
- InsertDefaultValue (BlockData, &DefaultData);\r
+ if (BlockData != NULL) {\r
+ BlockData = NULL;\r
}\r
- }\r
- break;\r
\r
- case EFI_IFR_DATE_OP:\r
- //\r
- // offset by question header\r
- // width MaxSize * sizeof (CHAR16)\r
- // no default value, only block array\r
- //\r
+ VarWidth = (UINT16)(IfrPassword->MaxSize * sizeof (UINT16));\r
+ Status = IsThisOpcodeRequired (RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, FALSE);\r
+ if (EFI_ERROR (Status)) {\r
+ if (Status == EFI_NOT_FOUND) {\r
+ //\r
+ // The opcode is not required,exit and parse other opcode.\r
+ //\r
+ break;\r
+ }\r
\r
- //\r
- // Date question is not in IFR Form. This IFR form is not valid.\r
- //\r
- if (VarStoreId == 0) {\r
- Status = EFI_INVALID_PARAMETER;\r
- goto Done;\r
- }\r
- //\r
- // Check whether this question is for the requested varstore.\r
- //\r
- IfrDate = (EFI_IFR_DATE *) IfrOpHdr;\r
- if (IfrDate->Question.VarStoreId != VarStoreId) {\r
- break;\r
- }\r
+ goto Done;\r
+ }\r
\r
- //\r
- // The BlockData may allocate by other opcode,need to clean.\r
- //\r
- if (BlockData != NULL){\r
+ //\r
+ // No default value for string.\r
+ //\r
BlockData = NULL;\r
- }\r
+ break;\r
\r
- VarWidth = (UINT16) sizeof (EFI_HII_DATE);\r
- Status = IsThisOpcodeRequired(RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, FALSE);\r
- if (EFI_ERROR (Status)) {\r
- if (Status == EFI_NOT_FOUND){\r
- //\r
- //The opcode is not required,exit and parse other opcode.\r
- //\r
+ case EFI_IFR_ONE_OF_OPTION_OP:\r
+ //\r
+ // No matched block data is ignored.\r
+ //\r
+ if ((BlockData == NULL) || (BlockData->Scope == 0)) {\r
break;\r
}\r
- goto Done;\r
- }\r
- break;\r
\r
- case EFI_IFR_TIME_OP:\r
- //\r
- // offset by question header\r
- // width MaxSize * sizeof (CHAR16)\r
- // no default value, only block array\r
- //\r
-\r
- //\r
- // Time question is not in IFR Form. This IFR form is not valid.\r
- //\r
- if (VarStoreId == 0) {\r
- Status = EFI_INVALID_PARAMETER;\r
- goto Done;\r
- }\r
- //\r
- // Check whether this question is for the requested varstore.\r
- //\r
- IfrTime = (EFI_IFR_TIME *) IfrOpHdr;\r
- if (IfrTime->Question.VarStoreId != VarStoreId) {\r
- break;\r
- }\r
-\r
- //\r
- // The BlockData may allocate by other opcode,need to clean.\r
- //\r
- if (BlockData != NULL){\r
- BlockData = NULL;\r
- }\r
+ IfrOneOfOption = (EFI_IFR_ONE_OF_OPTION *)IfrOpHdr;\r
+ if (BlockData->OpCode == EFI_IFR_ORDERED_LIST_OP) {\r
+ if (!FirstOrderedList) {\r
+ break;\r
+ }\r
\r
- VarWidth = (UINT16) sizeof (EFI_HII_TIME);\r
- Status = IsThisOpcodeRequired(RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, FALSE);\r
- if (EFI_ERROR (Status)) {\r
- if (Status == EFI_NOT_FOUND){\r
//\r
- //The opcode is not required,exit and parse other opcode.\r
+ // Get ordered list option data type.\r
//\r
- break;\r
- }\r
- goto Done;\r
- }\r
- break;\r
-\r
- case EFI_IFR_STRING_OP:\r
- //\r
- // offset by question header\r
- // width MaxSize * sizeof (CHAR16)\r
- // no default value, only block array\r
- //\r
-\r
- //\r
- // String question is not in IFR Form. This IFR form is not valid.\r
- //\r
- if (VarStoreId == 0) {\r
- Status = EFI_INVALID_PARAMETER;\r
- goto Done;\r
- }\r
- //\r
- // Check whether this question is for the requested varstore.\r
- //\r
- IfrString = (EFI_IFR_STRING *) IfrOpHdr;\r
- if (IfrString->Question.VarStoreId != VarStoreId) {\r
- break;\r
- }\r
+ if ((IfrOneOfOption->Type == EFI_IFR_TYPE_NUM_SIZE_8) || (IfrOneOfOption->Type == EFI_IFR_TYPE_BOOLEAN)) {\r
+ VarWidth = 1;\r
+ } else if (IfrOneOfOption->Type == EFI_IFR_TYPE_NUM_SIZE_16) {\r
+ VarWidth = 2;\r
+ } else if (IfrOneOfOption->Type == EFI_IFR_TYPE_NUM_SIZE_32) {\r
+ VarWidth = 4;\r
+ } else if (IfrOneOfOption->Type == EFI_IFR_TYPE_NUM_SIZE_64) {\r
+ VarWidth = 8;\r
+ } else {\r
+ //\r
+ // Invalid ordered list option data type.\r
+ //\r
+ Status = EFI_INVALID_PARAMETER;\r
+ if (BlockData->Name != NULL) {\r
+ FreePool (BlockData->Name);\r
+ }\r
\r
- //\r
- // The BlockData may allocate by other opcode,need to clean.\r
- //\r
- if (BlockData != NULL){\r
- BlockData = NULL;\r
- }\r
+ FreePool (BlockData);\r
+ goto Done;\r
+ }\r
\r
- VarWidth = (UINT16) (IfrString->MaxSize * sizeof (UINT16));\r
- Status = IsThisOpcodeRequired(RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, FALSE);\r
- if (EFI_ERROR (Status)) {\r
- if (Status == EFI_NOT_FOUND){\r
//\r
- //The opcode is not required,exit and parse other opcode.\r
+ // Calculate Ordered list QuestionId width.\r
//\r
- break;\r
- }\r
- goto Done;\r
- }\r
- break;\r
-\r
- case EFI_IFR_PASSWORD_OP:\r
- //\r
- // offset by question header\r
- // width MaxSize * sizeof (CHAR16)\r
- // no default value, only block array\r
- //\r
-\r
- //\r
- // Password question is not in IFR Form. This IFR form is not valid.\r
- //\r
- if (VarStoreId == 0) {\r
- Status = EFI_INVALID_PARAMETER;\r
- goto Done;\r
- }\r
- //\r
- // Check whether this question is for the requested varstore.\r
- //\r
- IfrPassword = (EFI_IFR_PASSWORD *) IfrOpHdr;\r
- if (IfrPassword->Question.VarStoreId != VarStoreId) {\r
- break;\r
- }\r
-\r
- //\r
- // The BlockData may allocate by other opcode,need to clean.\r
- //\r
- if (BlockData != NULL){\r
- BlockData = NULL;\r
- }\r
-\r
- VarWidth = (UINT16) (IfrPassword->MaxSize * sizeof (UINT16));\r
- Status = IsThisOpcodeRequired(RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData, FALSE);\r
- if (EFI_ERROR (Status)) {\r
- if (Status == EFI_NOT_FOUND){\r
+ BlockData->Width = (UINT16)(BlockData->Width * VarWidth);\r
//\r
- //The opcode is not required,exit and parse other opcode.\r
+ // Check whether this question is in requested block array.\r
//\r
- break;\r
- }\r
- goto Done;\r
- }\r
-\r
- //\r
- // No default value for string.\r
- //\r
- BlockData = NULL;\r
- break;\r
-\r
- case EFI_IFR_ONE_OF_OPTION_OP:\r
- //\r
- // No matched block data is ignored.\r
- //\r
- if (BlockData == NULL || BlockData->Scope == 0) {\r
- break;\r
- }\r
+ if (!BlockArrayCheck (RequestBlockArray, BlockData->Offset, BlockData->Width, (BOOLEAN)(BlockData->Name != NULL), HiiHandle)) {\r
+ //\r
+ // This question is not in the requested string. Skip it.\r
+ //\r
+ if (BlockData->Name != NULL) {\r
+ FreePool (BlockData->Name);\r
+ }\r
\r
- IfrOneOfOption = (EFI_IFR_ONE_OF_OPTION *) IfrOpHdr;\r
- if (BlockData->OpCode == EFI_IFR_ORDERED_LIST_OP) {\r
+ FreePool (BlockData);\r
+ BlockData = NULL;\r
+ break;\r
+ }\r
\r
- if (!FirstOrderedList){\r
- break;\r
- }\r
- //\r
- // Get ordered list option data type.\r
- //\r
- if (IfrOneOfOption->Type == EFI_IFR_TYPE_NUM_SIZE_8 || IfrOneOfOption->Type == EFI_IFR_TYPE_BOOLEAN) {\r
- VarWidth = 1;\r
- } else if (IfrOneOfOption->Type == EFI_IFR_TYPE_NUM_SIZE_16) {\r
- VarWidth = 2;\r
- } else if (IfrOneOfOption->Type == EFI_IFR_TYPE_NUM_SIZE_32) {\r
- VarWidth = 4;\r
- } else if (IfrOneOfOption->Type == EFI_IFR_TYPE_NUM_SIZE_64) {\r
- VarWidth = 8;\r
- } else {\r
//\r
- // Invalid ordered list option data type.\r
+ // Check this var question is in the var storage\r
//\r
- Status = EFI_INVALID_PARAMETER;\r
- if (BlockData->Name != NULL) {\r
- FreePool (BlockData->Name);\r
+ if ((BlockData->Name == NULL) && ((BlockData->Offset + BlockData->Width) > VarStorageData->Size)) {\r
+ Status = EFI_INVALID_PARAMETER;\r
+ FreePool (BlockData);\r
+ goto Done;\r
}\r
- FreePool (BlockData);\r
- goto Done;\r
- }\r
\r
- //\r
- // Calculate Ordered list QuestionId width.\r
- //\r
- BlockData->Width = (UINT16) (BlockData->Width * VarWidth);\r
- //\r
- // Check whether this question is in requested block array.\r
- //\r
- if (!BlockArrayCheck (RequestBlockArray, BlockData->Offset, BlockData->Width, (BOOLEAN)(BlockData->Name != NULL), HiiHandle)) {\r
//\r
- // This question is not in the requested string. Skip it.\r
+ // Add Block Data into VarStorageData BlockEntry\r
//\r
- if (BlockData->Name != NULL) {\r
- FreePool (BlockData->Name);\r
- }\r
- FreePool (BlockData);\r
- BlockData = NULL;\r
+ InsertBlockData (&VarStorageData->BlockEntry, &BlockData);\r
+\r
+ FirstOrderedList = FALSE;\r
+\r
break;\r
}\r
+\r
//\r
- // Check this var question is in the var storage\r
- //\r
- if ((BlockData->Name == NULL) && ((BlockData->Offset + BlockData->Width) > VarStorageData->Size)) {\r
- Status = EFI_INVALID_PARAMETER;\r
- if (BlockData->Name != NULL) {\r
- FreePool (BlockData->Name);\r
- }\r
- FreePool (BlockData);\r
- goto Done;\r
- }\r
- //\r
- // Add Block Data into VarStorageData BlockEntry\r
+ // 1. Set default value for OneOf option when flag field has default attribute.\r
+ // And set the default value with the smallest default id for other default id in the DefaultId list.\r
//\r
- InsertBlockData (&VarStorageData->BlockEntry, &BlockData);\r
-\r
- FirstOrderedList = FALSE;\r
+ if (((IfrOneOfOption->Flags & EFI_IFR_OPTION_DEFAULT) == EFI_IFR_OPTION_DEFAULT) ||\r
+ ((IfrOneOfOption->Flags & EFI_IFR_OPTION_DEFAULT_MFG) == EFI_IFR_OPTION_DEFAULT_MFG))\r
+ {\r
+ //\r
+ // This flag is used to specify whether this option is the first. Set it to FALSE for the following options.\r
+ // The first oneof option value will be used as default value when no default value is specified.\r
+ //\r
+ FirstOneOfOption = FALSE;\r
\r
- break;\r
- }\r
+ SmallestIdFromFlag = FALSE;\r
\r
- //\r
- // 1. Set default value for OneOf option when flag field has default attribute.\r
- // And set the default value with the smallest default id for other default id in the DefaultId list.\r
- //\r
- if (((IfrOneOfOption->Flags & EFI_IFR_OPTION_DEFAULT) == EFI_IFR_OPTION_DEFAULT) ||\r
- ((IfrOneOfOption->Flags & EFI_IFR_OPTION_DEFAULT_MFG) == EFI_IFR_OPTION_DEFAULT_MFG)) {\r
- //\r
- // This flag is used to specify whether this option is the first. Set it to FALSE for the following options.\r
- // The first oneof option value will be used as default value when no default value is specified.\r
- //\r
- FirstOneOfOption = FALSE;\r
+ // Prepare new DefaultValue\r
+ //\r
+ DefaultData.Type = DefaultValueFromFlag;\r
+ CopyMem (&DefaultData.Value, &IfrOneOfOption->Value, IfrOneOfOption->Header.Length - OFFSET_OF (EFI_IFR_ONE_OF_OPTION, Value));\r
+ if ((IfrOneOfOption->Flags & EFI_IFR_OPTION_DEFAULT) == EFI_IFR_OPTION_DEFAULT) {\r
+ DefaultData.DefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;\r
+ InsertDefaultValue (BlockData, &DefaultData);\r
+ if (SmallestDefaultId > EFI_HII_DEFAULT_CLASS_STANDARD) {\r
+ //\r
+ // Record the SmallestDefaultId and update the SmallestIdFromFlag.\r
+ //\r
+ SmallestDefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;\r
+ SmallestIdFromFlag = TRUE;\r
+ }\r
+ }\r
\r
- SmallestIdFromFlag = FALSE;\r
+ if ((IfrOneOfOption->Flags & EFI_IFR_OPTION_DEFAULT_MFG) == EFI_IFR_OPTION_DEFAULT_MFG) {\r
+ DefaultData.DefaultId = EFI_HII_DEFAULT_CLASS_MANUFACTURING;\r
+ InsertDefaultValue (BlockData, &DefaultData);\r
+ if (SmallestDefaultId > EFI_HII_DEFAULT_CLASS_MANUFACTURING) {\r
+ //\r
+ // Record the SmallestDefaultId and update the SmallestIdFromFlag.\r
+ //\r
+ SmallestDefaultId = EFI_HII_DEFAULT_CLASS_MANUFACTURING;\r
+ SmallestIdFromFlag = TRUE;\r
+ }\r
+ }\r
\r
- // Prepare new DefaultValue\r
- //\r
- DefaultData.Type = DefaultValueFromFlag;\r
- CopyMem (&DefaultData.Value, &IfrOneOfOption->Value, IfrOneOfOption->Header.Length - OFFSET_OF (EFI_IFR_ONE_OF_OPTION, Value));\r
- if ((IfrOneOfOption->Flags & EFI_IFR_OPTION_DEFAULT) == EFI_IFR_OPTION_DEFAULT) {\r
- DefaultData.DefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;\r
- InsertDefaultValue (BlockData, &DefaultData);\r
- if (SmallestDefaultId > EFI_HII_DEFAULT_CLASS_STANDARD) {\r
+ if (SmallestIdFromFlag) {\r
//\r
- // Record the SmallestDefaultId and update the SmallestIdFromFlag.\r
+ // When smallest default Id is given by the flag of oneofOption, set this option value for other default Id in the DefaultId list.\r
//\r
- SmallestDefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;\r
- SmallestIdFromFlag = TRUE;\r
- }\r
- }\r
- if ((IfrOneOfOption->Flags & EFI_IFR_OPTION_DEFAULT_MFG) == EFI_IFR_OPTION_DEFAULT_MFG) {\r
- DefaultData.DefaultId = EFI_HII_DEFAULT_CLASS_MANUFACTURING;\r
- InsertDefaultValue (BlockData, &DefaultData);\r
- if (SmallestDefaultId > EFI_HII_DEFAULT_CLASS_MANUFACTURING) {\r
+ DefaultData.Type = DefaultValueFromOtherDefault;\r
//\r
- // Record the SmallestDefaultId and update the SmallestIdFromFlag.\r
+ // Set default value for other default id in the DefaultId list.\r
//\r
- SmallestDefaultId = EFI_HII_DEFAULT_CLASS_MANUFACTURING;\r
- SmallestIdFromFlag = TRUE;\r
+ for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {\r
+ DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);\r
+ DefaultData.DefaultId = DefaultDataPtr->DefaultId;\r
+ InsertDefaultValue (BlockData, &DefaultData);\r
+ }\r
}\r
}\r
\r
- if (SmallestIdFromFlag) {\r
+ //\r
+ // 2. Set as the default value when this is the first option.\r
+ // The first oneof option value will be used as default value when no default value is specified.\r
+ //\r
+ if (FirstOneOfOption) {\r
+ // This flag is used to specify whether this option is the first. Set it to FALSE for the following options.\r
+ FirstOneOfOption = FALSE;\r
+\r
//\r
- // When smallest default Id is given by the flag of oneofOption, set this option value for other default Id in the DefaultId list.\r
+ // Prepare new DefaultValue\r
//\r
- DefaultData.Type = DefaultValueFromOtherDefault;\r
+ DefaultData.Type = DefaultValueFromDefault;\r
+ CopyMem (&DefaultData.Value, &IfrOneOfOption->Value, IfrOneOfOption->Header.Length - OFFSET_OF (EFI_IFR_ONE_OF_OPTION, Value));\r
+ for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {\r
+ DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);\r
+ DefaultData.DefaultId = DefaultDataPtr->DefaultId;\r
+ InsertDefaultValue (BlockData, &DefaultData);\r
+ }\r
+ }\r
+\r
+ break;\r
+\r
+ case EFI_IFR_DEFAULT_OP:\r
+ //\r
+ // Update Current BlockData to the default value.\r
+ //\r
+ if ((BlockData == NULL) || (BlockData->Scope == 0)) {\r
//\r
- // Set default value for other default id in the DefaultId list.\r
+ // No matched block data is ignored.\r
//\r
- for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {\r
- DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);\r
- DefaultData.DefaultId = DefaultDataPtr->DefaultId;\r
- InsertDefaultValue (BlockData, &DefaultData);\r
- }\r
+ break;\r
}\r
- }\r
-\r
- //\r
- // 2. Set as the default value when this is the first option.\r
- // The first oneof option value will be used as default value when no default value is specified.\r
- //\r
- if (FirstOneOfOption) {\r
- // This flag is used to specify whether this option is the first. Set it to FALSE for the following options.\r
- FirstOneOfOption = FALSE;\r
\r
+ //\r
+ // Get the DefaultId\r
+ //\r
+ IfrDefault = (EFI_IFR_DEFAULT *)IfrOpHdr;\r
+ VarDefaultId = IfrDefault->DefaultId;\r
//\r
// Prepare new DefaultValue\r
//\r
- DefaultData.Type = DefaultValueFromDefault;\r
- CopyMem (&DefaultData.Value, &IfrOneOfOption->Value, IfrOneOfOption->Header.Length - OFFSET_OF (EFI_IFR_ONE_OF_OPTION, Value));\r
- for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {\r
- DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);\r
- DefaultData.DefaultId = DefaultDataPtr->DefaultId;\r
- InsertDefaultValue (BlockData, &DefaultData);\r
+ DefaultData.Type = DefaultValueFromOpcode;\r
+ DefaultData.DefaultId = VarDefaultId;\r
+ if (QuestionReferBitField) {\r
+ CopyMem (&DefaultData.Value.u32, &IfrDefault->Value.u32, sizeof (UINT32));\r
+ } else {\r
+ CopyMem (&DefaultData.Value, &IfrDefault->Value, IfrDefault->Header.Length - OFFSET_OF (EFI_IFR_DEFAULT, Value));\r
+ }\r
+\r
+ // If the value field is expression, set the cleaned flag.\r
+ if (IfrDefault->Type == EFI_IFR_TYPE_OTHER) {\r
+ DefaultData.Cleaned = TRUE;\r
}\r
- }\r
- break;\r
\r
- case EFI_IFR_DEFAULT_OP:\r
- //\r
- // Update Current BlockData to the default value.\r
- //\r
- if (BlockData == NULL || BlockData->Scope == 0) {\r
//\r
- // No matched block data is ignored.\r
+ // Add DefaultValue into current BlockData\r
//\r
- break;\r
- }\r
+ InsertDefaultValue (BlockData, &DefaultData);\r
\r
- //\r
- // Get the DefaultId\r
- //\r
- IfrDefault = (EFI_IFR_DEFAULT *) IfrOpHdr;\r
- VarDefaultId = IfrDefault->DefaultId;\r
- //\r
- // Prepare new DefaultValue\r
- //\r
- DefaultData.Type = DefaultValueFromOpcode;\r
- DefaultData.DefaultId = VarDefaultId;\r
- if (QuestionReferBitField) {\r
- CopyMem (&DefaultData.Value.u32, &IfrDefault->Value.u32, sizeof (UINT32));\r
- } else {\r
- CopyMem (&DefaultData.Value, &IfrDefault->Value, IfrDefault->Header.Length - OFFSET_OF (EFI_IFR_DEFAULT, Value));\r
- }\r
+ //\r
+ // Set default value for other default id in the DefaultId list.\r
+ // when SmallestDefaultId == VarDefaultId means there are two defaults with same default Id.\r
+ // If the two defaults are both from default opcode, use the first default as the default value of other default Id.\r
+ // If one from flag and the other form default opcode, use the default opcode value as the default value of other default Id.\r
+ //\r
+ if ((SmallestDefaultId > VarDefaultId) || ((SmallestDefaultId == VarDefaultId) && !FromOtherDefaultOpcode)) {\r
+ FromOtherDefaultOpcode = TRUE;\r
+ SmallestDefaultId = VarDefaultId;\r
+ for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {\r
+ DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);\r
+ if (DefaultDataPtr->DefaultId != DefaultData.DefaultId) {\r
+ DefaultData.Type = DefaultValueFromOtherDefault;\r
+ DefaultData.DefaultId = DefaultDataPtr->DefaultId;\r
+ InsertDefaultValue (BlockData, &DefaultData);\r
+ }\r
+ }\r
+ }\r
\r
- // If the value field is expression, set the cleaned flag.\r
- if (IfrDefault->Type == EFI_IFR_TYPE_OTHER) {\r
- DefaultData.Cleaned = TRUE;\r
- }\r
- //\r
- // Add DefaultValue into current BlockData\r
- //\r
- InsertDefaultValue (BlockData, &DefaultData);\r
+ //\r
+ // After insert the default value, reset the cleaned value for next\r
+ // time used. If not set here, need to set the value before every time.\r
+ // use it.\r
+ //\r
+ DefaultData.Cleaned = FALSE;\r
+ break;\r
\r
- //\r
- // Set default value for other default id in the DefaultId list.\r
- // when SmallestDefaultId == VarDefaultId means there are two defaults with same default Id.\r
- // If the two defaults are both from default opcode, use the first default as the default value of other default Id.\r
- // If one from flag and the other form default opcode, use the default opcode value as the default value of other default Id.\r
- //\r
- if ((SmallestDefaultId > VarDefaultId) || (SmallestDefaultId == VarDefaultId && !FromOtherDefaultOpcode)) {\r
- FromOtherDefaultOpcode = TRUE;\r
- SmallestDefaultId = VarDefaultId;\r
- for (LinkData = DefaultIdArray->Entry.ForwardLink; LinkData != &DefaultIdArray->Entry; LinkData = LinkData->ForwardLink) {\r
- DefaultDataPtr = BASE_CR (LinkData, IFR_DEFAULT_DATA, Entry);\r
- if (DefaultDataPtr->DefaultId != DefaultData.DefaultId){\r
- DefaultData.Type = DefaultValueFromOtherDefault;\r
- DefaultData.DefaultId = DefaultDataPtr->DefaultId;\r
- InsertDefaultValue (BlockData, &DefaultData);\r
+ case EFI_IFR_END_OP:\r
+ //\r
+ // End Opcode is for Var question.\r
+ //\r
+ QuestionReferBitField = FALSE;\r
+ if (BlockData != NULL) {\r
+ if (BlockData->Scope > 0) {\r
+ BlockData->Scope--;\r
+ }\r
+\r
+ if (BlockData->Scope == 0) {\r
+ BlockData = NULL;\r
+ //\r
+ // when finishing parsing a question, clean the SmallestDefaultId and GetDefaultFromDefaultOpcode.\r
+ //\r
+ SmallestDefaultId = 0xFFFF;\r
+ FromOtherDefaultOpcode = FALSE;\r
}\r
}\r
- }\r
\r
- //\r
- // After insert the default value, reset the cleaned value for next\r
- // time used. If not set here, need to set the value before every time.\r
- // use it.\r
- //\r
- DefaultData.Cleaned = FALSE;\r
- break;\r
+ break;\r
\r
- case EFI_IFR_END_OP:\r
- //\r
- // End Opcode is for Var question.\r
- //\r
- QuestionReferBitField = FALSE;\r
- if (BlockData != NULL) {\r
- if (BlockData->Scope > 0) {\r
- BlockData->Scope--;\r
- }\r
- if (BlockData->Scope == 0) {\r
- BlockData = NULL;\r
- //\r
- // when finishing parsing a question, clean the SmallestDefaultId and GetDefaultFromDefaultOpcode.\r
- //\r
- SmallestDefaultId = 0xFFFF;\r
- FromOtherDefaultOpcode = FALSE;\r
+ case EFI_IFR_GUID_OP:\r
+ if (CompareGuid ((EFI_GUID *)((UINT8 *)IfrOpHdr + sizeof (EFI_IFR_OP_HEADER)), &gEdkiiIfrBitVarstoreGuid)) {\r
+ QuestionReferBitField = TRUE;\r
}\r
- }\r
\r
- break;\r
+ break;\r
\r
- case EFI_IFR_GUID_OP:\r
- if (CompareGuid ((EFI_GUID *)((UINT8 *)IfrOpHdr + sizeof (EFI_IFR_OP_HEADER)), &gEdkiiIfrBitVarstoreGuid)) {\r
- QuestionReferBitField = TRUE;\r
- }\r
- break;\r
+ default:\r
+ if (BlockData != NULL) {\r
+ if (BlockData->Scope > 0) {\r
+ BlockData->Scope = (UINT8)(BlockData->Scope + IfrOpHdr->Scope);\r
+ }\r
\r
- default:\r
- if (BlockData != NULL) {\r
- if (BlockData->Scope > 0) {\r
- BlockData->Scope = (UINT8) (BlockData->Scope + IfrOpHdr->Scope);\r
+ if (BlockData->Scope == 0) {\r
+ BlockData = NULL;\r
+ }\r
}\r
\r
- if (BlockData->Scope == 0) {\r
- BlockData = NULL;\r
- }\r
- }\r
- break;\r
+ break;\r
}\r
\r
IfrOffset += IfrOpHdr->Length;\r
}\r
\r
//\r
- //if Status == EFI_NOT_FOUND, just means the opcode is not required,not contain any error,\r
- //so set the Status to EFI_SUCCESS.\r
+ // if Status == EFI_NOT_FOUND, just means the opcode is not required,not contain any error,\r
+ // so set the Status to EFI_SUCCESS.\r
//\r
- if (Status == EFI_NOT_FOUND){\r
+ if (Status == EFI_NOT_FOUND) {\r
Status = EFI_SUCCESS;\r
}\r
\r
BlockData = BASE_CR (LinkData, IFR_BLOCK_DATA, Entry);\r
for (LinkDefault = BlockData->DefaultValueEntry.ForwardLink; LinkDefault != &BlockData->DefaultValueEntry; ) {\r
DefaultDataPtr = BASE_CR (LinkDefault, IFR_DEFAULT_DATA, Entry);\r
- LinkDefault = LinkDefault->ForwardLink;\r
+ LinkDefault = LinkDefault->ForwardLink;\r
if (DefaultDataPtr->Cleaned == TRUE) {\r
RemoveEntryList (&DefaultDataPtr->Entry);\r
FreePool (DefaultDataPtr);\r
}\r
}\r
\r
+ if (IfrEfiVarStoreTmp != NULL) {\r
+ FreePool (IfrEfiVarStoreTmp);\r
+ }\r
+\r
return Status;\r
}\r
\r
**/\r
IFR_BLOCK_DATA *\r
GetBlockElement (\r
- IN EFI_STRING ConfigRequest,\r
- OUT EFI_STRING *Progress\r
+ IN EFI_STRING ConfigRequest,\r
+ OUT EFI_STRING *Progress\r
)\r
{\r
- EFI_STRING StringPtr;\r
- IFR_BLOCK_DATA *BlockData;\r
- IFR_BLOCK_DATA *RequestBlockArray;\r
- EFI_STATUS Status;\r
- UINT8 *TmpBuffer;\r
- UINT16 Offset;\r
- UINT16 Width;\r
- LIST_ENTRY *Link;\r
- IFR_BLOCK_DATA *NextBlockData;\r
- UINTN Length;\r
+ EFI_STRING StringPtr;\r
+ IFR_BLOCK_DATA *BlockData;\r
+ IFR_BLOCK_DATA *RequestBlockArray;\r
+ EFI_STATUS Status;\r
+ UINT8 *TmpBuffer;\r
+ UINT16 Offset;\r
+ UINT16 Width;\r
+ LIST_ENTRY *Link;\r
+ IFR_BLOCK_DATA *NextBlockData;\r
+ UINTN Length;\r
\r
TmpBuffer = NULL;\r
\r
//\r
// Init RequestBlockArray\r
//\r
- RequestBlockArray = (IFR_BLOCK_DATA *) AllocateZeroPool (sizeof (IFR_BLOCK_DATA));\r
+ RequestBlockArray = (IFR_BLOCK_DATA *)AllocateZeroPool (sizeof (IFR_BLOCK_DATA));\r
if (RequestBlockArray == NULL) {\r
goto Done;\r
}\r
+\r
InitializeListHead (&RequestBlockArray->Entry);\r
\r
//\r
//\r
// Skip the OFFSET string\r
//\r
- *Progress = StringPtr;\r
+ *Progress = StringPtr;\r
StringPtr += StrLen (L"&OFFSET=");\r
//\r
// Get Offset\r
if (EFI_ERROR (Status)) {\r
goto Done;\r
}\r
+\r
Offset = 0;\r
CopyMem (\r
&Offset,\r
if (StrnCmp (StringPtr, L"&WIDTH=", StrLen (L"&WIDTH=")) != 0) {\r
goto Done;\r
}\r
+\r
StringPtr += StrLen (L"&WIDTH=");\r
\r
//\r
if (EFI_ERROR (Status)) {\r
goto Done;\r
}\r
+\r
Width = 0;\r
CopyMem (\r
&Width,\r
FreePool (TmpBuffer);\r
\r
StringPtr += Length;\r
- if (*StringPtr != 0 && *StringPtr != L'&') {\r
+ if ((*StringPtr != 0) && (*StringPtr != L'&')) {\r
goto Done;\r
}\r
\r
//\r
// Set Block Data\r
//\r
- BlockData = (IFR_BLOCK_DATA *) AllocateZeroPool (sizeof (IFR_BLOCK_DATA));\r
+ BlockData = (IFR_BLOCK_DATA *)AllocateZeroPool (sizeof (IFR_BLOCK_DATA));\r
if (BlockData == NULL) {\r
goto Done;\r
}\r
+\r
BlockData->Offset = Offset;\r
BlockData->Width = Width;\r
InsertBlockData (&RequestBlockArray->Entry, &BlockData);\r
if (EFI_ERROR (Status)) {\r
goto Done;\r
}\r
+\r
FreePool (TmpBuffer);\r
StringPtr += Length;\r
- if (*StringPtr != 0 && *StringPtr != L'&') {\r
+ if ((*StringPtr != 0) && (*StringPtr != L'&')) {\r
goto Done;\r
}\r
}\r
+\r
//\r
// If '\0', parsing is finished.\r
//\r
//\r
Link = RequestBlockArray->Entry.ForwardLink;\r
while ((Link != &RequestBlockArray->Entry) && (Link->ForwardLink != &RequestBlockArray->Entry)) {\r
- BlockData = BASE_CR (Link, IFR_BLOCK_DATA, Entry);\r
+ BlockData = BASE_CR (Link, IFR_BLOCK_DATA, Entry);\r
NextBlockData = BASE_CR (Link->ForwardLink, IFR_BLOCK_DATA, Entry);\r
if ((NextBlockData->Offset >= BlockData->Offset) && (NextBlockData->Offset <= (BlockData->Offset + BlockData->Width))) {\r
if ((NextBlockData->Offset + NextBlockData->Width) > (BlockData->Offset + BlockData->Width)) {\r
- BlockData->Width = (UINT16) (NextBlockData->Offset + NextBlockData->Width - BlockData->Offset);\r
+ BlockData->Width = (UINT16)(NextBlockData->Offset + NextBlockData->Width - BlockData->Offset);\r
}\r
+\r
RemoveEntryList (Link->ForwardLink);\r
FreePool (NextBlockData);\r
continue;\r
}\r
+\r
Link = Link->ForwardLink;\r
}\r
\r
**/\r
IFR_BLOCK_DATA *\r
GetNameElement (\r
- IN EFI_STRING ConfigRequest,\r
- OUT EFI_STRING *Progress\r
+ IN EFI_STRING ConfigRequest,\r
+ OUT EFI_STRING *Progress\r
)\r
{\r
- EFI_STRING StringPtr;\r
- EFI_STRING NextTag;\r
- IFR_BLOCK_DATA *BlockData;\r
- IFR_BLOCK_DATA *RequestBlockArray;\r
- BOOLEAN HasValue;\r
+ EFI_STRING StringPtr;\r
+ EFI_STRING NextTag;\r
+ IFR_BLOCK_DATA *BlockData;\r
+ IFR_BLOCK_DATA *RequestBlockArray;\r
+ BOOLEAN HasValue;\r
\r
StringPtr = ConfigRequest;\r
\r
//\r
// Init RequestBlockArray\r
//\r
- RequestBlockArray = (IFR_BLOCK_DATA *) AllocateZeroPool (sizeof (IFR_BLOCK_DATA));\r
+ RequestBlockArray = (IFR_BLOCK_DATA *)AllocateZeroPool (sizeof (IFR_BLOCK_DATA));\r
if (RequestBlockArray == NULL) {\r
goto Done;\r
}\r
+\r
InitializeListHead (&RequestBlockArray->Entry);\r
\r
//\r
// <BlockName> ::= &'Name***=***\r
//\r
while (StringPtr != NULL && *StringPtr == L'&') {\r
-\r
- *Progress = StringPtr;\r
+ *Progress = StringPtr;\r
//\r
// Skip the L"&" string\r
//\r
//\r
// Set Block Data\r
//\r
- BlockData = (IFR_BLOCK_DATA *) AllocateZeroPool (sizeof (IFR_BLOCK_DATA));\r
+ BlockData = (IFR_BLOCK_DATA *)AllocateZeroPool (sizeof (IFR_BLOCK_DATA));\r
if (BlockData == NULL) {\r
goto Done;\r
}\r
//\r
// Get Name\r
//\r
- BlockData->Name = AllocateCopyPool(StrSize (StringPtr), StringPtr);\r
+ BlockData->Name = AllocateCopyPool (StrSize (StringPtr), StringPtr);\r
InsertBlockData (&RequestBlockArray->Entry, &BlockData);\r
\r
if (HasValue) {\r
if (BlockData->Name != NULL) {\r
FreePool (BlockData->Name);\r
}\r
+\r
FreePool (BlockData);\r
}\r
\r
**/\r
BOOLEAN\r
GenerateConfigRequest (\r
- IN CHAR16 *ConfigHdr,\r
- IN IFR_VARSTORAGE_DATA *VarStorageData,\r
- OUT EFI_STATUS *Status,\r
- IN OUT EFI_STRING *ConfigRequest\r
+ IN CHAR16 *ConfigHdr,\r
+ IN IFR_VARSTORAGE_DATA *VarStorageData,\r
+ OUT EFI_STATUS *Status,\r
+ IN OUT EFI_STRING *ConfigRequest\r
)\r
{\r
- BOOLEAN DataExist;\r
- UINTN Length;\r
- LIST_ENTRY *Link;\r
- CHAR16 *FullConfigRequest;\r
- CHAR16 *StringPtr;\r
- IFR_BLOCK_DATA *BlockData;\r
+ BOOLEAN DataExist;\r
+ UINTN Length;\r
+ LIST_ENTRY *Link;\r
+ CHAR16 *FullConfigRequest;\r
+ CHAR16 *StringPtr;\r
+ IFR_BLOCK_DATA *BlockData;\r
\r
//\r
// Append VarStorageData BlockEntry into *Request string\r
Length = Length + (8 + 4 + 7 + 4);\r
}\r
}\r
+\r
//\r
// No any request block data is found. The request string can't be constructed.\r
//\r
*Status = EFI_OUT_OF_RESOURCES;\r
return FALSE;\r
}\r
+\r
StringPtr = FullConfigRequest;\r
\r
//\r
(1 + StrLen (BlockData->Name) + 1) * sizeof (CHAR16),\r
L"&%s",\r
BlockData->Name\r
- );\r
+ );\r
} else {\r
//\r
// Append &OFFSET=XXXX&WIDTH=YYYY\0\r
L"&OFFSET=%04X&WIDTH=%04X",\r
BlockData->Offset,\r
BlockData->Width\r
- );\r
+ );\r
}\r
+\r
StringPtr += StrLen (StringPtr);\r
}\r
+\r
//\r
// Set to the got full request string.\r
//\r
if (*ConfigRequest != NULL) {\r
FreePool (*ConfigRequest);\r
}\r
+\r
*ConfigRequest = FullConfigRequest;\r
\r
return TRUE;\r
**/\r
EFI_STATUS\r
GenerateHdr (\r
- IN IFR_VARSTORAGE_DATA *VarStorageData,\r
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
- OUT EFI_STRING *ConfigHdr\r
+ IN IFR_VARSTORAGE_DATA *VarStorageData,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
+ OUT EFI_STRING *ConfigHdr\r
)\r
{\r
- EFI_STRING GuidStr;\r
- EFI_STRING NameStr;\r
- EFI_STRING PathStr;\r
- UINTN Length;\r
- EFI_STATUS Status;\r
+ EFI_STRING GuidStr;\r
+ EFI_STRING NameStr;\r
+ EFI_STRING PathStr;\r
+ UINTN Length;\r
+ EFI_STATUS Status;\r
\r
Status = EFI_SUCCESS;\r
NameStr = NULL;\r
//\r
// Construct <ConfigHdr> : "GUID=...&NAME=...&PATH=..." by VarStorageData Guid, Name and DriverHandle\r
//\r
- GenerateSubStr (L"GUID=", sizeof (EFI_GUID), (VOID *) &VarStorageData->Guid, 1, &GuidStr);\r
+ GenerateSubStr (L"GUID=", sizeof (EFI_GUID), (VOID *)&VarStorageData->Guid, 1, &GuidStr);\r
if (VarStorageData->Name != NULL) {\r
- GenerateSubStr (L"NAME=", StrLen (VarStorageData->Name) * sizeof (CHAR16), (VOID *) VarStorageData->Name, 2, &NameStr);\r
+ GenerateSubStr (L"NAME=", StrLen (VarStorageData->Name) * sizeof (CHAR16), (VOID *)VarStorageData->Name, 2, &NameStr);\r
} else {\r
GenerateSubStr (L"NAME=", 0, NULL, 2, &NameStr);\r
}\r
+\r
GenerateSubStr (\r
L"PATH=",\r
- GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) DevicePath),\r
- (VOID *) DevicePath,\r
+ GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *)DevicePath),\r
+ (VOID *)DevicePath,\r
1,\r
&PathStr\r
);\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Done;\r
}\r
+\r
StrCpyS (*ConfigHdr, Length, GuidStr);\r
StrCatS (*ConfigHdr, Length, NameStr);\r
if (VarStorageData->Name == NULL) {\r
StrCatS (*ConfigHdr, Length, L"&");\r
}\r
+\r
StrCatS (*ConfigHdr, Length, PathStr);\r
\r
//\r
return Status;\r
}\r
\r
-\r
/**\r
Update the default value in the block data which is used as bit var store.\r
\r
**/\r
VOID\r
UpdateDefaultValue (\r
- IN LIST_ENTRY *BlockLink\r
-)\r
+ IN LIST_ENTRY *BlockLink\r
+ )\r
{\r
- LIST_ENTRY *Link;\r
- LIST_ENTRY *ListEntry;\r
- LIST_ENTRY *LinkDefault;\r
- IFR_BLOCK_DATA *BlockData;\r
- IFR_DEFAULT_DATA *DefaultValueData;\r
- UINTN StartBit;\r
- UINTN EndBit;\r
- UINT32 BitFieldDefaultValue;\r
+ LIST_ENTRY *Link;\r
+ LIST_ENTRY *ListEntry;\r
+ LIST_ENTRY *LinkDefault;\r
+ IFR_BLOCK_DATA *BlockData;\r
+ IFR_DEFAULT_DATA *DefaultValueData;\r
+ UINTN StartBit;\r
+ UINTN EndBit;\r
+ UINT32 BitFieldDefaultValue;\r
\r
for ( Link = BlockLink->ForwardLink; Link != BlockLink; Link = Link->ForwardLink) {\r
BlockData = BASE_CR (Link, IFR_BLOCK_DATA, Entry);\r
- if (!BlockData ->IsBitVar) {\r
+ if (!BlockData->IsBitVar) {\r
continue;\r
}\r
- ListEntry = &BlockData->DefaultValueEntry;\r
+\r
+ ListEntry = &BlockData->DefaultValueEntry;\r
//\r
// Update the default value in the block data with all existing default id.\r
//\r
// Get the default data, and the value of the default data is for some field in the block.\r
// Note: Default value for bit field question is stored as UINT32.\r
//\r
- DefaultValueData = BASE_CR (LinkDefault, IFR_DEFAULT_DATA, Entry);\r
+ DefaultValueData = BASE_CR (LinkDefault, IFR_DEFAULT_DATA, Entry);\r
BitFieldDefaultValue = DefaultValueData->Value.u32;\r
\r
StartBit = BlockData->BitOffset % 8;\r
- EndBit = StartBit + BlockData->BitWidth - 1;\r
+ EndBit = StartBit + BlockData->BitWidth - 1;\r
\r
//\r
// Set the bit field default value to related bit filed, then we will got the new default vaule for the block data.\r
**/\r
VOID\r
MergeBlockDefaultValue (\r
- IN OUT IFR_BLOCK_DATA *FirstBlock,\r
- IN OUT IFR_BLOCK_DATA *SecondBlock\r
-)\r
+ IN OUT IFR_BLOCK_DATA *FirstBlock,\r
+ IN OUT IFR_BLOCK_DATA *SecondBlock\r
+ )\r
{\r
- LIST_ENTRY *FirstListEntry;\r
- LIST_ENTRY *SecondListEntry;\r
- LIST_ENTRY *FirstDefaultLink;\r
- LIST_ENTRY *SecondDefaultLink;\r
- IFR_DEFAULT_DATA *FirstDefaultValueData;\r
- IFR_DEFAULT_DATA *SecondDefaultValueData;\r
- UINT32 *FirstDefaultValue;\r
- UINT32 *SecondDefaultValue;\r
- UINT64 TotalValue;\r
- UINT64 ShiftedValue;\r
- UINT16 OffsetShift;\r
+ LIST_ENTRY *FirstListEntry;\r
+ LIST_ENTRY *SecondListEntry;\r
+ LIST_ENTRY *FirstDefaultLink;\r
+ LIST_ENTRY *SecondDefaultLink;\r
+ IFR_DEFAULT_DATA *FirstDefaultValueData;\r
+ IFR_DEFAULT_DATA *SecondDefaultValueData;\r
+ UINT32 *FirstDefaultValue;\r
+ UINT32 *SecondDefaultValue;\r
+ UINT64 TotalValue;\r
+ UINT64 ShiftedValue;\r
+ UINT16 OffsetShift;\r
\r
FirstListEntry = &FirstBlock->DefaultValueEntry;\r
for (FirstDefaultLink = FirstListEntry->ForwardLink; FirstDefaultLink != FirstListEntry; FirstDefaultLink = FirstDefaultLink->ForwardLink) {\r
FirstDefaultValueData = BASE_CR (FirstDefaultLink, IFR_DEFAULT_DATA, Entry);\r
- SecondListEntry = &SecondBlock->DefaultValueEntry;\r
+ SecondListEntry = &SecondBlock->DefaultValueEntry;\r
for (SecondDefaultLink = SecondListEntry->ForwardLink; SecondDefaultLink != SecondListEntry; SecondDefaultLink = SecondDefaultLink->ForwardLink) {\r
SecondDefaultValueData = BASE_CR (SecondDefaultLink, IFR_DEFAULT_DATA, Entry);\r
if (FirstDefaultValueData->DefaultId != SecondDefaultValueData->DefaultId) {\r
continue;\r
}\r
+\r
//\r
// Find default value with same default id in the two blocks.\r
// Note: Default value for bit field question is stored as UINT32 type.\r
//\r
- FirstDefaultValue = &FirstDefaultValueData->Value.u32;\r
+ FirstDefaultValue = &FirstDefaultValueData->Value.u32;\r
SecondDefaultValue = &SecondDefaultValueData->Value.u32;\r
//\r
// 1. Get the default value of the whole blcok that can just cover FirstBlock and SecondBlock.\r
// on the offset and width of FirstBlock and SecondBlock.\r
//\r
if (FirstBlock->Offset > SecondBlock->Offset) {\r
- OffsetShift = FirstBlock->Offset - SecondBlock->Offset;\r
- ShiftedValue = LShiftU64 ((UINT64) (*FirstDefaultValue), OffsetShift * 8);\r
- TotalValue = ShiftedValue | (UINT64) (*SecondDefaultValue);\r
- *SecondDefaultValue = (UINT32) BitFieldRead64 (TotalValue, 0, SecondBlock->Width * 8 -1);\r
- *FirstDefaultValue = (UINT32) BitFieldRead64 (TotalValue, OffsetShift * 8, OffsetShift * 8 + FirstBlock->Width *8 -1);\r
+ OffsetShift = FirstBlock->Offset - SecondBlock->Offset;\r
+ ShiftedValue = LShiftU64 ((UINT64)(*FirstDefaultValue), OffsetShift * 8);\r
+ TotalValue = ShiftedValue | (UINT64)(*SecondDefaultValue);\r
+ *SecondDefaultValue = (UINT32)BitFieldRead64 (TotalValue, 0, SecondBlock->Width * 8 -1);\r
+ *FirstDefaultValue = (UINT32)BitFieldRead64 (TotalValue, OffsetShift * 8, OffsetShift * 8 + FirstBlock->Width *8 -1);\r
} else {\r
- OffsetShift = SecondBlock->Offset -FirstBlock->Offset;\r
- ShiftedValue = LShiftU64 ((UINT64) (*SecondDefaultValue), OffsetShift * 8);\r
- TotalValue = ShiftedValue | (UINT64) (*FirstDefaultValue);\r
- *FirstDefaultValue = (UINT32) BitFieldRead64 (TotalValue, 0, FirstBlock->Width * 8 -1);\r
- *SecondDefaultValue = (UINT32) BitFieldRead64 (TotalValue, OffsetShift * 8, OffsetShift * 8 + SecondBlock->Width *8 -1);\r
+ OffsetShift = SecondBlock->Offset -FirstBlock->Offset;\r
+ ShiftedValue = LShiftU64 ((UINT64)(*SecondDefaultValue), OffsetShift * 8);\r
+ TotalValue = ShiftedValue | (UINT64)(*FirstDefaultValue);\r
+ *FirstDefaultValue = (UINT32)BitFieldRead64 (TotalValue, 0, FirstBlock->Width * 8 -1);\r
+ *SecondDefaultValue = (UINT32)BitFieldRead64 (TotalValue, OffsetShift * 8, OffsetShift * 8 + SecondBlock->Width *8 -1);\r
}\r
}\r
}\r
**/\r
VOID\r
UpdateBlockDataArray (\r
- IN LIST_ENTRY *BlockLink\r
-)\r
+ IN LIST_ENTRY *BlockLink\r
+ )\r
{\r
- LIST_ENTRY *Link;\r
- LIST_ENTRY *TempLink;\r
- IFR_BLOCK_DATA *BlockData;\r
- IFR_BLOCK_DATA *NextBlockData;\r
+ LIST_ENTRY *Link;\r
+ LIST_ENTRY *TempLink;\r
+ IFR_BLOCK_DATA *BlockData;\r
+ IFR_BLOCK_DATA *NextBlockData;\r
\r
//\r
// 1. Update default value in BitVar block data.\r
//\r
for (Link = BlockLink->ForwardLink; Link != BlockLink; Link = Link->ForwardLink) {\r
BlockData = BASE_CR (Link, IFR_BLOCK_DATA, Entry);\r
- if (!BlockData ->IsBitVar) {\r
+ if (!BlockData->IsBitVar) {\r
continue;\r
}\r
+\r
for (TempLink = Link->ForwardLink; TempLink != BlockLink; TempLink = TempLink->ForwardLink) {\r
NextBlockData = BASE_CR (TempLink, IFR_BLOCK_DATA, Entry);\r
- if (!NextBlockData->IsBitVar || NextBlockData->Offset >= BlockData->Offset + BlockData->Width || BlockData->Offset >= NextBlockData->Offset + NextBlockData->Width) {\r
+ if (!NextBlockData->IsBitVar || (NextBlockData->Offset >= BlockData->Offset + BlockData->Width) || (BlockData->Offset >= NextBlockData->Offset + NextBlockData->Width)) {\r
continue;\r
}\r
+\r
//\r
// Find two blocks are used as bit VarStore and have overlap region, so need to merge default value of these two blocks.\r
//\r
**/\r
EFI_STATUS\r
GenerateAltConfigResp (\r
- IN EFI_HII_HANDLE HiiHandle,\r
- IN CHAR16 *ConfigHdr,\r
- IN IFR_VARSTORAGE_DATA *VarStorageData,\r
- IN IFR_DEFAULT_DATA *DefaultIdArray,\r
- IN OUT EFI_STRING *DefaultAltCfgResp\r
+ IN EFI_HII_HANDLE HiiHandle,\r
+ IN CHAR16 *ConfigHdr,\r
+ IN IFR_VARSTORAGE_DATA *VarStorageData,\r
+ IN IFR_DEFAULT_DATA *DefaultIdArray,\r
+ IN OUT EFI_STRING *DefaultAltCfgResp\r
)\r
{\r
- BOOLEAN DataExist;\r
- UINTN Length;\r
- LIST_ENTRY *Link;\r
- LIST_ENTRY *LinkData;\r
- LIST_ENTRY *LinkDefault;\r
- LIST_ENTRY *ListEntry;\r
- CHAR16 *StringPtr;\r
- IFR_BLOCK_DATA *BlockData;\r
- IFR_DEFAULT_DATA *DefaultId;\r
- IFR_DEFAULT_DATA *DefaultValueData;\r
- UINTN Width;\r
- UINT8 *TmpBuffer;\r
- CHAR16 *DefaultString;\r
- UINTN StrSize;\r
+ BOOLEAN DataExist;\r
+ UINTN Length;\r
+ LIST_ENTRY *Link;\r
+ LIST_ENTRY *LinkData;\r
+ LIST_ENTRY *LinkDefault;\r
+ LIST_ENTRY *ListEntry;\r
+ CHAR16 *StringPtr;\r
+ IFR_BLOCK_DATA *BlockData;\r
+ IFR_DEFAULT_DATA *DefaultId;\r
+ IFR_DEFAULT_DATA *DefaultValueData;\r
+ UINTN Width;\r
+ UINT8 *TmpBuffer;\r
+ CHAR16 *DefaultString;\r
+ UINTN StrSize;\r
\r
BlockData = NULL;\r
DataExist = FALSE;\r
\r
for (LinkData = VarStorageData->BlockEntry.ForwardLink; LinkData != &VarStorageData->BlockEntry; LinkData = LinkData->ForwardLink) {\r
BlockData = BASE_CR (LinkData, IFR_BLOCK_DATA, Entry);\r
- ListEntry = &BlockData->DefaultValueEntry;\r
+ ListEntry = &BlockData->DefaultValueEntry;\r
for (LinkDefault = ListEntry->ForwardLink; LinkDefault != ListEntry; LinkDefault = LinkDefault->ForwardLink) {\r
DefaultValueData = BASE_CR (LinkDefault, IFR_DEFAULT_DATA, Entry);\r
if (DefaultValueData->DefaultId != DefaultId->DefaultId) {\r
continue;\r
}\r
+\r
if (VarStorageData->Type == EFI_HII_VARSTORE_NAME_VALUE) {\r
//\r
// Add length for "&Name1=zzzzzzzzzzzz"\r
//\r
Length += (8 + 4 + 7 + 4 + 7 + BlockData->Width * 2);\r
}\r
+\r
DataExist = TRUE;\r
}\r
}\r
if (*DefaultAltCfgResp == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
+\r
StringPtr = *DefaultAltCfgResp;\r
\r
//\r
\r
for (LinkData = VarStorageData->BlockEntry.ForwardLink; LinkData != &VarStorageData->BlockEntry; LinkData = LinkData->ForwardLink) {\r
BlockData = BASE_CR (LinkData, IFR_BLOCK_DATA, Entry);\r
- ListEntry = &BlockData->DefaultValueEntry;\r
+ ListEntry = &BlockData->DefaultValueEntry;\r
for (LinkDefault = ListEntry->ForwardLink; LinkDefault != ListEntry; LinkDefault = LinkDefault->ForwardLink) {\r
DefaultValueData = BASE_CR (LinkDefault, IFR_DEFAULT_DATA, Entry);\r
if (DefaultValueData->DefaultId != DefaultId->DefaultId) {\r
continue;\r
}\r
+\r
if (VarStorageData->Type == EFI_HII_VARSTORE_NAME_VALUE) {\r
UnicodeSPrint (\r
StringPtr,\r
);\r
StringPtr += StrLen (StringPtr);\r
}\r
+\r
Width = BlockData->Width;\r
//\r
// Convert Value to a hex string in "%x" format\r
// NOTE: This is in the opposite byte that GUID and PATH use\r
//\r
- if (BlockData->OpCode == EFI_IFR_STRING_OP){\r
- DefaultString = InternalGetString(HiiHandle, DefaultValueData->Value.string);\r
- TmpBuffer = AllocateZeroPool (Width);\r
+ if (BlockData->OpCode == EFI_IFR_STRING_OP) {\r
+ DefaultString = InternalGetString (HiiHandle, DefaultValueData->Value.string);\r
+ TmpBuffer = AllocateZeroPool (Width);\r
ASSERT (TmpBuffer != NULL);\r
if (DefaultString != NULL) {\r
- StrSize = StrLen(DefaultString)* sizeof (CHAR16);\r
+ StrSize = StrLen (DefaultString)* sizeof (CHAR16);\r
if (StrSize > Width) {\r
StrSize = Width;\r
}\r
- CopyMem (TmpBuffer, (UINT8 *) DefaultString, StrSize);\r
+\r
+ CopyMem (TmpBuffer, (UINT8 *)DefaultString, StrSize);\r
}\r
} else {\r
- TmpBuffer = (UINT8 *) &(DefaultValueData->Value);\r
+ TmpBuffer = (UINT8 *)&(DefaultValueData->Value);\r
}\r
- for (; Width > 0 && (TmpBuffer != NULL); Width--) {\r
+\r
+ for ( ; Width > 0 && (TmpBuffer != NULL); Width--) {\r
UnicodeValueToStringS (\r
StringPtr,\r
Length * sizeof (CHAR16) - ((UINTN)StringPtr - (UINTN)*DefaultAltCfgResp),\r
);\r
StringPtr += StrnLenS (StringPtr, Length - ((UINTN)StringPtr - (UINTN)*DefaultAltCfgResp) / sizeof (CHAR16));\r
}\r
- if (DefaultString != NULL){\r
- FreePool(DefaultString);\r
+\r
+ if (DefaultString != NULL) {\r
+ FreePool (DefaultString);\r
DefaultString = NULL;\r
}\r
- if (BlockData->OpCode == EFI_IFR_STRING_OP && TmpBuffer != NULL) {\r
- FreePool(TmpBuffer);\r
- TmpBuffer = NULL;\r
+\r
+ if ((BlockData->OpCode == EFI_IFR_STRING_OP) && (TmpBuffer != NULL)) {\r
+ FreePool (TmpBuffer);\r
+ TmpBuffer = NULL;\r
}\r
}\r
}\r
EFI_STATUS\r
EFIAPI\r
GetFullStringFromHiiFormPackages (\r
- IN HII_DATABASE_RECORD *DataBaseRecord,\r
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
- IN OUT EFI_STRING *Request,\r
- IN OUT EFI_STRING *AltCfgResp,\r
- OUT EFI_STRING *PointerProgress OPTIONAL\r
+ IN HII_DATABASE_RECORD *DataBaseRecord,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
+ IN OUT EFI_STRING *Request,\r
+ IN OUT EFI_STRING *AltCfgResp,\r
+ OUT EFI_STRING *PointerProgress OPTIONAL\r
)\r
{\r
- EFI_STATUS Status;\r
- UINT8 *HiiFormPackage;\r
- UINTN PackageSize;\r
- IFR_BLOCK_DATA *RequestBlockArray;\r
- IFR_BLOCK_DATA *BlockData;\r
- IFR_DEFAULT_DATA *DefaultValueData;\r
- IFR_DEFAULT_DATA *DefaultId;\r
- IFR_DEFAULT_DATA *DefaultIdArray;\r
- IFR_VARSTORAGE_DATA *VarStorageData;\r
- EFI_STRING DefaultAltCfgResp;\r
- EFI_STRING ConfigHdr;\r
- EFI_STRING StringPtr;\r
- EFI_STRING Progress;\r
-\r
- if (DataBaseRecord == NULL || DevicePath == NULL || Request == NULL || AltCfgResp == NULL) {\r
+ EFI_STATUS Status;\r
+ UINT8 *HiiFormPackage;\r
+ UINTN PackageSize;\r
+ IFR_BLOCK_DATA *RequestBlockArray;\r
+ IFR_BLOCK_DATA *BlockData;\r
+ IFR_DEFAULT_DATA *DefaultValueData;\r
+ IFR_DEFAULT_DATA *DefaultId;\r
+ IFR_DEFAULT_DATA *DefaultIdArray;\r
+ IFR_VARSTORAGE_DATA *VarStorageData;\r
+ EFI_STRING DefaultAltCfgResp;\r
+ EFI_STRING ConfigHdr;\r
+ EFI_STRING StringPtr;\r
+ EFI_STRING Progress;\r
+\r
+ if ((DataBaseRecord == NULL) || (DevicePath == NULL) || (Request == NULL) || (AltCfgResp == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
// Jump <ConfigHdr>\r
//\r
if (StrnCmp (StringPtr, L"GUID=", StrLen (L"GUID=")) != 0) {\r
- Status = EFI_INVALID_PARAMETER;\r
+ Status = EFI_INVALID_PARAMETER;\r
goto Done;\r
}\r
+\r
StringPtr += StrLen (L"GUID=");\r
while (*StringPtr != L'\0' && StrnCmp (StringPtr, L"&NAME=", StrLen (L"&NAME=")) != 0) {\r
StringPtr++;\r
}\r
+\r
if (*StringPtr == L'\0') {\r
Status = EFI_INVALID_PARAMETER;\r
goto Done;\r
}\r
+\r
StringPtr += StrLen (L"&NAME=");\r
while (*StringPtr != L'\0' && StrnCmp (StringPtr, L"&PATH=", StrLen (L"&PATH=")) != 0) {\r
StringPtr++;\r
}\r
+\r
if (*StringPtr == L'\0') {\r
Status = EFI_INVALID_PARAMETER;\r
goto Done;\r
}\r
+\r
StringPtr += StrLen (L"&PATH=");\r
while (*StringPtr != L'\0' && *StringPtr != L'&') {\r
- StringPtr ++;\r
+ StringPtr++;\r
}\r
\r
if (*StringPtr == L'\0') {\r
//\r
if (StringPtr != NULL) {\r
if (StrStr (StringPtr, L"&OFFSET=") != NULL) {\r
- RequestBlockArray = GetBlockElement(StringPtr, &Progress);\r
+ RequestBlockArray = GetBlockElement (StringPtr, &Progress);\r
} else {\r
- RequestBlockArray = GetNameElement(StringPtr, &Progress);\r
+ RequestBlockArray = GetNameElement (StringPtr, &Progress);\r
}\r
\r
if (RequestBlockArray == NULL) {\r
//\r
// Initialize DefaultIdArray to store the map between DeaultId and DefaultName\r
//\r
- DefaultIdArray = (IFR_DEFAULT_DATA *) AllocateZeroPool (sizeof (IFR_DEFAULT_DATA));\r
+ DefaultIdArray = (IFR_DEFAULT_DATA *)AllocateZeroPool (sizeof (IFR_DEFAULT_DATA));\r
if (DefaultIdArray == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Done;\r
}\r
+\r
InitializeListHead (&DefaultIdArray->Entry);\r
\r
//\r
// Initialize VarStorageData to store the var store Block and Default value information.\r
//\r
- VarStorageData = (IFR_VARSTORAGE_DATA *) AllocateZeroPool (sizeof (IFR_VARSTORAGE_DATA));\r
+ VarStorageData = (IFR_VARSTORAGE_DATA *)AllocateZeroPool (sizeof (IFR_VARSTORAGE_DATA));\r
if (VarStorageData == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Done;\r
}\r
+\r
InitializeListHead (&VarStorageData->Entry);\r
InitializeListHead (&VarStorageData->BlockEntry);\r
\r
//\r
// Parse the opcode in form package to get the default setting.\r
//\r
- Status = ParseIfrData (DataBaseRecord->Handle,\r
- HiiFormPackage,\r
- (UINT32) PackageSize,\r
- *Request,\r
- RequestBlockArray,\r
- VarStorageData,\r
- DefaultIdArray);\r
+ Status = ParseIfrData (\r
+ DataBaseRecord->Handle,\r
+ HiiFormPackage,\r
+ (UINT32)PackageSize,\r
+ *Request,\r
+ RequestBlockArray,\r
+ VarStorageData,\r
+ DefaultIdArray\r
+ );\r
if (EFI_ERROR (Status)) {\r
goto Done;\r
}\r
//\r
// No requested varstore in IFR data and directly return\r
//\r
- if (VarStorageData->Type == 0 && VarStorageData->Name == NULL) {\r
+ if ((VarStorageData->Type == 0) && (VarStorageData->Name == NULL)) {\r
Status = EFI_SUCCESS;\r
goto Done;\r
}\r
}\r
\r
if (RequestBlockArray == NULL) {\r
- if (!GenerateConfigRequest(ConfigHdr, VarStorageData, &Status, Request)) {\r
+ if (!GenerateConfigRequest (ConfigHdr, VarStorageData, &Status, Request)) {\r
goto Done;\r
}\r
}\r
// Go through all VarStorageData Entry and get the DefaultId array for each one\r
// Then construct them all to : ConfigHdr AltConfigHdr ConfigBody AltConfigHdr ConfigBody\r
//\r
- Status = GenerateAltConfigResp (DataBaseRecord->Handle,ConfigHdr, VarStorageData, DefaultIdArray, &DefaultAltCfgResp);\r
+ Status = GenerateAltConfigResp (DataBaseRecord->Handle, ConfigHdr, VarStorageData, DefaultIdArray, &DefaultAltCfgResp);\r
if (EFI_ERROR (Status)) {\r
goto Done;\r
}\r
//\r
// 5. Merge string into the input AltCfgResp if the input *AltCfgResp is not NULL.\r
//\r
- if (*AltCfgResp != NULL && DefaultAltCfgResp != NULL) {\r
+ if ((*AltCfgResp != NULL) && (DefaultAltCfgResp != NULL)) {\r
Status = MergeDefaultString (AltCfgResp, DefaultAltCfgResp);\r
FreePool (DefaultAltCfgResp);\r
} else if (*AltCfgResp == NULL) {\r
if (BlockData->Name != NULL) {\r
FreePool (BlockData->Name);\r
}\r
+\r
FreePool (BlockData);\r
}\r
\r
if (BlockData->Name != NULL) {\r
FreePool (BlockData->Name);\r
}\r
+\r
//\r
// Free default value link array\r
//\r
RemoveEntryList (&DefaultValueData->Entry);\r
FreePool (DefaultValueData);\r
}\r
+\r
FreePool (BlockData);\r
}\r
- if (VarStorageData ->Name != NULL) {\r
- FreePool (VarStorageData ->Name);\r
- VarStorageData ->Name = NULL;\r
+\r
+ if (VarStorageData->Name != NULL) {\r
+ FreePool (VarStorageData->Name);\r
+ VarStorageData->Name = NULL;\r
}\r
+\r
FreePool (VarStorageData);\r
}\r
\r
RemoveEntryList (&DefaultId->Entry);\r
FreePool (DefaultId);\r
}\r
+\r
FreePool (DefaultIdArray);\r
}\r
\r
OUT EFI_STRING *AccessProgress\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_STRING VarStoreName;\r
- UINTN NameSize;\r
- UINT8 *VarStore;\r
- UINTN BufferSize;\r
+ EFI_STATUS Status;\r
+ EFI_STRING VarStoreName;\r
+ UINTN NameSize;\r
+ UINT8 *VarStore;\r
+ UINTN BufferSize;\r
\r
Status = EFI_SUCCESS;\r
BufferSize = 0;\r
VarStoreName = NULL;\r
*AccessProgress = Request;\r
\r
- NameSize = AsciiStrSize ((CHAR8 *)EfiVarStoreInfo->Name);\r
+ NameSize = AsciiStrSize ((CHAR8 *)EfiVarStoreInfo->Name);\r
VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));\r
if (VarStoreName == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Done;\r
}\r
- AsciiStrToUnicodeStrS ((CHAR8 *) EfiVarStoreInfo->Name, VarStoreName, NameSize);\r
\r
+ AsciiStrToUnicodeStrS ((CHAR8 *)EfiVarStoreInfo->Name, VarStoreName, NameSize);\r
\r
Status = gRT->GetVariable (VarStoreName, &EfiVarStoreInfo->Guid, NULL, &BufferSize, NULL);\r
if (Status != EFI_BUFFER_TOO_SMALL) {\r
goto Done;\r
}\r
\r
- Status = HiiBlockToConfig(This, Request, VarStore, BufferSize, RequestResp, AccessProgress);\r
+ Status = HiiBlockToConfig (This, Request, VarStore, BufferSize, RequestResp, AccessProgress);\r
if (EFI_ERROR (Status)) {\r
goto Done;\r
}\r
return Status;\r
}\r
\r
-\r
/**\r
This function route the full request resp string for efi varstore.\r
\r
OUT EFI_STRING *Result\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_STRING VarStoreName;\r
- UINTN NameSize;\r
- UINT8 *VarStore;\r
- UINTN BufferSize;\r
- UINTN BlockSize;\r
+ EFI_STATUS Status;\r
+ EFI_STRING VarStoreName;\r
+ UINTN NameSize;\r
+ UINT8 *VarStore;\r
+ UINTN BufferSize;\r
+ UINTN BlockSize;\r
\r
Status = EFI_SUCCESS;\r
BufferSize = 0;\r
VarStore = NULL;\r
VarStoreName = NULL;\r
- *Result = RequestResp;\r
+ *Result = RequestResp;\r
\r
- NameSize = AsciiStrSize ((CHAR8 *)EfiVarStoreInfo->Name);\r
+ NameSize = AsciiStrSize ((CHAR8 *)EfiVarStoreInfo->Name);\r
VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));\r
if (VarStoreName == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Done;\r
}\r
- AsciiStrToUnicodeStrS ((CHAR8 *) EfiVarStoreInfo->Name, VarStoreName, NameSize);\r
+\r
+ AsciiStrToUnicodeStrS ((CHAR8 *)EfiVarStoreInfo->Name, VarStoreName, NameSize);\r
\r
Status = gRT->GetVariable (VarStoreName, &EfiVarStoreInfo->Guid, NULL, &BufferSize, NULL);\r
if (Status != EFI_BUFFER_TOO_SMALL) {\r
}\r
\r
BlockSize = BufferSize;\r
- VarStore = AllocateZeroPool (BufferSize);\r
+ VarStore = AllocateZeroPool (BufferSize);\r
ASSERT (VarStore != NULL);\r
Status = gRT->GetVariable (VarStoreName, &EfiVarStoreInfo->Guid, NULL, &BufferSize, VarStore);\r
if (EFI_ERROR (Status)) {\r
goto Done;\r
}\r
\r
- Status = HiiConfigToBlock(This, RequestResp, VarStore, &BlockSize, Result);\r
+ Status = HiiConfigToBlock (This, RequestResp, VarStore, &BlockSize, Result);\r
if (EFI_ERROR (Status)) {\r
goto Done;\r
}\r
**/\r
CHAR16 *\r
OffsetWidthValidate (\r
- CHAR16 *ConfigElements\r
+ CHAR16 *ConfigElements\r
)\r
{\r
- CHAR16 *StringPtr;\r
- CHAR16 *RetVal;\r
+ CHAR16 *StringPtr;\r
+ CHAR16 *RetVal;\r
\r
StringPtr = ConfigElements;\r
\r
while (1) {\r
- RetVal = StringPtr;\r
+ RetVal = StringPtr;\r
if (StrnCmp (StringPtr, L"&OFFSET=", StrLen (L"&OFFSET=")) != 0) {\r
return RetVal;\r
}\r
while (*StringPtr != L'\0' && StrnCmp (StringPtr, L"&WIDTH=", StrLen (L"&WIDTH=")) != 0) {\r
StringPtr++;\r
}\r
+\r
if (*StringPtr == L'\0') {\r
return RetVal;\r
}\r
\r
StringPtr += StrLen (L"&WIDTH=");\r
while (*StringPtr != L'\0' && StrnCmp (StringPtr, L"&OFFSET=", StrLen (L"&OFFSET=")) != 0) {\r
- StringPtr ++;\r
+ StringPtr++;\r
}\r
\r
if (*StringPtr == L'\0') {\r
**/\r
CHAR16 *\r
NameValueValidate (\r
- CHAR16 *ConfigElements\r
+ CHAR16 *ConfigElements\r
)\r
{\r
- CHAR16 *StringPtr;\r
- CHAR16 *RetVal;\r
+ CHAR16 *StringPtr;\r
+ CHAR16 *RetVal;\r
\r
StringPtr = ConfigElements;\r
\r
if (*StringPtr != L'&') {\r
return RetVal;\r
}\r
+\r
StringPtr += 1;\r
\r
StringPtr = StrStr (StringPtr, L"&");\r
**/\r
CHAR16 *\r
ConfigRequestValidate (\r
- CHAR16 *ConfigRequest\r
+ CHAR16 *ConfigRequest\r
)\r
{\r
- BOOLEAN HasNameField;\r
- CHAR16 *StringPtr;\r
+ BOOLEAN HasNameField;\r
+ CHAR16 *StringPtr;\r
\r
HasNameField = TRUE;\r
StringPtr = ConfigRequest;\r
if (StrnCmp (StringPtr, L"GUID=", StrLen (L"GUID=")) != 0) {\r
return ConfigRequest;\r
}\r
+\r
StringPtr += StrLen (L"GUID=");\r
while (*StringPtr != L'\0' && StrnCmp (StringPtr, L"&NAME=", StrLen (L"&NAME=")) != 0) {\r
StringPtr++;\r
}\r
+\r
if (*StringPtr == L'\0') {\r
return ConfigRequest;\r
}\r
+\r
StringPtr += StrLen (L"&NAME=");\r
if (*StringPtr == L'&') {\r
HasNameField = FALSE;\r
}\r
+\r
while (*StringPtr != L'\0' && StrnCmp (StringPtr, L"&PATH=", StrLen (L"&PATH=")) != 0) {\r
StringPtr++;\r
}\r
+\r
if (*StringPtr == L'\0') {\r
return ConfigRequest;\r
}\r
+\r
StringPtr += StrLen (L"&PATH=");\r
while (*StringPtr != L'\0' && *StringPtr != L'&') {\r
- StringPtr ++;\r
+ StringPtr++;\r
}\r
\r
if (*StringPtr == L'\0') {\r
//\r
// Should be Buffer varstore, config request should be "OFFSET/Width" pairs.\r
//\r
- return OffsetWidthValidate(StringPtr);\r
+ return OffsetWidthValidate (StringPtr);\r
} else {\r
//\r
// Should be Name/Value varstore, config request should be "&name1&name2..." pairs.\r
//\r
- return NameValueValidate(StringPtr);\r
+ return NameValueValidate (StringPtr);\r
}\r
}\r
\r
OUT EFI_STRING *Results\r
)\r
{\r
- HII_DATABASE_PRIVATE_DATA *Private;\r
- EFI_STRING StringPtr;\r
- EFI_STRING ConfigRequest;\r
- UINTN Length;\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
- EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;\r
- EFI_STATUS Status;\r
- LIST_ENTRY *Link;\r
- HII_DATABASE_RECORD *Database;\r
- UINT8 *DevicePathPkg;\r
- UINT8 *CurrentDevicePath;\r
- EFI_HANDLE DriverHandle;\r
- EFI_HII_HANDLE HiiHandle;\r
- EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess;\r
- EFI_STRING AccessProgress;\r
- EFI_STRING AccessResults;\r
- EFI_STRING AccessProgressBackup;\r
- EFI_STRING AccessResultsBackup;\r
- EFI_STRING DefaultResults;\r
- BOOLEAN FirstElement;\r
- BOOLEAN IfrDataParsedFlag;\r
- BOOLEAN IsEfiVarStore;\r
- EFI_IFR_VARSTORE_EFI *EfiVarStoreInfo;\r
- EFI_STRING ErrorPtr;\r
- UINTN DevicePathSize;\r
- UINTN ConigStringSize;\r
- UINTN ConigStringSizeNewsize;\r
- EFI_STRING ConfigStringPtr;\r
-\r
- if (This == NULL || Progress == NULL || Results == NULL) {\r
+ HII_DATABASE_PRIVATE_DATA *Private;\r
+ EFI_STRING StringPtr;\r
+ EFI_STRING ConfigRequest;\r
+ UINTN Length;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
+ EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;\r
+ EFI_STATUS Status;\r
+ LIST_ENTRY *Link;\r
+ HII_DATABASE_RECORD *Database;\r
+ UINT8 *DevicePathPkg;\r
+ UINT8 *CurrentDevicePath;\r
+ EFI_HANDLE DriverHandle;\r
+ EFI_HII_HANDLE HiiHandle;\r
+ EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess;\r
+ EFI_STRING AccessProgress;\r
+ EFI_STRING AccessResults;\r
+ EFI_STRING AccessProgressBackup;\r
+ EFI_STRING AccessResultsBackup;\r
+ EFI_STRING DefaultResults;\r
+ BOOLEAN FirstElement;\r
+ BOOLEAN IfrDataParsedFlag;\r
+ BOOLEAN IsEfiVarStore;\r
+ EFI_IFR_VARSTORE_EFI *EfiVarStoreInfo;\r
+ EFI_STRING ErrorPtr;\r
+ UINTN DevicePathSize;\r
+ UINTN ConigStringSize;\r
+ UINTN ConigStringSizeNewsize;\r
+ EFI_STRING ConfigStringPtr;\r
+\r
+ if ((This == NULL) || (Progress == NULL) || (Results == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- Private = CONFIG_ROUTING_DATABASE_PRIVATE_DATA_FROM_THIS (This);\r
- StringPtr = Request;\r
- *Progress = StringPtr;\r
- DefaultResults = NULL;\r
- ConfigRequest = NULL;\r
- Status = EFI_SUCCESS;\r
- AccessResults = NULL;\r
- AccessProgress = NULL;\r
+ Private = CONFIG_ROUTING_DATABASE_PRIVATE_DATA_FROM_THIS (This);\r
+ StringPtr = Request;\r
+ *Progress = StringPtr;\r
+ DefaultResults = NULL;\r
+ ConfigRequest = NULL;\r
+ Status = EFI_SUCCESS;\r
+ AccessResults = NULL;\r
+ AccessProgress = NULL;\r
AccessResultsBackup = NULL;\r
AccessProgressBackup = NULL;\r
- DevicePath = NULL;\r
- IfrDataParsedFlag = FALSE;\r
- IsEfiVarStore = FALSE;\r
- EfiVarStoreInfo = NULL;\r
+ DevicePath = NULL;\r
+ IfrDataParsedFlag = FALSE;\r
+ IsEfiVarStore = FALSE;\r
+ EfiVarStoreInfo = NULL;\r
\r
//\r
// The first element of <MultiConfigRequest> should be\r
// Allocate a fix length of memory to store Results. Reallocate memory for\r
// Results if this fix length is insufficient.\r
//\r
- *Results = (EFI_STRING) AllocateZeroPool (MAX_STRING_LENGTH);\r
+ *Results = (EFI_STRING)AllocateZeroPool (MAX_STRING_LENGTH);\r
if (*Results == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
//\r
// Process each <ConfigRequest> of <MultiConfigRequest>\r
//\r
- Length = CalculateConfigStringLen (StringPtr);\r
+ Length = CalculateConfigStringLen (StringPtr);\r
ConfigRequest = AllocateCopyPool ((Length + 1) * sizeof (CHAR16), StringPtr);\r
if (ConfigRequest == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Done;\r
}\r
+\r
*(ConfigRequest + Length) = 0;\r
\r
//\r
// Get the UEFI device path\r
//\r
- Status = GetDevicePath (ConfigRequest, (UINT8 **) &DevicePath);\r
+ Status = GetDevicePath (ConfigRequest, (UINT8 **)&DevicePath);\r
if (EFI_ERROR (Status)) {\r
goto Done;\r
}\r
//\r
// Find driver which matches the routing data.\r
//\r
- DriverHandle = NULL;\r
- HiiHandle = NULL;\r
- Database = NULL;\r
+ DriverHandle = NULL;\r
+ HiiHandle = NULL;\r
+ Database = NULL;\r
for (Link = Private->DatabaseList.ForwardLink;\r
Link != &Private->DatabaseList;\r
Link = Link->ForwardLink\r
- ) {\r
+ )\r
+ {\r
Database = CR (Link, HII_DATABASE_RECORD, DatabaseEntry, HII_DATABASE_RECORD_SIGNATURE);\r
if ((DevicePathPkg = Database->PackageList->DevicePathPkg) != NULL) {\r
CurrentDevicePath = DevicePathPkg + sizeof (EFI_HII_PACKAGE_HEADER);\r
- DevicePathSize = GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) CurrentDevicePath);\r
- if ((CompareMem (DevicePath,CurrentDevicePath,DevicePathSize) == 0) && IsThisPackageList(Database, ConfigRequest)) {\r
+ DevicePathSize = GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *)CurrentDevicePath);\r
+ if ((CompareMem (DevicePath, CurrentDevicePath, DevicePathSize) == 0) && IsThisPackageList (Database, ConfigRequest)) {\r
DriverHandle = Database->DriverHandle;\r
HiiHandle = Database->Handle;\r
break;\r
//\r
if (DriverHandle == NULL) {\r
TempDevicePath = DevicePath;\r
- Status = gBS->LocateDevicePath (\r
- &gEfiDevicePathProtocolGuid,\r
- &TempDevicePath,\r
- &DriverHandle\r
- );\r
+ Status = gBS->LocateDevicePath (\r
+ &gEfiDevicePathProtocolGuid,\r
+ &TempDevicePath,\r
+ &DriverHandle\r
+ );\r
if (EFI_ERROR (Status) || (DriverHandle == NULL)) {\r
//\r
// Routing data does not match any known driver.\r
// Set Progress to the 'G' in "GUID" of the routing header.\r
//\r
*Progress = StringPtr;\r
- Status = EFI_NOT_FOUND;\r
+ Status = EFI_NOT_FOUND;\r
goto Done;\r
}\r
}\r
//\r
// Validate ConfigRequest String.\r
//\r
- ErrorPtr = ConfigRequestValidate(ConfigRequest);\r
+ ErrorPtr = ConfigRequestValidate (ConfigRequest);\r
if (ErrorPtr != NULL) {\r
*Progress = StrStr (StringPtr, ErrorPtr);\r
- Status = EFI_INVALID_PARAMETER;\r
+ Status = EFI_INVALID_PARAMETER;\r
goto Done;\r
}\r
\r
// Check whether ConfigRequest contains request string.\r
//\r
IfrDataParsedFlag = FALSE;\r
- if ((HiiHandle != NULL) && !GetElementsFromRequest(ConfigRequest)) {\r
+ if ((HiiHandle != NULL) && !GetElementsFromRequest (ConfigRequest)) {\r
//\r
// Get the full request string from IFR when HiiPackage is registered to HiiHandle\r
//\r
IfrDataParsedFlag = TRUE;\r
- Status = GetFullStringFromHiiFormPackages (Database, DevicePath, &ConfigRequest, &DefaultResults, &AccessProgress);\r
+ Status = GetFullStringFromHiiFormPackages (Database, DevicePath, &ConfigRequest, &DefaultResults, &AccessProgress);\r
if (EFI_ERROR (Status)) {\r
//\r
// AccessProgress indicates the parsing progress on <ConfigRequest>.\r
*Progress = StrStr (StringPtr, AccessProgress);\r
goto Done;\r
}\r
+\r
//\r
// Not any request block is found.\r
//\r
- if (!GetElementsFromRequest(ConfigRequest)) {\r
+ if (!GetElementsFromRequest (ConfigRequest)) {\r
AccessResults = AllocateCopyPool (StrSize (ConfigRequest), ConfigRequest);\r
goto NextConfigString;\r
}\r
//\r
// Check whether this ConfigRequest is search from Efi varstore type storage.\r
//\r
- Status = GetVarStoreType(Database, ConfigRequest, &IsEfiVarStore, &EfiVarStoreInfo);\r
+ Status = GetVarStoreType (Database, ConfigRequest, &IsEfiVarStore, &EfiVarStoreInfo);\r
if (EFI_ERROR (Status)) {\r
goto Done;\r
}\r
//\r
// Call the GetVariable function to extract settings.\r
//\r
- Status = GetConfigRespFromEfiVarStore(This, EfiVarStoreInfo, ConfigRequest, &AccessResults, &AccessProgress);\r
+ Status = GetConfigRespFromEfiVarStore (This, EfiVarStoreInfo, ConfigRequest, &AccessResults, &AccessProgress);\r
FreePool (EfiVarStoreInfo);\r
if (EFI_ERROR (Status)) {\r
//\r
Status = gBS->HandleProtocol (\r
DriverHandle,\r
&gEfiHiiConfigAccessProtocolGuid,\r
- (VOID **) &ConfigAccess\r
+ (VOID **)&ConfigAccess\r
);\r
if (EFI_ERROR (Status)) {\r
//\r
&AccessProgressBackup,\r
&AccessResultsBackup\r
);\r
- if (!EFI_ERROR(Status)) {\r
+ if (!EFI_ERROR (Status)) {\r
//\r
- //Merge the AltCfgResp in AccessResultsBackup to AccessResults\r
+ // Merge the AltCfgResp in AccessResultsBackup to AccessResults\r
//\r
if ((AccessResultsBackup != NULL) && (StrStr (AccessResultsBackup, L"&ALTCFG=") != NULL)) {\r
- ConigStringSize = StrSize (AccessResults);\r
- ConfigStringPtr = StrStr (AccessResultsBackup, L"&GUID=");\r
+ ConigStringSize = StrSize (AccessResults);\r
+ ConfigStringPtr = StrStr (AccessResultsBackup, L"&GUID=");\r
ConigStringSizeNewsize = StrSize (ConfigStringPtr) + ConigStringSize + sizeof (CHAR16);\r
- AccessResults = (EFI_STRING) ReallocatePool (\r
- ConigStringSize,\r
- ConigStringSizeNewsize,\r
- AccessResults);\r
+ AccessResults = (EFI_STRING)ReallocatePool (\r
+ ConigStringSize,\r
+ ConigStringSizeNewsize,\r
+ AccessResults\r
+ );\r
StrCatS (AccessResults, ConigStringSizeNewsize / sizeof (CHAR16), ConfigStringPtr);\r
}\r
} else {\r
//\r
Status = EFI_SUCCESS;\r
}\r
+\r
if (AccessResultsBackup != NULL) {\r
FreePool (AccessResultsBackup);\r
AccessResultsBackup = NULL;\r
Status = gBS->HandleProtocol (\r
DriverHandle,\r
&gEfiHiiConfigAccessProtocolGuid,\r
- (VOID **) &ConfigAccess\r
+ (VOID **)&ConfigAccess\r
);\r
if (EFI_ERROR (Status)) {\r
goto Done;\r
&AccessResults\r
);\r
}\r
+\r
if (EFI_ERROR (Status)) {\r
//\r
// AccessProgress indicates the parsing progress on <ConfigRequest>.\r
//\r
// Update AccessResults by getting default setting from IFR when HiiPackage is registered to HiiHandle\r
//\r
- if (!IfrDataParsedFlag && HiiHandle != NULL) {\r
+ if (!IfrDataParsedFlag && (HiiHandle != NULL)) {\r
Status = GetFullStringFromHiiFormPackages (Database, DevicePath, &ConfigRequest, &DefaultResults, NULL);\r
ASSERT_EFI_ERROR (Status);\r
}\r
return Status;\r
}\r
\r
-\r
/**\r
This function allows the caller to request the current configuration for the\r
entirety of the current HII database and returns the data in a\r
OUT EFI_STRING *Results\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess;\r
- EFI_STRING AccessResults;\r
- EFI_STRING Progress;\r
- EFI_STRING StringPtr;\r
- EFI_STRING ConfigRequest;\r
- UINTN Index;\r
- EFI_HANDLE *ConfigAccessHandles;\r
- UINTN NumberConfigAccessHandles;\r
- BOOLEAN FirstElement;\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
- EFI_HII_HANDLE HiiHandle;\r
- EFI_STRING DefaultResults;\r
- HII_DATABASE_PRIVATE_DATA *Private;\r
- LIST_ENTRY *Link;\r
- HII_DATABASE_RECORD *Database;\r
- UINT8 *DevicePathPkg;\r
- UINT8 *CurrentDevicePath;\r
- BOOLEAN IfrDataParsedFlag;\r
-\r
- if (This == NULL || Results == NULL) {\r
+ EFI_STATUS Status;\r
+ EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess;\r
+ EFI_STRING AccessResults;\r
+ EFI_STRING Progress;\r
+ EFI_STRING StringPtr;\r
+ EFI_STRING ConfigRequest;\r
+ UINTN Index;\r
+ EFI_HANDLE *ConfigAccessHandles;\r
+ UINTN NumberConfigAccessHandles;\r
+ BOOLEAN FirstElement;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
+ EFI_HII_HANDLE HiiHandle;\r
+ EFI_STRING DefaultResults;\r
+ HII_DATABASE_PRIVATE_DATA *Private;\r
+ LIST_ENTRY *Link;\r
+ HII_DATABASE_RECORD *Database;\r
+ UINT8 *DevicePathPkg;\r
+ UINT8 *CurrentDevicePath;\r
+ BOOLEAN IfrDataParsedFlag;\r
+\r
+ if ((This == NULL) || (Results == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
// Allocate a fix length of memory to store Results. Reallocate memory for\r
// Results if this fix length is insufficient.\r
//\r
- *Results = (EFI_STRING) AllocateZeroPool (MAX_STRING_LENGTH);\r
+ *Results = (EFI_STRING)AllocateZeroPool (MAX_STRING_LENGTH);\r
if (*Results == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
NumberConfigAccessHandles = 0;\r
- Status = gBS->LocateHandleBuffer (\r
- ByProtocol,\r
- &gEfiHiiConfigAccessProtocolGuid,\r
- NULL,\r
- &NumberConfigAccessHandles,\r
- &ConfigAccessHandles\r
- );\r
+ Status = gBS->LocateHandleBuffer (\r
+ ByProtocol,\r
+ &gEfiHiiConfigAccessProtocolGuid,\r
+ NULL,\r
+ &NumberConfigAccessHandles,\r
+ &ConfigAccessHandles\r
+ );\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
Status = gBS->HandleProtocol (\r
ConfigAccessHandles[Index],\r
&gEfiHiiConfigAccessProtocolGuid,\r
- (VOID **) &ConfigAccess\r
+ (VOID **)&ConfigAccess\r
);\r
if (EFI_ERROR (Status)) {\r
continue;\r
// Get DevicePath and HiiHandle for this ConfigAccess driver handle\r
//\r
IfrDataParsedFlag = FALSE;\r
- Progress = NULL;\r
- HiiHandle = NULL;\r
- DefaultResults = NULL;\r
- Database = NULL;\r
- ConfigRequest = NULL;\r
- DevicePath = DevicePathFromHandle (ConfigAccessHandles[Index]);\r
+ Progress = NULL;\r
+ HiiHandle = NULL;\r
+ DefaultResults = NULL;\r
+ Database = NULL;\r
+ ConfigRequest = NULL;\r
+ DevicePath = DevicePathFromHandle (ConfigAccessHandles[Index]);\r
if (DevicePath != NULL) {\r
for (Link = Private->DatabaseList.ForwardLink;\r
Link != &Private->DatabaseList;\r
Link = Link->ForwardLink\r
- ) {\r
+ )\r
+ {\r
Database = CR (Link, HII_DATABASE_RECORD, DatabaseEntry, HII_DATABASE_RECORD_SIGNATURE);\r
if ((DevicePathPkg = Database->PackageList->DevicePathPkg) != NULL) {\r
CurrentDevicePath = DevicePathPkg + sizeof (EFI_HII_PACKAGE_HEADER);\r
if (CompareMem (\r
DevicePath,\r
CurrentDevicePath,\r
- GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) CurrentDevicePath)\r
- ) == 0) {\r
+ GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *)CurrentDevicePath)\r
+ ) == 0)\r
+ {\r
HiiHandle = Database->Handle;\r
break;\r
}\r
//\r
// Update AccessResults by getting default setting from IFR when HiiPackage is registered to HiiHandle\r
//\r
- if (HiiHandle != NULL && DevicePath != NULL) {\r
+ if ((HiiHandle != NULL) && (DevicePath != NULL)) {\r
IfrDataParsedFlag = TRUE;\r
- Status = GetFullStringFromHiiFormPackages (Database, DevicePath, &ConfigRequest, &DefaultResults, NULL);\r
+ Status = GetFullStringFromHiiFormPackages (Database, DevicePath, &ConfigRequest, &DefaultResults, NULL);\r
//\r
// Get the full request string to get the Current setting again.\r
//\r
- if (!EFI_ERROR (Status) && ConfigRequest != NULL) {\r
+ if (!EFI_ERROR (Status) && (ConfigRequest != NULL)) {\r
Status = ConfigAccess->ExtractConfig (\r
ConfigAccess,\r
ConfigRequest,\r
//\r
// Update AccessResults by getting default setting from IFR when HiiPackage is registered to HiiHandle\r
//\r
- if (!IfrDataParsedFlag && HiiHandle != NULL && DevicePath != NULL) {\r
+ if (!IfrDataParsedFlag && (HiiHandle != NULL) && (DevicePath != NULL)) {\r
StringPtr = StrStr (AccessResults, L"&GUID=");\r
if (StringPtr != NULL) {\r
*StringPtr = 0;\r
}\r
+\r
if (GetElementsFromRequest (AccessResults)) {\r
Status = GetFullStringFromHiiFormPackages (Database, DevicePath, &AccessResults, &DefaultResults, NULL);\r
ASSERT_EFI_ERROR (Status);\r
}\r
+\r
if (StringPtr != NULL) {\r
*StringPtr = L'&';\r
}\r
}\r
+\r
//\r
// Merge the default sting from IFR code into the got setting from driver.\r
//\r
AccessResults = NULL;\r
}\r
}\r
+\r
FreePool (ConfigAccessHandles);\r
\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
This function processes the results of processing forms and routes it to the\r
appropriate handlers or storage.\r
OUT EFI_STRING *Progress\r
)\r
{\r
- HII_DATABASE_PRIVATE_DATA *Private;\r
- EFI_STRING StringPtr;\r
- EFI_STRING ConfigResp;\r
- UINTN Length;\r
- EFI_STATUS Status;\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
- EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;\r
- LIST_ENTRY *Link;\r
- HII_DATABASE_RECORD *Database;\r
- UINT8 *DevicePathPkg;\r
- UINT8 *CurrentDevicePath;\r
- EFI_HANDLE DriverHandle;\r
- EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess;\r
- EFI_STRING AccessProgress;\r
- EFI_IFR_VARSTORE_EFI *EfiVarStoreInfo;\r
- BOOLEAN IsEfiVarstore;\r
- UINTN DevicePathSize;\r
-\r
- if (This == NULL || Progress == NULL) {\r
+ HII_DATABASE_PRIVATE_DATA *Private;\r
+ EFI_STRING StringPtr;\r
+ EFI_STRING ConfigResp;\r
+ UINTN Length;\r
+ EFI_STATUS Status;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
+ EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;\r
+ LIST_ENTRY *Link;\r
+ HII_DATABASE_RECORD *Database;\r
+ UINT8 *DevicePathPkg;\r
+ UINT8 *CurrentDevicePath;\r
+ EFI_HANDLE DriverHandle;\r
+ EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess;\r
+ EFI_STRING AccessProgress;\r
+ EFI_IFR_VARSTORE_EFI *EfiVarStoreInfo;\r
+ BOOLEAN IsEfiVarstore;\r
+ UINTN DevicePathSize;\r
+\r
+ if ((This == NULL) || (Progress == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- Private = CONFIG_ROUTING_DATABASE_PRIVATE_DATA_FROM_THIS (This);\r
- StringPtr = Configuration;\r
- *Progress = StringPtr;\r
- Database = NULL;\r
- AccessProgress = NULL;\r
- EfiVarStoreInfo= NULL;\r
- IsEfiVarstore = FALSE;\r
+ Private = CONFIG_ROUTING_DATABASE_PRIVATE_DATA_FROM_THIS (This);\r
+ StringPtr = Configuration;\r
+ *Progress = StringPtr;\r
+ Database = NULL;\r
+ AccessProgress = NULL;\r
+ EfiVarStoreInfo = NULL;\r
+ IsEfiVarstore = FALSE;\r
\r
//\r
// The first element of <MultiConfigResp> should be\r
//\r
// Process each <ConfigResp> of <MultiConfigResp>\r
//\r
- Length = CalculateConfigStringLen (StringPtr);\r
+ Length = CalculateConfigStringLen (StringPtr);\r
ConfigResp = AllocateCopyPool ((Length + 1) * sizeof (CHAR16), StringPtr);\r
if (ConfigResp == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
+\r
//\r
// Append '\0' to the end of ConfigRequest\r
//\r
//\r
// Get the UEFI device path\r
//\r
- Status = GetDevicePath (ConfigResp, (UINT8 **) &DevicePath);\r
+ Status = GetDevicePath (ConfigResp, (UINT8 **)&DevicePath);\r
if (EFI_ERROR (Status)) {\r
FreePool (ConfigResp);\r
return Status;\r
//\r
// Find driver which matches the routing data.\r
//\r
- DriverHandle = NULL;\r
+ DriverHandle = NULL;\r
for (Link = Private->DatabaseList.ForwardLink;\r
Link != &Private->DatabaseList;\r
Link = Link->ForwardLink\r
- ) {\r
+ )\r
+ {\r
Database = CR (Link, HII_DATABASE_RECORD, DatabaseEntry, HII_DATABASE_RECORD_SIGNATURE);\r
\r
if ((DevicePathPkg = Database->PackageList->DevicePathPkg) != NULL) {\r
CurrentDevicePath = DevicePathPkg + sizeof (EFI_HII_PACKAGE_HEADER);\r
- DevicePathSize = GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) CurrentDevicePath);\r
- if ((CompareMem (DevicePath,CurrentDevicePath,DevicePathSize) == 0) && IsThisPackageList(Database, ConfigResp)) {\r
+ DevicePathSize = GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *)CurrentDevicePath);\r
+ if ((CompareMem (DevicePath, CurrentDevicePath, DevicePathSize) == 0) && IsThisPackageList (Database, ConfigResp)) {\r
DriverHandle = Database->DriverHandle;\r
break;\r
}\r
//\r
if (DriverHandle == NULL) {\r
TempDevicePath = DevicePath;\r
- Status = gBS->LocateDevicePath (\r
- &gEfiDevicePathProtocolGuid,\r
- &TempDevicePath,\r
- &DriverHandle\r
- );\r
+ Status = gBS->LocateDevicePath (\r
+ &gEfiDevicePathProtocolGuid,\r
+ &TempDevicePath,\r
+ &DriverHandle\r
+ );\r
if (EFI_ERROR (Status) || (DriverHandle == NULL)) {\r
//\r
// Routing data does not match any known driver.\r
//\r
// Check whether this ConfigRequest is search from Efi varstore type storage.\r
//\r
- Status = GetVarStoreType(Database, ConfigResp, &IsEfiVarstore, &EfiVarStoreInfo);\r
+ Status = GetVarStoreType (Database, ConfigResp, &IsEfiVarstore, &EfiVarStoreInfo);\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
//\r
// Call the SetVariable function to route settings.\r
//\r
- Status = RouteConfigRespForEfiVarStore(This, EfiVarStoreInfo, ConfigResp, &AccessProgress);\r
+ Status = RouteConfigRespForEfiVarStore (This, EfiVarStoreInfo, ConfigResp, &AccessProgress);\r
FreePool (EfiVarStoreInfo);\r
} else {\r
//\r
Status = gBS->HandleProtocol (\r
DriverHandle,\r
&gEfiHiiConfigAccessProtocolGuid,\r
- (VOID **) &ConfigAccess\r
+ (VOID **)&ConfigAccess\r
);\r
if (EFI_ERROR (Status)) {\r
*Progress = StringPtr;\r
&AccessProgress\r
);\r
}\r
+\r
if (EFI_ERROR (Status)) {\r
ASSERT (AccessProgress != NULL);\r
//\r
}\r
\r
StringPtr++;\r
-\r
}\r
\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
This helper function is to be called by drivers to map configuration data\r
stored in byte array ("block") formats such as UEFI Variables into current\r
OUT EFI_STRING *Progress\r
)\r
{\r
- HII_DATABASE_PRIVATE_DATA *Private;\r
- EFI_STRING StringPtr;\r
- UINTN Length;\r
- EFI_STATUS Status;\r
- EFI_STRING TmpPtr;\r
- UINT8 *TmpBuffer;\r
- UINTN Offset;\r
- UINTN Width;\r
- UINT8 *Value;\r
- EFI_STRING ValueStr;\r
- EFI_STRING ConfigElement;\r
- UINTN Index;\r
- UINT8 *TemBuffer;\r
- CHAR16 *TemString;\r
- CHAR16 TemChar;\r
+ HII_DATABASE_PRIVATE_DATA *Private;\r
+ EFI_STRING StringPtr;\r
+ UINTN Length;\r
+ EFI_STATUS Status;\r
+ EFI_STRING TmpPtr;\r
+ UINT8 *TmpBuffer;\r
+ UINTN Offset;\r
+ UINTN Width;\r
+ UINT8 *Value;\r
+ EFI_STRING ValueStr;\r
+ EFI_STRING ConfigElement;\r
+ UINTN Index;\r
+ UINT8 *TemBuffer;\r
+ CHAR16 *TemString;\r
\r
TmpBuffer = NULL;\r
\r
- if (This == NULL || Progress == NULL || Config == NULL) {\r
+ if ((This == NULL) || (Progress == NULL) || (Config == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- if (Block == NULL || ConfigRequest == NULL) {\r
+ if ((Block == NULL) || (ConfigRequest == NULL)) {\r
*Progress = ConfigRequest;\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
-\r
Private = CONFIG_ROUTING_DATABASE_PRIVATE_DATA_FROM_THIS (This);\r
ASSERT (Private != NULL);\r
\r
// Allocate a fix length of memory to store Results. Reallocate memory for\r
// Results if this fix length is insufficient.\r
//\r
- *Config = (EFI_STRING) AllocateZeroPool (MAX_STRING_LENGTH);\r
+ *Config = (EFI_STRING)AllocateZeroPool (MAX_STRING_LENGTH);\r
if (*Config == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
//\r
if (StrnCmp (StringPtr, L"GUID=", StrLen (L"GUID=")) != 0) {\r
*Progress = StringPtr;\r
- Status = EFI_INVALID_PARAMETER;\r
+ Status = EFI_INVALID_PARAMETER;\r
goto Exit;\r
}\r
+\r
while (*StringPtr != 0 && StrnCmp (StringPtr, L"PATH=", StrLen (L"PATH=")) != 0) {\r
StringPtr++;\r
}\r
+\r
if (*StringPtr == 0) {\r
*Progress = StringPtr - 1;\r
- Status = EFI_INVALID_PARAMETER;\r
+ Status = EFI_INVALID_PARAMETER;\r
goto Exit;\r
}\r
\r
while (*StringPtr != L'&' && *StringPtr != 0) {\r
StringPtr++;\r
}\r
+\r
if (*StringPtr == 0) {\r
*Progress = StringPtr;\r
\r
- AppendToMultiString(Config, ConfigRequest);\r
+ AppendToMultiString (Config, ConfigRequest);\r
HiiToLower (*Config);\r
\r
return EFI_SUCCESS;\r
}\r
+\r
//\r
// Skip '&'\r
//\r
//\r
// Copy <ConfigHdr> and an additional '&' to <ConfigResp>\r
//\r
- TemChar = *StringPtr;\r
- *StringPtr = '\0';\r
- AppendToMultiString(Config, ConfigRequest);\r
- *StringPtr = TemChar;\r
+ TemString = AllocateCopyPool (sizeof (CHAR16) * (StringPtr - ConfigRequest + 1), ConfigRequest);\r
+ if (TemString == NULL) {\r
+ return EFI_OUT_OF_RESOURCES;\r
+ }\r
+\r
+ TemString[StringPtr - ConfigRequest] = '\0';\r
+ AppendToMultiString (Config, TemString);\r
+ FreePool (TemString);\r
\r
//\r
// Parse each <RequestElement> if exists\r
*Progress = TmpPtr - 1;\r
goto Exit;\r
}\r
+\r
Offset = 0;\r
CopyMem (\r
&Offset,\r
StringPtr += Length;\r
if (StrnCmp (StringPtr, L"&WIDTH=", StrLen (L"&WIDTH=")) != 0) {\r
*Progress = TmpPtr - 1;\r
- Status = EFI_INVALID_PARAMETER;\r
+ Status = EFI_INVALID_PARAMETER;\r
goto Exit;\r
}\r
+\r
StringPtr += StrLen (L"&WIDTH=");\r
\r
//\r
*Progress = TmpPtr - 1;\r
goto Exit;\r
}\r
+\r
Width = 0;\r
CopyMem (\r
&Width,\r
FreePool (TmpBuffer);\r
\r
StringPtr += Length;\r
- if (*StringPtr != 0 && *StringPtr != L'&') {\r
+ if ((*StringPtr != 0) && (*StringPtr != L'&')) {\r
*Progress = TmpPtr - 1;\r
- Status = EFI_INVALID_PARAMETER;\r
+ Status = EFI_INVALID_PARAMETER;\r
goto Exit;\r
}\r
\r
//\r
if (Offset + Width > BlockSize) {\r
*Progress = StringPtr;\r
- Status = EFI_DEVICE_ERROR;\r
+ Status = EFI_DEVICE_ERROR;\r
goto Exit;\r
}\r
\r
- Value = (UINT8 *) AllocateZeroPool (Width);\r
+ Value = (UINT8 *)AllocateZeroPool (Width);\r
if (Value == NULL) {\r
*Progress = ConfigRequest;\r
- Status = EFI_OUT_OF_RESOURCES;\r
+ Status = EFI_OUT_OF_RESOURCES;\r
goto Exit;\r
}\r
\r
- CopyMem (Value, (UINT8 *) Block + Offset, Width);\r
+ CopyMem (Value, (UINT8 *)Block + Offset, Width);\r
\r
- Length = Width * 2 + 1;\r
- ValueStr = (EFI_STRING) AllocateZeroPool (Length * sizeof (CHAR16));\r
+ Length = Width * 2 + 1;\r
+ ValueStr = (EFI_STRING)AllocateZeroPool (Length * sizeof (CHAR16));\r
if (ValueStr == NULL) {\r
*Progress = ConfigRequest;\r
- Status = EFI_OUT_OF_RESOURCES;\r
+ Status = EFI_OUT_OF_RESOURCES;\r
goto Exit;\r
}\r
\r
TemString = ValueStr;\r
TemBuffer = Value + Width - 1;\r
- for (Index = 0; Index < Width; Index ++, TemBuffer --) {\r
+ for (Index = 0; Index < Width; Index++, TemBuffer--) {\r
UnicodeValueToStringS (\r
TemString,\r
Length * sizeof (CHAR16) - ((UINTN)TemString - (UINTN)ValueStr),\r
//\r
// Build a ConfigElement\r
//\r
- Length += StringPtr - TmpPtr + 1 + StrLen (L"VALUE=");\r
- ConfigElement = (EFI_STRING) AllocateZeroPool (Length * sizeof (CHAR16));\r
+ Length += StringPtr - TmpPtr + 1 + StrLen (L"VALUE=");\r
+ ConfigElement = (EFI_STRING)AllocateZeroPool (Length * sizeof (CHAR16));\r
if (ConfigElement == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Exit;\r
}\r
+\r
CopyMem (ConfigElement, TmpPtr, (StringPtr - TmpPtr + 1) * sizeof (CHAR16));\r
if (*StringPtr == 0) {\r
*(ConfigElement + (StringPtr - TmpPtr)) = L'&';\r
}\r
+\r
*(ConfigElement + (StringPtr - TmpPtr) + 1) = 0;\r
StrCatS (ConfigElement, Length, L"VALUE=");\r
StrCatS (ConfigElement, Length, ValueStr);\r
FreePool (ConfigElement);\r
FreePool (ValueStr);\r
ConfigElement = NULL;\r
- ValueStr = NULL;\r
+ ValueStr = NULL;\r
\r
//\r
// If '\0', parsing is finished. Otherwise skip '&' to continue\r
if (*StringPtr == 0) {\r
break;\r
}\r
+\r
AppendToMultiString (Config, L"&");\r
StringPtr++;\r
-\r
}\r
\r
if (*StringPtr != 0) {\r
*Progress = StringPtr - 1;\r
- Status = EFI_INVALID_PARAMETER;\r
+ Status = EFI_INVALID_PARAMETER;\r
goto Exit;\r
}\r
\r
\r
Exit:\r
if (*Config != NULL) {\r
- FreePool (*Config);\r
- *Config = NULL;\r
+ FreePool (*Config);\r
+ *Config = NULL;\r
}\r
+\r
if (ValueStr != NULL) {\r
FreePool (ValueStr);\r
}\r
+\r
if (Value != NULL) {\r
FreePool (Value);\r
}\r
+\r
if (ConfigElement != NULL) {\r
FreePool (ConfigElement);\r
}\r
\r
return Status;\r
-\r
}\r
\r
-\r
/**\r
This helper function is to be called by drivers to map configuration strings\r
to configurations stored in byte array ("block") formats such as UEFI Variables.\r
EFI_STATUS\r
EFIAPI\r
HiiConfigToBlock (\r
- IN CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This,\r
- IN CONST EFI_STRING ConfigResp,\r
- IN OUT UINT8 *Block,\r
- IN OUT UINTN *BlockSize,\r
- OUT EFI_STRING *Progress\r
+ IN CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This,\r
+ IN CONST EFI_STRING ConfigResp,\r
+ IN OUT UINT8 *Block,\r
+ IN OUT UINTN *BlockSize,\r
+ OUT EFI_STRING *Progress\r
)\r
{\r
- HII_DATABASE_PRIVATE_DATA *Private;\r
- EFI_STRING StringPtr;\r
- EFI_STRING TmpPtr;\r
- UINTN Length;\r
- EFI_STATUS Status;\r
- UINT8 *TmpBuffer;\r
- UINTN Offset;\r
- UINTN Width;\r
- UINT8 *Value;\r
- UINTN BufferSize;\r
- UINTN MaxBlockSize;\r
+ HII_DATABASE_PRIVATE_DATA *Private;\r
+ EFI_STRING StringPtr;\r
+ EFI_STRING TmpPtr;\r
+ UINTN Length;\r
+ EFI_STATUS Status;\r
+ UINT8 *TmpBuffer;\r
+ UINTN Offset;\r
+ UINTN Width;\r
+ UINT8 *Value;\r
+ UINTN BufferSize;\r
+ UINTN MaxBlockSize;\r
\r
TmpBuffer = NULL;\r
\r
- if (This == NULL || BlockSize == NULL || Progress == NULL) {\r
+ if ((This == NULL) || (BlockSize == NULL) || (Progress == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
Private = CONFIG_ROUTING_DATABASE_PRIVATE_DATA_FROM_THIS (This);\r
ASSERT (Private != NULL);\r
\r
- StringPtr = ConfigResp;\r
- BufferSize = *BlockSize;\r
- Value = NULL;\r
+ StringPtr = ConfigResp;\r
+ BufferSize = *BlockSize;\r
+ Value = NULL;\r
MaxBlockSize = 0;\r
\r
//\r
//\r
if (StrnCmp (StringPtr, L"GUID=", StrLen (L"GUID=")) != 0) {\r
*Progress = StringPtr;\r
- Status = EFI_INVALID_PARAMETER;\r
+ Status = EFI_INVALID_PARAMETER;\r
goto Exit;\r
}\r
+\r
while (*StringPtr != 0 && StrnCmp (StringPtr, L"PATH=", StrLen (L"PATH=")) != 0) {\r
StringPtr++;\r
}\r
+\r
if (*StringPtr == 0) {\r
*Progress = StringPtr;\r
- Status = EFI_INVALID_PARAMETER;\r
+ Status = EFI_INVALID_PARAMETER;\r
goto Exit;\r
}\r
\r
while (*StringPtr != L'&' && *StringPtr != 0) {\r
StringPtr++;\r
}\r
+\r
if (*StringPtr == 0) {\r
*Progress = StringPtr;\r
- Status = EFI_INVALID_PARAMETER;\r
+ Status = EFI_INVALID_PARAMETER;\r
goto Exit;\r
}\r
\r
*Progress = TmpPtr;\r
goto Exit;\r
}\r
+\r
Offset = 0;\r
CopyMem (\r
&Offset,\r
StringPtr += Length;\r
if (StrnCmp (StringPtr, L"&WIDTH=", StrLen (L"&WIDTH=")) != 0) {\r
*Progress = TmpPtr;\r
- Status = EFI_INVALID_PARAMETER;\r
+ Status = EFI_INVALID_PARAMETER;\r
goto Exit;\r
}\r
+\r
StringPtr += StrLen (L"&WIDTH=");\r
\r
//\r
*Progress = TmpPtr;\r
goto Exit;\r
}\r
+\r
Width = 0;\r
CopyMem (\r
&Width,\r
StringPtr += Length;\r
if (StrnCmp (StringPtr, L"&VALUE=", StrLen (L"&VALUE=")) != 0) {\r
*Progress = TmpPtr;\r
- Status = EFI_INVALID_PARAMETER;\r
+ Status = EFI_INVALID_PARAMETER;\r
goto Exit;\r
}\r
+\r
StringPtr += StrLen (L"&VALUE=");\r
\r
//\r
}\r
\r
StringPtr += Length;\r
- if (*StringPtr != 0 && *StringPtr != L'&') {\r
+ if ((*StringPtr != 0) && (*StringPtr != L'&')) {\r
*Progress = TmpPtr;\r
- Status = EFI_INVALID_PARAMETER;\r
+ Status = EFI_INVALID_PARAMETER;\r
goto Exit;\r
}\r
\r
if ((Block != NULL) && (Offset + Width <= BufferSize)) {\r
CopyMem (Block + Offset, Value, Width);\r
}\r
+\r
if (Offset + Width > MaxBlockSize) {\r
MaxBlockSize = Offset + Width;\r
}\r
//\r
if (*StringPtr != 0) {\r
*Progress = StringPtr;\r
- Status = EFI_INVALID_PARAMETER;\r
+ Status = EFI_INVALID_PARAMETER;\r
goto Exit;\r
}\r
\r
- *Progress = StringPtr + StrLen (StringPtr);\r
+ *Progress = StringPtr + StrLen (StringPtr);\r
*BlockSize = MaxBlockSize - 1;\r
\r
if (MaxBlockSize > BufferSize) {\r
if (Value != NULL) {\r
FreePool (Value);\r
}\r
+\r
return Status;\r
}\r
\r
-\r
/**\r
This helper function is to be called by drivers to extract portions of\r
a larger configuration string.\r
EFI_STATUS\r
EFIAPI\r
HiiGetAltCfg (\r
- IN CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This,\r
- IN CONST EFI_STRING Configuration,\r
- IN CONST EFI_GUID *Guid,\r
- IN CONST EFI_STRING Name,\r
- IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
- IN CONST UINT16 *AltCfgId,\r
- OUT EFI_STRING *AltCfgResp\r
+ IN CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This,\r
+ IN CONST EFI_STRING Configuration,\r
+ IN CONST EFI_GUID *Guid,\r
+ IN CONST EFI_STRING Name,\r
+ IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
+ IN CONST UINT16 *AltCfgId,\r
+ OUT EFI_STRING *AltCfgResp\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_STRING StringPtr;\r
- EFI_STRING HdrStart;\r
- EFI_STRING HdrEnd;\r
- EFI_STRING TmpPtr;\r
- UINTN Length;\r
- EFI_STRING GuidStr;\r
- EFI_STRING NameStr;\r
- EFI_STRING PathStr;\r
- EFI_STRING AltIdStr;\r
- EFI_STRING Result;\r
- BOOLEAN GuidFlag;\r
- BOOLEAN NameFlag;\r
- BOOLEAN PathFlag;\r
+ EFI_STATUS Status;\r
+ EFI_STRING StringPtr;\r
+ EFI_STRING HdrStart;\r
+ EFI_STRING HdrEnd;\r
+ EFI_STRING TmpPtr;\r
+ UINTN Length;\r
+ EFI_STRING GuidStr;\r
+ EFI_STRING NameStr;\r
+ EFI_STRING PathStr;\r
+ EFI_STRING AltIdStr;\r
+ EFI_STRING Result;\r
+ BOOLEAN GuidFlag;\r
+ BOOLEAN NameFlag;\r
+ BOOLEAN PathFlag;\r
\r
HdrStart = NULL;\r
HdrEnd = NULL;\r
NameFlag = FALSE;\r
PathFlag = FALSE;\r
\r
- if (This == NULL || Configuration == NULL || AltCfgResp == NULL) {\r
+ if ((This == NULL) || (Configuration == NULL) || (AltCfgResp == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
//\r
// Generate the sub string for later matching.\r
//\r
- GenerateSubStr (L"GUID=", sizeof (EFI_GUID), (VOID *) Guid, 1, &GuidStr);\r
+ GenerateSubStr (L"GUID=", sizeof (EFI_GUID), (VOID *)Guid, 1, &GuidStr);\r
GenerateSubStr (\r
L"PATH=",\r
- GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *) DevicePath),\r
- (VOID *) DevicePath,\r
+ GetDevicePathSize ((EFI_DEVICE_PATH_PROTOCOL *)DevicePath),\r
+ (VOID *)DevicePath,\r
1,\r
&PathStr\r
);\r
if (AltCfgId != NULL) {\r
- GenerateSubStr (L"ALTCFG=", sizeof (UINT16), (VOID *) AltCfgId, 3, &AltIdStr);\r
+ GenerateSubStr (L"ALTCFG=", sizeof (UINT16), (VOID *)AltCfgId, 3, &AltIdStr);\r
}\r
+\r
if (Name != NULL) {\r
- GenerateSubStr (L"NAME=", StrLen (Name) * sizeof (CHAR16), (VOID *) Name, 2, &NameStr);\r
+ GenerateSubStr (L"NAME=", StrLen (Name) * sizeof (CHAR16), (VOID *)Name, 2, &NameStr);\r
} else {\r
GenerateSubStr (L"NAME=", 0, NULL, 2, &NameStr);\r
}\r
Status = EFI_NOT_FOUND;\r
goto Exit;\r
}\r
+\r
HdrStart = TmpPtr;\r
\r
//\r
goto Exit;\r
}\r
}\r
+\r
GuidFlag = TRUE;\r
}\r
\r
goto Exit;\r
}\r
}\r
+\r
NameFlag = TRUE;\r
}\r
}\r
Status = EFI_NOT_FOUND;\r
goto Exit;\r
}\r
- StringPtr ++;\r
+\r
+ StringPtr++;\r
}\r
+\r
PathFlag = TRUE;\r
HdrEnd = StringPtr;\r
}\r
Status = OutputConfigBody (StringPtr, &Result);\r
goto Exit;\r
}\r
+\r
//\r
// Search the <ConfigAltResp> to get the <AltResp> with AltCfgId.\r
//\r
//\r
// Copy the <ConfigHdr> and <ConfigBody>\r
//\r
- Length = HdrEnd - HdrStart + StrLen (Result) + 1;\r
+ Length = HdrEnd - HdrStart + StrLen (Result) + 1;\r
*AltCfgResp = AllocateZeroPool (Length * sizeof (CHAR16));\r
if (*AltCfgResp == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
if (GuidStr != NULL) {\r
FreePool (GuidStr);\r
}\r
+\r
if (NameStr != NULL) {\r
FreePool (NameStr);\r
}\r
+\r
if (PathStr != NULL) {\r
FreePool (PathStr);\r
}\r
+\r
if (AltIdStr != NULL) {\r
FreePool (AltIdStr);\r
}\r
+\r
if (Result != NULL) {\r
FreePool (Result);\r
}\r
\r
return Status;\r
-\r
}\r
-\r
-\r