On Mon, Apr 01, 2019 at 11:53:34PM +0200, Andrei Rybak wrote:
> diff --git a/mailinfo.c b/mailinfo.c
> index f4aaa89788..804b07cd8a 100644
> --- a/mailinfo.c
> +++ b/mailinfo.c
> @@ -701,6 +701,13 @@ static int is_scissors_line(const char *line)
> c++;
> continue;
> }
> + if (starts_with(c, "\xE2\x9C\x82" /* U-2702 ✂ in UTF-8 */)) {
> + in_perforation = 1;
> + perforation += 3;
> + scissors += 3;
> + c += 2;
> + continue;
> + }
It might be worth using skip_prefix() instead of starts_with() to
compute the size automatically. E.g.:
if (skip_prefix(c, "\xE2\x9C\x82", &end)) {
size_t len = end - c; /* no magic number needed! */
}
In fact, I think you could then combine this with the previous
conditional and get:
if (skip_prefix(c, ">8", &end) ||
skip_prefix(c, "8<", &end) ||
skip_prefix(c, ">%", &end) ||
skip_prefix(c, "%<", &end) ||
/* U-2702 in UTF-8 */
skip_prefix(c, "\xE2\x9C\x82", &end)) {
in_perforation = 1;
perforation += end - c;
scissors += end - c;
c = end - 1; /* minus one to account for loop increment */
}
(Though I'm still on the fence regarding the whole idea, so do not take
this as an endorsement ;) ).
-Peff