/*++\r
-\r
Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
Module Name:\r
-\r
-VfrUtilityLib.cpp\r
+ VfrUtilityLib.cpp\r
\r
Abstract:\r
\r
}\r
\r
SConfigInfo::SConfigInfo (\r
- IN UINT8 Type, \r
- IN UINT16 Offset, \r
- IN UINT32 Width, \r
+ IN UINT8 Type,\r
+ IN UINT16 Offset,\r
+ IN UINT32 Width,\r
IN EFI_IFR_TYPE_VALUE Value\r
)\r
{\r
+ mNext = NULL;\r
mOffset = Offset;\r
mWidth = (UINT16)Width;\r
mValue = new UINT8[mWidth];\r
}\r
\r
SConfigItem::SConfigItem (\r
- IN INT8 *Id, \r
- IN INT8 *Info\r
+ IN INT8 *Name,\r
+ IN INT8 *Id\r
)\r
{\r
- mId = NULL;\r
- mInfo = NULL;\r
+ mName = NULL;\r
+ mId = NULL;\r
mInfoStrList = NULL;\r
mNext = NULL;\r
\r
- if (Id != NULL) {\r
- if ((mId = new INT8[strlen (Id) + 1]) != NULL) {\r
- strcpy (mId, Id);\r
+ if (Name != NULL) {\r
+ if ((mName = new INT8[strlen (Name) + 1]) != NULL) {\r
+ strcpy (mName, Name);\r
}\r
}\r
\r
- if (Info != NULL) {\r
- if ((mInfo = new INT8[strlen (Info) + 1]) != NULL) {\r
- strcpy (mInfo, Info);\r
+ if (Id != NULL) {\r
+ if ((mId = new INT8[strlen (Id) + 1]) != NULL) {\r
+ strcpy (mId, Id);\r
}\r
}\r
}\r
\r
SConfigItem::SConfigItem (\r
- IN INT8 *Id, \r
- IN INT8 *Info,\r
+ IN INT8 *Name,\r
+ IN INT8 *Id,\r
IN UINT8 Type,\r
IN UINT16 Offset,\r
IN UINT16 Width,\r
IN EFI_IFR_TYPE_VALUE Value\r
)\r
{\r
+ mName = NULL;\r
mId = NULL;\r
- mInfo = NULL;\r
mInfoStrList = NULL;\r
mNext = NULL;\r
\r
- if (Id != NULL) {\r
- if ((mId = new INT8[strlen (Id) + 1]) != NULL) {\r
- strcpy (mId, Id);\r
+ if (Name != NULL) {\r
+ if ((mName = new INT8[strlen (Name) + 1]) != NULL) {\r
+ strcpy (mName, Name);\r
}\r
}\r
\r
- if (Info != NULL) {\r
- if ((mInfo = new INT8[strlen (Info) + 1]) != NULL) {\r
- strcpy (mInfo, Info);\r
+ if (Id != NULL) {\r
+ if ((mId = new INT8[strlen (Id) + 1]) != NULL) {\r
+ strcpy (mId, Id);\r
}\r
}\r
\r
{\r
SConfigInfo *Info;\r
\r
+ BUFFER_SAFE_FREE (mName);\r
BUFFER_SAFE_FREE (mId);\r
- BUFFER_SAFE_FREE (mInfo);\r
while (mInfoStrList != NULL) {\r
Info = mInfoStrList;\r
mInfoStrList = mInfoStrList->mNext;\r
\r
UINT8\r
CVfrBufferConfig::Register (\r
- IN INT8 *Id, \r
- IN INT8 *Info\r
+ IN INT8 *Name,\r
+ IN INT8 *Id\r
)\r
{\r
SConfigItem *pNew;\r
\r
- if (Select (Id) == 0) {\r
+ if (Select (Name) == 0) {\r
return 1;\r
}\r
\r
- if ((pNew = new SConfigItem (Id, Info)) == NULL) {\r
+ if ((pNew = new SConfigItem (Name, Id)) == NULL) {\r
return 2;\r
}\r
if (mItemListHead == NULL) {\r
\r
UINT8\r
CVfrBufferConfig::Select (\r
- IN INT8 *Id,\r
- IN INT8 *Info\r
+ IN INT8 *Name,\r
+ IN INT8 *Id\r
)\r
{\r
SConfigItem *p;\r
\r
- if (Id == NULL) {\r
+ if (Name == NULL) {\r
mItemListPos = mItemListHead;\r
return 0;\r
} else {\r
for (p = mItemListHead; p != NULL; p = p->mNext) {\r
- if (strcmp (p->mId, Id) != 0) {\r
+ if (strcmp (p->mName, Name) != 0) {\r
continue;\r
}\r
\r
- if ((p->mInfo != NULL) && (Info != NULL)) {\r
- if (strcmp (p->mInfo, Info) != 0) {\r
+ if (Id != NULL) {\r
+ if (p->mId == NULL || strcmp (p->mId, Id) != 0) {\r
continue;\r
}\r
+ } else if (p->mId != NULL) {\r
+ continue;\r
}\r
\r
mItemListPos = p;\r
UINT8\r
CVfrBufferConfig::Write (\r
IN CONST CHAR8 Mode,\r
- IN INT8 *Id, \r
- IN INT8 *Info,\r
+ IN INT8 *Name,\r
+ IN INT8 *Id,\r
IN UINT8 Type,\r
IN UINT16 Offset,\r
IN UINT32 Width,\r
SConfigItem *pItem;\r
SConfigInfo *pInfo;\r
\r
+ if ((Ret = Select (Name)) != 0) {\r
+ return Ret;\r
+ }\r
+\r
switch (Mode) {\r
case 'a' : // add\r
- if (Select (Id) == 0) {\r
- if((pInfo = new SConfigInfo (Type, Offset, Width, Value)) == NULL) {\r
- return 2;\r
- }\r
- pInfo->mNext = mItemListPos->mInfoStrList;\r
- mItemListPos->mInfoStrList = pInfo;\r
- } else {\r
- if ((pItem = new SConfigItem (Id, Info, Type, Offset, Width, Value)) == NULL) {\r
+ if (Select (Name, Id) != 0) {\r
+ if ((pItem = new SConfigItem (Name, Id, Type, Offset, Width, Value)) == NULL) {\r
return 2;\r
}\r
if (mItemListHead == NULL) {\r
mItemListTail = pItem;\r
}\r
mItemListPos = pItem;\r
+ } else {\r
+ // tranverse the list to find out if there's already the value for the same offset\r
+ for (pInfo = mItemListPos->mInfoStrList; pInfo != NULL; pInfo = pInfo->mNext) {\r
+ if (pInfo->mOffset == Offset) {\r
+ // check if the value and width are the same; return error if not\r
+ if ((Id != NULL) && (pInfo->mWidth != Width || memcmp(pInfo->mValue, &Value, Width) != 0)) {\r
+ return VFR_RETURN_DEFAULT_VALUE_REDEFINED;\r
+ }\r
+ return 0;\r
+ }\r
+ }\r
+ if((pInfo = new SConfigInfo (Type, Offset, Width, Value)) == NULL) {\r
+ return 2;\r
+ }\r
+ pInfo->mNext = mItemListPos->mInfoStrList;\r
+ mItemListPos->mInfoStrList = pInfo;\r
}\r
break;\r
\r
case 'd' : // delete\r
- if ((Ret = Select (Id)) != 0) {\r
- return Ret;\r
- }\r
-\r
if (mItemListHead == mItemListPos) {\r
mItemListHead = mItemListPos->mNext;\r
delete mItemListPos;\r
break;\r
\r
case 'i' : // set info\r
- if ((Ret = Select (Id)) != 0) {\r
- return Ret;\r
- }\r
- if (mItemListPos->mInfo != NULL) {\r
- delete mItemListPos->mInfo;\r
+ if (mItemListPos->mId != NULL) {\r
+ delete mItemListPos->mId;\r
}\r
- mItemListPos->mInfo = NULL;\r
- if (Info != NULL) {\r
- if ((mItemListPos->mInfo = new INT8[strlen (Info) + 1]) == NULL) {\r
+ mItemListPos->mId = NULL;\r
+ if (Id != NULL) {\r
+ if ((mItemListPos->mId = new INT8[strlen (Id) + 1]) == NULL) {\r
return 2;\r
}\r
- strcpy (mItemListPos->mInfo, Info);\r
+ strcpy (mItemListPos->mId, Id);\r
}\r
break;\r
\r
#if 0\r
UINT8\r
CVfrBufferConfig::ReadId (\r
- OUT INT8 **Id, \r
- OUT INT8 **Info\r
+ OUT INT8 **Name,\r
+ OUT INT8 **Id\r
)\r
{\r
if (mInfoStrItemListPos == NULL) {\r
return 1; // end read or some error occur\r
}\r
\r
+ if (Name != NULL) {\r
+ *Name = new INT8 (strlen (mInfoStrItemListPos->mName + 1));\r
+ strcpy (*Name, mInfoStrItemListPos->mName);\r
+ }\r
if (Id != NULL) {\r
*Id = new INT8 (strlen (mInfoStrItemListPos->mId + 1));\r
strcpy (*Id, mInfoStrItemListPos->mId);\r
}\r
- if (Info != NULL) {\r
- *Info = new INT8 (strlen (mInfoStrItemListPos->mInfo + 1));\r
- strcpy (*Info, mInfoStrItemListPos->mInfo);\r
- }\r
\r
return 0;\r
}\r
\r
UINT8\r
CVfrBufferConfig::ReadInfo (\r
- IN INT8 *Id, \r
+ IN INT8 *Name,\r
IN UINT32 Index,\r
IN OUT UINT32 &Number,\r
OUT INT8 *Offset,\r
UINT32 idx;\r
UINT32 num;\r
\r
- if (Id != NULL) {\r
- if ((ret = Select (Id)) != 0) {\r
+ if (Name != NULL) {\r
+ if ((ret = Select (Name)) != 0) {\r
return ret;\r
}\r
}\r
}\r
\r
for (Item = mItemListHead; Item != NULL; Item = Item->mNext) {\r
- if (Item->mInfoStrList != NULL) {\r
- fprintf (pFile, "\nunsigned char %s%sDefault%04x[] = {", BaseName, Item->mId, Item->mInfo);\r
+ if (Item->mId != NULL || Item->mInfoStrList == NULL) {\r
+ continue;\r
+ }\r
+ fprintf (pFile, "\nunsigned char %s%sBlockName[] = {", BaseName, Item->mName);\r
+\r
+ TotalLen = sizeof (UINT32);\r
+ for (Info = Item->mInfoStrList; Info != NULL; Info = Info->mNext) {\r
+ TotalLen += sizeof (UINT16) * 2;\r
+ }\r
+ Output.WriteLine (pFile, BYTES_PRE_LINE, " ", (INT8 *)&TotalLen, sizeof (UINT32));\r
+\r
+ for (Info = Item->mInfoStrList; Info != NULL; Info = Info->mNext) {\r
+ fprintf (pFile, "\n");\r
+ Output.WriteLine (pFile, BYTES_PRE_LINE, " ", (INT8 *)&Info->mOffset, sizeof (UINT16));\r
+ Output.WriteLine (pFile, BYTES_PRE_LINE, " ", (INT8 *)&Info->mWidth, sizeof (UINT16));\r
+ }\r
+ fprintf (pFile, "\n};\n");\r
+ }\r
+\r
+ for (Item = mItemListHead; Item != NULL; Item = Item->mNext) {\r
+ if (Item->mId != NULL && Item->mInfoStrList != NULL) {\r
+ fprintf (pFile, "\nunsigned char %s%sDefault%s[] = {", BaseName, Item->mName, Item->mId);\r
\r
TotalLen = sizeof (UINT32);\r
for (Info = Item->mInfoStrList; Info != NULL; Info = Info->mNext) {\r
Output.WriteLine (pFile, BYTES_PRE_LINE, " ", (INT8 *)&TotalLen, sizeof (UINT32));\r
\r
for (Info = Item->mInfoStrList; Info != NULL; Info = Info->mNext) {\r
+ fprintf (pFile, "\n");\r
Output.WriteLine (pFile, BYTES_PRE_LINE, " ", (INT8 *)&Info->mOffset, sizeof (UINT16));\r
Output.WriteLine (pFile, BYTES_PRE_LINE, " ", (INT8 *)&Info->mWidth, sizeof (UINT16));\r
if (Info->mNext == NULL) {\r
} else {\r
Output.WriteLine (pFile, BYTES_PRE_LINE, " ", (INT8 *)Info->mValue, Info->mWidth);\r
}\r
- fprintf (pFile, "\n"); \r
}\r
- fprintf (pFile, "};\n"); \r
+ fprintf (pFile, "\n};\n");\r
}\r
}\r
}\r
{"UINT16", EFI_IFR_TYPE_NUM_SIZE_16, sizeof (UINT16), sizeof (UINT16)},\r
{"UINT8", EFI_IFR_TYPE_NUM_SIZE_8, sizeof (UINT8), sizeof (UINT8)},\r
{"BOOLEAN", EFI_IFR_TYPE_BOOLEAN, sizeof (BOOLEAN), sizeof (BOOLEAN)},\r
- {"EFI_HII_DATE", EFI_IFR_TYPE_DATE, sizeof (EFI_HII_DATE), sizeof (UINT8)},\r
+ {"EFI_HII_DATE", EFI_IFR_TYPE_DATE, sizeof (EFI_HII_DATE), sizeof (UINT16)},\r
{"EFI_STRING_ID", EFI_IFR_TYPE_STRING, sizeof (EFI_STRING_ID),sizeof (EFI_STRING_ID)},\r
{"EFI_HII_TIME", EFI_IFR_TYPE_TIME, sizeof (EFI_HII_TIME), sizeof (UINT8)},\r
{NULL, EFI_IFR_TYPE_OTHER, 0, 0}\r
}\r
if (c >= '0' && c <= '9') {\r
Value += (c - '0');\r
- } \r
+ }\r
}\r
\r
return Value;\r
\r
EFI_VFR_RETURN_CODE\r
CVfrVarDataTypeDB::ExtractStructTypeName (\r
- IN INT8 *&VarStr, \r
+ IN INT8 *&VarStr,\r
OUT INT8 *TName\r
)\r
{\r
\r
EFI_VFR_RETURN_CODE\r
CVfrVarDataTypeDB::ExtractFieldNameAndArrary (\r
- IN INT8 *&VarStr, \r
+ IN INT8 *&VarStr,\r
IN INT8 *FName,\r
OUT UINT32 &ArrayIdx\r
)\r
UINT32 Idx;\r
INT8 ArrayStr[MAX_NAME_LEN + 1];\r
\r
- ArrayIdx = INVALID_ARRAY_INDEX; \r
+ ArrayIdx = INVALID_ARRAY_INDEX;\r
\r
if (FName == NULL) {\r
return VFR_RETURN_FATAL_ERROR;\r
}\r
\r
while((*VarStr != '\0') &&\r
- (*VarStr != '.') && \r
- (*VarStr != '[') && \r
+ (*VarStr != '.') &&\r
+ (*VarStr != '[') &&\r
(*VarStr != ']')) {\r
*FName = *VarStr;\r
VarStr++;\r
\r
EFI_VFR_RETURN_CODE\r
CVfrVarDataTypeDB::GetTypeField (\r
- IN INT8 *FName, \r
- IN SVfrDataType *Type, \r
+ IN INT8 *FName,\r
+ IN SVfrDataType *Type,\r
OUT SVfrDataField *&Field\r
)\r
{\r
\r
EFI_VFR_RETURN_CODE\r
CVfrVarDataTypeDB::GetFieldOffset (\r
- IN SVfrDataField *Field, \r
+ IN SVfrDataField *Field,\r
IN UINT32 ArrayIdx,\r
OUT UINT32 &Offset\r
)\r
pSecondsField->mNext = NULL;\r
pSecondsField->mArrayNum = 0;\r
\r
- New->mMembers = pHoursField; \r
+ New->mMembers = pHoursField;\r
} else {\r
New->mMembers = NULL;\r
}\r
mNewDataType = NULL;\r
mCurrDataField = NULL;\r
mPackAlign = DEFAULT_PACK_ALIGN;\r
+ mPackStack = NULL;\r
\r
InternalTypesListInit ();\r
}\r
VOID\r
)\r
{\r
- SVfrDataType *pType;\r
- SVfrDataField *pField;\r
+ SVfrDataType *pType;\r
+ SVfrDataField *pField;\r
+ SVfrPackStackNode *pPack;\r
\r
if (mNewDataType != NULL) {\r
delete mNewDataType;\r
delete pType;\r
}\r
\r
+ while (mPackStack != NULL) {\r
+ pPack = mPackStack;\r
+ mPackStack = mPackStack->mNext;\r
+ delete pPack;\r
+ }\r
}\r
\r
EFI_VFR_RETURN_CODE\r
CVfrVarDataTypeDB::Pack (\r
- IN UINT32 Align\r
+ IN UINT32 LineNum,\r
+ IN UINT8 Action,\r
+ IN INT8 *Identifier,\r
+ IN UINT32 Number\r
)\r
{\r
- if (Align == 0) {\r
- return VFR_RETURN_INVALID_PARAMETER;\r
- } else if (Align > 1) {\r
- mPackAlign = Align + Align % 2;\r
- } else {\r
- mPackAlign = Align;\r
+ UINT32 PackAlign;\r
+ INT8 Msg[64] = {0, };\r
+\r
+ if (Action & VFR_PACK_SHOW) {\r
+ sprintf (Msg, "value of pragma pack(show) == %d", mPackAlign);\r
+ gCVfrErrorHandle.PrintMsg (LineNum, "", "Warning", Msg);\r
}\r
\r
- return VFR_RETURN_SUCCESS;\r
-}\r
+ if (Action & VFR_PACK_PUSH) {\r
+ SVfrPackStackNode *pNew = NULL;\r
\r
-VOID\r
-CVfrVarDataTypeDB::UnPack (\r
- VOID\r
- )\r
-{\r
- mPackAlign = DEFAULT_PACK_ALIGN;\r
+ if ((pNew = new SVfrPackStackNode (Identifier, mPackAlign)) == NULL) {\r
+ return VFR_RETURN_FATAL_ERROR;\r
+ }\r
+ pNew->mNext = mPackStack;\r
+ mPackStack = pNew;\r
+ }\r
+\r
+ if (Action & VFR_PACK_POP) {\r
+ SVfrPackStackNode *pNode = NULL;\r
+\r
+ if (mPackStack == NULL) {\r
+ gCVfrErrorHandle.PrintMsg (LineNum, "", "Warning", "#pragma pack(pop...) : more pops than pushes");\r
+ }\r
+\r
+ for (pNode = mPackStack; pNode != NULL; pNode = pNode->mNext) {\r
+ if (pNode->Match (Identifier) == TRUE) {\r
+ mPackAlign = pNode->mNumber;\r
+ mPackStack = pNode->mNext;\r
+ }\r
+ }\r
+ }\r
+\r
+ if (Action & VFR_PACK_ASSIGN) {\r
+ PackAlign = (Number > 1) ? Number + Number % 2 : Number;\r
+ if ((PackAlign == 0) || (PackAlign > 16)) {\r
+ gCVfrErrorHandle.PrintMsg (LineNum, "", "Warning", "expected pragma parameter to be '1', '2', '4', '8', or '16'");\r
+ } else {\r
+ mPackAlign = PackAlign;\r
+ }\r
+ }\r
+\r
+ return VFR_RETURN_SUCCESS;\r
}\r
\r
VOID\r
\r
EFI_VFR_RETURN_CODE\r
CVfrVarDataTypeDB::DataTypeAddField (\r
- IN INT8 *FieldName, \r
- IN INT8 *TypeName, \r
+ IN INT8 *FieldName,\r
+ IN INT8 *TypeName,\r
IN UINT32 ArrayNum\r
)\r
{\r
mNewDataType->mMembers = pNewField;\r
pNewField->mNext = NULL;\r
} else {\r
- for (pTmp = mNewDataType->mMembers; pTmp->mNext != NULL; pTmp = pTmp->mNext) \r
+ for (pTmp = mNewDataType->mMembers; pTmp->mNext != NULL; pTmp = pTmp->mNext)\r
;\r
pTmp->mNext = pNewField;\r
pNewField->mNext = NULL;\r
return VFR_RETURN_UNDEFINED;\r
}\r
\r
+EFI_VFR_RETURN_CODE\r
+CVfrVarDataTypeDB::GetDataTypeSize (\r
+ IN UINT8 DataType,\r
+ OUT UINT32 *Size\r
+ )\r
+{\r
+ SVfrDataType *pDataType = NULL;\r
+\r
+ if (Size == NULL) {\r
+ return VFR_RETURN_FATAL_ERROR;\r
+ }\r
+\r
+ *Size = 0;\r
+ DataType = DataType & 0x0F;\r
+\r
+ //\r
+ // For user defined data type, the size can't be got by this function.\r
+ //\r
+ if (DataType == EFI_IFR_TYPE_OTHER) {\r
+ return VFR_RETURN_SUCCESS;\r
+ }\r
+\r
+ for (pDataType = mDataTypeList; pDataType != NULL; pDataType = pDataType->mNext) {\r
+ if (DataType == pDataType->mType) {\r
+ *Size = pDataType->mTotalSize;\r
+ return VFR_RETURN_SUCCESS;\r
+ }\r
+ }\r
+\r
+ return VFR_RETURN_UNDEFINED;\r
+}\r
+\r
EFI_VFR_RETURN_CODE\r
CVfrVarDataTypeDB::GetDataTypeSize (\r
IN INT8 *TypeName,\r
\r
EFI_VFR_RETURN_CODE\r
CVfrVarDataTypeDB::GetDataFieldInfo (\r
- IN INT8 *VarStr, \r
- OUT UINT16 &Offset, \r
- OUT UINT8 &Type, \r
+ IN INT8 *VarStr,\r
+ OUT UINT16 &Offset,\r
+ OUT UINT8 &Type,\r
OUT UINT32 &Size\r
)\r
{\r
\r
EFI_VFR_RETURN_CODE\r
CVfrVarDataTypeDB::GetUserDefinedTypeNameList (\r
- OUT INT8 ***NameList, \r
+ OUT INT8 ***NameList,\r
OUT UINT32 *ListSize\r
)\r
{\r
return VFR_RETURN_SUCCESS;\r
}\r
\r
-EFI_VFR_RETURN_CODE \r
+EFI_VFR_RETURN_CODE\r
CVfrDataStorage::DeclareEfiVarStore (\r
- IN INT8 *StoreName, \r
- IN EFI_GUID *Guid, \r
+ IN INT8 *StoreName,\r
+ IN EFI_GUID *Guid,\r
IN EFI_STRING_ID NameStrId,\r
IN UINT32 VarSize\r
)\r
return VFR_RETURN_SUCCESS;\r
}\r
\r
-EFI_VFR_RETURN_CODE \r
+EFI_VFR_RETURN_CODE\r
CVfrDataStorage::DeclareBufferVarStore (\r
- IN INT8 *StoreName, \r
- IN EFI_GUID *Guid, \r
+ IN INT8 *StoreName,\r
+ IN EFI_GUID *Guid,\r
IN CVfrVarDataTypeDB *DataTypeDB,\r
IN INT8 *TypeName,\r
IN EFI_VARSTORE_ID VarStoreId\r
return VFR_RETURN_SUCCESS;\r
}\r
\r
-EFI_VFR_RETURN_CODE \r
+EFI_VFR_RETURN_CODE\r
CVfrDataStorage::GetVarStoreId (\r
IN INT8 *StoreName,\r
OUT EFI_VARSTORE_ID *VarStoreId\r
return VFR_RETURN_UNDEFINED;\r
}\r
\r
+EFI_VFR_VARSTORE_TYPE\r
+CVfrDataStorage::GetVarStoreType (\r
+ IN EFI_VARSTORE_ID VarStoreId\r
+ )\r
+{\r
+ SVfrVarStorageNode *pNode;\r
+ EFI_VFR_VARSTORE_TYPE VarStoreType;\r
+\r
+ VarStoreType = EFI_VFR_VARSTORE_INVALID;\r
+\r
+ if (VarStoreId == EFI_VARSTORE_ID_INVALID) {\r
+ return VarStoreType;\r
+ }\r
+\r
+ for (pNode = mBufferVarStoreList; pNode != NULL; pNode = pNode->mNext) {\r
+ if (pNode->mVarStoreId == VarStoreId) {\r
+ VarStoreType = pNode->mVarStoreType;\r
+ return VarStoreType;\r
+ }\r
+ }\r
+\r
+ for (pNode = mEfiVarStoreList; pNode != NULL; pNode = pNode->mNext) {\r
+ if (pNode->mVarStoreId == VarStoreId) {\r
+ VarStoreType = pNode->mVarStoreType;\r
+ return VarStoreType;\r
+ }\r
+ }\r
+\r
+ for (pNode = mNameVarStoreList; pNode != NULL; pNode = pNode->mNext) {\r
+ if (pNode->mVarStoreId == VarStoreId) {\r
+ VarStoreType = pNode->mVarStoreType;\r
+ return VarStoreType;\r
+ }\r
+ }\r
+\r
+ return VarStoreType;\r
+}\r
+\r
EFI_VFR_RETURN_CODE\r
CVfrDataStorage::GetVarStoreName (\r
- IN EFI_VARSTORE_ID VarStoreId, \r
+ IN EFI_VARSTORE_ID VarStoreId,\r
OUT INT8 **VarStoreName\r
)\r
{\r
INT8 NewReqElt[128] = {'\0',};\r
INT8 *OldReqElt = NULL;\r
SVfrVarStorageNode *pNode = NULL;\r
- EFI_IFR_TYPE_VALUE Value;\r
+ EFI_IFR_TYPE_VALUE Value = {0};\r
\r
for (pNode = mBufferVarStoreList; pNode != NULL; pNode = pNode->mNext) {\r
if (strcmp (pNode->mVarStoreName, StoreName) == NULL) {\r
\r
SVfrDefaultStoreNode::SVfrDefaultStoreNode (\r
IN EFI_IFR_DEFAULTSTORE *ObjBinAddr,\r
- IN INT8 *RefName, \r
- IN EFI_STRING_ID DefaultStoreNameId, \r
+ IN INT8 *RefName,\r
+ IN EFI_STRING_ID DefaultStoreNameId,\r
IN UINT16 DefaultId\r
)\r
{\r
}\r
\r
/*\r
- * assign new reference name or new default store name id only if \r
+ * assign new reference name or new default store name id only if\r
* the original is invalid\r
*/\r
EFI_VFR_RETURN_CODE\r
STATIC\r
EFI_VFR_RETURN_CODE\r
AltCfgItemPrintToBuffer (\r
- IN INT8 *NewAltCfg, \r
- IN EFI_VARSTORE_INFO Info, \r
+ IN INT8 *NewAltCfg,\r
+ IN EFI_VARSTORE_INFO Info,\r
IN UINT8 Type,\r
IN EFI_IFR_TYPE_VALUE Value\r
)\r
\r
if (NewAltCfg != NULL) {\r
Count = sprintf (\r
- NewAltCfg, \r
- "&OFFSET=%x&WIDTH=%x&VALUE=", \r
- Info.mInfo.mVarOffset, \r
+ NewAltCfg,\r
+ "&OFFSET=%x&WIDTH=%x&VALUE=",\r
+ Info.mInfo.mVarOffset,\r
Info.mVarTotalSize\r
);\r
NewAltCfg += Count;\r
}\r
}\r
\r
- return VFR_RETURN_FATAL_ERROR; \r
+ return VFR_RETURN_FATAL_ERROR;\r
}\r
\r
EFI_VFR_RETURN_CODE\r
{\r
SVfrDefaultStoreNode *pNode = NULL;\r
INT8 NewAltCfg[2 * 2 * sizeof (UINT16) + 1] = {0,};\r
+ INTN Returnvalue = 0;\r
\r
if (VarStoreName == NULL) {\r
return VFR_RETURN_FATAL_ERROR;\r
gCVfrBufferConfig.Open ();\r
\r
sprintf (NewAltCfg, "%04x", pNode->mDefaultId);\r
- if ((gCVfrBufferConfig.Select(VarStoreName) == 0) && \r
- (gCVfrBufferConfig.Select(VarStoreName, NewAltCfg) != 0)) {\r
- if (gCVfrBufferConfig.Write ('i', VarStoreName, NewAltCfg, Type, Info.mInfo.mVarOffset, Info.mVarTotalSize, Value) != 0) {\r
+ if ((Returnvalue = gCVfrBufferConfig.Select(VarStoreName)) == 0) {\r
+ if ((Returnvalue = gCVfrBufferConfig.Write ('a', VarStoreName, NewAltCfg, Type, Info.mInfo.mVarOffset, Info.mVarTotalSize, Value)) != 0) {\r
goto WriteError;\r
}\r
}\r
\r
- if (gCVfrBufferConfig.Write ('a', VarStoreName, NULL, Type, Info.mInfo.mVarOffset, Info.mVarTotalSize, Value) != 0) {\r
- goto WriteError;\r
- }\r
-\r
gCVfrBufferConfig.Close ();\r
\r
return VFR_RETURN_SUCCESS;\r
\r
WriteError:\r
gCVfrBufferConfig.Close ();\r
- return VFR_RETURN_FATAL_ERROR;\r
+ return (EFI_VFR_RETURN_CODE)Returnvalue;\r
}\r
\r
SVfrRuleNode::SVfrRuleNode (\r
- IN INT8 *RuleName, \r
+ IN INT8 *RuleName,\r
IN UINT8 RuleId\r
)\r
{\r
mVarTotalSize = Info.mVarTotalSize;\r
}\r
\r
-BOOLEAN \r
+BOOLEAN\r
EFI_VARSTORE_INFO::operator == (\r
IN EFI_VARSTORE_INFO *Info\r
)\r
return (mFreeQIdBitMap[Index] & (0x80000000 >> Offset)) == 0;\r
}\r
\r
-VOID \r
+VOID\r
CVfrQuestionDB::MarkQuestionIdUsed (\r
IN EFI_QUESTION_ID QId\r
)\r
mFreeQIdBitMap[Index] |= (0x80000000 >> Offset);\r
}\r
\r
-VOID \r
+VOID\r
CVfrQuestionDB::MarkQuestionIdUnused (\r
IN EFI_QUESTION_ID QId\r
)\r
\r
VOID\r
CVfrQuestionDB::RegisterOldDateQuestion (\r
- IN INT8 *YearVarId, \r
- IN INT8 *MonthVarId, \r
- IN INT8 *DayVarId, \r
+ IN INT8 *YearVarId,\r
+ IN INT8 *MonthVarId,\r
+ IN INT8 *DayVarId,\r
IN OUT EFI_QUESTION_ID &QuestionId\r
)\r
{\r
VOID\r
CVfrQuestionDB::RegisterNewDateQuestion (\r
IN INT8 *Name,\r
- IN INT8 *BaseVarId, \r
+ IN INT8 *BaseVarId,\r
IN OUT EFI_QUESTION_ID &QuestionId\r
)\r
{\r
\r
VOID\r
CVfrQuestionDB::RegisterOldTimeQuestion (\r
- IN INT8 *HourVarId, \r
- IN INT8 *MinuteVarId, \r
- IN INT8 *SecondVarId, \r
+ IN INT8 *HourVarId,\r
+ IN INT8 *MinuteVarId,\r
+ IN INT8 *SecondVarId,\r
IN OUT EFI_QUESTION_ID &QuestionId\r
)\r
{\r
return VFR_RETURN_SUCCESS;\r
}\r
\r
-VOID \r
+VOID\r
CVfrQuestionDB::GetQuestionId (\r
IN INT8 *Name,\r
IN INT8 *VarIdStr,\r
return ;\r
}\r
\r
-EFI_VFR_RETURN_CODE \r
+EFI_VFR_RETURN_CODE\r
CVfrQuestionDB::FindQuestion (\r
IN EFI_QUESTION_ID QuestionId\r
)\r
return VFR_RETURN_UNDEFINED;\r
}\r
\r
-EFI_VFR_RETURN_CODE \r
+EFI_VFR_RETURN_CODE\r
CVfrQuestionDB::FindQuestion (\r
IN INT8 *Name\r
)\r