* [PATCH v1 1/2] man/man3/str*.3: NAME: Explain the names
@ 2026-07-02 12:33 Alejandro Colomar
2026-07-02 12:33 ` [PATCH v1 2/2] man/man3/strpbrk.3: BUGS: Clarify the NAME Alejandro Colomar
2026-07-03 5:03 ` [PATCH v1 1/2] man/man3/str*.3: NAME: Explain the names Mark Harris
0 siblings, 2 replies; 4+ messages in thread
From: Alejandro Colomar @ 2026-07-02 12:33 UTC (permalink / raw)
To: linux-man; +Cc: Alejandro Colomar, Serge E. Hallyn
[-- Attachment #1: Type: text/plain, Size: 12277 bytes --]
Reported-by: "Serge E. Hallyn" <serge@hallyn.com>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
---
Hi Serge,
I finally took some time to do this that you asked me to do some time
ago. I've edited all the str*(3) manual pages so that the NAME section
actually explains the name of the function.
There's an exception: strpbrk(3). I refuse to explain that name. I've
explained it as if it were called strchrs(), which is a name that Plan9
uses for that function, and which would have been a better name for it.
(See patch 2/2).
Have a lovely day!
Alex
man/man3/strcasecmp.3 | 2 +-
man/man3/strchr.3 | 2 +-
man/man3/strcmp.3 | 2 +-
man/man3/strcoll.3 | 2 +-
man/man3/strcpy.3 | 2 +-
man/man3/strdup.3 | 2 +-
man/man3/strerror.3 | 5 +++--
man/man3/strfmon.3 | 2 +-
man/man3/strfromd.3 | 3 +--
man/man3/strfry.3 | 2 +-
man/man3/strftime.3 | 2 +-
man/man3/string.3 | 5 +----
man/man3/strlen.3 | 2 +-
man/man3/strncat.3 | 5 +----
man/man3/strnlen.3 | 2 +-
man/man3/strpbrk.3 | 2 +-
man/man3/strptime.3 | 2 +-
man/man3/strsep.3 | 2 +-
man/man3/strsignal.3 | 2 +-
man/man3/strspn.3 | 2 +-
man/man3/strtod.3 | 2 +-
man/man3/strtoimax.3 | 2 +-
man/man3/strtok.3 | 2 +-
man/man3/strtol.3 | 2 +-
man/man3/strtoul.3 | 2 +-
man/man3/strverscmp.3 | 2 +-
man/man3/strxfrm.3 | 2 +-
27 files changed, 29 insertions(+), 35 deletions(-)
diff --git a/man/man3/strcasecmp.3 b/man/man3/strcasecmp.3
index aa554341da4c..65941ddf6524 100644
--- a/man/man3/strcasecmp.3
+++ b/man/man3/strcasecmp.3
@@ -6,7 +6,7 @@
.\"
.TH strcasecmp 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strcasecmp, strncasecmp \- compare two strings ignoring case
+strcasecmp, strncasecmp \- strings case-insensitive compare
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strchr.3 b/man/man3/strchr.3
index 4e6a96d8cde6..12d08f63ddbb 100644
--- a/man/man3/strchr.3
+++ b/man/man3/strchr.3
@@ -6,7 +6,7 @@
.\"
.TH strchr 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strchr \- locate character in string
+strchr \- string search character
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strcmp.3 b/man/man3/strcmp.3
index a088412917d2..0a573e52d936 100644
--- a/man/man3/strcmp.3
+++ b/man/man3/strcmp.3
@@ -7,7 +7,7 @@
.\"
.TH strcmp 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strcmp, strncmp \- compare two strings
+strcmp, strncmp \- strings compare
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strcoll.3 b/man/man3/strcoll.3
index 32d620f52c51..ea94f2a90224 100644
--- a/man/man3/strcoll.3
+++ b/man/man3/strcoll.3
@@ -6,7 +6,7 @@
.\"
.TH strcoll 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strcoll \- compare two strings using the current locale
+strcoll \- strings collate
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strcpy.3 b/man/man3/strcpy.3
index cea24ff04020..d4d0e4246545 100644
--- a/man/man3/strcpy.3
+++ b/man/man3/strcpy.3
@@ -5,7 +5,7 @@
.\"
.TH strcpy 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strcpy, strcat \- copy or catenate a string
+strcpy, strcat \- string copy/catenate
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strdup.3 b/man/man3/strdup.3
index b4026ed41b4a..05671cd936c2 100644
--- a/man/man3/strdup.3
+++ b/man/man3/strdup.3
@@ -6,7 +6,7 @@
.\"
.TH strdup 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strdup, strndup \- duplicate a string
+strdup, strndup \- string duplicate
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strerror.3 b/man/man3/strerror.3
index e3306c7e1608..637d1d812d52 100644
--- a/man/man3/strerror.3
+++ b/man/man3/strerror.3
@@ -7,8 +7,9 @@
.\"
.TH strerror 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strerror, strerrorname_np, strerrordesc_np, strerror_r, strerror_l \-
-return string describing error number
+strerror, strerrorname_np, strerrordesc_np, strerror_r, strerror_l
+\-
+string error-string
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strfmon.3 b/man/man3/strfmon.3
index e0d9790395cb..dee915c8a9f4 100644
--- a/man/man3/strfmon.3
+++ b/man/man3/strfmon.3
@@ -6,7 +6,7 @@
.\"
.TH strfmon 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strfmon, strfmon_l \- convert monetary value to a string
+strfmon, strfmon_l \- string format monetary value
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strfromd.3 b/man/man3/strfromd.3
index c221f82df0a8..fa8a10feec01 100644
--- a/man/man3/strfromd.3
+++ b/man/man3/strfromd.3
@@ -6,8 +6,7 @@
.\"
.TH strfromd 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strfromd, strfromf, strfroml \- convert a floating-point value into
-a string
+strfromd, strfromf, strfroml \- string from float
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strfry.3 b/man/man3/strfry.3
index 99917e4a6261..54ea313ea262 100644
--- a/man/man3/strfry.3
+++ b/man/man3/strfry.3
@@ -6,7 +6,7 @@
.\"
.TH strfry 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strfry \- randomize a string
+strfry \- string fry
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strftime.3 b/man/man3/strftime.3
index 66351f6bd43a..bdba4089b934 100644
--- a/man/man3/strftime.3
+++ b/man/man3/strftime.3
@@ -6,7 +6,7 @@
.\"
.TH strftime 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strftime \- format date and time
+strftime \- string format date and time
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/string.3 b/man/man3/string.3
index 89fe51fba609..2141822e1fd1 100644
--- a/man/man3/string.3
+++ b/man/man3/string.3
@@ -5,10 +5,7 @@
.\"
.TH string 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-stpcpy, strcasecmp, strcat, strchr, strcmp, strcoll, strcpy, strcspn,
-strdup, strfry, strlen, strncat, strncmp, strncpy, strncasecmp, strpbrk,
-strrchr, strsep, strspn, strstr, strtok, strxfrm
-\- string operations
+string \- string operations
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strlen.3 b/man/man3/strlen.3
index 1dd99bd8e250..639bdd6ac2d2 100644
--- a/man/man3/strlen.3
+++ b/man/man3/strlen.3
@@ -6,7 +6,7 @@
.\"
.TH strlen 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strlen \- calculate the length of a string
+strlen \- string length
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strncat.3 b/man/man3/strncat.3
index 4b0217b02673..dd39d54939d9 100644
--- a/man/man3/strncat.3
+++ b/man/man3/strncat.3
@@ -5,10 +5,7 @@
.\"
.TH strncat 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strncat
-\-
-append non-null bytes from a source array to a string,
-and null-terminate the result
+strncat \- nonstring catenate
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strnlen.3 b/man/man3/strnlen.3
index fbd719ee4888..553a39a9ec7a 100644
--- a/man/man3/strnlen.3
+++ b/man/man3/strnlen.3
@@ -6,7 +6,7 @@
.\"
.TH strnlen 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strnlen \- determine the length of a fixed-size string
+strnlen \- nonstring length
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strpbrk.3 b/man/man3/strpbrk.3
index 1f56cf18dbac..6e5b79a48bbe 100644
--- a/man/man3/strpbrk.3
+++ b/man/man3/strpbrk.3
@@ -6,7 +6,7 @@
.\"
.TH strpbrk 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strpbrk \- search a string for any of a set of bytes
+strpbrk \- string search characters
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strptime.3 b/man/man3/strptime.3
index 979bffea7bf8..4502acfe6d1e 100644
--- a/man/man3/strptime.3
+++ b/man/man3/strptime.3
@@ -6,7 +6,7 @@
.\"
.TH strptime 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strptime \- convert a string representation of time to a time tm structure
+strptime \- string parse time
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strsep.3 b/man/man3/strsep.3
index 46ba6c5819bd..98859f64909f 100644
--- a/man/man3/strsep.3
+++ b/man/man3/strsep.3
@@ -6,7 +6,7 @@
.\"
.TH strsep 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strsep \- extract token from string
+strsep \- string separate
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strsignal.3 b/man/man3/strsignal.3
index 4a4e8c86e71d..964a5e5aacaf 100644
--- a/man/man3/strsignal.3
+++ b/man/man3/strsignal.3
@@ -8,7 +8,7 @@
.TH strsignal 3 (date) "Linux man-pages (unreleased)"
.SH NAME
strsignal, sigabbrev_np, sigdescr_np, sys_siglist \-
-return string describing signal
+string signal description
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strspn.3 b/man/man3/strspn.3
index fe4414317df6..7c85d209c59d 100644
--- a/man/man3/strspn.3
+++ b/man/man3/strspn.3
@@ -6,7 +6,7 @@
.\"
.TH strspn 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strspn, strcspn \- get length of a prefix substring
+strspn, strcspn \- string [complementary] span
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strtod.3 b/man/man3/strtod.3
index 15147ee51006..84a9934ba267 100644
--- a/man/man3/strtod.3
+++ b/man/man3/strtod.3
@@ -6,7 +6,7 @@
.\"
.TH strtod 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strtod, strtof, strtold \- convert ASCII string to floating-point number
+strtod, strtof, strtold \- string to float
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strtoimax.3 b/man/man3/strtoimax.3
index 71267754ed7a..08413a9f8101 100644
--- a/man/man3/strtoimax.3
+++ b/man/man3/strtoimax.3
@@ -6,7 +6,7 @@
.\"
.TH strtoimax 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strtoimax, strtoumax \- convert string to integer
+strtoimax, strtoumax \- string to [u]intmax_t
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strtok.3 b/man/man3/strtok.3
index 2d733e886086..4ce708ecbcb4 100644
--- a/man/man3/strtok.3
+++ b/man/man3/strtok.3
@@ -6,7 +6,7 @@
.\"
.TH strtok 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strtok \- extract tokens from strings
+strtok \- string tokenize
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strtol.3 b/man/man3/strtol.3
index f88b717780f3..4d9c49eaf28a 100644
--- a/man/man3/strtol.3
+++ b/man/man3/strtol.3
@@ -7,7 +7,7 @@
.\"
.TH strtol 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strtol, strtoll, strtoq \- convert a string to a long integer
+strtol, strtoll, strtoq \- string to long int
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strtoul.3 b/man/man3/strtoul.3
index a6f6fd4a8ada..670fcb3868a1 100644
--- a/man/man3/strtoul.3
+++ b/man/man3/strtoul.3
@@ -6,7 +6,7 @@
.\"
.TH strtoul 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strtoul, strtoull, strtouq \- convert a string to an unsigned long integer
+strtoul, strtoull, strtouq \- string to unsigned long int
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strverscmp.3 b/man/man3/strverscmp.3
index d072471b1431..caadb9717a3b 100644
--- a/man/man3/strverscmp.3
+++ b/man/man3/strverscmp.3
@@ -7,7 +7,7 @@
.\"
.TH strverscmp 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strverscmp \- compare two version strings
+strverscmp \- strings version compare
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
diff --git a/man/man3/strxfrm.3 b/man/man3/strxfrm.3
index d4ac57006eb0..a892bf4c813b 100644
--- a/man/man3/strxfrm.3
+++ b/man/man3/strxfrm.3
@@ -6,7 +6,7 @@
.\"
.TH strxfrm 3 (date) "Linux man-pages (unreleased)"
.SH NAME
-strxfrm \- string transformation
+strxfrm \- string transform
.SH LIBRARY
Standard C library
.RI ( libc ,\~ \-lc )
--
2.53.0
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v1 2/2] man/man3/strpbrk.3: BUGS: Clarify the NAME
2026-07-02 12:33 [PATCH v1 1/2] man/man3/str*.3: NAME: Explain the names Alejandro Colomar
@ 2026-07-02 12:33 ` Alejandro Colomar
2026-07-03 5:03 ` [PATCH v1 1/2] man/man3/str*.3: NAME: Explain the names Mark Harris
1 sibling, 0 replies; 4+ messages in thread
From: Alejandro Colomar @ 2026-07-02 12:33 UTC (permalink / raw)
To: linux-man; +Cc: Alejandro Colomar, Serge E. Hallyn
[-- Attachment #1: Type: text/plain, Size: 607 bytes --]
Cc: "Serge E. Hallyn" <serge@hallyn.com>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
---
man/man3/strpbrk.3 | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/man/man3/strpbrk.3 b/man/man3/strpbrk.3
index 6e5b79a48bbe..ee7a84f1a944 100644
--- a/man/man3/strpbrk.3
+++ b/man/man3/strpbrk.3
@@ -51,6 +51,10 @@ .SH STANDARDS
C11, POSIX.1-2008.
.SH HISTORY
POSIX.1-2001, C89, SVr4, 4.3BSD.
+.SH BUGS
+The name of this function is bad.
+It should have been named strchrs().
+The NAME section above reflects this.
.SH SEE ALSO
.BR memchr (3),
.BR strchr (3),
--
2.53.0
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v1 1/2] man/man3/str*.3: NAME: Explain the names
2026-07-02 12:33 [PATCH v1 1/2] man/man3/str*.3: NAME: Explain the names Alejandro Colomar
2026-07-02 12:33 ` [PATCH v1 2/2] man/man3/strpbrk.3: BUGS: Clarify the NAME Alejandro Colomar
@ 2026-07-03 5:03 ` Mark Harris
2026-07-03 11:16 ` Alejandro Colomar
1 sibling, 1 reply; 4+ messages in thread
From: Mark Harris @ 2026-07-03 5:03 UTC (permalink / raw)
To: Alejandro Colomar; +Cc: linux-man, Serge E. Hallyn
Alejandro Colomar wrote:
>
> Reported-by: "Serge E. Hallyn" <serge@hallyn.com>
> Signed-off-by: Alejandro Colomar <alx@kernel.org>
> ---
>
> Hi Serge,
>
> I finally took some time to do this that you asked me to do some time
> ago. I've edited all the str*(3) manual pages so that the NAME section
> actually explains the name of the function.
>
> There's an exception: strpbrk(3). I refuse to explain that name. I've
> explained it as if it were called strchrs(), which is a name that Plan9
> uses for that function, and which would have been a better name for it.
> (See patch 2/2).
>
>
> Have a lovely day!
> Alex
>
> man/man3/strcasecmp.3 | 2 +-
> man/man3/strchr.3 | 2 +-
> man/man3/strcmp.3 | 2 +-
> man/man3/strcoll.3 | 2 +-
> man/man3/strcpy.3 | 2 +-
> man/man3/strdup.3 | 2 +-
> man/man3/strerror.3 | 5 +++--
> man/man3/strfmon.3 | 2 +-
> man/man3/strfromd.3 | 3 +--
> man/man3/strfry.3 | 2 +-
> man/man3/strftime.3 | 2 +-
> man/man3/string.3 | 5 +----
> man/man3/strlen.3 | 2 +-
> man/man3/strncat.3 | 5 +----
> man/man3/strnlen.3 | 2 +-
> man/man3/strpbrk.3 | 2 +-
> man/man3/strptime.3 | 2 +-
> man/man3/strsep.3 | 2 +-
> man/man3/strsignal.3 | 2 +-
> man/man3/strspn.3 | 2 +-
> man/man3/strtod.3 | 2 +-
> man/man3/strtoimax.3 | 2 +-
> man/man3/strtok.3 | 2 +-
> man/man3/strtol.3 | 2 +-
> man/man3/strtoul.3 | 2 +-
> man/man3/strverscmp.3 | 2 +-
> man/man3/strxfrm.3 | 2 +-
> 27 files changed, 29 insertions(+), 35 deletions(-)
>
> diff --git a/man/man3/strcasecmp.3 b/man/man3/strcasecmp.3
> index aa554341da4c..65941ddf6524 100644
> --- a/man/man3/strcasecmp.3
> +++ b/man/man3/strcasecmp.3
> @@ -6,7 +6,7 @@
> .\"
> .TH strcasecmp 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strcasecmp, strncasecmp \- compare two strings ignoring case
> +strcasecmp, strncasecmp \- strings case-insensitive compare
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strchr.3 b/man/man3/strchr.3
> index 4e6a96d8cde6..12d08f63ddbb 100644
> --- a/man/man3/strchr.3
> +++ b/man/man3/strchr.3
> @@ -6,7 +6,7 @@
> .\"
> .TH strchr 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strchr \- locate character in string
> +strchr \- string search character
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strcmp.3 b/man/man3/strcmp.3
> index a088412917d2..0a573e52d936 100644
> --- a/man/man3/strcmp.3
> +++ b/man/man3/strcmp.3
> @@ -7,7 +7,7 @@
> .\"
> .TH strcmp 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strcmp, strncmp \- compare two strings
> +strcmp, strncmp \- strings compare
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strcoll.3 b/man/man3/strcoll.3
> index 32d620f52c51..ea94f2a90224 100644
> --- a/man/man3/strcoll.3
> +++ b/man/man3/strcoll.3
> @@ -6,7 +6,7 @@
> .\"
> .TH strcoll 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strcoll \- compare two strings using the current locale
> +strcoll \- strings collate
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strcpy.3 b/man/man3/strcpy.3
> index cea24ff04020..d4d0e4246545 100644
> --- a/man/man3/strcpy.3
> +++ b/man/man3/strcpy.3
> @@ -5,7 +5,7 @@
> .\"
> .TH strcpy 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strcpy, strcat \- copy or catenate a string
> +strcpy, strcat \- string copy/catenate
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strdup.3 b/man/man3/strdup.3
> index b4026ed41b4a..05671cd936c2 100644
> --- a/man/man3/strdup.3
> +++ b/man/man3/strdup.3
> @@ -6,7 +6,7 @@
> .\"
> .TH strdup 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strdup, strndup \- duplicate a string
> +strdup, strndup \- string duplicate
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strerror.3 b/man/man3/strerror.3
> index e3306c7e1608..637d1d812d52 100644
> --- a/man/man3/strerror.3
> +++ b/man/man3/strerror.3
> @@ -7,8 +7,9 @@
> .\"
> .TH strerror 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strerror, strerrorname_np, strerrordesc_np, strerror_r, strerror_l \-
> -return string describing error number
> +strerror, strerrorname_np, strerrordesc_np, strerror_r, strerror_l
> +\-
> +string error-string
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strfmon.3 b/man/man3/strfmon.3
> index e0d9790395cb..dee915c8a9f4 100644
> --- a/man/man3/strfmon.3
> +++ b/man/man3/strfmon.3
> @@ -6,7 +6,7 @@
> .\"
> .TH strfmon 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strfmon, strfmon_l \- convert monetary value to a string
> +strfmon, strfmon_l \- string format monetary value
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strfromd.3 b/man/man3/strfromd.3
> index c221f82df0a8..fa8a10feec01 100644
> --- a/man/man3/strfromd.3
> +++ b/man/man3/strfromd.3
> @@ -6,8 +6,7 @@
> .\"
> .TH strfromd 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strfromd, strfromf, strfroml \- convert a floating-point value into
> -a string
> +strfromd, strfromf, strfroml \- string from float
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strfry.3 b/man/man3/strfry.3
> index 99917e4a6261..54ea313ea262 100644
> --- a/man/man3/strfry.3
> +++ b/man/man3/strfry.3
> @@ -6,7 +6,7 @@
> .\"
> .TH strfry 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strfry \- randomize a string
> +strfry \- string fry
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strftime.3 b/man/man3/strftime.3
> index 66351f6bd43a..bdba4089b934 100644
> --- a/man/man3/strftime.3
> +++ b/man/man3/strftime.3
> @@ -6,7 +6,7 @@
> .\"
> .TH strftime 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strftime \- format date and time
> +strftime \- string format date and time
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/string.3 b/man/man3/string.3
> index 89fe51fba609..2141822e1fd1 100644
> --- a/man/man3/string.3
> +++ b/man/man3/string.3
> @@ -5,10 +5,7 @@
> .\"
> .TH string 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -stpcpy, strcasecmp, strcat, strchr, strcmp, strcoll, strcpy, strcspn,
> -strdup, strfry, strlen, strncat, strncmp, strncpy, strncasecmp, strpbrk,
> -strrchr, strsep, strspn, strstr, strtok, strxfrm
> -\- string operations
> +string \- string operations
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strlen.3 b/man/man3/strlen.3
> index 1dd99bd8e250..639bdd6ac2d2 100644
> --- a/man/man3/strlen.3
> +++ b/man/man3/strlen.3
> @@ -6,7 +6,7 @@
> .\"
> .TH strlen 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strlen \- calculate the length of a string
> +strlen \- string length
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strncat.3 b/man/man3/strncat.3
> index 4b0217b02673..dd39d54939d9 100644
> --- a/man/man3/strncat.3
> +++ b/man/man3/strncat.3
> @@ -5,10 +5,7 @@
> .\"
> .TH strncat 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strncat
> -\-
> -append non-null bytes from a source array to a string,
> -and null-terminate the result
> +strncat \- nonstring catenate
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strnlen.3 b/man/man3/strnlen.3
> index fbd719ee4888..553a39a9ec7a 100644
> --- a/man/man3/strnlen.3
> +++ b/man/man3/strnlen.3
> @@ -6,7 +6,7 @@
> .\"
> .TH strnlen 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strnlen \- determine the length of a fixed-size string
> +strnlen \- nonstring length
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strpbrk.3 b/man/man3/strpbrk.3
> index 1f56cf18dbac..6e5b79a48bbe 100644
> --- a/man/man3/strpbrk.3
> +++ b/man/man3/strpbrk.3
> @@ -6,7 +6,7 @@
> .\"
> .TH strpbrk 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strpbrk \- search a string for any of a set of bytes
> +strpbrk \- string search characters
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strptime.3 b/man/man3/strptime.3
> index 979bffea7bf8..4502acfe6d1e 100644
> --- a/man/man3/strptime.3
> +++ b/man/man3/strptime.3
> @@ -6,7 +6,7 @@
> .\"
> .TH strptime 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strptime \- convert a string representation of time to a time tm structure
> +strptime \- string parse time
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strsep.3 b/man/man3/strsep.3
> index 46ba6c5819bd..98859f64909f 100644
> --- a/man/man3/strsep.3
> +++ b/man/man3/strsep.3
> @@ -6,7 +6,7 @@
> .\"
> .TH strsep 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strsep \- extract token from string
> +strsep \- string separate
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strsignal.3 b/man/man3/strsignal.3
> index 4a4e8c86e71d..964a5e5aacaf 100644
> --- a/man/man3/strsignal.3
> +++ b/man/man3/strsignal.3
> @@ -8,7 +8,7 @@
> .TH strsignal 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> strsignal, sigabbrev_np, sigdescr_np, sys_siglist \-
> -return string describing signal
> +string signal description
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strspn.3 b/man/man3/strspn.3
> index fe4414317df6..7c85d209c59d 100644
> --- a/man/man3/strspn.3
> +++ b/man/man3/strspn.3
> @@ -6,7 +6,7 @@
> .\"
> .TH strspn 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strspn, strcspn \- get length of a prefix substring
> +strspn, strcspn \- string [complementary] span
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strtod.3 b/man/man3/strtod.3
> index 15147ee51006..84a9934ba267 100644
> --- a/man/man3/strtod.3
> +++ b/man/man3/strtod.3
> @@ -6,7 +6,7 @@
> .\"
> .TH strtod 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strtod, strtof, strtold \- convert ASCII string to floating-point number
> +strtod, strtof, strtold \- string to float
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strtoimax.3 b/man/man3/strtoimax.3
> index 71267754ed7a..08413a9f8101 100644
> --- a/man/man3/strtoimax.3
> +++ b/man/man3/strtoimax.3
> @@ -6,7 +6,7 @@
> .\"
> .TH strtoimax 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strtoimax, strtoumax \- convert string to integer
> +strtoimax, strtoumax \- string to [u]intmax_t
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strtok.3 b/man/man3/strtok.3
> index 2d733e886086..4ce708ecbcb4 100644
> --- a/man/man3/strtok.3
> +++ b/man/man3/strtok.3
> @@ -6,7 +6,7 @@
> .\"
> .TH strtok 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strtok \- extract tokens from strings
> +strtok \- string tokenize
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strtol.3 b/man/man3/strtol.3
> index f88b717780f3..4d9c49eaf28a 100644
> --- a/man/man3/strtol.3
> +++ b/man/man3/strtol.3
> @@ -7,7 +7,7 @@
> .\"
> .TH strtol 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strtol, strtoll, strtoq \- convert a string to a long integer
> +strtol, strtoll, strtoq \- string to long int
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strtoul.3 b/man/man3/strtoul.3
> index a6f6fd4a8ada..670fcb3868a1 100644
> --- a/man/man3/strtoul.3
> +++ b/man/man3/strtoul.3
> @@ -6,7 +6,7 @@
> .\"
> .TH strtoul 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strtoul, strtoull, strtouq \- convert a string to an unsigned long integer
> +strtoul, strtoull, strtouq \- string to unsigned long int
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strverscmp.3 b/man/man3/strverscmp.3
> index d072471b1431..caadb9717a3b 100644
> --- a/man/man3/strverscmp.3
> +++ b/man/man3/strverscmp.3
> @@ -7,7 +7,7 @@
> .\"
> .TH strverscmp 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strverscmp \- compare two version strings
> +strverscmp \- strings version compare
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> diff --git a/man/man3/strxfrm.3 b/man/man3/strxfrm.3
> index d4ac57006eb0..a892bf4c813b 100644
> --- a/man/man3/strxfrm.3
> +++ b/man/man3/strxfrm.3
> @@ -6,7 +6,7 @@
> .\"
> .TH strxfrm 3 (date) "Linux man-pages (unreleased)"
> .SH NAME
> -strxfrm \- string transformation
> +strxfrm \- string transform
> .SH LIBRARY
> Standard C library
> .RI ( libc ,\~ \-lc )
> --
> 2.53.0
>
The text after the \- is documented as a "summary-description", and
many users and tools (including man -k, apropos, and whatis) rely on
this. Repeating the function name in a slightly more expanded form is
not only contrary to what users expect, but is much less useful than a
proper summary description. In most cases the new text does not
provide the summary that users expect from tools like man -k, is
inconsistent with other summaries that might be shown by man -k, and
is not even grammatically correct, making it needlessly difficult to
interpret as a summary or contrast with other summaries to determine
which of several matching functions is desired.
If an expanded form of the function name is useful, it could be added
to the NOTES section.
- Mark
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v1 1/2] man/man3/str*.3: NAME: Explain the names
2026-07-03 5:03 ` [PATCH v1 1/2] man/man3/str*.3: NAME: Explain the names Mark Harris
@ 2026-07-03 11:16 ` Alejandro Colomar
0 siblings, 0 replies; 4+ messages in thread
From: Alejandro Colomar @ 2026-07-03 11:16 UTC (permalink / raw)
To: Mark Harris; +Cc: Douglas McIlroy, linux-man, Serge E. Hallyn
[-- Attachment #1: Type: text/plain, Size: 8472 bytes --]
[CC += Doug]
Hi Mark,
Thanks for the feedback! See below for comments.
On 2026-07-02T22:03:05-0700, Mark Harris wrote:
> Alejandro Colomar wrote:
> >
> > Reported-by: "Serge E. Hallyn" <serge@hallyn.com>
> > Signed-off-by: Alejandro Colomar <alx@kernel.org>
> > ---
> >
> > Hi Serge,
> >
> > I finally took some time to do this that you asked me to do some time
> > ago. I've edited all the str*(3) manual pages so that the NAME section
> > actually explains the name of the function.
> >
> > There's an exception: strpbrk(3). I refuse to explain that name. I've
> > explained it as if it were called strchrs(), which is a name that Plan9
> > uses for that function, and which would have been a better name for it.
> > (See patch 2/2).
> >
> >
> > Have a lovely day!
> > Alex
> >
> > man/man3/strcasecmp.3 | 2 +-
> > man/man3/strchr.3 | 2 +-
> > man/man3/strcmp.3 | 2 +-
> > man/man3/strcoll.3 | 2 +-
> > man/man3/strcpy.3 | 2 +-
> > man/man3/strdup.3 | 2 +-
> > man/man3/strerror.3 | 5 +++--
> > man/man3/strfmon.3 | 2 +-
> > man/man3/strfromd.3 | 3 +--
> > man/man3/strfry.3 | 2 +-
> > man/man3/strftime.3 | 2 +-
> > man/man3/string.3 | 5 +----
> > man/man3/strlen.3 | 2 +-
> > man/man3/strncat.3 | 5 +----
> > man/man3/strnlen.3 | 2 +-
> > man/man3/strpbrk.3 | 2 +-
> > man/man3/strptime.3 | 2 +-
> > man/man3/strsep.3 | 2 +-
> > man/man3/strsignal.3 | 2 +-
> > man/man3/strspn.3 | 2 +-
> > man/man3/strtod.3 | 2 +-
> > man/man3/strtoimax.3 | 2 +-
> > man/man3/strtok.3 | 2 +-
> > man/man3/strtol.3 | 2 +-
> > man/man3/strtoul.3 | 2 +-
> > man/man3/strverscmp.3 | 2 +-
> > man/man3/strxfrm.3 | 2 +-
> > 27 files changed, 29 insertions(+), 35 deletions(-)
> >
> > diff --git a/man/man3/strcasecmp.3 b/man/man3/strcasecmp.3
> > index aa554341da4c..65941ddf6524 100644
> > --- a/man/man3/strcasecmp.3
> > +++ b/man/man3/strcasecmp.3
> > @@ -6,7 +6,7 @@
> > .\"
> > .TH strcasecmp 3 (date) "Linux man-pages (unreleased)"
> > .SH NAME
> > -strcasecmp, strncasecmp \- compare two strings ignoring case
> > +strcasecmp, strncasecmp \- strings case-insensitive compare
> > .SH LIBRARY
> > Standard C library
> > .RI ( libc ,\~ \-lc )
[...]
> > diff --git a/man/man3/strspn.3 b/man/man3/strspn.3
> > index fe4414317df6..7c85d209c59d 100644
> > --- a/man/man3/strspn.3
> > +++ b/man/man3/strspn.3
> > @@ -6,7 +6,7 @@
> > .\"
> > .TH strspn 3 (date) "Linux man-pages (unreleased)"
> > .SH NAME
> > -strspn, strcspn \- get length of a prefix substring
> > +strspn, strcspn \- string [complementary] span
> > .SH LIBRARY
> > Standard C library
> > .RI ( libc ,\~ \-lc )
[...]
> > diff --git a/man/man3/strxfrm.3 b/man/man3/strxfrm.3
> > index d4ac57006eb0..a892bf4c813b 100644
> > --- a/man/man3/strxfrm.3
> > +++ b/man/man3/strxfrm.3
> > @@ -6,7 +6,7 @@
> > .\"
> > .TH strxfrm 3 (date) "Linux man-pages (unreleased)"
> > .SH NAME
> > -strxfrm \- string transformation
> > +strxfrm \- string transform
> > .SH LIBRARY
> > Standard C library
> > .RI ( libc ,\~ \-lc )
> > --
> > 2.53.0
> >
>
> The text after the \- is documented as a "summary-description", and
> many users and tools (including man -k, apropos, and whatis) rely on
> this.
I thought precisely about whatis(1) when doing this. Here's what
whatis(1) shows after this change (and a similar one for mem*(3)):
$ find man/man3/ -type f \
| grep -e/mem -e/str \
| xargs basename -s.3 \
| xargs whatis \
| grep '(3)' \
| sort;
memalign (3) - memory aligned allocate
memccpy (3) - memory until-and-including-character copy
memchr (3) - memory search character
memcmp (3) - memory compare
memcpy (3) - memory copy
memeq (3) - memory equal
memfrob (3) - memory frobnicate (obfuscate)
memmem (3) - memory search submemory
memmove (3) - memory move
mempcpy (3) - memory return-offset-pointer copy
memrchr (3) - memory rear-search character
memset (3) - memory set
strcasecmp (3) - strings case-insensitive compare
strcasestr (3) - string case-insensitive search substring
strcat (3) - string copy/catenate
strchr (3) - string search character
strchrnul (3) - string search character or NUL
strcmp (3) - strings compare
strcoll (3) - strings collate
strcpy (3) - string copy/catenate
strcspn (3) - string [complementary] span
strdup (3) - string duplicate
strdupa (3) - string duplicate using alloca
streq (3) - strings equal
strerror (3) - string error-string
strerror_l (3) - string error-string
strerror_r (3) - string error-string
strerrordesc_np (3) - string error-string
strerrorname_np (3) - string error-string
strfmon (3) - string format monetary value
strfmon_l (3) - string format monetary value
strfromd (3) - string from float
strfromf (3) - string from float
strfroml (3) - string from float
strfry (3) - string fry (obfuscate)
strftime (3) - string format date and time
strftime_l (3) - string format date and time
string (3) - byte operations
strlen (3) - string length
strncasecmp (3) - strings case-insensitive compare
strncat (3) - nonstring catenate
strncmp (3) - strings compare
strncpy (3) - fill a fixed-size buffer with non-null bytes from a st...
strndup (3) - string duplicate
strndupa (3) - string duplicate using alloca
strnlen (3) - nonstring length
strnul (3) - string search NUL
strpbrk (3) - string search characters
strptime (3) - string parse time
strrchr (3) - string rear-search character
strsep (3) - string separate
strsignal (3) - string signal description
strspn (3) - string [complementary] span
strstr (3) - string search substring
strtod (3) - string to float
strtof (3) - string to float
strtoimax (3) - string to [u]intmax_t
strtok (3) - string tokenize
strtok_r (3) - string tokenize reentrant
strtol (3) - string to long int
strtold (3) - string to float
strtoll (3) - string to long int
strtoq (3) - string to long int
strtoul (3) - string to unsigned long int
strtoull (3) - string to unsigned long int
strtoumax (3) - string to [u]intmax_t
strtouq (3) - string to unsigned long int
strverscmp (3) - strings version compare
strxfrm (3) - string transform
As an example of how I think this is useful, I learnt the difference
between strftime(3) and strptime(3) while doing this change. The
ethymology of the name was the key to understanding it. strftime(3) is
for _formatting_ a string, while strptime(3) is for _parsing_ from a
string; I'll never forget that. Before, I knew one of them was for
reading from a string, and the other for writing to a string, but never
remembered which is which, so I had to consult the page every time.
> Repeating the function name in a slightly more expanded form is
> not only contrary to what users expect, but is much less useful than a
> proper summary description. In most cases the new text does not
> provide the summary that users expect from tools like man -k, is
> inconsistent with other summaries that might be shown by man -k, and
> is not even grammatically correct, making it needlessly difficult to
> interpret as a summary or contrast with other summaries to determine
> which of several matching functions is desired.
I agree I wasn't entirely happy about it not being gramatically correct,
but though that maybe it's not necessary to be so.
> If an expanded form of the function name is useful, it could be added
> to the NOTES section.
I've CCd Doug McIlroy. I'm interested in his opinion before deciding
what to do. Anyone else reading this, please give opinions too. I'm
still undecided.
Have a lovely day!
Alex
>
>
>
> - Mark
>
--
<https://www.alejandro-colomar.es>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-07-03 11:16 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-02 12:33 [PATCH v1 1/2] man/man3/str*.3: NAME: Explain the names Alejandro Colomar
2026-07-02 12:33 ` [PATCH v1 2/2] man/man3/strpbrk.3: BUGS: Clarify the NAME Alejandro Colomar
2026-07-03 5:03 ` [PATCH v1 1/2] man/man3/str*.3: NAME: Explain the names Mark Harris
2026-07-03 11:16 ` Alejandro Colomar
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.