diff --git a/ChangeLog b/ChangeLog index eab4b37a50..8e07c9b3f9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2004-09-29 Jakub Jelinek + + * time/tzfile.c (tzfile_mtime): New variable. + (__tzfile_read): Reread the file if mtime is different. + +2004-09-28 Jakub Jelinek + + * sysdeps/alpha/fpu/bits/mathinline.h (__fdimf, __fdim, fdimf, fdim): + Handle +inf/+inf. + * sysdeps/powerpc/fpu/bits/mathinline.h (fdim, fdimf): Likewise. + * sysdeps/sparc/fpu/bits/mathinline.h (fdim, fdimf): Likewise. + 2004-09-29 Ulrich Drepper * nscd/nscd_gethst_r.c (nscd_gethst_r): Use correct constant for diff --git a/sysdeps/alpha/fpu/bits/mathinline.h b/sysdeps/alpha/fpu/bits/mathinline.h index d3a76bad2b..187bd42f33 100644 --- a/sysdeps/alpha/fpu/bits/mathinline.h +++ b/sysdeps/alpha/fpu/bits/mathinline.h @@ -149,25 +149,25 @@ __MATH_INLINE double __NTH (floor (double __x)) { return __floor(__x); } __MATH_INLINE float __NTH (__fdimf (float __x, float __y)) { - return __x < __y ? 0.0f : __x - __y; + return __x <= __y ? 0.0f : __x - __y; } __MATH_INLINE float __NTH (fdimf (float __x, float __y)) { - return __x < __y ? 0.0f : __x - __y; + return __x <= __y ? 0.0f : __x - __y; } __MATH_INLINE double __NTH (__fdim (double __x, double __y)) { - return __x < __y ? 0.0 : __x - __y; + return __x <= __y ? 0.0 : __x - __y; } __MATH_INLINE double __NTH (fdim (double __x, double __y)) { - return __x < __y ? 0.0 : __x - __y; + return __x <= __y ? 0.0 : __x - __y; } /* Test for negative number. Used in the signbit() macro. */ diff --git a/sysdeps/powerpc/fpu/bits/mathinline.h b/sysdeps/powerpc/fpu/bits/mathinline.h index 491d529091..44f7dbec52 100644 --- a/sysdeps/powerpc/fpu/bits/mathinline.h +++ b/sysdeps/powerpc/fpu/bits/mathinline.h @@ -109,14 +109,14 @@ __MATH_INLINE double fdim (double __x, double __y) __THROW; __MATH_INLINE double __NTH (fdim (double __x, double __y)) { - return __x < __y ? 0 : __x - __y; + return __x <= __y ? 0 : __x - __y; } __MATH_INLINE float fdimf (float __x, float __y) __THROW; __MATH_INLINE float __NTH (fdimf (float __x, float __y)) { - return __x < __y ? 0 : __x - __y; + return __x <= __y ? 0 : __x - __y; } #endif /* __USE_ISOC99 */ diff --git a/sysdeps/sparc/fpu/bits/mathinline.h b/sysdeps/sparc/fpu/bits/mathinline.h index 8811314278..2b578d04cd 100644 --- a/sysdeps/sparc/fpu/bits/mathinline.h +++ b/sysdeps/sparc/fpu/bits/mathinline.h @@ -223,14 +223,14 @@ __MATH_INLINE double fdim (double __x, double __y) __THROW; __MATH_INLINE double fdim (double __x, double __y) __THROW { - return __x < __y ? 0 : __x - __y; + return __x <= __y ? 0 : __x - __y; } __MATH_INLINE float fdimf (float __x, float __y) __THROW; __MATH_INLINE float fdimf (float __x, float __y) __THROW { - return __x < __y ? 0 : __x - __y; + return __x <= __y ? 0 : __x - __y; } # endif /* !__NO_MATH_INLINES */ diff --git a/time/tzfile.c b/time/tzfile.c index 8c2756e7bb..48c1e4d790 100644 --- a/time/tzfile.c +++ b/time/tzfile.c @@ -32,6 +32,7 @@ int __use_tzfile; static dev_t tzfile_dev; static ino64_t tzfile_ino; +static time_t tzfile_mtime; struct ttinfo { @@ -161,7 +162,8 @@ __tzfile_read (const char *file, size_t extra, char **extrap) fclose (f); goto ret_free_transitions; } - if (was_using_tzfile && tzfile_ino == st.st_ino && tzfile_dev == st.st_dev) + if (was_using_tzfile && tzfile_ino == st.st_ino && tzfile_dev == st.st_dev + && tzfile_mtime == st.st_mtime) { /* It's the same file. No further work needed. */ fclose (f); @@ -172,9 +174,10 @@ __tzfile_read (const char *file, size_t extra, char **extrap) free ((void *) transitions); transitions = NULL; - /* Remember the inode and device number. */ + /* Remember the inode and device number and modification time. */ tzfile_dev = st.st_dev; tzfile_ino = st.st_ino; + tzfile_mtime = st.st_mtime; /* No threads reading this stream. */ __fsetlocking (f, FSETLOCKING_BYCALLER);