65 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
| ---
 | |
|  builtin-mailinfo.c |   37 ++++++++++++++++++++++++++++++++++++-
 | |
|  1 files changed, 36 insertions(+), 1 deletions(-)
 | |
| 
 | |
| diff --git a/builtin-mailinfo.c b/builtin-mailinfo.c
 | |
| index b0b5d8f..461c47e 100644
 | |
| --- a/builtin-mailinfo.c
 | |
| +++ b/builtin-mailinfo.c
 | |
| @@ -712,6 +712,34 @@ static inline int patchbreak(const struct strbuf *line)
 | |
|  	return 0;
 | |
|  }
 | |
|  
 | |
| +static int scissors(const struct strbuf *line)
 | |
| +{
 | |
| +	size_t i, len = line->len;
 | |
| +	int scissors_dashes_seen = 0;
 | |
| +	const char *buf = line->buf;
 | |
| +
 | |
| +	for (i = 0; i < len; i++) {
 | |
| +		if (isspace(buf[i]))
 | |
| +			continue;
 | |
| +		if (buf[i] == '-') {
 | |
| +			scissors_dashes_seen |= 02;
 | |
| +			continue;
 | |
| +		}
 | |
| +		if (i + 1 < len && !memcmp(buf + i, ">8", 2)) {
 | |
| +			scissors_dashes_seen |= 01;
 | |
| +			i++;
 | |
| +			continue;
 | |
| +		}
 | |
| +		if (i + 7 < len && !memcmp(buf + i, "cut here", 8)) {
 | |
| +			i += 7;
 | |
| +			continue;
 | |
| +		}
 | |
| +		/* everything else --- not scissors */
 | |
| +		break;
 | |
| +	}
 | |
| +	return scissors_dashes_seen == 03;
 | |
| +}
 | |
| +
 | |
|  static int handle_commit_msg(struct strbuf *line)
 | |
|  {
 | |
|  	static int still_looking = 1;
 | |
| @@ -723,10 +751,17 @@ static int handle_commit_msg(struct strbuf *line)
 | |
|  		strbuf_ltrim(line);
 | |
|  		if (!line->len)
 | |
|  			return 0;
 | |
| -		if ((still_looking = check_header(line, s_hdr_data, 0)) != 0)
 | |
| +		still_looking = check_header(line, s_hdr_data, 0);
 | |
| +		if (still_looking)
 | |
|  			return 0;
 | |
|  	}
 | |
|  
 | |
| +	if (scissors(line)) {
 | |
| +		fseek(cmitmsg, 0L, SEEK_SET);
 | |
| +		still_looking = 1;
 | |
| +		return 0;
 | |
| +	}
 | |
| +
 | |
|  	/* normalize the log message to UTF-8. */
 | |
|  	if (metainfo_charset)
 | |
|  		convert_to_utf8(line, charset.buf);
 | |
| -- 
 | |
| 1.6.4.1
 |