NewValue = self.GetFieldValueFromComm(pcdvalue, TokenSpaceGuidCName, TokenCName, FieldName)\r
GlobalData.BuildOptionPcd[i] = (TokenSpaceGuidCName, TokenCName, FieldName,NewValue,("build command options",1))\r
else:\r
+ # Replace \' to ', \\\' to \'\r
+ pcdvalue = pcdvalue.replace("\\\\\\'", '\\\\\\"').replace('\\\'', '\'').replace('\\\\\\"', "\\'")\r
for key in self.DecPcds:\r
PcdItem = self.DecPcds[key]\r
if HasTokenSpace:\r
except BadExpression, Value:\r
EdkLogger.error('Parser', FORMAT_INVALID, 'PCD [%s.%s] Value "%s", %s' %\r
(TokenSpaceGuidCName, TokenCName, pcdvalue, Value))\r
- if PcdDatumType == "VOID*":\r
+ if PcdDatumType not in [TAB_UINT8, TAB_UINT16, TAB_UINT32, TAB_UINT64, 'BOOLEAN']:\r
pcdvalue = 'H' + pcdvalue\r
elif pcdvalue.startswith("L'"):\r
try:\r
except BadExpression, Value:\r
EdkLogger.error('Parser', FORMAT_INVALID, 'PCD [%s.%s] Value "%s", %s' %\r
(TokenSpaceGuidCName, TokenCName, pcdvalue, Value))\r
- if pcdvalue.startswith('{'):\r
+ if PcdDatumType not in [TAB_UINT8, TAB_UINT16, TAB_UINT32, TAB_UINT64, 'BOOLEAN']:\r
pcdvalue = 'H' + pcdvalue\r
elif pcdvalue.startswith("'"):\r
try:\r
except BadExpression, Value:\r
EdkLogger.error('Parser', FORMAT_INVALID, 'PCD [%s.%s] Value "%s", %s' %\r
(TokenSpaceGuidCName, TokenCName, pcdvalue, Value))\r
- if pcdvalue.startswith('{'):\r
+ if PcdDatumType not in [TAB_UINT8, TAB_UINT16, TAB_UINT32, TAB_UINT64, 'BOOLEAN']:\r
pcdvalue = 'H' + pcdvalue\r
elif pcdvalue.startswith('L'):\r
pcdvalue = 'L"' + pcdvalue[1:] + '"'\r
try:\r
pcdvalue = ValueExpressionEx(pcdvalue, PcdDatumType, self._GuidDict)(True)\r
except BadExpression, Value:\r
- EdkLogger.error('Parser', FORMAT_INVALID, 'PCD [%s.%s] Value "%s", %s' %\r
- (TokenSpaceGuidCName, TokenCName, pcdvalue, Value))\r
+ try:\r
+ pcdvalue = '"' + pcdvalue + '"'\r
+ pcdvalue = ValueExpressionEx(pcdvalue, PcdDatumType, self._GuidDict)(True)\r
+ except BadExpression, Value:\r
+ EdkLogger.error('Parser', FORMAT_INVALID, 'PCD [%s.%s] Value "%s", %s' %\r
+ (TokenSpaceGuidCName, TokenCName, pcdvalue, Value))\r
NewValue = BuildOptionPcdValueFormat(TokenSpaceGuidCName, TokenCName, PcdDatumType, pcdvalue)\r
FoundFlag = True\r
else:\r
except BadExpression, Value:\r
EdkLogger.error('Parser', FORMAT_INVALID, 'PCD [%s.%s] Value "%s", %s' %\r
(TokenSpaceGuidCName, TokenCName, pcdvalue, Value))\r
- if PcdDatumType == "VOID*":\r
+ if PcdDatumType not in [TAB_UINT8, TAB_UINT16, TAB_UINT32, TAB_UINT64,'BOOLEAN']:\r
pcdvalue = 'H' + pcdvalue\r
elif pcdvalue.startswith("L'"):\r
try:\r
except BadExpression, Value:\r
EdkLogger.error('Parser', FORMAT_INVALID, 'PCD [%s.%s] Value "%s", %s' %\r
(TokenSpaceGuidCName, TokenCName, pcdvalue, Value))\r
- if pcdvalue.startswith('{'):\r
+ if PcdDatumType not in [TAB_UINT8, TAB_UINT16, TAB_UINT32, TAB_UINT64, 'BOOLEAN']:\r
pcdvalue = 'H' + pcdvalue\r
elif pcdvalue.startswith("'"):\r
try:\r
except BadExpression, Value:\r
EdkLogger.error('Parser', FORMAT_INVALID, 'PCD [%s.%s] Value "%s", %s' %\r
(TokenSpaceGuidCName, TokenCName, pcdvalue, Value))\r
- if pcdvalue.startswith('{'):\r
+ if PcdDatumType not in [TAB_UINT8, TAB_UINT16, TAB_UINT32, TAB_UINT64, 'BOOLEAN']:\r
pcdvalue = 'H' + pcdvalue\r
elif pcdvalue.startswith('L'):\r
pcdvalue = 'L"' + pcdvalue[1:] + '"'\r
try:\r
pcdvalue = ValueExpressionEx(pcdvalue, PcdDatumType, self._GuidDict)(True)\r
except BadExpression, Value:\r
- EdkLogger.error('Parser', FORMAT_INVALID,\r
- 'PCD [%s.%s] Value "%s", %s' %\r
- (TokenSpaceGuidCName, TokenCName, pcdvalue, Value))\r
+ try:\r
+ pcdvalue = '"' + pcdvalue + '"'\r
+ pcdvalue = ValueExpressionEx(pcdvalue, PcdDatumType, self._GuidDict)(True)\r
+ except BadExpression, Value:\r
+ EdkLogger.error('Parser', FORMAT_INVALID, 'PCD [%s.%s] Value "%s", %s' %\r
+ (TokenSpaceGuidCName, TokenCName, pcdvalue, Value))\r
NewValue = BuildOptionPcdValueFormat(TokenSpaceGuidCName, TokenCName, PcdDatumType, pcdvalue)\r
FoundFlag = True\r
else:\r