mailinfo: make is_scissors_line take plain char *
The is_scissors_line takes a struct strbuf * when a char * would suffice. Make it take char *. Signed-off-by: Jonathan Tan <jonathantanmy@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jonathan Tan committed
Sep 19, 2016 at 14:08 UTC
9c5681da88825c4320d3f7142ed320e6984c2377
1 file changed
+18
-17
mailinfo.c
+18
-17
@@ -557,37 +557,35 @@ static inline int patchbreak(const struct strbuf *line)
557
return 0;
558
}
559
560
-static int is_scissors_line(const struct strbuf *line)
560
+static int is_scissors_line(const char *line)
561
{
562
- size_t i, len = line->len;
562
+ const char *c;
563
int scissors = 0, gap = 0;
564
- int first_nonblank = -1;
565
- int last_nonblank = 0, visible, perforation = 0, in_perforation = 0;
566
- const char *buf = line->buf;
564
+ const char *first_nonblank = NULL, *last_nonblank = NULL;
565
+ int visible, perforation = 0, in_perforation = 0;
566
568
- for (i = 0; i < len; i++) {
569
- if (isspace(buf[i])) {
567
+ for (c = line; *c; c++) {
568
+ if (isspace(*c)) {
569
if (in_perforation) {
570
perforation++;
571
gap++;
572
}
573
continue;
574
}
576
- last_nonblank = i;
577
- if (first_nonblank < 0)
578
- first_nonblank = i;
579
- if (buf[i] == '-') {
575
+ last_nonblank = c;
576
+ if (first_nonblank == NULL)
577
+ first_nonblank = c;
578
+ if (*c == '-') {
579
in_perforation = 1;
580
perforation++;
581
continue;
582
}
584
- if (i + 1 < len &&
585
- (!memcmp(buf + i, ">8", 2) || !memcmp(buf + i, "8<", 2) ||
586
- !memcmp(buf + i, ">%", 2) || !memcmp(buf + i, "%<", 2))) {
583
+ if ((!memcmp(c, ">8", 2) || !memcmp(c, "8<", 2) ||
584
+ !memcmp(c, ">%", 2) || !memcmp(c, "%<", 2))) {
585
in_perforation = 1;
586
perforation += 2;
587
scissors += 2;
590
- i++;
588
+ c++;
589
continue;
590
}
591
in_perforation = 0;
@@ -602,7 +600,10 @@ static int is_scissors_line(const struct strbuf *line)
600
* than half of the perforation.
601
*/
602
605
- visible = last_nonblank - first_nonblank + 1;
603
+ if (first_nonblank && last_nonblank)
604
+ visible = last_nonblank - first_nonblank + 1;
605
+ else
606
+ visible = 0;
607
return (scissors && 8 <= visible &&
608
visible < perforation * 3 &&
609
gap * 2 < perforation);
@@ -647,7 +648,7 @@ static int handle_commit_msg(struct mailinfo *mi, struct strbuf *line)
648
if (convert_to_utf8(mi, line, mi->charset.buf))
649
return 0; /* mi->input_error already set */
650
650
- if (mi->use_scissors && is_scissors_line(line)) {
651
+ if (mi->use_scissors && is_scissors_line(line->buf)) {
652
int i;
653
654
strbuf_setlen(&mi->log_message, 0);