Message ID | 20110209193505.GA11850@zap |
---|---|
State | Changes Requested |
Headers | show |
Hi Dirk, > Reset the state if we can't proceed after the optional extended header > line. I was originally intending for patchwork to be fairly permissive with what it accepts as part of the patch, as patch(1) is happy to ignore stuff that isn't part of the actual patch. Looks like it's being *too* permissive though. I think a nicer fix would be to drop the current parse buffer (ie, make it part of the comment) if we see '^diff' again, rather than allowing for only one line between '^diff' and '^--- '. This way we should only see entire hunks ending up in the patch bufffer. Cheers, Jeremy
diff --git a/apps/patchwork/parser.py b/apps/patchwork/parser.py index 24631b7..985e196 100644 --- a/apps/patchwork/parser.py +++ b/apps/patchwork/parser.py @@ -62,6 +62,7 @@ def parse_patch(text): # line counts while parsing a patch hunk lc = (0, 0) hunk = 0 + seen_extended_header_line = False for line in text.decode('utf-8').split('\n'): line += '\n' @@ -83,6 +84,16 @@ def parse_patch(text): buf += line if line.startswith('--- '): state = 2 + seen_extended_header_line = False + + elif not seen_extended_header_line: + seen_extended_header_line = True + + else: + seen_extended_header_line = False + state = 0 + commentbuf += buf + line + buf = '' elif state == 2: if line.startswith('+++ '):
Reset the state if we can't proceed after the optional extended header line. Signed-off-by: Dirk Wallenstein <halsmit@t-online.de> --- This should do the trick -- at least for git-format-patch patches. Maybe we need a class here to be able to start over with the current line. apps/patchwork/parser.py | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-)