summaryrefslogtreecommitdiffstats
path: root/lib/libc/locale/runetype.c
diff options
context:
space:
mode:
authorache <ache@FreeBSD.org>1995-11-03 08:59:02 +0000
committerache <ache@FreeBSD.org>1995-11-03 08:59:02 +0000
commit94bfe4fc2daad94a8db6f6357509d07c43ba23e7 (patch)
treea19d0b48f043559abd58365a4b3393bbc6da9c5c /lib/libc/locale/runetype.c
parent5f00167641d57332e1952cd7ec49cfc0aa9444d9 (diff)
downloadFreeBSD-src-94bfe4fc2daad94a8db6f6357509d07c43ba23e7.zip
FreeBSD-src-94bfe4fc2daad94a8db6f6357509d07c43ba23e7.tar.gz
Move more stuff out to XPG4
Handle negative chars inside runetype/tolower/toupper
Diffstat (limited to 'lib/libc/locale/runetype.c')
-rw-r--r--lib/libc/locale/runetype.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/libc/locale/runetype.c b/lib/libc/locale/runetype.c
index 6dd7ea8..ba128c6 100644
--- a/lib/libc/locale/runetype.c
+++ b/lib/libc/locale/runetype.c
@@ -41,12 +41,22 @@ unsigned long
___runetype(c)
_BSD_RUNE_T_ c;
{
+#ifdef XPG4
int x;
_RuneRange *rr = &_CurrentRuneLocale->runetype_ext;
_RuneEntry *re = rr->ranges;
+#endif
if (c == EOF)
return(0);
+ if (c < 0) {
+ if (c >= -128) /* signed char */
+ return(_CurrentRuneLocale->runetype[(unsigned char)c]);
+ else
+ return(0);
+ }
+
+#ifdef XPG4
for (x = 0; x < rr->nranges; ++x, ++re) {
if (c < re->min)
return(0L);
@@ -57,6 +67,7 @@ ___runetype(c)
return(re->map);
}
}
+#endif
return(0L);
}
OpenPOWER on IntegriCloud