All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.