diff options
author | Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> | 1998-02-01 12:44:52 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1998-02-01 05:44:52 -0700 |
commit | 54a60f6e257c8ab4853b2db893d4e610491ae424 (patch) | |
tree | 5f877dfe4f2ad0ec448a75eae6a78a99aa2acf86 /libio | |
parent | 6ad85f177045a35b51da7eacb33b15037a8d38e4 (diff) | |
download | gcc-54a60f6e257c8ab4853b2db893d4e610491ae424.zip gcc-54a60f6e257c8ab4853b2db893d4e610491ae424.tar.gz gcc-54a60f6e257c8ab4853b2db893d4e610491ae424.tar.bz2 |
iostream.cc (istream::operator>>(long double&)): Scan value into separate variable, in case long double is bigger than double.
* iostream.cc (istream::operator>>(long double&))
[!_G_HAVE_LONG_DOUBLE_IO]: Scan value into separate variable, in
case long double is bigger than double.
(ostream::operator<<(double)) [_G_HAVE_PRINTF_FP]: Fix order of
initializers of struct printf_info to match declaration order,
to work around g++ bug.
(ostream::operator<<(long double)) [_G_HAVE_PRINTF_FP]: Likewise.
* gen-params: Add missing quotes. Avoid useless use of command
substitution.
From-SVN: r17582
Diffstat (limited to 'libio')
-rw-r--r-- | libio/ChangeLog | 13 | ||||
-rwxr-xr-x | libio/gen-params | 10 | ||||
-rw-r--r-- | libio/iostream.cc | 14 |
3 files changed, 27 insertions, 10 deletions
diff --git a/libio/ChangeLog b/libio/ChangeLog index 7fd5beb..f2a95d3 100644 --- a/libio/ChangeLog +++ b/libio/ChangeLog @@ -1,3 +1,16 @@ +1998-01-20 Andreas Schwab (schwab@issan.informatik.uni-dortmund.de) + + * iostream.cc (istream::operator>>(long double&)) + [!_G_HAVE_LONG_DOUBLE_IO]: Scan value into separate variable, in + case long double is bigger than double. + (ostream::operator<<(double)) [_G_HAVE_PRINTF_FP]: Fix order of + initializers of struct printf_info to match declaration order, + to work around g++ bug. + (ostream::operator<<(long double)) [_G_HAVE_PRINTF_FP]: Likewise. + + * gen-params: Add missing quotes. Avoid useless use of command + substitution. + Sun Feb 1 13:29:47 1998 H.J. Lu (hjl@gnu.org) * filebuf.cc (filebuf::open): Call _IO_file_open if diff --git a/libio/gen-params b/libio/gen-params index bd652b6..37ee742 100755 --- a/libio/gen-params +++ b/libio/gen-params @@ -277,7 +277,7 @@ fi tr ' ' ' ' <TMP >dummy.out for TYPE in dev_t clock_t fpos_t gid_t ino_t mode_t nlink_t off_t pid_t ptrdiff_t sigset_t size_t ssize_t time_t uid_t va_list wchar_t wint_t int16_t uint16_t int32_t uint_32_t u_int16_t u_int32_t; do - IMPORTED=`eval 'echo $'"$TYPE"` + eval IMPORTED=\$$TYPE if [ -n "${IMPORTED}" ] ; then eval "$TYPE='$IMPORTED'" else @@ -318,9 +318,9 @@ done # Look for some standard macros. for NAME in BUFSIZ FOPEN_MAX FILENAME_MAX NULL; do - IMPORTED=`eval 'echo $'"$NAME"` + eval IMPORTED=\$$NAME if [ -n "${IMPORTED}" ] ; then - eval "$NAME='$IMPORTED /* specified */" + eval "$NAME='$IMPORTED /* specified */'" else rm -f TMP ${SED} -n -e 's| *;|;|g' -e "s|long X${NAME}= *\(.*\);|\1|w TMP" \ @@ -334,9 +334,9 @@ done # These macros must be numerical constants; strip any trailing 'L's. for NAME in SHRT_MAX INT_MAX LONG_MAX LONG_LONG_MAX; do - IMPORTED=`eval 'echo $'"$NAME"` + eval IMPORTED=\$$NAME if [ -n "${IMPORTED}" ] ; then - eval "$NAME='$IMPORTED /* specified */" + eval "$NAME='$IMPORTED /* specified */'" else rm -f TMP ${SED} -n -e 's| *;|;|g' -e "s|long X${NAME}= *\([0-9]*\)L* *;|\1|w TMP" \ diff --git a/libio/iostream.cc b/libio/iostream.cc index f4b1e16..96ebd6e 100644 --- a/libio/iostream.cc +++ b/libio/iostream.cc @@ -333,11 +333,15 @@ READ_INT(bool) istream& istream::operator>>(long double& x) { if (ipfx0()) + { #if _G_HAVE_LONG_DOUBLE_IO scan("%Lg", &x); #else - scan("%lg", &x); + double y; + scan("%lg", &y); + x = y; #endif + } return *this; } @@ -628,10 +632,10 @@ ostream& ostream::operator<<(double n) left: (flags() & ios::left) != 0, showsign: (flags() & ios::showpos) != 0, group: 0, - pad: fill() #if defined __GLIBC__ && __GLIBC__ >= 2 - , extra: 0 + extra: 0, #endif + pad: fill() }; const void *ptr = (const void *) &n; if (__printf_fp (rdbuf(), &info, &ptr) < 0) @@ -731,10 +735,10 @@ ostream& ostream::operator<<(long double n) left: (flags() & ios::left) != 0, showsign: (flags() & ios::showpos) != 0, group: 0, - pad: fill() #if defined __GLIBC__ && __GLIBC__ >= 2 - , extra: 0 + extra: 0, #endif + pad: fill() }; const void *ptr = (const void *) &n; |