Behold: regerror() is passed the error code, errcode, the pattern buffer, preg, a pointer to a character string buffer, errbuf, and the size of the string buffer, errbuf_size. Absolute soup. This reads to me like an ill-conceived copy from a very early standard version. It looks fine in source form but is horrific to read as running text. Instead, replace all of these with just the descriptions of what they do with their arguments. What the arguments are is very clearly noted in big bold in the prototypes. Signed-off-by: Ahelenia ZiemiaƄska --- man3/regex.3 | 80 +++++++++++++++++++++------------------------------- 1 file changed, 32 insertions(+), 48 deletions(-) diff --git a/man3/regex.3 b/man3/regex.3 index 637cb2231..b4feaba19 100644 --- a/man3/regex.3 +++ b/man3/regex.3 @@ -25,8 +25,8 @@ Standard C library .BI " size_t " nmatch ", regmatch_t " pmatch "[restrict ." nmatch ], .BI " int " eflags ); .PP -.BI "size_t regerror(int " errcode ", const regex_t *restrict " preg , -.BI " char " errbuf "[restrict ." errbuf_size "], \ +.BI "size_t regerror(int " errcode ", const regex_t *_Nullable restrict " preg , +.BI " char " errbuf "[restrict ." errbuf_size "], \ size_t " errbuf_size ); .BI "void regfree(regex_t *" preg ); .fi @@ -38,21 +38,13 @@ for subsequent .BR regexec () searches. .PP -.BR regcomp () -is supplied with -.IR preg , -a pointer to a pattern buffer storage area; -.IR regex , -a pointer to the null-terminated string and -.IR cflags , -flags used to determine the type of compilation. -.PP -All regular expression searching must be done via a compiled pattern -buffer, thus -.BR regexec () -must always be supplied with the address of a -.BR regcomp ()-initialized -pattern buffer. +The pattern buffer at +.I *preg +is initialized. +.I regex +is a null-terminated string. +The locale must be the same when running +.BR regexec (). .PP .I cflags is the @@ -113,12 +105,10 @@ contains .SS Matching .BR regexec () is used to match a null-terminated string -against the precompiled pattern buffer, -.IR preg . -.I nmatch -and -.I pmatch -are used to provide information regarding the location of any matches. +against the compiled pattern buffer in +.IR *preg , +which must have been initialised with +.BR regexec (). .I eflags is the bitwise OR @@ -217,34 +207,28 @@ and .BR regexec () into error message strings. .PP -.BR regerror () -is passed the error code, -.IR errcode , -the pattern buffer, -.IR preg , -a pointer to a character string buffer, -.IR errbuf , -and the size of the string buffer, -.IR errbuf_size . -It returns the size of the -.I errbuf -required to contain the null-terminated error message string. -If both -.I errbuf -and +.I errcode +must be the latest error returned from an operation on +.IR preg . +If +.I preg +is a null pointer\(emthe latest error. +.PP +If +.I errbuf_size +is +.BR 0 , +the size of the required buffer is returned. +Otherwise, up to .I errbuf_size -are nonzero, -.I errbuf -is filled in with the first -.I "errbuf_size \- 1" -characters of the error message and a terminating null byte (\[aq]\e0\[aq]). +bytes are copied to +.IR errbuf ; +the error string is always null-terminated, and truncated to fit. .SS Freeing -Supplying .BR regfree () -with a precompiled pattern buffer, -.IR preg , -will free the memory allocated to the pattern buffer by the compiling -process, +invalidates the pattern buffer at +.IR *preg , +which must have been initialized via .BR regcomp (). .SH RETURN VALUE .BR regcomp () -- 2.30.2