Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 03 Sep 2009 11:08:26 +0200
From:      =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= <des@des.no>
To:        Andrey Chernov <ache@nagual.pp.ru>
Cc:        svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, "Simon L. Nielsen" <simon@FreeBSD.org>
Subject:   Re: svn commit: r196752 - head/lib/libc/stdtime
Message-ID:  <86zl9c9z05.fsf@ds4.des.no>
In-Reply-To: <20090903084325.GA65192@nagual.pp.ru> (Andrey Chernov's message of "Thu, 3 Sep 2009 12:43:25 %2B0400")
References:  <200909020456.n824uUqQ082136@svn.freebsd.org> <20090902070808.GA1290@arthur.nitro.dk> <20090902084002.GA17325@nagual.pp.ru> <867hwgcwvo.fsf@ds4.des.no> <20090903084325.GA65192@nagual.pp.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Andrey Chernov <ache@nagual.pp.ru> writes:
> Thanx for detailed explanation.

np; I've made that mistake many times myself.

What do you think of the attached patch?

DES
--=20
Dag-Erling Sm=C3=B8rgrav - des@des.no


--=-=-=
Content-Type: text/x-patch
Content-Disposition: inline; filename=ctype-man.diff

Index: lib/libc/locale/iscntrl.3
===================================================================
--- lib/libc/locale/iscntrl.3	(revision 196695)
+++ lib/libc/locale/iscntrl.3	(working copy)
@@ -32,7 +32,7 @@
 .\"     @(#)iscntrl.3	8.1 (Berkeley) 6/4/93
 .\" $FreeBSD$
 .\"
-.Dd July 17, 2005
+.Dd September 3, 2009
 .Dt ISCNTRL 3
 .Os
 .Sh NAME
@@ -65,6 +65,15 @@
 .It "\&031\ EM \t032\ SUB \t033\ ESC \t034\ FS \t035\ GS"
 .It "\&036\ RS \t037\ US \t177\ DEL"
 .El
+.Pp
+.Em NOTE :
+if the value passed to the
+.Fn iscntrl
+function is a
+.Vt signed char ,
+as is usually the case, it must be cast to an
+.Vt unsigned char
+to avoid sign-extension errors.
 .Sh RETURN VALUES
 The
 .Fn iscntrl
Index: lib/libc/locale/islower.3
===================================================================
--- lib/libc/locale/islower.3	(revision 196695)
+++ lib/libc/locale/islower.3	(working copy)
@@ -32,7 +32,7 @@
 .\"     @(#)islower.3	8.1 (Berkeley) 6/4/93
 .\" $FreeBSD$
 .\"
-.Dd July 17, 2005
+.Dd September 3, 2009
 .Dt ISLOWER 3
 .Os
 .Sh NAME
@@ -64,6 +64,15 @@
 .It "\&165\ ``u'' \t166\ ``v'' \t167\ ``w'' \t170\ ``x'' \t171\ ``y''"
 .It "\&172\ ``z''"
 .El
+.Pp
+.Em NOTE :
+if the value passed to the
+.Fn islower
+function is a
+.Vt signed char ,
+as is usually the case, it must be cast to an
+.Vt unsigned char
+to avoid sign-extension errors.
 .Sh RETURN VALUES
 The
 .Fn islower
Index: lib/libc/locale/ispunct.3
===================================================================
--- lib/libc/locale/ispunct.3	(revision 196695)
+++ lib/libc/locale/ispunct.3	(working copy)
@@ -32,7 +32,7 @@
 .\"	@(#)ispunct.3	8.1 (Berkeley) 6/4/93
 .\" $FreeBSD$
 .\"
-.Dd July 17, 2005
+.Dd September 3, 2009
 .Dt ISPUNCT 3
 .Os
 .Sh NAME
@@ -70,6 +70,15 @@
 .It "\&136\ ``^'' \t137\ ``_'' \t140\ ```'' \t173\ ``{'' \t174\ ``|''"
 .It "\&175\ ``}'' \t176\ ``~''"
 .El
+.Pp
+.Em NOTE :
+if the value passed to the
+.Fn ispunct
+function is a
+.Vt signed char ,
+as is usually the case, it must be cast to an
+.Vt unsigned char
+to avoid sign-extension errors.
 .Sh RETURN VALUES
 The
 .Fn ispunct
Index: lib/libc/locale/tolower.3
===================================================================
--- lib/libc/locale/tolower.3	(revision 196695)
+++ lib/libc/locale/tolower.3	(working copy)
@@ -32,7 +32,7 @@
 .\"	@(#)tolower.3	8.1 (Berkeley) 6/4/93
 .\" $FreeBSD$
 .\"
-.Dd July 17, 2005
+.Dd September 3, 2009
 .Dt TOLOWER 3
 .Os
 .Sh NAME
@@ -53,6 +53,15 @@
 .Vt "unsigned char"
 or the value of
 .Dv EOF .
+.Pp
+.Em NOTE :
+if the value passed to the
+.Fn tolower
+function is a
+.Vt signed char ,
+as is usually the case, it must be cast to an
+.Vt unsigned char
+to avoid sign-extension errors.
 .Sh RETURN VALUES
 If the argument is an upper-case letter, the
 .Fn tolower
Index: lib/libc/locale/isrune.3
===================================================================
--- lib/libc/locale/isrune.3	(revision 196695)
+++ lib/libc/locale/isrune.3	(working copy)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd March 30, 2004
+.Dd September 3, 2009
 .Dt ISRUNE 3
 .Os
 .Sh NAME
@@ -46,6 +46,15 @@
 .Tn ASCII
 character set, this is equivalent to
 .Fn isascii .
+.Pp
+.Em NOTE :
+if the value passed to the
+.Fn isrune
+function is a
+.Vt signed char ,
+as is usually the case, it must be cast to an
+.Vt unsigned char
+to avoid sign-extension errors.
 .Sh RETURN VALUES
 The
 .Fn isrune
Index: lib/libc/locale/isalnum.3
===================================================================
--- lib/libc/locale/isalnum.3	(revision 196695)
+++ lib/libc/locale/isalnum.3	(working copy)
@@ -32,7 +32,7 @@
 .\"     @(#)isalnum.3	8.1 (Berkeley) 6/4/93
 .\" $FreeBSD$
 .\"
-.Dd July 17, 2005
+.Dd September 3, 2009
 .Dt ISALNUM 3
 .Os
 .Sh NAME
@@ -75,6 +75,15 @@
 .It "\&164\ ``t'' \t165\ ``u'' \t166\ ``v'' \t167\ ``w'' \t170\ ``x''"
 .It "\&171\ ``y'' \t172\ ``z''"
 .El
+.Pp
+.Em NOTE :
+if the value passed to the
+.Fn isalnum
+function is a
+.Vt signed char ,
+as is usually the case, it must be cast to an
+.Vt unsigned char
+to avoid sign-extension errors.
 .Sh RETURN VALUES
 The
 .Fn isalnum
Index: lib/libc/locale/digittoint.3
===================================================================
--- lib/libc/locale/digittoint.3	(revision 196695)
+++ lib/libc/locale/digittoint.3	(working copy)
@@ -28,7 +28,7 @@
 .\"	@(#)digittoint.3	8.1 (Berkeley) 6/4/93
 .\" $FreeBSD$
 .\"
-.Dd April 6, 2001
+.Dd September 3, 2009
 .Dt DIGITTOINT 3
 .Os
 .Sh NAME
@@ -46,6 +46,15 @@
 function converts a numeric character to its corresponding integer value.
 The character can be any decimal digit or hexadecimal digit.
 With hexadecimal characters, the case of the values does not matter.
+.Pp
+.Em NOTE :
+if the value passed to the
+.Fn digittoint
+function is a
+.Vt signed char ,
+as is usually the case, it must be cast to an
+.Vt unsigned char
+to avoid sign-extension errors.
 .Sh RETURN VALUES
 The
 .Fn digittoint
Index: lib/libc/locale/isalpha.3
===================================================================
--- lib/libc/locale/isalpha.3	(revision 196695)
+++ lib/libc/locale/isalpha.3	(working copy)
@@ -32,7 +32,7 @@
 .\"     @(#)isalpha.3	8.1 (Berkeley) 6/4/93
 .\" $FreeBSD$
 .\"
-.Dd July 17, 2005
+.Dd September 3, 2009
 .Dt ISALPHA 3
 .Os
 .Sh NAME
@@ -73,6 +73,15 @@
 .It "\&164\ ``t'' \t165\ ``u'' \t166\ ``v'' \t167\ ``w'' \t170\ ``x''"
 .It "\&171\ ``y'' \t172\ ``z''"
 .El
+.Pp
+.Em NOTE :
+if the value passed to the
+.Fn isalpha
+function is a
+.Vt signed char ,
+as is usually the case, it must be cast to an
+.Vt unsigned char
+to avoid sign-extension errors.
 .Sh RETURN VALUES
 The
 .Fn isalpha
Index: lib/libc/locale/isideogram.3
===================================================================
--- lib/libc/locale/isideogram.3	(revision 196695)
+++ lib/libc/locale/isideogram.3	(working copy)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd March 30, 2004
+.Dd September 3, 2009
 .Dt ISIDEOGRAM 3
 .Os
 .Sh NAME
@@ -41,6 +41,15 @@
 The
 .Fn isideogram
 function tests for an ideographic character.
+.Pp
+.Em NOTE :
+if the value passed to the
+.Fn isideogram
+function is a
+.Vt signed char ,
+as is usually the case, it must be cast to an
+.Vt unsigned char
+to avoid sign-extension errors.
 .Sh RETURN VALUES
 The
 .Fn isideogram
Index: lib/libc/locale/isblank.3
===================================================================
--- lib/libc/locale/isblank.3	(revision 196695)
+++ lib/libc/locale/isblank.3	(working copy)
@@ -28,7 +28,7 @@
 .\"     @(#)isblank.3	8.1 (Berkeley) 6/4/93
 .\" $FreeBSD$
 .\"
-.Dd July 17, 2005
+.Dd September 3, 2009
 .Dt ISBLANK 3
 .Os
 .Sh NAME
@@ -57,6 +57,15 @@
 .Vt "unsigned char"
 or the value of
 .Dv EOF .
+.Pp
+.Em NOTE :
+if the value passed to the
+.Fn isblank
+function is a
+.Vt signed char ,
+as is usually the case, it must be cast to an
+.Vt unsigned char
+to avoid sign-extension errors.
 .Sh RETURN VALUES
 The
 .Fn isblank
Index: lib/libc/locale/isxdigit.3
===================================================================
--- lib/libc/locale/isxdigit.3	(revision 196695)
+++ lib/libc/locale/isxdigit.3	(working copy)
@@ -32,7 +32,7 @@
 .\"     @(#)isxdigit.3	8.1 (Berkeley) 6/4/93
 .\" $FreeBSD$
 .\"
-.Dd July 17, 2005
+.Dd September 3, 2009
 .Dt ISXDIGIT 3
 .Os
 .Sh NAME
@@ -71,6 +71,15 @@
 .Vt "unsigned char"
 or the value of
 .Dv EOF .
+.Pp
+.Em NOTE :
+if the value passed to the
+.Fn isxdigit
+function is a
+.Vt signed char ,
+as is usually the case, it must be cast to an
+.Vt unsigned char
+to avoid sign-extension errors.
 .Sh RETURN VALUES
 The
 .Fn isxdigit
Index: lib/libc/locale/isdigit.3
===================================================================
--- lib/libc/locale/isdigit.3	(revision 196695)
+++ lib/libc/locale/isdigit.3	(working copy)
@@ -32,7 +32,7 @@
 .\"     @(#)isdigit.3	8.1 (Berkeley) 6/4/93
 .\" $FreeBSD$
 .\"
-.Dd May 4, 2007
+.Dd September 3, 2009
 .Dt ISDIGIT 3
 .Os
 .Sh NAME
@@ -68,6 +68,15 @@
 .Vt "unsigned char"
 or the value of
 .Dv EOF .
+.Pp
+.Em NOTE :
+if the value passed to the
+.Fn isdigit
+function is a
+.Vt signed char ,
+as is usually the case, it must be cast to an
+.Vt unsigned char
+to avoid sign-extension errors.
 .Sh RETURN VALUES
 The
 .Fn isdigit
Index: lib/libc/locale/isgraph.3
===================================================================
--- lib/libc/locale/isgraph.3	(revision 196695)
+++ lib/libc/locale/isgraph.3	(working copy)
@@ -32,7 +32,7 @@
 .\"     @(#)isgraph.3	8.2 (Berkeley) 12/11/93
 .\" $FreeBSD$
 .\"
-.Dd July 17, 2005
+.Dd September 3, 2009
 .Dt ISGRAPH 3
 .Os
 .Sh NAME
@@ -80,6 +80,15 @@
 .It "\&166\ ``v'' \t167\ ``w'' \t170\ ``x'' \t171\ ``y'' \t172\ ``z''"
 .It "\&173\ ``{'' \t174\ ``|'' \t175\ ``}'' \t176\ ``~''"
 .El
+.Pp
+.Em NOTE :
+if the value passed to the
+.Fn isgraph
+function is a
+.Vt signed char ,
+as is usually the case, it must be cast to an
+.Vt unsigned char
+to avoid sign-extension errors.
 .Sh RETURN VALUES
 The
 .Fn isgraph
Index: lib/libc/locale/ctype.3
===================================================================
--- lib/libc/locale/ctype.3	(revision 196695)
+++ lib/libc/locale/ctype.3	(working copy)
@@ -28,7 +28,7 @@
 .\"     @(#)ctype.3	8.1 (Berkeley) 6/4/93
 .\" $FreeBSD$
 .\"
-.Dd March 30, 2004
+.Dd September 3, 2009
 .Dt CTYPE 3
 .Os
 .Sh NAME
@@ -111,6 +111,13 @@
 .In ctype.h ,
 or as true functions in the C library.
 See the specific manual pages for more information.
+.Pp
+.Em NOTE :
+if the value passed to one of these functions is a
+.Vt signed char ,
+as is usually the case, it must be cast to an
+.Vt unsigned char
+to avoid sign-extension errors.
 .Sh SEE ALSO
 .Xr digittoint 3 ,
 .Xr isalnum 3 ,
Index: lib/libc/locale/isspace.3
===================================================================
--- lib/libc/locale/isspace.3	(revision 196695)
+++ lib/libc/locale/isspace.3	(working copy)
@@ -32,7 +32,7 @@
 .\"     @(#)isspace.3	8.1 (Berkeley) 6/4/93
 .\" $FreeBSD$
 .\"
-.Dd July 17, 2005
+.Dd September 3, 2009
 .Dt ISSPACE 3
 .Os
 .Sh NAME
@@ -61,6 +61,15 @@
 .Vt "unsigned char"
 or the value of
 .Dv EOF .
+.Pp
+.Em NOTE :
+if the value passed to the
+.Fn isspace
+function is a
+.Vt signed char ,
+as is usually the case, it must be cast to an
+.Vt unsigned char
+to avoid sign-extension errors.
 .Sh RETURN VALUES
 The
 .Fn isspace
Index: lib/libc/locale/isprint.3
===================================================================
--- lib/libc/locale/isprint.3	(revision 196695)
+++ lib/libc/locale/isprint.3	(working copy)
@@ -32,7 +32,7 @@
 .\"     @(#)isprint.3	8.1 (Berkeley) 6/4/93
 .\" $FreeBSD$
 .\"
-.Dd July 17, 2005
+.Dd September 3, 2009
 .Dt ISPRINT 3
 .Os
 .Sh NAME
@@ -78,6 +78,15 @@
 .It "\&165\ ``u'' \t166\ ``v'' \t167\ ``w'' \t170\ ``x'' \t171\ ``y''"
 .It "\&172\ ``z'' \t173\ ``{'' \t174\ ``|'' \t175\ ``}'' \t176\ ``~''"
 .El
+.Pp
+.Em NOTE :
+if the value passed to the
+.Fn isprint
+function is a
+.Vt signed char ,
+as is usually the case, it must be cast to an
+.Vt unsigned char
+to avoid sign-extension errors.
 .Sh RETURN VALUES
 The
 .Fn isprint
Index: lib/libc/locale/isascii.3
===================================================================
--- lib/libc/locale/isascii.3	(revision 196695)
+++ lib/libc/locale/isascii.3	(working copy)
@@ -28,7 +28,7 @@
 .\"     @(#)isascii.3	8.2 (Berkeley) 12/11/93
 .\" $FreeBSD$
 .\"
-.Dd October 6, 2002
+.Dd September 3, 2009
 .Dt ISASCII 3
 .Os
 .Sh NAME
@@ -47,6 +47,15 @@
 .Tn ASCII
 character, which is any character
 between 0 and octal 0177 inclusive.
+.Pp
+.Em NOTE :
+if the value passed to the
+.Fn isascii
+function is a
+.Vt signed char ,
+as is usually the case, it must be cast to an
+.Vt unsigned char
+to avoid sign-extension errors.
 .Sh SEE ALSO
 .Xr ctype 3 ,
 .Xr iswascii 3 ,
Index: lib/libc/locale/isphonogram.3
===================================================================
--- lib/libc/locale/isphonogram.3	(revision 196695)
+++ lib/libc/locale/isphonogram.3	(working copy)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd March 30, 2004
+.Dd September 3, 2009
 .Dt ISPHONOGRAM 3
 .Os
 .Sh NAME
@@ -41,6 +41,15 @@
 The
 .Fn isphonogram
 function tests for a phonographic character.
+.Pp
+.Em NOTE :
+if the value passed to the
+.Fn isphonogram
+function is a
+.Vt signed char ,
+as is usually the case, it must be cast to an
+.Vt unsigned char
+to avoid sign-extension errors.
 .Sh RETURN VALUES
 The
 .Fn isphonogram
Index: lib/libc/locale/isupper.3
===================================================================
--- lib/libc/locale/isupper.3	(revision 196695)
+++ lib/libc/locale/isupper.3	(working copy)
@@ -32,7 +32,7 @@
 .\"     @(#)isupper.3	8.1 (Berkeley) 6/4/93
 .\" $FreeBSD$
 .\"
-.Dd July 17, 2005
+.Dd September 3, 2009
 .Dt ISUPPER 3
 .Os
 .Sh NAME
@@ -64,6 +64,15 @@
 .It "\&125\ ``U'' \t126\ ``V'' \t127\ ``W'' \t130\ ``X'' \t131\ ``Y''"
 .It "\&132\ ``Z''"
 .El
+.Pp
+.Em NOTE :
+if the value passed to the
+.Fn isupper
+function is a
+.Vt signed char ,
+as is usually the case, it must be cast to an
+.Vt unsigned char
+to avoid sign-extension errors.
 .Sh RETURN VALUES
 The
 .Fn isupper
Index: lib/libc/locale/toascii.3
===================================================================
--- lib/libc/locale/toascii.3	(revision 196695)
+++ lib/libc/locale/toascii.3	(working copy)
@@ -28,7 +28,7 @@
 .\"	@(#)toascii.3	8.1 (Berkeley) 6/4/93
 .\" $FreeBSD$
 .\"
-.Dd June 4, 1993
+.Dd September 3, 2009
 .Dt TOASCII 3
 .Os
 .Sh NAME
@@ -45,6 +45,15 @@
 .Fn toascii
 function strips all but the low 7 bits from a letter,
 including parity or other marker bits.
+.Pp
+.Em NOTE :
+if the value passed to the
+.Fn toascii
+function is a
+.Vt signed char ,
+as is usually the case, it must be cast to an
+.Vt unsigned char
+to avoid sign-extension errors.
 .Sh RETURN VALUES
 The
 .Fn toascii
Index: lib/libc/locale/toupper.3
===================================================================
--- lib/libc/locale/toupper.3	(revision 196695)
+++ lib/libc/locale/toupper.3	(working copy)
@@ -32,7 +32,7 @@
 .\"	@(#)toupper.3	8.1 (Berkeley) 6/4/93
 .\" $FreeBSD$
 .\"
-.Dd July 17, 2005
+.Dd September 3, 2009
 .Dt TOUPPER 3
 .Os
 .Sh NAME
@@ -53,6 +53,15 @@
 .Vt "unsigned char"
 or the value of
 .Dv EOF .
+.Pp
+.Em NOTE :
+if the value passed to the
+.Fn toupper
+function is a
+.Vt signed char ,
+as is usually the case, it must be cast to an
+.Vt unsigned char
+to avoid sign-extension errors.
 .Sh RETURN VALUES
 If the argument is a lower-case letter, the
 .Fn toupper
Index: lib/libc/locale/isspecial.3
===================================================================
--- lib/libc/locale/isspecial.3	(revision 196695)
+++ lib/libc/locale/isspecial.3	(working copy)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd March 30, 2004
+.Dd September 3, 2009
 .Dt ISSPECIAL 3
 .Os
 .Sh NAME
@@ -41,6 +41,15 @@
 The
 .Fn isspecial
 function tests for a special character.
+.Pp
+.Em NOTE :
+if the value passed to the
+.Fn isspecial
+function is a
+.Vt signed char ,
+as is usually the case, it must be cast to an
+.Vt unsigned char
+to avoid sign-extension errors.
 .Sh RETURN VALUES
 The
 .Fn isspecial

--=-=-=--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?86zl9c9z05.fsf>