summaryrefslogtreecommitdiff
path: root/src/grep.c
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2020-09-07 19:44:21 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2020-09-07 19:49:33 -0700
commit9393b977015bf7944cec1d71ad3972c101bdb4b8 (patch)
tree75ec43b843346d5972f5eaace2d72ea8e37e11f3 /src/grep.c
parent0ede35a6cd21093560de8bd9843263ba199abf1f (diff)
downloadgrep-9393b977015bf7944cec1d71ad3972c101bdb4b8.tar.gz
Prefer rawmemchr to memchr when it’s easy
* bootstrap.conf (gnulib_modules): Add rawmemchr. * src/dfasearch.c (GEAcompile, EGexecute): * src/grep.c (update_patterns, prpending, prtext): * src/kwsearch.c (Fcompile, Fexecute): * src/pcresearch.c (Pcompile, Pexecute): Simplify (and presumably speed up a little) by using rawmemchr with a sentinel, instead of using memchr.
Diffstat (limited to 'src/grep.c')
-rw-r--r--src/grep.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/grep.c b/src/grep.c
index ce2f2919..d058a76c 100644
--- a/src/grep.c
+++ b/src/grep.c
@@ -164,7 +164,7 @@ update_patterns (char *keys, ptrdiff_t dupfree_size, ptrdiff_t size,
ptrdiff_t patsize;
for (char const *src = keys + dupfree_size; src < srclim; src += patsize)
{
- char const *patend = memchr (src, '\n', srclim - src);
+ char const *patend = rawmemchr (src, '\n');
patsize = patend + 1 - src;
memmove (dst, src, patsize);
@@ -1104,8 +1104,7 @@ static void
nlscan (char const *lim)
{
size_t newlines = 0;
- char const *beg;
- for (beg = lastnl; beg < lim; beg++)
+ for (char const *beg = lastnl; beg < lim; beg++)
{
beg = memchr (beg, eolbyte, lim - beg);
if (!beg)
@@ -1353,7 +1352,7 @@ prpending (char const *lim)
lastout = bufbeg;
for (; 0 < pending && lastout < lim; pending--)
{
- char *nl = memchr (lastout, eolbyte, lim - lastout);
+ char *nl = rawmemchr (lastout, eolbyte);
prline (lastout, nl + 1, SEP_CHAR_REJECTED);
}
}
@@ -1394,7 +1393,7 @@ prtext (char *beg, char *lim)
while (p < beg)
{
- char *nl = memchr (p, eol, beg - p);
+ char *nl = rawmemchr (p, eol);
nl++;
prline (p, nl, SEP_CHAR_REJECTED);
p = nl;
@@ -1407,7 +1406,7 @@ prtext (char *beg, char *lim)
/* One or more lines are output. */
for (n = 0; p < lim && n < outleft; n++)
{
- char *nl = memchr (p, eol, lim - p);
+ char *nl = rawmemchr (p, eol);
nl++;
if (!out_quiet)
prline (p, nl, SEP_CHAR_SELECTED);