Explicitly spell out the ranges involved. The original wording always confused me, but it's actually very sane. Remove "this doesn't change R_NOTBOL & R_NEWLINE" ‒ so does it change R_NOTEOL? No. That's weird and confusing. String largeness doesn't matter, known-lengthness does. Explicitly spell out the influence on returned matches (relative to string, not start of range). Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@xxxxxxxxxxxxxxxxxx> --- Range-diff against v6: 1: 4b7971a5e < -: --------- regex.3: Desoupify regfree() description 2: 5fb4cc16f ! 1: ed050649b regex.3: Improve REG_STARTEND @@ man3/regex.3: .SS Matching -and ending before byte -.IR pmatch[0].rm_eo . +Match -+.RI [ string " + " pmatch[0].rm_so ", " string " + " pmatch[0].rm_eo ) ++.RI [ "string + pmatch[0].rm_so" , " string + pmatch[0].rm_eo" ) +instead of -+.RI [ string ", " string " + \fBstrlen\fP(" string )). ++.RI [ string , " string + strlen(string)" ). This allows matching embedded NUL bytes and avoids a .BR strlen (3) @@ man3/regex.3: .SS Matching +as usual, and the match offsets remain relative to +.IR string +(not -+.IR string " + " pmatch[0].rm_so ). ++.IR "string + pmatch[0].rm_so" ). This flag is a BSD extension, not present in POSIX. .SS Match offsets Unless man3/regex.3 | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/man3/regex.3 b/man3/regex.3 index 46a4a12b9..099c2c17f 100644 --- a/man3/regex.3 +++ b/man3/regex.3 @@ -131,23 +131,26 @@ .SS Matching above). .TP .B REG_STARTEND -Use -.I pmatch[0] -on the input string, starting at byte -.I pmatch[0].rm_so -and ending before byte -.IR pmatch[0].rm_eo . +Match +.RI [ "string + pmatch[0].rm_so" , " string + pmatch[0].rm_eo" ) +instead of +.RI [ string , " string + strlen(string)" ). This allows matching embedded NUL bytes and avoids a .BR strlen (3) -on large strings. -It does not use +on known-length strings. +If any matches are returned +.RB ( REG_NOSUB +wasn't passed to +.BR regcomp (), +the match succeeded, and .I nmatch -on input, and does not change -.B REG_NOTBOL -or -.B REG_NEWLINE -processing. +> 0), they overwrite +.I pmatch +as usual, and the match offsets remain relative to +.IR string +(not +.IR "string + pmatch[0].rm_so" ). This flag is a BSD extension, not present in POSIX. .SS Match offsets Unless -- 2.30.2
Attachment:
signature.asc
Description: PGP signature