BaseTools/Source/Python/Common/String.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
From: Yunhua Feng <yunhuax.feng@intel.com>
Fix the bug to support use '|' or '||' in DSC file's Pcd value.
Cc: Liming Gao <liming.gao@intel.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Yunhua Feng <yunhuax.feng@intel.com>
---
BaseTools/Source/Python/Common/String.py | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/BaseTools/Source/Python/Common/String.py b/BaseTools/Source/Python/Common/String.py
index 5c8d1e0..81c053d 100644
--- a/BaseTools/Source/Python/Common/String.py
+++ b/BaseTools/Source/Python/Common/String.py
@@ -44,16 +44,17 @@ gHumanReadableVerPatt = re.compile(r'([1-9][0-9]*|0)\.[0-9]{1,2}$')
def GetSplitValueList(String, SplitTag=DataType.TAB_VALUE_SPLIT, MaxSplit= -1):
ValueList = []
Last = 0
Escaped = False
InString = False
+ InParenthesis = 0
for Index in range(0, len(String)):
Char = String[Index]
if not Escaped:
# Found a splitter not in a string, split it
- if not InString and Char == SplitTag:
+ if not InString and InParenthesis == 0 and Char == SplitTag:
ValueList.append(String[Last:Index].strip())
Last = Index + 1
if MaxSplit > 0 and len(ValueList) >= MaxSplit:
break
@@ -62,10 +63,14 @@ def GetSplitValueList(String, SplitTag=DataType.TAB_VALUE_SPLIT, MaxSplit= -1):
elif Char == '"':
if not InString:
InString = True
else:
InString = False
+ elif Char == '(':
+ InParenthesis = InParenthesis + 1
+ elif Char == ')':
+ InParenthesis = InParenthesis - 1
else:
Escaped = False
if Last < len(String):
ValueList.append(String[Last:].strip())
--
2.6.1.windows.1
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Reviewed-by: Liming Gao <liming.gao@intel.com> >-----Original Message----- >From: Zhu, Yonghong >Sent: Tuesday, June 20, 2017 4:05 PM >To: edk2-devel@lists.01.org >Cc: Feng, YunhuaX <yunhuax.feng@intel.com>; Gao, Liming ><liming.gao@intel.com> >Subject: [Patch] BaseTools: Fix the bug that use '|' or '||' in DSC file's Pcd value > >From: Yunhua Feng <yunhuax.feng@intel.com> > >Fix the bug to support use '|' or '||' in DSC file's Pcd value. > >Cc: Liming Gao <liming.gao@intel.com> >Cc: Yonghong Zhu <yonghong.zhu@intel.com> >Contributed-under: TianoCore Contribution Agreement 1.0 >Signed-off-by: Yunhua Feng <yunhuax.feng@intel.com> >--- > BaseTools/Source/Python/Common/String.py | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > >diff --git a/BaseTools/Source/Python/Common/String.py >b/BaseTools/Source/Python/Common/String.py >index 5c8d1e0..81c053d 100644 >--- a/BaseTools/Source/Python/Common/String.py >+++ b/BaseTools/Source/Python/Common/String.py >@@ -44,16 +44,17 @@ gHumanReadableVerPatt = re.compile(r'([1-9][0- >9]*|0)\.[0-9]{1,2}$') > def GetSplitValueList(String, SplitTag=DataType.TAB_VALUE_SPLIT, MaxSplit= >-1): > ValueList = [] > Last = 0 > Escaped = False > InString = False >+ InParenthesis = 0 > for Index in range(0, len(String)): > Char = String[Index] > > if not Escaped: > # Found a splitter not in a string, split it >- if not InString and Char == SplitTag: >+ if not InString and InParenthesis == 0 and Char == SplitTag: > ValueList.append(String[Last:Index].strip()) > Last = Index + 1 > if MaxSplit > 0 and len(ValueList) >= MaxSplit: > break > >@@ -62,10 +63,14 @@ def GetSplitValueList(String, >SplitTag=DataType.TAB_VALUE_SPLIT, MaxSplit= -1): > elif Char == '"': > if not InString: > InString = True > else: > InString = False >+ elif Char == '(': >+ InParenthesis = InParenthesis + 1 >+ elif Char == ')': >+ InParenthesis = InParenthesis - 1 > else: > Escaped = False > > if Last < len(String): > ValueList.append(String[Last:].strip()) >-- >2.6.1.windows.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
© 2016 - 2024 Red Hat, Inc.