Mercurial > gnulib
changeset 5932:8ef7d6084536
* mktime.c: Include <string.h> even if !DEBUG. (From glibc.)
(ranged_convert): Don't save conversion in a temporary struct.
This causes a warning with GCC 4.0.0, and anyway in the typical
case it's not worth the extra 100 bytes or so of code.
(ranged_convert, __mktime_internal): When calling a function via a
pointer P, use P () rather than (*P) (), as we now assume C89 or
better.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Thu, 23 Jun 2005 07:14:09 +0000 |
parents | 673d533b0778 |
children | 35504bd557fa |
files | lib/ChangeLog lib/mktime.c |
diffstat | 2 files changed, 20 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/lib/ChangeLog Wed Jun 22 18:27:44 2005 +0000 +++ b/lib/ChangeLog Thu Jun 23 07:14:09 2005 +0000 @@ -1,3 +1,13 @@ +2005-06-23 Paul Eggert <eggert@cs.ucla.edu> + + * mktime.c: Include <string.h> even if !DEBUG. (From glibc.) + (ranged_convert): Don't save conversion in a temporary struct. + This causes a warning with GCC 4.0.0, and anyway in the typical + case it's not worth the extra 100 bytes or so of code. + (ranged_convert, __mktime_internal): When calling a function via a + pointer P, use P () rather than (*P) (), as we now assume C89 or + better. + 2005-06-22 Paul Eggert <eggert@cs.ucla.edu> * readutmp.c (desirable_utmp_entry): Fix bug where "who -b" and
--- a/lib/mktime.c Wed Jun 22 18:27:44 2005 +0000 +++ b/lib/mktime.c Thu Jun 23 07:14:09 2005 +0000 @@ -1,5 +1,5 @@ /* Convert a `struct tm' to a time_t value. - Copyright (C) 1993-1999, 2002, 2003, 2004, 2005 Free Software Foundation, + Copyright (C) 1993-1999, 2002-2004, 2005 Free Software Foundation, Inc. Inc. This file is part of the GNU C Library. Contributed by Paul Eggert (eggert@twinsun.com). @@ -38,10 +38,11 @@ #include <limits.h> +#include <string.h> /* For the real memcpy prototype. */ + #if DEBUG # include <stdio.h> # include <stdlib.h> -# include <string.h> /* Make it work even if the system's libc has its own mktime routine. */ # define mktime my_mktime #endif /* DEBUG */ @@ -228,13 +229,12 @@ ranged_convert (struct tm *(*convert) (const time_t *, struct tm *), time_t *t, struct tm *tp) { - struct tm *r; + struct tm *r = convert (t, tp); - if (! (r = (*convert) (t, tp)) && *t) + if (!r && *t) { time_t bad = *t; time_t ok = 0; - struct tm tm; /* BAD is a known unconvertible time_t, and OK is a known good one. Use binary search to narrow the range between BAD and OK until @@ -244,11 +244,9 @@ time_t mid = *t = (bad < 0 ? bad + ((ok - bad) >> 1) : ok + ((bad - ok) >> 1)); - if ((r = (*convert) (t, tp))) - { - tm = *r; - ok = mid; - } + r = convert (t, tp); + if (r) + ok = mid; else bad = mid; } @@ -258,8 +256,7 @@ /* The last conversion attempt failed; revert to the most recent successful attempt. */ *t = ok; - *tp = tm; - r = tp; + r = convert (t, tp); } } @@ -488,7 +485,7 @@ t2 = t1 + sec_adjustment; if (((t1 < t) != (sec_requested < 0)) | ((t2 < t1) != (sec_adjustment < 0)) - | ! (*convert) (&t2, &tm)) + | ! convert (&t2, &tm)) return -1; t = t2; }