The isspace(3) man page is out of date
Keith Thompson
Keith.S.Thompson@gmail.com
Fri Aug 7 22:00:46 GMT 2026
The isspace(3) man page incorrectly states that isspace(c) is defined
only when isascii(c) is true or c is EOF.
In fact, ISO C (going back to C89/C90) requires isspace(c) to work
correctly when c is either within the range of unsigned char or equal
to EOF (almost certainly 0..255 or -1 for systems supported by
newlib). The implementation of isspace() is correct; this is only a
documentation issue.
The other is*() functions work correctly and are documented correctly.
The following patch fixes this by copying the wording from isalpha().
I have *not* updated it to clarify just what "whitespace" means, but
it would probably be a good idea.
commit 932bca35395f3fc920b8d90b1f4bc07dc13efb93 (HEAD -> isspace-man-page)
Author: Keith Thompson <Keith.S.Thompson@gmail.com>
Date: 2026-08-07 14:50:36 -0700
Correct isspace(3) man page (copied wording from isalpha(3))
diff --git newlib/libc/ctype/isspace.c newlib/libc/ctype/isspace.c
index 0def2c0ce..784f4d7ae 100644
--- newlib/libc/ctype/isspace.c
+++ newlib/libc/ctype/isspace.c
@@ -18,7 +18,8 @@ SYNOPSIS
DESCRIPTION
<<isspace>> is a macro which classifies singlebyte charset values by table
lookup. It is a predicate returning non-zero for whitespace
-characters, and 0 for other characters. It is defined only when
<<isascii>>(<[c]>) is true or <[c]> is EOF.
+characters, and 0 for other characters. It is defined only if
+<[c]> is representable as an unsigned char or if <[c]> is EOF.
<<isspace_l>> is like <<isspace>> but performs the check based on the
locale specified by the locale object locale. If <[locale]> is
More information about the Newlib
mailing list