diff options
author | Manuel Novoa III <mjn3@codepoet.org> | 2003-08-01 20:08:59 +0000 |
---|---|---|
committer | Manuel Novoa III <mjn3@codepoet.org> | 2003-08-01 20:08:59 +0000 |
commit | 1217289737588e65b088b3535428b27c7287d699 (patch) | |
tree | 6a292ac767d219702e26a6a2111737f84a96900c /extra/locale/gen_wctype.c | |
parent | 32b76c5ec3c257b7287913d0d1a96e0cbb2e9c6a (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.c | 18 |
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) { |