summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorBin Meng <bmeng.cn@gmail.com>2016-06-26 23:24:29 -0700
committerSimon Glass <sjg@chromium.org>2016-07-11 14:06:44 -0600
commit13b98d95bab89bcac75c8a187577e7cc3754d194 (patch)
tree50993e10c8c32c8f277acf2fd11f57c132db0a18 /tools
parente7df218c3b446e02c5549b79dd76b65054d6147d (diff)
tools: patman: Handle tag sections without an 'END'
'Cover-letter', 'Series-notes' and 'Commit-notes' tags require an 'END' to be put at the end of its section. If we forget to put an 'END' in those sections, and these sections are followed by another patman tag, patman generates incorrect patches. This adds codes to handle such scenario. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Acked-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'tools')
-rw-r--r--tools/patman/patchstream.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/tools/patman/patchstream.py b/tools/patman/patchstream.py
index 2c4efc57f1..ce8ffb86bf 100644
--- a/tools/patman/patchstream.py
+++ b/tools/patman/patchstream.py
@@ -169,6 +169,26 @@ class PatchStream:
elif commit_match:
self.state = STATE_MSG_HEADER
+ # If a tag is detected, but we are already in a section,
+ # this means 'END' is missing for that section, fix it up.
+ if series_tag_match or commit_tag_match or \
+ cover_match or cover_cc_match or signoff_match:
+ if self.in_section:
+ self.warn.append("Missing 'END' in section '%s'" % self.in_section)
+ if self.in_section == 'cover':
+ self.series.cover = self.section
+ elif self.in_section == 'notes':
+ if self.is_log:
+ self.series.notes += self.section
+ elif self.in_section == 'commit-notes':
+ if self.is_log:
+ self.commit.notes += self.section
+ else:
+ self.warn.append("Unknown section '%s'" % self.in_section)
+ self.in_section = None
+ self.skip_blank = True
+ self.section = []
+
# If we are in a section, keep collecting lines until we see END
if self.in_section:
if line == 'END':