代码拉取完成,页面将自动刷新
From 1bc34ffa64c33381d793fb5cdddf3f484e603d23 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Carlo=20Marcelo=20Arenas=20Bel=C3=B3n?= <carenas@gmail.com>
Date: Fri, 12 May 2023 07:54:02 -0700
Subject: [PATCH] pcre2grep: document better possible multiline matching misses
(#252)
While at it, remove a misplaced cast that would cause problems for
subjects over 2GB and a few typos.
Conflict:don't modify ucptest.c because ucptest.c doesn't exist in current version.
Reference:https://github.com/PCRE2Project/pcre2/commit/1bc34ffa64c33381d793fb5cdddf3f484e603d23
---
doc/pcre2grep.1 | 11 ++++++++---
src/pcre2_compile.c | 4 ++--
src/pcre2grep.c | 2 +-
3 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/doc/pcre2grep.1 b/doc/pcre2grep.1
index 1081591..5077304 100644
--- a/doc/pcre2grep.1
+++ b/doc/pcre2grep.1
@@ -66,6 +66,9 @@ The block of memory that is actually used is three times the "buffer size", to
allow for buffering "before" and "after" lines. If the buffer size is too
small, fewer than requested "before" and "after" lines may be output.
.P
+When matching with a multiline pattern, the size of the buffer must be at least
+half of the maximum match expected or the pattern might fail to match.
+.P
Patterns can be no longer than 8KiB or BUFSIZ bytes, whichever is the greater.
BUFSIZ is defined in \fB<stdio.h>\fP. When there is more than one pattern
(specified by the use of \fB-e\fP and/or \fB-f\fP), each pattern is applied to
@@ -201,7 +204,7 @@ exactly the same as the number of lines that would have been output, but if the
\fB-M\fP (multiline) option is used (without \fB-v\fP), there may be more
suppressed lines than the count (that is, the number of matches).
.sp
-If no lines are selected, the number zero is output. If several files are are
+If no lines are selected, the number zero is output. If several files are
being scanned, a count is output for each of them and the \fB-t\fP option can
be used to cause a total to be output at the end. However, if the
\fB--files-with-matches\fP option is also used, only those files whose counts
@@ -490,8 +493,10 @@ well as possibly handling a two-character newline sequence.
.sp
There is a limit to the number of lines that can be matched, imposed by the way
that \fBpcre2grep\fP buffers the input file as it scans it. With a sufficiently
-large processing buffer, this should not be a problem, but the \fB-M\fP option
-does not work when input is read line by line (see \fB--line-buffered\fP.)
+large processing buffer, this should not be a problem.
+.sp
+The \fB-M\fP option does not work when input is read line by line (see
+\fB--line-buffered\fP.)
.TP
\fB-m\fP \fInumber\fP, \fB--max-count\fP=\fInumber\fP
Stop processing after finding \fInumber\fP matching lines, or non-matching
diff --git a/src/pcre2_compile.c b/src/pcre2_compile.c
index b906dc0..c6d4c60 100644
--- a/src/pcre2_compile.c
+++ b/src/pcre2_compile.c
@@ -5549,8 +5549,8 @@ for (;; pptr++)
If the class contains characters outside the 0-255 range, a different
opcode is compiled. It may optionally have a bit map for characters < 256,
- but those above are are explicitly listed afterwards. A flag code unit
- tells whether the bitmap is present, and whether this is a negated class or
+ but those above are explicitly listed afterwards. A flag code unit tells
+ whether the bitmap is present, and whether this is a negated class or
not. */
case META_CLASS_NOT:
diff --git a/src/pcre2grep.c b/src/pcre2grep.c
index 1484d67..d2ab620 100644
--- a/src/pcre2grep.c
+++ b/src/pcre2grep.c
@@ -1856,7 +1856,7 @@ if (slen > 200)
for (int i = 1; p != NULL; p = p->next, i++)
{
- int rc = pcre2_match(p->compiled, (PCRE2_SPTR)matchptr, (int)length,
+ int rc = pcre2_match(p->compiled, (PCRE2_SPTR)matchptr, length,
startoffset, options, match_data, match_context);
if (rc == PCRE2_ERROR_NOMATCH) continue;
--
2.27.0
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。