From 1217289737588e65b088b3535428b27c7287d699 Mon Sep 17 00:00:00 2001 From: Manuel Novoa III Date: Fri, 1 Aug 2003 20:08:59 +0000 Subject: 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. --- TODO | 54 ++++++++++++++++++++++-------------------------------- 1 file changed, 22 insertions(+), 32 deletions(-) (limited to 'TODO') diff --git a/TODO b/TODO index 8cfac9d7d..0737971c9 100644 --- a/TODO +++ b/TODO @@ -25,53 +25,43 @@ I'm currently working on completing the wide char and locale support. 1) Little things that need fixing: ---------------------------------- - *) Fix bug in *printf: outdigit precison bug - a) Use locale decimal point in *printf() and strto*d() -- slightly - complicated by the fact that at least one locale uses a wchar - radix that does not map to a single byte in UTF-8. - b) Use locale digit grouping in *printf() flosting point. - c) Deal with mb format string issues in scanf and strftime (at least). - d) Support gnu/bsd extension members tm_gmtoff and tm_zone in struct tm. + a) Fix the ctype support for 8-bit locales. + b) Fix bug in *printf: outdigit precison bug + c) Check that gnu/bsd extension members tm_gmtoff and tm_zone in struct tm + are respected where they should be. + d) Implement the obstack printf funcs for glibc compat. + e) Implement glibc 'a' flag for scanf string conversions. + f) Allow use of the older non-table-based ctype functions when using + stub locale support. (smaller) - 2) Implement wide char floating point conversion functions -- wcsto*(). - - 3) Reimplement scanf for narrow and wide streams. - ------------------------------------------------- - The current char version of scanf() needs some cleanup. Also, - modifying the char version of scanf() to create the wchar versions - will require reworking the implementation of matching char sets - (enclosed in []). - - 4) Additional str{f|p}time issues. + 2) Additional str{f|p}time issues. ---------------------------------- a) Spacing issue wrt strptime. b) Support locale specific alternate digits. (data is in place) c) Support locale era in year designations. (data is in place) + d) Deal with mb format string issues in strftime. + e) Implement wcsftime. - 5) Other locale issues (my implementation): + 3) Other locale issues (my implementation): ------------------------------------------- - a) Additional clean up of ctype and wctype, primarily to allow for mmap'd - locales and updateable locale data. - b) Build a C-only locale object for linking and allow full locale data to - be mmap'd in later, to allow updating and to make locale support useful - for staticly linked apps. - c) Adapt regex lib to use my collation data and add the necessary collating + a) Do a little more clean up of ctype and wctype. + b) Rework of the locale data organization to make using locales reasonable + when staticly linking. (mmap) + c) Rewrite the locale data generation tools to process the text specifications + rather than relying on glibc. + d) Adapt regex lib to use my collation data and add the necessary collating item tables to support SUSv3 required features. - d) transliteration of unsupported wchars in 8-bit locales (like glibc). - e) Support ISO/IEC 14652 draft locale extensions (LC_PAPER, etc). + e) transliteration of unsupported wchars in 8-bit locales (like glibc). + f) Support ISO/IEC 14652 draft locale extensions (LC_PAPER, etc). + g) Implement strfrom. + h) Shift-state codeset locale support? Other stuff: -Reimplement _dtostr to correct its deficiencies (%A support!) and hopefully - reduce its size. - Move the target-specific sysconf.c generator to extra (as it needs to be run on the target) and fix libc/unistd/Makefile. -Make errno and endptr handling the default in the strto* functions and - document how to turn those off to save space. - ----------------------------------------------------------------------------- ds's list: -- cgit v1.2.3