From 3aa5db30bfa69a5c4fefdb3ec5699b47d8b1a70a Mon Sep 17 00:00:00 2001 From: Kristaps Dzonsons Date: Sat, 17 Jul 2010 12:01:43 +0000 Subject: Avoid letter-by-letter encoding by using strcspn() in term_word(). --- term.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/term.c b/term.c index b4cd5b97..de8c3380 100644 --- a/term.c +++ b/term.c @@ -1,4 +1,4 @@ -/* $Id: term.c,v 1.161 2010/07/16 22:33:30 kristaps Exp $ */ +/* $Id: term.c,v 1.162 2010/07/17 12:01:43 kristaps Exp $ */ /* * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons * Copyright (c) 2010 Ingo Schwarze @@ -503,14 +503,13 @@ term_word(struct termp *p, const char *word) p->flags &= ~TERMP_SENTENCE; - /* FIXME: use strcspn. */ - while (*word) { - if ('\\' != *word) { - encode(p, word, 1); - word++; + if ((ssz = strcspn(word, "\\")) > 0) + encode(p, word, ssz); + + word += ssz; + if ('\\' != *word) continue; - } seq = ++word; sz = a2roffdeco(&deco, &seq, &ssz); @@ -547,7 +546,7 @@ term_word(struct termp *p, const char *word) * Note that we don't process the pipe: the parser sees it as * punctuation, but we don't in terms of typography. */ - if (sv[0] && 0 == sv[1]) + if (sv[0] && '\0' == sv[1]) switch (sv[0]) { case('('): /* FALLTHROUGH */ -- cgit v1.2.3-56-ge451