summaryrefslogtreecommitdiff
path: root/extra/locale/gen_wctype.c
diff options
context:
space:
mode:
authorManuel Novoa III <mjn3@codepoet.org>2003-08-01 20:08:59 +0000
committerManuel Novoa III <mjn3@codepoet.org>2003-08-01 20:08:59 +0000
commit1217289737588e65b088b3535428b27c7287d699 (patch)
tree6a292ac767d219702e26a6a2111737f84a96900c /extra/locale/gen_wctype.c
parent32b76c5ec3c257b7287913d0d1a96e0cbb2e9c6a (diff)
Add a new *scanf implementation, includeing the *wscanf functions.
Should be standards compliant and with several optional features, including support for hexadecimal float notation, locale awareness, glibc-like locale-specific digit grouping with the `'' flag, and positional arg support. I tested it pretty well (finding several bugs in glibc's scanf in the process), but it is brand new so be aware. The *wprintf functions now support floating point output. Also, a couple of bugs were squashed. Finally, %a/%A conversions are now implemented. Implement the glibc xlocale interface for thread-specific locale support. Also add the various *_l(args, locale_t loc_arg) funcs. NOTE!!! setlocale() is NOT threadsafe! NOTE!!! The strto{floating point} conversion functions are now locale aware. The also now support hexadecimal floating point notation. Add the wcsto{floating point} conversion functions. Fix a bug in mktime() related to dst. Note that unlike glibc's mktime, uClibc's version always normalizes the struct tm before attempting to determine the correct dst setting if tm_isdst == -1 on entry. Add a stub version of the libintl functions. (untested) Fixed a known memory leak in setlocale() related to the collation data. Add lots of new config options (which Erik agreed to sort out :-), including finally exposing some of the stripped down stdio configs. Be careful with those though, as they haven't been tested in a long time. (temporary) GOTCHAs... The ctype functions are currently incorrect for 8-bit locales. They will be fixed shortly. The ctype functions are now table-based, resulting in larger staticly linked binaries. I'll be adding an option to use the old approach in the stub locale configuration.
Diffstat (limited to 'extra/locale/gen_wctype.c')
-rw-r--r--extra/locale/gen_wctype.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/extra/locale/gen_wctype.c b/extra/locale/gen_wctype.c
index 1c8c10c43..a9bcf614b 100644
--- a/extra/locale/gen_wctype.c
+++ b/extra/locale/gen_wctype.c
@@ -159,17 +159,17 @@ void output_table(FILE *fp, const char *name, table_data *tbl)
{
size_t i;
- fprintf(fp, "#define WC%s_II_LEN %7u\n", name, tbl->ii_len);
- fprintf(fp, "#define WC%s_TI_LEN %7u\n", name, tbl->ti_len);
- fprintf(fp, "#define WC%s_UT_LEN %7u\n", name, tbl->ut_len);
+ fprintf(fp, "#define __LOCALE_DATA_WC%s_II_LEN %7u\n", name, tbl->ii_len);
+ fprintf(fp, "#define __LOCALE_DATA_WC%s_TI_LEN %7u\n", name, tbl->ti_len);
+ fprintf(fp, "#define __LOCALE_DATA_WC%s_UT_LEN %7u\n", name, tbl->ut_len);
- fprintf(fp, "#define WC%s_II_SHIFT %7u\n", name, tbl->ii_shift);
- fprintf(fp, "#define WC%s_TI_SHIFT %7u\n", name, tbl->ti_shift);
+ fprintf(fp, "#define __LOCALE_DATA_WC%s_II_SHIFT %7u\n", name, tbl->ii_shift);
+ fprintf(fp, "#define __LOCALE_DATA_WC%s_TI_SHIFT %7u\n", name, tbl->ti_shift);
fprintf(fp, "\n#ifdef WANT_WC%s_data\n", name);
i = tbl->ii_len + tbl->ti_len + tbl->ut_len;
- fprintf(fp, "\nstatic const unsigned char WC%s_data[%zu] = {", name, i);
+ fprintf(fp, "\nstatic const unsigned char __LOCALE_DATA_WC%s_data[%zu] = {", name, i);
for (i=0 ; i < tbl->ii_len ; i++) {
if (i % 12 == 0) {
fprintf(fp, "\n");
@@ -730,16 +730,16 @@ int main(int argc, char **argv)
return EXIT_FAILURE;
}
- fprintf(fp, "#define WC_TABLE_DOMAIN_MAX %#8lx\n\n",
+ fprintf(fp, "#define __LOCALE_DATA_WC_TABLE_DOMAIN_MAX %#8lx\n\n",
(unsigned long) RANGE);
output_table(fp, "ctype", &cttable);
output_table(fp, "uplow", &ultable);
#warning fix the upper bound on the upper/lower tables... save 200 bytes or so
- fprintf(fp, "#define WCuplow_diffs %7u\n", ul_count);
+ fprintf(fp, "#define __LOCALE_DATA_WCuplow_diffs %7u\n", ul_count);
fprintf(fp, "\n#ifdef WANT_WCuplow_diff_data\n\n");
- fprintf(fp, "\nstatic const short WCuplow_diff_data[%zu] = {",
+ fprintf(fp, "\nstatic const short __LOCALE_DATA_WCuplow_diff_data[%zu] = {",
2 * (size_t) ul_count);
for (i=0 ; i < ul_count ; i++) {
if (i % 4 == 0) {