Jim Meyering [Mon, 14 Jul 2003 18:54:52 +0000 (18:54 +0000)]
Don't emit diagnostics. Let callers do that.
Don't include "error.h".
(save_cwd): Don't call error. Ensure that errno is valid
when returning nonzero.
(restore_cwd): Remove two parameters.
Simplify. Don't call error upon failure. Let callers do that.
(save_cwd): Mention that Irix 5.3 has the same problem as SunOS4
when auditing is enabled. But don't bother updating the #if.
Paul Eggert [Thu, 10 Jul 2003 05:07:45 +0000 (05:07 +0000)]
Sort sublists. Add $LIBCSRC/sysdeps/generic/strtoul.c.
In comments, add more libc files that differ from gnulib for one
reason or another; we'd like this list to be smaller but for now
let's document what we have.
Paul Eggert [Tue, 8 Jul 2003 23:33:45 +0000 (23:33 +0000)]
* srclist-update: Port to POSIX 1003.1-2001 hosts by avoiding the
use of GNU extensions. Change "x=`eval echo $x`" to the shorter
and sweeter "eval x=$x".
Paul Eggert [Mon, 7 Jul 2003 23:11:52 +0000 (23:11 +0000)]
Fix some boundary cases and remove need for floating point.
Issue a compile-time diagnostic if time_t is floating point, or if
two's complement arithmetic is not in effect, or if arithmetic
right shift does not propagate the sign. These assumptions were
all in the original code but they weren't checked.
(TIME_T_MIDPOINT, verify): New macros.
(__isleap): Remove; it has integer overflow problems.
(leapyear): New function, without those problems.
(ydhms_tm_diff): Remove; splitting into two parts.
(ydhms_diff): New function, containing the arithmetic part of
the old ydhms_tm_diff function. Issue a compile-time
diagnostic if we are not using C99 integer division.
Avoid casts when possible.
(guess_time_tm): New function, containing the checking part of
the old ydhms_tm_diff function. Return the new value, rather than
the difference between it and the old. Accept a new argument T
so that *T specifies the old value. Check for overflow in the result.
(__mktime_internal): Use a time_t offset, not a long int offset.
This undoes the 2003-06-04 change, which is no longer needed now
that we have better overflow checking.
(localtime_offset): Likewise.
(__mktime_internal): Avoid harmful overflow on hosts where time_t
and long are 64-bit but int is only 32-bit.
(ydhms_diff): Use long int to store year1 and yday1.
Issue a compile-time diagnostic if long int is not wide enough.
(__mktime_internal): Use long int to store adjusted year and yday.
Use plain C rather than preprocessor commands, if that doesn't
affect efficiency.
Check for overflow (and try to repair) after each probe
rather than checking only at the very end. This avoids some bugs
(e.g., southern hemisphere, behind GMT, and GMT offset at minimum time
does not equal GMT offset at maximum time).
Use integer to check for overflow rather than floating point; this
is more portable to non-IEEE hosts, and is a tad faster.
When we detect that we are oscillating between two values,
don't check whether tm_isdst has the requested value, since
we already know the answer. When tm_isdst has the wrong value,
use a different heuristic to find the right one, based on the
extreme values actually observed in practice in tz2003a,
rather than the (overly optimistic) "previous 3 calendar quarters".
(not_equal_tm, print_tm, check_result): Use "const T" rather than
"T const" to accommodate glibc style.
(check_result): Use less-confusing report format. "long" -> "long int.
(main): Likewise.
Don't loop if the iteration overflows time_t.
Allow a negative step in the iteration.
Paul Eggert [Tue, 1 Jul 2003 21:07:13 +0000 (21:07 +0000)]
* lib/xreadlink.c: Include <sys/types.h> unconditionally, instead of
having it depend on HAVE_SYS_TYPES_H.
* m4/xreadlink.m4 (gl_XREADLINK): Don't check for sys/types.h, since
xreadlink.c now includes it unconditionally.
Patch proposed in
<http://mail.gnu.org/archive/html/bug-gnulib/2003-06/msg00167.html>.
Jim Meyering [Wed, 18 Jun 2003 06:03:29 +0000 (06:03 +0000)]
Merge changes from coreutils.
Include <string.h> and <stdlib.h> unconditionally.
Remove explicit declarations of xmalloc and realloc.
Include xalloc.h.
(read_utmp): Remove anachronistic cast of xmalloc.
Paul Eggert [Thu, 5 Jun 2003 06:43:15 +0000 (06:43 +0000)]
Fix Debian bug 177940
<http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=177940>.
(localtime_offset): Now long int, not time_t, because we want it
to be guaranteed to be signed. All uses changed.
(__mktime_internal): If overflow would occur when adding offset,
don't add it.
Jim Meyering [Mon, 2 Jun 2003 08:22:29 +0000 (08:22 +0000)]
Fix some minor time-related bugs with POSIX time arguments.
Some valid time stamps were being rejected (notably -1, and
time stamps before 1900 on 64-bit hosts). And some invalid
time stamps were being accepted, e.g. September 31.
* posixtm.h (posixtime): Return bool instead of time_t, so
that we can return (time_t) -1 successfully.
Jim Meyering [Mon, 2 Jun 2003 08:20:57 +0000 (08:20 +0000)]
Fix some minor time-related bugs with POSIX time arguments.
Some valid time stamps were being rejected (notably -1, and
time stamps before 1900 on 64-bit hosts). And some invalid
time stamps were being accepted, e.g. September 31.
* posixtm.h (posixtime): Return bool instead of time_t, so
that we can return (time_t) -1 successfully.
* posixtm.c: Likewise.
[HAVE_STDBOOL_H]: Include <stdbool.h>.
(bool, false, true) [!HAVE_STDBOOL_H]: New type.
(t): Remove static var.
(year, posix_time_parse): Now takes struct tm * arg to modify, instead
of static var. All uses changed.
(year): Do not reject years before 1900; they can occur with
64-bit time_t.
(posix_time_parse): Do not check for out-of-range components;
that is now the caller's responsibility, since our checks were
only approximations.
(posixtime): Use mktime to check for out-of-range components,
since it knows them exactly.
If mktime returns (time_t) -1, check whether an error actually occurred
by invoking localtime on -1.
(main) [TEST_POSIXTIME]: Check for input data errors, and report
posixtime failures better.
Improve the test data (in comments only).