summaryrefslogtreecommitdiff
path: root/extra/locale/gen_ldc.c
diff options
context:
space:
mode:
authorEugene Yudin <e.yudin@ndmsystems.com>2017-07-24 22:27:00 +0200
committerWaldemar Brodkorb <wbx@openadk.org>2017-07-28 19:06:07 +0200
commitb98192b80ee5654aa7c5590bcc266c5eec2c67a5 (patch)
treeb6f6dbf90cd2dadceb24b4ea8e4ea8831e79c88e /extra/locale/gen_ldc.c
parent63597398e4fa0db50638568a8caa1637bab44705 (diff)
fix tolower and locales
The function towlower doesn't work with locales different from C. Issue was introduced in commit: 8cde3a9bf2856dcb9a759dec7ecb04a68e712254 Call to setlocale is needed for correct generation of the table uplow_diff. Otherwise you receive compile time error "range assumption error" after uncommenting the call. Similar problem described here: http://lists.uclibc.org/pipermail/uclibc/2015-March/048852.html This commit fix the problem by using int32_t values.
Diffstat (limited to 'extra/locale/gen_ldc.c')
-rw-r--r--extra/locale/gen_ldc.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/extra/locale/gen_ldc.c b/extra/locale/gen_ldc.c
index 2cedbddaf..5f454026f 100644
--- a/extra/locale/gen_ldc.c
+++ b/extra/locale/gen_ldc.c
@@ -129,6 +129,20 @@ void out_i16(FILE *f, const int16_t *p, size_t n, char *comment)
fprintf(f, "\n},\n");
}
+void out_i32(FILE *f, const int32_t *p, size_t n, char *comment)
+{
+ size_t i;
+
+ fprintf(f, "{\t/* %s */", comment);
+ for (i = 0 ; i < n ; i++) {
+ if (!(i & 7)) {
+ fprintf(f, "\n\t");
+ }
+ fprintf(f, "%11d, ", p[i]);
+ }
+ fprintf(f, "\n},\n");
+}
+
void out_size_t(FILE *f, const size_t *p, size_t n, char *comment)
{
size_t i;
@@ -194,7 +208,7 @@ int main(int argc, char **argv)
#ifdef __WCHAR_ENABLED
out_uc(lso, __LOCALE_DATA_WCctype_data, __LOCALE_DATA_WCctype_TBL_LEN, "tblwctype");
out_uc(lso, __LOCALE_DATA_WCuplow_data, __LOCALE_DATA_WCuplow_TBL_LEN, "tblwuplow");
- out_i16(lso, __LOCALE_DATA_WCuplow_diff_data, __LOCALE_DATA_WCuplow_diff_TBL_LEN, "tblwuplow_diff");
+ out_i32(lso, __LOCALE_DATA_WCuplow_diff_data, __LOCALE_DATA_WCuplow_diff_TBL_LEN, "tblwuplow_diff");
/* const unsigned char tblwcomb[WCcomb_TBL_LEN]; */
/* width?? */
#endif /* __WCHAR_ENABLED */