1997-01-06 Paul Eggert <eggert@twinsun.com>
authorJim Meyering <jim@meyering.net>
Sat, 18 Jan 1997 15:32:16 +0000 (15:32 +0000)
committerJim Meyering <jim@meyering.net>
Sat, 18 Jan 1997 15:32:16 +0000 (15:32 +0000)
commitd1f0e0d47be832355130cc04f1a3dda7b0544053
tree4acf88d5d51b0f8c097afddd231b1630579fa5f6
parent76486c93c0fdc731b7e3604d3630c3552eed4e80
1997-01-06  Paul Eggert  <eggert@twinsun.com>

* getdate.y: Rewrite to use mktime.

<sys/timeb.h>: Don't include.
(mktime): Declare.

(struct timeb, timezone, DOOMSDAY, SECSPERDAY, DSTMODE, yyDSTmode,
ToSeconds, Convert, DSTcorrect, RelativeDate, RelativeMonth): Remove.
(ToHour): New function (part of the old ToSeconds fn).
(ToYear): New function (part of the old Convert fn).

(TABLE.value, yyDayOrdinal, yyDayNumber, yyTimezone, yyDay, yyHour,
yyMinutes, yyMonth, yySeconds, yyYear, yyRelMonth, yyRelSeconds,
Number): Now int instead of time_t.
(HOUR): Don't cast to time_t.

(tDAY_UNIT, tHOUR_UNIT, tYEAR_UNIT): New %tokens.
(UnitsTable): Use new units that are closer to the keywords.

(yyRelDay, yyRelHour, yyRelMinutes, yyRelYear): New variables.
(rel, relunit, get_date): Add support for them.

(time): Fix timezone calculations for negative half-hour offsets
when integer division truncates towards minus infinity.

(zone): Incorporiate DST calculation directly.

(get_date): 2nd arg is now time_t *, not struct timeb *.
Use mktime to do most of the work, instead of computing it ourselves.
Guard against falsely reporting errors near the time_t boundaries
when parsing times in other time zones.
lib/getdate.y