mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-10-30 18:53:45 +01:00 
			
		
		
		
	https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Bob Feng <bob.c.feng@intel.com>
		
			
				
	
	
		
			96 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| ## @file
 | |
| # This file is used to parse a xml file of .PKG file
 | |
| #
 | |
| # Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
 | |
| #
 | |
| # SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| #
 | |
| 
 | |
| '''
 | |
| XmlParserMisc
 | |
| '''
 | |
| from Object.POM.CommonObject import TextObject
 | |
| from Logger.StringTable import ERR_XML_PARSER_REQUIRED_ITEM_MISSING
 | |
| from Logger.ToolError import PARSER_ERROR
 | |
| import Logger.Log as Logger
 | |
| 
 | |
| ## ConvertVariableName()
 | |
| # Convert VariableName to be L"string",
 | |
| # input of UCS-2 format Hex Array or L"string" (C style.) could be converted successfully,
 | |
| # others will not.
 | |
| #
 | |
| # @param VariableName: string need to be converted
 | |
| # @retval: the L quoted string converted if success, else None will be returned
 | |
| #
 | |
| def ConvertVariableName(VariableName):
 | |
|     VariableName = VariableName.strip()
 | |
|     #
 | |
|     # check for L quoted string
 | |
|     #
 | |
|     if VariableName.startswith('L"') and VariableName.endswith('"'):
 | |
|         return VariableName
 | |
| 
 | |
|     #
 | |
|     # check for Hex Array, it should be little endian even number of hex numbers
 | |
|     #
 | |
|     ValueList = VariableName.split(' ')
 | |
|     if len(ValueList)%2 == 1:
 | |
|         return None
 | |
| 
 | |
|     TransferedStr = ''
 | |
| 
 | |
|     Index = 0
 | |
| 
 | |
|     while Index < len(ValueList):
 | |
|         FirstByte = int(ValueList[Index], 16)
 | |
|         SecondByte = int(ValueList[Index + 1], 16)
 | |
|         if SecondByte != 0:
 | |
|             return None
 | |
| 
 | |
|         if FirstByte not in range(0x20, 0x7F):
 | |
|             return None
 | |
|         TransferedStr += ('%c')%FirstByte
 | |
|         Index = Index + 2
 | |
| 
 | |
|     return 'L"' + TransferedStr + '"'
 | |
| 
 | |
| ## IsRequiredItemListNull
 | |
| #
 | |
| # Check if a required XML section item/attribue is NULL
 | |
| #
 | |
| # @param ItemList:     The list of items to be checked
 | |
| # @param XmlTreeLevel: The error message tree level
 | |
| #
 | |
| def IsRequiredItemListNull(ItemDict, XmlTreeLevel):
 | |
|     for Key in ItemDict:
 | |
|         if not ItemDict[Key]:
 | |
|             Msg = "->".join(Node for Node in XmlTreeLevel)
 | |
|             ErrorMsg = ERR_XML_PARSER_REQUIRED_ITEM_MISSING % (Key, Msg)
 | |
|             Logger.Error('\nUPT', PARSER_ERROR, ErrorMsg, RaiseError=True)
 | |
| 
 | |
| ## Get help text
 | |
| #
 | |
| # @param HelpText
 | |
| #
 | |
| def GetHelpTextList(HelpText):
 | |
|     HelpTextList = []
 | |
|     for HelT in HelpText:
 | |
|         HelpTextObj = TextObject()
 | |
|         HelpTextObj.SetLang(HelT.Lang)
 | |
|         HelpTextObj.SetString(HelT.HelpText)
 | |
|         HelpTextList.append(HelpTextObj)
 | |
|     return HelpTextList
 | |
| 
 | |
| ## Get Prompt text
 | |
| #
 | |
| # @param Prompt
 | |
| #
 | |
| def GetPromptList(Prompt):
 | |
|     PromptList = []
 | |
|     for SubPrompt in Prompt:
 | |
|         PromptObj = TextObject()
 | |
|         PromptObj.SetLang(SubPrompt.Lang)
 | |
|         PromptObj.SetString(SubPrompt.Prompt)
 | |
|         PromptList.append(PromptObj)
 | |
|     return PromptList
 |