summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libc/misc/wctype/_wctype.c394
1 files changed, 183 insertions, 211 deletions
diff --git a/libc/misc/wctype/_wctype.c b/libc/misc/wctype/_wctype.c
index 6340281c7..296293ff3 100644
--- a/libc/misc/wctype/_wctype.c
+++ b/libc/misc/wctype/_wctype.c
@@ -37,13 +37,12 @@
#include <stdint.h>
#include <bits/uClibc_uwchar.h>
-
#if defined(__LOCALE_C_ONLY) && defined(__UCLIBC_DO_XLOCALE)
-#error xlocale functionality is not supported in stub locale mode.
+# error xlocale functionality is not supported in stub locale mode.
#endif
#ifdef __UCLIBC_HAS_XLOCALE__
-#include <xlocale.h>
+# include <xlocale.h>
#endif
/* We know wide char support is enabled. We wouldn't be here otherwise. */
@@ -99,18 +98,18 @@ enum {
/*--------------------------------------------------------------------*/
#ifdef __UCLIBC_MJN3_ONLY__
-#ifdef L_iswspace
+# ifdef L_iswspace
/* generates one warning */
-#warning TODO: Fix WC* defines!
+# warning TODO: Fix WC* defines!
+# endif
#endif
-#endif /* __UCLIBC_MJN3_ONLY__ */
#define ENCODING (__UCLIBC_CURLOCALE->encoding)
#define WCctype (__UCLIBC_CURLOCALE->tblwctype)
#define WCuplow (__UCLIBC_CURLOCALE->tblwuplow)
#define WCcmob (__UCLIBC_CURLOCALE->tblwcomb)
-#define WCuplow_diff (__UCLIBC_CURLOCALE->tblwuplow_diff)
+#define WCuplow_diff (__UCLIBC_CURLOCALE->tblwuplow_diff)
#define WC_TABLE_DOMAIN_MAX __LOCALE_DATA_WC_TABLE_DOMAIN_MAX
@@ -234,70 +233,66 @@ ISW_FUNC_BODY(xdigit);
/**********************************************************************/
#if defined(L_towlower) || defined(L_towlower_l)
-#ifdef L_towlower
-#define TOWLOWER(w) towlower(w)
-#else /* L_towlower */
-#define TOWLOWER(w) towlower_l(w, __locale_t locale)
-#undef __UCLIBC_CURLOCALE
-#define __UCLIBC_CURLOCALE (locale)
-#endif /* L_towlower */
+# ifdef L_towlower
+# define TOWLOWER(w) towlower(w)
+# else
+# define TOWLOWER(w) towlower_l(w, __locale_t locale)
+# undef __UCLIBC_CURLOCALE
+# define __UCLIBC_CURLOCALE (locale)
+# endif
-#ifdef __UCLIBC_HAS_XLOCALE__
-#define TOWCTRANS(w,d) towctrans_l(w,d, __UCLIBC_CURLOCALE)
-#else /* __UCLIBC_HAS_XLOCALE__ */
-#define TOWCTRANS(w,d) towctrans(w,d)
-#endif /* __UCLIBC_HAS_XLOCALE__ */
+# ifdef __UCLIBC_HAS_XLOCALE__
+# define TOWCTRANS(w,d) towctrans_l(w,d, __UCLIBC_CURLOCALE)
+# else
+# define TOWCTRANS(w,d) towctrans(w,d)
+# endif
-#define __C_towlower(wc) \
- ((((__uwchar_t)(wc)) <= 0x7f) ? (__C_ctype_tolower)[(wc)] : (wc))
+# define __C_towlower(wc) \
+ (((__uwchar_t)(wc) <= 0x7f) ? (__C_ctype_tolower)[(wc)] : (wc))
-#ifdef __LOCALE_C_ONLY
+# ifdef __LOCALE_C_ONLY
wint_t towlower(wint_t wc)
{
-#ifdef __UCLIBC_HAS_CTYPE_TABLES__
+# ifdef __UCLIBC_HAS_CTYPE_TABLES__
return __C_towlower(wc);
-#else
- return (wc == ((unsigned int)(wc)))
- ? __C_tolower(((unsigned int)(wc)))
+# else
+ return (wc == (unsigned)wc)
+ ? __C_tolower((unsigned)wc)
: 0;
-#endif
+# endif
}
-#else /* __LOCALE_C_ONLY */
-
-#ifdef SMALL_UPLOW
+# else /* __LOCALE_C_ONLY */
-#if defined(L_towlower) && defined(__UCLIBC_HAS_XLOCALE__)
+# ifdef SMALL_UPLOW
+# if defined(L_towlower) && defined(__UCLIBC_HAS_XLOCALE__)
wint_t towlower(wint_t wc)
{
return towctrans_l(wc, _CTYPE_tolower, __UCLIBC_CURLOCALE);
}
-
-#else /* defined(L_towlower) && defined(__UCLIBC_HAS_XLOCALE__) */
-
+# else /* defined(L_towlower) && defined(__UCLIBC_HAS_XLOCALE__) */
wint_t TOWLOWER(wint_t wc)
{
return TOWCTRANS(wc, _CTYPE_tolower);
}
+# endif /* defined(L_towlower) && defined(__UCLIBC_HAS_XLOCALE__) */
-#endif /* defined(L_towlower) && defined(__UCLIBC_HAS_XLOCALE__) */
+# else /* SMALL_UPLOW */
-#else /* SMALL_UPLOW */
-
-#if defined(L_towlower) && defined(__UCLIBC_HAS_XLOCALE__)
+# if defined(L_towlower) && defined(__UCLIBC_HAS_XLOCALE__)
wint_t towlower(wint_t wc)
{
return towlower_l(wc, __UCLIBC_CURLOCALE);
}
-#else /* defined(L_towlower) && defined(__UCLIBC_HAS_XLOCALE__) */
+# else /* defined(L_towlower) && defined(__UCLIBC_HAS_XLOCALE__) */
wint_t TOWLOWER(wint_t wc)
{
- unsigned int sc, n, i;
+ unsigned sc, n, i;
__uwchar_t u = wc;
if (ENCODING == __ctype_encoding_7_bit) {
@@ -311,99 +306,89 @@ wint_t TOWLOWER(wint_t wc)
n = u & ((1 << WCuplow_II_SHIFT) - 1);
u >>= WCuplow_II_SHIFT;
- i = ((unsigned int) WCuplow[u]) << WCuplow_II_SHIFT;
- i = ((unsigned int) WCuplow[WCuplow_II_LEN + i + n])
- << WCuplow_TI_SHIFT;
- i = ((unsigned int) WCuplow[WCuplow_II_LEN + WCuplow_TI_LEN
- + i + sc]) << 1;
+ i = ((unsigned) WCuplow[u]) << WCuplow_II_SHIFT;
+ i = ((unsigned) WCuplow[WCuplow_II_LEN + i + n]) << WCuplow_TI_SHIFT;
+ i = ((unsigned) WCuplow[WCuplow_II_LEN + WCuplow_TI_LEN + i + sc]) << 1;
wc += WCuplow_diff[i + 1];
}
return wc;
}
-#endif /* defined(L_towlower) && defined(__UCLIBC_HAS_XLOCALE__) */
+# endif /* defined(L_towlower) && defined(__UCLIBC_HAS_XLOCALE__) */
-#endif /* SMALL_UPLOW */
+# endif /* SMALL_UPLOW */
-#ifdef L_towlower_l
+# ifdef L_towlower_l
libc_hidden_def(towlower_l)
-#endif /* L_towlower_l */
+# endif
-#endif /* __LOCALE_C_ONLY */
+# endif /* __LOCALE_C_ONLY */
-#ifndef L_towlower_l
+# ifndef L_towlower_l
libc_hidden_def(towlower)
-#endif
+# endif
#endif
/**********************************************************************/
#if defined(L_towupper) || defined(L_towupper_l)
-#ifdef L_towupper
-#define TOWUPPER(w) towupper(w)
-#else /* L_towupper */
-#define TOWUPPER(w) towupper_l(w, __locale_t locale)
-#undef __UCLIBC_CURLOCALE
-#define __UCLIBC_CURLOCALE (locale)
-#endif /* L_towupper */
+# ifdef L_towupper
+# define TOWUPPER(w) towupper(w)
+# else
+# define TOWUPPER(w) towupper_l(w, __locale_t locale)
+# undef __UCLIBC_CURLOCALE
+# define __UCLIBC_CURLOCALE (locale)
+# endif
-#ifdef __UCLIBC_HAS_XLOCALE__
-#define TOWCTRANS(w,d) towctrans_l(w,d, __UCLIBC_CURLOCALE)
-#else /* __UCLIBC_HAS_XLOCALE__ */
-#define TOWCTRANS(w,d) towctrans(w,d)
-#endif /* __UCLIBC_HAS_XLOCALE__ */
+# ifdef __UCLIBC_HAS_XLOCALE__
+# define TOWCTRANS(w,d) towctrans_l(w,d, __UCLIBC_CURLOCALE)
+# else
+# define TOWCTRANS(w,d) towctrans(w,d)
+# endif
-#define __C_towupper(wc) \
- ((((__uwchar_t)(wc)) <= 0x7f) ? (__C_ctype_toupper)[(wc)] : (wc))
+# define __C_towupper(wc) \
+ (((__uwchar_t)(wc) <= 0x7f) ? (__C_ctype_toupper)[(wc)] : (wc))
-#ifdef __LOCALE_C_ONLY
+# ifdef __LOCALE_C_ONLY
wint_t towupper(wint_t wc)
{
-#ifdef __UCLIBC_HAS_CTYPE_TABLES__
+# ifdef __UCLIBC_HAS_CTYPE_TABLES__
return __C_towupper(wc);
-#else
- return (wc == ((unsigned int)(wc)))
- ? __C_toupper(((unsigned int)(wc)))
+# else
+ return (wc == (unsigned)wc)
+ ? __C_toupper((unsigned)wc)
: 0;
-#endif
-
+# endif
}
-#else /* __LOCALE_C_ONLY */
+# else /* __LOCALE_C_ONLY */
-#ifdef SMALL_UPLOW
-
-#if defined(L_towupper) && defined(__UCLIBC_HAS_XLOCALE__)
+# ifdef SMALL_UPLOW
+# if defined(L_towupper) && defined(__UCLIBC_HAS_XLOCALE__)
wint_t towupper(wint_t wc)
{
return towctrans_l(wc, _CTYPE_toupper, __UCLIBC_CURLOCALE);
}
-
-#else /* defined(L_towupper) && defined(__UCLIBC_HAS_XLOCALE__) */
-
+# else
wint_t TOWUPPER(wint_t wc)
{
return TOWCTRANS(wc, _CTYPE_toupper);
}
+# endif
-#endif /* defined(L_towupper) && defined(__UCLIBC_HAS_XLOCALE__) */
-
-#else /* SMALL_UPLOW */
-
-#if defined(L_towupper) && defined(__UCLIBC_HAS_XLOCALE__)
+# else /* SMALL_UPLOW */
+# if defined(L_towupper) && defined(__UCLIBC_HAS_XLOCALE__)
wint_t towupper(wint_t wc)
{
return towupper_l(wc, __UCLIBC_CURLOCALE);
}
-
-#else /* defined(L_towupper) && defined(__UCLIBC_HAS_XLOCALE__) */
-
+# else /* defined(L_towupper) && defined(__UCLIBC_HAS_XLOCALE__) */
wint_t TOWUPPER(wint_t wc)
{
- unsigned int sc, n, i;
+ unsigned sc, n, i;
__uwchar_t u = wc;
if (ENCODING == __ctype_encoding_7_bit) {
@@ -417,29 +402,26 @@ wint_t TOWUPPER(wint_t wc)
n = u & ((1 << WCuplow_II_SHIFT) - 1);
u >>= WCuplow_II_SHIFT;
- i = ((unsigned int) WCuplow[u]) << WCuplow_II_SHIFT;
- i = ((unsigned int) WCuplow[WCuplow_II_LEN + i + n])
- << WCuplow_TI_SHIFT;
- i = ((unsigned int) WCuplow[WCuplow_II_LEN + WCuplow_TI_LEN
- + i + sc]) << 1;
+ i = ((unsigned) WCuplow[u]) << WCuplow_II_SHIFT;
+ i = ((unsigned) WCuplow[WCuplow_II_LEN + i + n]) << WCuplow_TI_SHIFT;
+ i = ((unsigned) WCuplow[WCuplow_II_LEN + WCuplow_TI_LEN + i + sc]) << 1;
wc += WCuplow_diff[i];
}
return wc;
}
+# endif /* defined(L_towupper) && defined(__UCLIBC_HAS_XLOCALE__) */
-#endif /* defined(L_towupper) && defined(__UCLIBC_HAS_XLOCALE__) */
-
-#endif /* SMALL_UPLOW */
+# endif /* SMALL_UPLOW */
-#ifdef L_towupper_l
+# ifdef L_towupper_l
libc_hidden_def(towupper_l)
-#endif /* L_towupper_l */
+# endif
-#endif /* __LOCALE_C_ONLY */
+# endif /* __LOCALE_C_ONLY */
-#ifndef L_towupper_l
+# ifndef L_towupper_l
libc_hidden_def(towupper)
-#endif
+# endif
#endif
/**********************************************************************/
@@ -472,9 +454,8 @@ libc_hidden_def(wctype)
#ifdef L_wctype_l
#ifdef __UCLIBC_MJN3_ONLY__
-#warning REMINDER: Currently wctype_l simply calls wctype.
-#endif /* __UCLIBC_MJN3_ONLY__ */
-
+# warning REMINDER: Currently wctype_l simply calls wctype.
+#endif
wctype_t wctype_l (const char *property, __locale_t locale)
{
@@ -488,24 +469,25 @@ libc_hidden_def(wctype_l)
#define __C_iswdigit(c) \
((sizeof(c) == sizeof(char)) \
- ? (((unsigned char)((c) - '0')) < 10) \
- : (((__uwchar_t)((c) - '0')) < 10))
+ ? ((unsigned char)((c) - '0') < 10) \
+ : ((__uwchar_t)((c) - '0') < 10) \
+ )
#define __C_iswxdigit(c) \
(__C_iswdigit(c) \
|| ((sizeof(c) == sizeof(char)) \
- ? (((unsigned char)((((c)) | 0x20) - 'a')) < 6) \
- : (((__uwchar_t)((((c)) | 0x20) - 'a')) < 6)))
+ ? ((unsigned char)(((c) | 0x20) - 'a') < 6) \
+ : ((__uwchar_t)(((c) | 0x20) - 'a') < 6) \
+ ) \
+ )
#ifdef __UCLIBC_MJN3_ONLY__
-#ifdef L_iswctype
-#warning CONSIDER: Change to bit shift? would need to sync with wctype.h
+# ifdef L_iswctype
+# warning CONSIDER: Change to bit shift? would need to sync with wctype.h
+# endif
#endif
-#endif /* __UCLIBC_MJN3_ONLY__ */
-
#ifdef __UCLIBC_HAS_CTYPE_TABLES__
-#if !defined(__UCLIBC_HAS_XLOCALE__) || defined(L_iswctype_l)
-
+# if !defined(__UCLIBC_HAS_XLOCALE__) || defined(L_iswctype_l)
static const unsigned short int desc2flag[] = {
[_CTYPE_unclassified] = 0,
[_CTYPE_isalnum] = (unsigned short int) _ISwalnum,
@@ -521,9 +503,8 @@ static const unsigned short int desc2flag[] = {
[_CTYPE_isupper] = (unsigned short int) _ISwupper,
[_CTYPE_isxdigit] = (unsigned short int) _ISwxdigit,
};
-
-#endif /* defined(L_iswctype_L) || defined(__LOCALE_C_ONLY) */
-#endif /* __UCLIBC_HAS_CTYPE_TABLES__ */
+# endif
+#endif
#ifdef __LOCALE_C_ONLY
@@ -533,9 +514,9 @@ int iswctype(wint_t wc, wctype_t desc)
{
/* Note... wctype_t is unsigned. */
- if ((((__uwchar_t) wc) <= 0x7f)
- && (desc < (sizeof(desc2flag)/sizeof(desc2flag[0])))
- ) {
+ if ((__uwchar_t) wc <= 0x7f
+ && desc < (sizeof(desc2flag) / sizeof(desc2flag[0]))
+ ) {
return __isctype(wc, desc2flag[desc]);
}
return 0;
@@ -547,32 +528,32 @@ int iswctype(wint_t wc, wctype_t desc)
{
/* This is lame, but it is here just to get it working for now. */
- if (wc == ((unsigned int)(wc))) {
- switch(desc) {
+ if (wc == (unsigned)wc) {
+ switch (desc) {
case _CTYPE_isupper:
- return __C_isupper((unsigned int)(wc));
+ return __C_isupper((unsigned)wc);
case _CTYPE_islower:
- return __C_islower((unsigned int)(wc));
+ return __C_islower((unsigned)wc);
case _CTYPE_isalpha:
- return __C_isalpha((unsigned int)(wc));
+ return __C_isalpha((unsigned)wc);
case _CTYPE_isdigit:
- return __C_isdigit((unsigned int)(wc));
+ return __C_isdigit((unsigned)wc);
case _CTYPE_isxdigit:
- return __C_isxdigit((unsigned int)(wc));
+ return __C_isxdigit((unsigned)wc);
case _CTYPE_isspace:
- return __C_isspace((unsigned int)(wc));
+ return __C_isspace((unsigned)wc);
case _CTYPE_isprint:
- return __C_isprint((unsigned int)(wc));
+ return __C_isprint((unsigned)wc);
case _CTYPE_isgraph:
- return __C_isgraph((unsigned int)(wc));
+ return __C_isgraph((unsigned)wc);
case _CTYPE_isblank:
- return __C_isblank((unsigned int)(wc));
+ return __C_isblank((unsigned)wc);
case _CTYPE_iscntrl:
- return __C_iscntrl((unsigned int)(wc));
+ return __C_iscntrl((unsigned)wc);
case _CTYPE_ispunct:
- return __C_ispunct((unsigned int)(wc));
+ return __C_ispunct((unsigned)wc);
case _CTYPE_isalnum:
- return __C_isalnum((unsigned int)(wc));
+ return __C_isalnum((unsigned)wc);
default:
break;
}
@@ -585,18 +566,18 @@ int iswctype(wint_t wc, wctype_t desc)
#else /* __LOCALE_C_ONLY */
#ifdef __UCLIBC_MJN3_ONLY__
-#ifdef L_iswctype
-#warning CONSIDER: Handle combining class?
+# ifdef L_iswctype
+# warning CONSIDER: Handle combining class?
+# endif
#endif
-#endif /* __UCLIBC_MJN3_ONLY__ */
#ifdef L_iswctype
-#define ISWCTYPE(w,d) iswctype(w,d)
-#else /* L_iswctype */
-#define ISWCTYPE(w,d) iswctype_l(w,d, __locale_t locale)
-#undef __UCLIBC_CURLOCALE
-#define __UCLIBC_CURLOCALE (locale)
-#endif /* L_iswctype */
+# define ISWCTYPE(w,d) iswctype(w,d)
+#else
+# define ISWCTYPE(w,d) iswctype_l(w,d, __locale_t locale)
+# undef __UCLIBC_CURLOCALE
+# define __UCLIBC_CURLOCALE (locale)
+#endif
#if defined(L_iswctype) && defined(__UCLIBC_HAS_XLOCALE__)
@@ -609,12 +590,12 @@ int iswctype(wint_t wc, wctype_t desc)
int ISWCTYPE(wint_t wc, wctype_t desc)
{
- unsigned int sc, n, i0, i1;
+ unsigned sc, n, i0, i1;
unsigned char d = __CTYPE_unclassified;
- if ((ENCODING != __ctype_encoding_7_bit) || (((__uwchar_t) wc) <= 0x7f)){
+ if ((ENCODING != __ctype_encoding_7_bit) || ((__uwchar_t)wc <= 0x7f)) {
if (desc < _CTYPE_iswxdigit) {
- if (((__uwchar_t) wc) <= WC_TABLE_DOMAIN_MAX) {
+ if ((__uwchar_t)wc <= WC_TABLE_DOMAIN_MAX) {
/* From here on, we know wc > 0. */
sc = wc & WCctype_TI_MASK;
wc >>= WCctype_TI_SHIFT;
@@ -628,17 +609,15 @@ int ISWCTYPE(wint_t wc, wctype_t desc)
d = WCctype[WCctype_II_LEN + WCctype_TI_LEN + i1 + (sc >> 1)];
d = (sc & 1) ? (d >> 4) : (d & 0xf);
- } else if ( ((((__uwchar_t)(wc - 0xe0020UL)) <= 0x5f)
- || (wc == 0xe0001UL))
- || ( (((__uwchar_t)(wc - 0xf0000UL)) < 0x20000UL)
- && ((wc & 0xffffU) <= 0xfffdU))
- ) {
+ } else if ((__uwchar_t)(wc - 0xe0020UL) <= 0x5f
+ || wc == 0xe0001UL
+ || (((__uwchar_t)(wc - 0xf0000UL) < 0x20000UL) && ((wc & 0xffffU) <= 0xfffdU))
+ ) {
d = __CTYPE_punct;
}
#if 0
- return ( ((unsigned char)(d - ctype_range[2*desc]))
- <= ctype_range[2*desc + 1] )
+ return ((unsigned char)(d - ctype_range[2*desc]) <= ctype_range[2*desc + 1])
&& ((desc != _CTYPE_iswblank) || (d & 1));
#else
return __UCLIBC_CURLOCALE->code2flag[d] & desc2flag[desc];
@@ -646,8 +625,8 @@ int ISWCTYPE(wint_t wc, wctype_t desc)
}
#ifdef __UCLIBC_MJN3_ONLY__
-#warning TODO: xdigit really needs to be handled better. Remember only for ascii!
-#endif /* __UCLIBC_MJN3_ONLY__ */
+# warning TODO: xdigit really needs to be handled better. Remember only for ascii!
+#endif
/* TODO - Add locale-specific classifications. */
return (desc == _CTYPE_iswxdigit) ? __C_iswxdigit(wc) : 0;
}
@@ -658,13 +637,13 @@ int ISWCTYPE(wint_t wc, wctype_t desc)
#ifdef L_iswctype_l
libc_hidden_def(iswctype_l)
-#endif /* L_iswctype_l */
+#endif
#endif /* __LOCALE_C_ONLY */
#ifdef L_iswctype
libc_hidden_def(iswctype)
-#endif /* L_iswctype */
+#endif
#endif
/**********************************************************************/
@@ -676,14 +655,15 @@ libc_hidden_def(iswctype)
wint_t towctrans(wint_t wc, wctrans_t desc)
{
- if ((unsigned int)(desc - _CTYPE_tolower) <= (_CTYPE_toupper - _CTYPE_tolower)) {
+ if ((unsigned)(desc - _CTYPE_tolower) <= (_CTYPE_toupper - _CTYPE_tolower)) {
/* Transliteration is either tolower or toupper. */
+#if 0
/* I think it's wrong: _toupper(c) assumes that c is a *lowercase* *letter* -
- * it is defined as ((c) ^ 0x20)!
- * if ((__uwchar_t) wc <= 0x7f) {
- * return (desc == _CTYPE_tolower) ? _tolower(wc) : _toupper(wc);
- * }
- */
+ * it is defined as ((c) ^ 0x20)! */
+ if ((__uwchar_t) wc <= 0x7f) {
+ return (desc == _CTYPE_tolower) ? _tolower(wc) : _toupper(wc);
+ }
+#endif
__uwchar_t c = wc | 0x20; /* lowercase if it's a letter */
if (c >= 'a' && c <= 'z') {
if (desc == _CTYPE_toupper)
@@ -699,20 +679,20 @@ wint_t towctrans(wint_t wc, wctrans_t desc)
#else /* __LOCALE_C_ONLY */
#ifdef L_towctrans
-#define TOWCTRANS(w,d) towctrans(w,d)
-#else /* L_towctrans */
-#define TOWCTRANS(w,d) towctrans_l(w,d, __locale_t locale)
-#undef __UCLIBC_CURLOCALE
-#define __UCLIBC_CURLOCALE (locale)
-#endif /* L_towctrans */
+# define TOWCTRANS(w,d) towctrans(w,d)
+#else
+# define TOWCTRANS(w,d) towctrans_l(w,d, __locale_t locale)
+# undef __UCLIBC_CURLOCALE
+# define __UCLIBC_CURLOCALE (locale)
+#endif
#ifdef __UCLIBC_HAS_XLOCALE__
-#define TOWLOWER(w,l) towlower_l(w,l)
-#define TOWUPPER(w,l) towupper_l(w,l)
-#else /* __UCLIBC_HAS_XLOCALE__ */
-#define TOWLOWER(w,l) towlower(w)
-#define TOWUPPER(w,l) towupper(w)
-#endif /* __UCLIBC_HAS_XLOCALE__ */
+# define TOWLOWER(w,l) towlower_l(w,l)
+# define TOWUPPER(w,l) towupper_l(w,l)
+#else
+# define TOWLOWER(w,l) towlower(w)
+# define TOWUPPER(w,l) towupper(w)
+#endif
#if defined(L_towctrans) && defined(__UCLIBC_HAS_XLOCALE__)
@@ -727,48 +707,43 @@ wint_t towctrans(wint_t wc, wctrans_t desc)
wint_t TOWCTRANS(wint_t wc, wctrans_t desc)
{
- unsigned int sc, n, i;
+ unsigned sc, n, i;
__uwchar_t u = wc;
/* TODO - clean up */
if (ENCODING == __ctype_encoding_7_bit) {
- if ((((__uwchar_t) wc) > 0x7f)
- || (((unsigned int)(desc - _CTYPE_tolower))
- > (_CTYPE_toupper - _CTYPE_tolower))
- ){
+ if ((__uwchar_t)wc > 0x7f
+ || (unsigned)(desc - _CTYPE_tolower) > (_CTYPE_toupper - _CTYPE_tolower)
+ ) {
/* We're in the C/POSIX locale, so ignore non-ASCII values
* as well an any mappings other than toupper or tolower. */
return wc;
}
}
- if (((unsigned int)(desc - _CTYPE_tolower))
- <= (_CTYPE_totitle - _CTYPE_tolower)
- ) {
+ if ((unsigned)(desc - _CTYPE_tolower) <= (_CTYPE_totitle - _CTYPE_tolower)) {
if (u <= WC_TABLE_DOMAIN_MAX) {
sc = u & ((1 << WCuplow_TI_SHIFT) - 1);
u >>= WCuplow_TI_SHIFT;
n = u & ((1 << WCuplow_II_SHIFT) - 1);
u >>= WCuplow_II_SHIFT;
- i = ((unsigned int) WCuplow[u]) << WCuplow_II_SHIFT;
- i = ((unsigned int) WCuplow[WCuplow_II_LEN + i + n])
- << WCuplow_TI_SHIFT;
- i = ((unsigned int) WCuplow[WCuplow_II_LEN + WCuplow_TI_LEN
- + i + sc]) << 1;
+ i = ((unsigned) WCuplow[u]) << WCuplow_II_SHIFT;
+ i = ((unsigned) WCuplow[WCuplow_II_LEN + i + n]) << WCuplow_TI_SHIFT;
+ i = ((unsigned) WCuplow[WCuplow_II_LEN + WCuplow_TI_LEN + i + sc]) << 1;
if (desc == _CTYPE_tolower) {
++i;
}
wc += WCuplow_diff[i];
if (desc == _CTYPE_totitle) {
#ifdef __UCLIBC_MJN3_ONLY__
-#warning TODO: Verify totitle special cases!
-#endif /* __UCLIBC_MJN3_ONLY__ */
+# warning TODO: Verify totitle special cases!
+#endif
/* WARNING! These special cases work for glibc 2.2.4. Changes
* may be needed if the glibc locale tables are updated. */
- if ( (((__uwchar_t)(wc - 0x1c4)) <= (0x1cc - 0x1c4))
- || (wc == 0x1f1)
- ) {
+ if ((__uwchar_t)(wc - 0x1c4) <= (0x1cc - 0x1c4)
+ || wc == 0x1f1
+ ) {
++wc;
}
}
@@ -786,10 +761,9 @@ wint_t TOWCTRANS(wint_t wc, wctrans_t desc)
wint_t TOWCTRANS(wint_t wc, wctrans_t desc)
{
if (ENCODING == __ctype_encoding_7_bit) {
- if ((((__uwchar_t) wc) > 0x7f)
- || (((unsigned int)(desc - _CTYPE_tolower))
- > (_CTYPE_toupper - _CTYPE_tolower))
- ){
+ if ((__uwchar_t)wc > 0x7f
+ || (unsigned)(desc - _CTYPE_tolower) > (_CTYPE_toupper - _CTYPE_tolower)
+ ) {
/* We're in the C/POSIX locale, so ignore non-ASCII values
* as well an any mappings other than toupper or tolower. */
return wc;
@@ -798,19 +772,18 @@ wint_t TOWCTRANS(wint_t wc, wctrans_t desc)
if (desc == _CTYPE_tolower) {
return TOWLOWER(wc, __UCLIBC_CURLOCALE);
- } else if (((unsigned int)(desc - _CTYPE_toupper))
- <= (_CTYPE_totitle - _CTYPE_toupper)
- ) {
+ }
+ if ((unsigned)(desc - _CTYPE_toupper) <= (_CTYPE_totitle - _CTYPE_toupper)) {
wc = TOWUPPER(wc, __UCLIBC_CURLOCALE);
if (desc == _CTYPE_totitle) {
#ifdef __UCLIBC_MJN3_ONLY__
-#warning TODO: Verify totitle special cases!
-#endif /* __UCLIBC_MJN3_ONLY__ */
+# warning TODO: Verify totitle special cases!
+#endif
/* WARNING! These special cases work for glibc 2.2.4. Changes
* may be needed if the glibc locale tables are updated. */
- if ( (((__uwchar_t)(wc - 0x1c4)) <= (0x1cc - 0x1c4))
- || (wc == 0x1f1)
- ) {
+ if ((__uwchar_t)(wc - 0x1c4) <= (0x1cc - 0x1c4)
+ || wc == 0x1f1
+ ) {
++wc;
}
}
@@ -827,7 +800,7 @@ wint_t TOWCTRANS(wint_t wc, wctrans_t desc)
#ifdef L_towctrans_l
libc_hidden_def(towctrans_l)
-#endif /* L_towctrans_l */
+#endif
#endif /* __LOCALE_C_ONLY */
@@ -865,10 +838,9 @@ libc_hidden_def(wctrans)
/**********************************************************************/
#ifdef L_wctrans_l
-#ifdef __UCLIBC_MJN3_ONLY__
-#warning REMINDER: Currently wctrans_l simply calls wctrans.
-#endif /* __UCLIBC_MJN3_ONLY__ */
-
+# ifdef __UCLIBC_MJN3_ONLY__
+# warning REMINDER: Currently wctrans_l simply calls wctrans.
+# endif
wctrans_t wctrans_l(const char *property, __locale_t locale)
{