summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@issan.informatik.uni-dortmund.de>1998-02-17 21:07:42 +0000
committerJeff Law <law@gcc.gnu.org>1998-02-17 14:07:42 -0700
commitf7ed698119cf30028dcae990f587a3996b8fc999 (patch)
treeb2668a9c6e8e9145b30e22c8e26f131e6ab5869e
parent56e7c89c1a090bf3537f246f119e6c35501f22be (diff)
downloadgcc-f7ed698119cf30028dcae990f587a3996b8fc999.tar.gz
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: r18043
-rw-r--r--libio/ChangeLog13
-rwxr-xr-xlibio/gen-params10
-rw-r--r--libio/iostream.cc14
3 files changed, 27 insertions, 10 deletions
diff --git a/libio/ChangeLog b/libio/ChangeLog
index 0e429191f68..ac8c2229048 100644
--- a/libio/ChangeLog
+++ b/libio/ChangeLog
@@ -1,3 +1,16 @@
+1998-02-17 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.
+
Tue Feb 17 21:52:44 1998 H.J. Lu (hjl@gnu.org)
* config/linux.mt (IO_OBJECTS): Add iogetline.o.
diff --git a/libio/gen-params b/libio/gen-params
index bd652b68da5..37ee742e21c 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 f4b1e167dde..96ebd6ee57a 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;