diff options
author | Manuel Novoa III <mjn3@codepoet.org> | 2003-09-16 22:22:30 +0000 |
---|---|---|
committer | Manuel Novoa III <mjn3@codepoet.org> | 2003-09-16 22:22:30 +0000 |
commit | deadfa70fc14c6cb582046ace402db291207db28 (patch) | |
tree | b498afa73bf29b4568504b1aac1c05fab38545ba | |
parent | 4c7710885ea0d4aaf72fb60e7933e1d3f1a2aaf5 (diff) |
This should enabled building of uClibc locale support when using uClibc itself.
Sorry I didn't test this before the release.
Please remember that the locale data generation tools are not very robust,
so doing something like disabling 8-bit codeset support is likely to break
things. As it stands, UTF-8 support is required, but I'm not sure I test
for that.
Also, you will notice a difference in the locale data generated by uClibc
verses glibc. That's because the bg_BG locale specifies use of grouping
in LC_NUMERIC, but supplies no grouping char. The uClibc locale code
tests for and works around this (at the moment) by disabling grouping.
But the result is slightly different data which ripples throughout the
rest of the tables.
-rw-r--r-- | extra/locale/gen_wc8bit.c | 5 | ||||
-rw-r--r-- | extra/locale/gen_wctype.c | 5 | ||||
-rw-r--r-- | libc/sysdeps/linux/common/bits/uClibc_locale.h | 11 |
3 files changed, 13 insertions, 8 deletions
diff --git a/extra/locale/gen_wc8bit.c b/extra/locale/gen_wc8bit.c index 75054667a..8a6d47a11 100644 --- a/extra/locale/gen_wc8bit.c +++ b/extra/locale/gen_wc8bit.c @@ -7,12 +7,13 @@ #include <wctype.h> #include <limits.h> -#ifndef __UCLIBC__ +#ifndef _CTYPE_H +#define _CTYPE_H +#endif #ifndef _WCTYPE_H #define _WCTYPE_H #endif #include "../../libc/sysdeps/linux/common/bits/uClibc_ctype.h" -#endif /* #define CTYPE_PACKED */ diff --git a/extra/locale/gen_wctype.c b/extra/locale/gen_wctype.c index a9bcf614b..6a90b92c7 100644 --- a/extra/locale/gen_wctype.c +++ b/extra/locale/gen_wctype.c @@ -10,12 +10,13 @@ #include <wchar.h> #include <ctype.h> -#ifndef __UCLIBC__ +#ifndef _CTYPE_H +#define _CTYPE_H +#endif #ifndef _WCTYPE_H #define _WCTYPE_H #endif #include "../../libc/sysdeps/linux/common/bits/uClibc_ctype.h" -#endif /* 0x9 : space blank */ /* 0xa : space */ diff --git a/libc/sysdeps/linux/common/bits/uClibc_locale.h b/libc/sysdeps/linux/common/bits/uClibc_locale.h index 88226c638..0b8699e32 100644 --- a/libc/sysdeps/linux/common/bits/uClibc_locale.h +++ b/libc/sysdeps/linux/common/bits/uClibc_locale.h @@ -71,7 +71,9 @@ #include <stdint.h> #include <bits/uClibc_touplow.h> +#if defined(_LIBC) && !defined(__UCLIBC_GEN_LOCALE) #include <bits/uClibc_locale_data.h> +#endif extern void _locale_set(const unsigned char *p); extern void _locale_init(void); @@ -96,6 +98,7 @@ enum { * In particular, C/POSIX locale is '#' + "\x80\x01"}*LC_ALL + nul. */ +#if defined(_LIBC) && !defined(__UCLIBC_GEN_LOCALE) typedef struct { uint16_t num_weights; uint16_t num_starters; @@ -139,7 +142,7 @@ typedef struct { /* static unsigned char cur_locale[LOCALE_STRING_SIZE]; */ -typedef struct { +typedef struct __uclibc_locale_struct { #ifdef __UCLIBC_HAS_XLOCALE__ const __ctype_mask_t *__ctype_b; const __ctype_touplow_t *__ctype_tolower; @@ -311,10 +314,10 @@ typedef struct { } __uclibc_locale_t; -typedef __uclibc_locale_t *__locale_t; - -extern __locale_t __global_locale; +extern struct __uclibc_locale_struct * __global_locale; +#endif +typedef struct __uclibc_locale_struct *__locale_t; extern int __locale_mbrtowc_l(wchar_t *__restrict dst, const char *__restrict src, |