## @file\r
# Parser a Inf file and Get specify section data.\r
#\r
-# Copyright (c) 2007 - 2012, 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
-# which accompanies this distribution. The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
+# SPDX-License-Identifier: BSD-2-Clause-Patent\r
#\r
\r
## Import Modules\r
import Common.EdkLogger as EdkLogger\r
from Common.BuildToolError import *\r
from Common.DataType import *\r
- \r
+\r
\r
class InfSectionParser():\r
def __init__(self, FilePath):\r
self._FilePath = FilePath\r
self._FileSectionDataList = []\r
self._ParserInf()\r
- \r
+\r
def _ParserInf(self):\r
- Filename = self._FilePath\r
FileLinesList = []\r
UserExtFind = False\r
FindEnd = True\r
FileLastLine = False\r
SectionLine = ''\r
SectionData = []\r
- \r
+\r
try:\r
- FileLinesList = open(Filename, "r", 0).readlines()\r
+ with open(self._FilePath, "r") as File:\r
+ FileLinesList = File.readlines()\r
except BaseException:\r
- EdkLogger.error("build", AUTOGEN_ERROR, 'File %s is opened failed.' % Filename)\r
- \r
+ EdkLogger.error("build", AUTOGEN_ERROR, 'File %s is opened failed.' % self._FilePath)\r
+\r
for Index in range(0, len(FileLinesList)):\r
line = str(FileLinesList[Index]).strip()\r
if Index + 1 == len(FileLinesList):\r
if UserExtFind and FindEnd == False:\r
if line:\r
SectionData.append(line)\r
- if line.lower().startswith(TAB_SECTION_START) and line.lower().endswith(TAB_SECTION_END):\r
+ if line.startswith(TAB_SECTION_START) and line.endswith(TAB_SECTION_END):\r
SectionLine = line\r
UserExtFind = True\r
FindEnd = False\r
- \r
+\r
if (NextLine != '' and NextLine[0] == TAB_SECTION_START and \\r
NextLine[-1] == TAB_SECTION_END) or FileLastLine:\r
UserExtFind = False\r
FindEnd = True\r
self._FileSectionDataList.append({SectionLine: SectionData[:]})\r
- SectionData = []\r
+ del SectionData[:]\r
SectionLine = ''\r
- \r
+\r
# Get user extension TianoCore data\r
#\r
# @return: a list include some dictionary that key is section and value is a list contain all data.\r
if not self._FileSectionDataList:\r
return UserExtensionTianoCore\r
for SectionDataDict in self._FileSectionDataList:\r
- for key in SectionDataDict.keys():\r
+ for key in SectionDataDict:\r
if key.lower().startswith("[userextensions") and key.lower().find('.tianocore.') > -1:\r
SectionLine = key.lstrip(TAB_SECTION_START).rstrip(TAB_SECTION_END)\r
SubSectionList = [SectionLine]\r
UserExtensionTianoCore.append({SubSection: SectionDataDict[key]})\r
return UserExtensionTianoCore\r
\r
- # Get depex expresion\r
+ # Get depex expression\r
#\r
# @return: a list include some dictionary that key is section and value is a list contain all data.\r
def GetDepexExpresionList(self):\r
- DepexExpresionList = []\r
+ DepexExpressionList = []\r
if not self._FileSectionDataList:\r
- return DepexExpresionList\r
+ return DepexExpressionList\r
for SectionDataDict in self._FileSectionDataList:\r
- for key in SectionDataDict.keys():\r
+ for key in SectionDataDict:\r
if key.lower() == "[depex]" or key.lower().startswith("[depex."):\r
SectionLine = key.lstrip(TAB_SECTION_START).rstrip(TAB_SECTION_END)\r
SubSectionList = [SectionLine]\r
SubKey = (SectionList[1], SectionList[2])\r
else:\r
EdkLogger.error("build", AUTOGEN_ERROR, 'Section %s is invalid.' % key)\r
- DepexExpresionList.append({SubKey: SectionDataDict[key]})\r
- return DepexExpresionList\r
+ DepexExpressionList.append({SubKey: SectionDataDict[key]})\r
+ return DepexExpressionList\r
\r
\r
\r