* libc/stdlib/strtod.c (_strtod_r): Change local variables aadj,
rv, rv0 from double to type U. Use accessor macros dval, dword0
and dword1 for all accesses except for the ULtod call, where rv.i
replaces the pointer cast.
* libc/stdlib/mprec.h (U): Rename member L to i for easier re-use
of access macros. Tweak comment.
Remove #ifdef'd YES_ALIAS code.
(dword0, dword1, dval): Define in terms of uncast union member
access. Ditto for _DOUBLE_IS_32BITS variants.
(Storeinc): Replace aliasing-flawed microoptimized definition with
alternative suggested in comment. Remove now stale comment.
* libc/stdlib/mprec.h [_DOUBLE_IS_32BITS]: Turn off C99 hex
floating-point format support. Also redefine
dword0 and dword1 macros.
* libc/stdlib/strtod.c: Add checks for _DOUBLE_IS_32BITS
to prevent setting dword1 which is an rvalue only.
* libc/stdlib/Makefile.am: Add new gdtoa routines.
* libc/stdlib/Makefile.in: Regenerated.
* libc/stdlib/gd_qnan.h: New file.
* libc/stdlib/gdtoa-gethex.c: Ditto.
* libc/stdlib/gdtoa-hexnan.c: Ditto.
* libc/stdlib/gdtoa.h: Ditto.
* libc/stdlib/mprec.c: Add new helper routines needed by
the new gdtoa code.
* libc/stdlib/mprec.h: Integrate some defines and prototypes
used by gdtoa routines here.
* libc/stdlib/strtod.c: Rebased on David M. Gay's gdtoa-strtod.c
which adds C99 support such as nan, inf, and hexadecimal input
format.
* libc/stdlib/strtod.c (_strtod_r): Add NaN support.
* (strtof): Ditto.
* libc/stdio/vfscanf.c (__svfscanf_r): Ditto.
* Makefile.am (MATHOBJS_IN_LIBC): Add s_nan and sf_nan
functions for use by strtod and strtof.
* Makefile.in: Regenerated.
* libc/include/stdlib.h (strtof): New prototype (from C99).
(strtodf): Changed from prototype to macro which redefines
to strtof.
* libc/stdlib/atof.c: Change documentation to refer to strtof
instead of strtodf.
* libc/stdlib/atoff.c (atoff): Change to call strtof instead of
strtodf.
* libc/stdlib/strtod.c (strtodf): Renamed to strtof.
(strtof): New function.
* libm/test/convert.c (test_strtodf): Renamed to test_strtof which
calls strtof.
* libc/include/stdio.h[!_REENT_ONLY]: Moved various functions together
into one list.
[!__STRICT_ANSI__]: Moved non-ANSI I/O functions in this list.
(vfscanf, vscanf, vsscanf, _vfscanf_r, _vscanf_r, _vsscanf_r): New
function prototypes.
(_fscanf_r, _sscanf_r): Ditto.
* libc/include/stdlib.h: Added _strtod_r prototype.
* libc/stdio/Makefile.am: Add new v*scanf functions.
* libc/stdio/Makefile.in: Regenerate.
* libc/stdio/fscanf.c: Reorganized so HAVE_STDC only affects prototype
and code is shared. Added reentrant _fscanf_r which calls __svfscanf_r. * libc/stdio/scanf.c: Changed to call __svfscanf_r.
* libc/stdio/sscanf.c: Changed documentation to add reentrant routines.
(sscanf): Changed to call __svfscanf_r with _REENT argument.
(_sscanf_r): New routine.
* libc/stdio/local.h: Removed __svfscanf prototype and replaced it
with __svfscanf_r prototype.
* libc/stdio/vfscanf.c (vfscanf, _vfscanf_r: New
routines.
(__svfscanf_r): Reentrant version of __svfscanf which takes reetrancy
structure as argument as calls reentrant versions of helper functions
(e.g. _strtol_r, _strtoul_r). Also replaced calls to atol and atof
to _strtol_r and _strtod_r respectively.
* libc/stdio/vfscanf.c: Also changed __svfscanf to call __svfscanf_r.
* libc/stdlib/strtod.c (strtod): Changed to call _strtod_r with
_REENT argument.
* libc/stdio/vscanf.c: New file.
* libc/stdio/vsscanf.c: Ditto.