2009-05-17 14:44:04 -04:00
|
|
|
# <pre>
|
|
|
|
|
# This file is in the public domain, so clarified as of
|
|
|
|
|
# 2009-05-17 by Arthur David Olson.
|
1986-01-13 17:26:56 -05:00
|
|
|
|
2012-11-09 18:12:22 -08:00
|
|
|
# Package name for the code distribution.
|
|
|
|
|
PACKAGE= tzcode
|
|
|
|
|
|
2012-07-19 16:35:33 -07:00
|
|
|
# Version numbers of the code and data distributions.
|
2013-07-05 07:38:01 -07:00
|
|
|
VERSION= 2013d
|
Switch from SCCS to git.
Remove the SCCS keyword '%W%' from all files.
Mostly this just remove comments.
Remove trailing white space, too.
* Makefile (TZCODE_VERSION): New macro.
(version.h): New rule.
(tzselect): Interpolate TZCODE_VERSION.
(clean): Remove version.h.
(zdump.o, zic.o): Depend on version.h.
* asctime.c, date.c, difftime.c, ialloc.c, localtime.c, scheck.c:
* strftime.c, zdump.c, zic.c: Remove elsieid.
* private.h: Remove privatehid.
* tzfile.h: Remove tzfilehid.
* tzselect.h (TZCODE_VERSION): Rename from VERSION.
* zdump.c, zic.c: Include "version.h",
and use TZCODE_VERSION instead of elsieid.
2012-07-18 17:30:38 -07:00
|
|
|
|
2012-11-12 21:52:35 -08:00
|
|
|
# Email address for bug reports.
|
|
|
|
|
BUGEMAIL= tz@iana.org
|
|
|
|
|
|
1989-03-05 13:12:47 -05:00
|
|
|
# Change the line below for your time zone (after finding the zone you want in
|
|
|
|
|
# the time zone files, or adding it to a time zone file).
|
1986-03-02 22:02:58 -05:00
|
|
|
# Alternately, if you discover you've got the wrong time zone, you can just
|
1986-11-19 19:15:31 -05:00
|
|
|
# zic -l rightzone
|
1989-03-21 20:05:59 -05:00
|
|
|
# to correct things.
|
|
|
|
|
# Use the command
|
|
|
|
|
# make zonenames
|
|
|
|
|
# to get a list of the values you can use for LOCALTIME.
|
1986-02-28 21:30:44 -05:00
|
|
|
|
2010-10-07 17:25:45 -04:00
|
|
|
LOCALTIME= GMT
|
1986-02-28 21:30:44 -05:00
|
|
|
|
1989-01-31 23:10:30 -05:00
|
|
|
# If you want something other than Eastern United States time as a template
|
|
|
|
|
# for handling POSIX-style time zone environment variables,
|
|
|
|
|
# change the line below (after finding the zone you want in the
|
|
|
|
|
# time zone files, or adding it to a time zone file).
|
1995-12-21 12:31:40 -05:00
|
|
|
# (When a POSIX-style environment variable is handled, the rules in the
|
|
|
|
|
# template file are used to determine "spring forward" and "fall back" days and
|
1997-12-29 09:31:30 -05:00
|
|
|
# times; the environment variable itself specifies UTC offsets of standard and
|
1989-03-21 20:05:59 -05:00
|
|
|
# summer time.)
|
1989-01-31 23:10:30 -05:00
|
|
|
# Alternately, if you discover you've got the wrong time zone, you can just
|
|
|
|
|
# zic -p rightzone
|
1989-03-21 20:05:59 -05:00
|
|
|
# to correct things.
|
|
|
|
|
# Use the command
|
|
|
|
|
# make zonenames
|
|
|
|
|
# to get a list of the values you can use for POSIXRULES.
|
1994-02-24 14:14:24 -05:00
|
|
|
# If you want POSIX compatibility, use "America/New_York".
|
1989-01-31 23:10:30 -05:00
|
|
|
|
1994-02-24 14:14:24 -05:00
|
|
|
POSIXRULES= America/New_York
|
1989-01-31 23:10:30 -05:00
|
|
|
|
2013-08-16 12:19:42 -07:00
|
|
|
# Default time zone table type for 'tzselect'. See tzselect.8 for details.
|
|
|
|
|
# Possible values are:
|
|
|
|
|
# 'time' - for a smaller time zone table
|
|
|
|
|
# 'zone' - for a backward compatible time zone table; it contains
|
|
|
|
|
# alternative TZ values present for compatibility with older versions of
|
|
|
|
|
# this software.
|
|
|
|
|
|
|
|
|
|
ZONETABTYPE= zone
|
|
|
|
|
|
1999-09-20 16:35:22 -04:00
|
|
|
# Also see TZDEFRULESTRING below, which takes effect only
|
|
|
|
|
# if the time zone files cannot be accessed.
|
|
|
|
|
|
1989-03-21 20:05:59 -05:00
|
|
|
# Everything gets put in subdirectories of. . .
|
|
|
|
|
|
|
|
|
|
TOPDIR= /usr/local
|
|
|
|
|
|
|
|
|
|
# "Compiled" time zone information is placed in the "TZDIR" directory
|
|
|
|
|
# (and subdirectories).
|
1986-03-02 22:02:58 -05:00
|
|
|
# Use an absolute path name for TZDIR unless you're just testing the software.
|
1986-01-13 17:26:56 -05:00
|
|
|
|
2013-08-11 10:14:18 -07:00
|
|
|
TZDIR_BASENAME= zoneinfo
|
|
|
|
|
TZDIR= $(TOPDIR)/etc/$(TZDIR_BASENAME)
|
1989-03-21 20:05:59 -05:00
|
|
|
|
2013-05-27 14:16:25 -07:00
|
|
|
# Types to try, as an alternative to time_t. int64_t should be first.
|
|
|
|
|
TIME_T_ALTERNATIVES= int64_t int32_t uint32_t uint64_t
|
|
|
|
|
|
2002-01-28 12:55:52 -05:00
|
|
|
# The "tzselect", "zic", and "zdump" commands get installed in. . .
|
1989-03-21 20:05:59 -05:00
|
|
|
|
|
|
|
|
ETCDIR= $(TOPDIR)/etc
|
|
|
|
|
|
|
|
|
|
# If you "make INSTALL", the "date" command gets installed in. . .
|
|
|
|
|
|
|
|
|
|
BINDIR= $(TOPDIR)/bin
|
|
|
|
|
|
|
|
|
|
# Manual pages go in subdirectories of. . .
|
|
|
|
|
|
|
|
|
|
MANDIR= $(TOPDIR)/man
|
|
|
|
|
|
|
|
|
|
# Library functions are put in an archive in LIBDIR.
|
|
|
|
|
|
|
|
|
|
LIBDIR= $(TOPDIR)/lib
|
1997-05-01 14:38:45 -04:00
|
|
|
TZLIB= $(LIBDIR)/libtz.a
|
1986-02-28 21:30:44 -05:00
|
|
|
|
1989-02-04 18:30:06 -05:00
|
|
|
# If you always want time values interpreted as "seconds since the epoch
|
|
|
|
|
# (not counting leap seconds)", use
|
1995-01-06 18:10:11 -05:00
|
|
|
# REDO= posix_only
|
1989-02-17 20:21:00 -05:00
|
|
|
# below. If you always want right time values interpreted as "seconds since
|
1989-02-04 18:30:06 -05:00
|
|
|
# the epoch" (counting leap seconds)", use
|
|
|
|
|
# REDO= right_only
|
|
|
|
|
# below. If you want both sets of data available, with leap seconds not
|
|
|
|
|
# counted normally, use
|
|
|
|
|
# REDO= posix_right
|
1989-02-17 20:21:00 -05:00
|
|
|
# below. If you want both sets of data available, with leap seconds counted
|
1989-02-04 18:30:06 -05:00
|
|
|
# normally, use
|
|
|
|
|
# REDO= right_posix
|
|
|
|
|
# below.
|
1989-03-21 20:05:59 -05:00
|
|
|
# POSIX mandates that leap seconds not be counted; for compatibility with it,
|
|
|
|
|
# use either "posix_only" or "posix_right".
|
1989-02-04 18:30:06 -05:00
|
|
|
|
|
|
|
|
REDO= posix_right
|
|
|
|
|
|
1992-06-15 16:24:49 -04:00
|
|
|
# Since "." may not be in PATH...
|
|
|
|
|
|
|
|
|
|
YEARISTYPE= ./yearistype
|
|
|
|
|
|
1996-02-21 15:47:19 -05:00
|
|
|
# Non-default libraries needed to link.
|
|
|
|
|
# Add -lintl if you want to use `gettext' on Solaris.
|
|
|
|
|
LDLIBS=
|
|
|
|
|
|
1995-01-03 11:08:17 -05:00
|
|
|
# Add the following to the end of the "CFLAGS=" line as needed.
|
|
|
|
|
# -DHAVE_ADJTIME=0 if `adjtime' does not exist (SVR0?)
|
Port to NetBSD, where, e.g., 'time_t' is wider than 'long'.
I audited the code and fixed as many width-asssumptions as I could
find, including several places where the code assumed that 'time_t'
was no wider than 'long'; this assumption is not true on 32-bit
NetBSD platforms. This caught every problem that is already fixed
in the NetBSD zic.c, and caught quite a few more.
* Makefile: Add comments re HAVE_DOS_FILE_NAMES and HAVE_INTTYPES_H.
* date.c (checkfinal, netsettime): Don't use 'long' where 'int' will do.
* difftime.c (difftime): Mark with ATTRIBUTE_CONST.
Use uintmax_t, not unsigned long, for the widest unsigned integer type.
Use long double, not double, if time_t is wider than uintmax_t;
this can in theory help on nonstandard platforms, such as GCC
with 64-bit uintmax_t and 128-bit __int128_t.
* localtime.c (struct ttinfo.tt_gmtoff, struct rule.r_time)
(detzcode, getsecs, getoffset, gmtsub, localsub, increment_overflow32)
(normalize_overflow32, time1, time2, timesub, transtime, tzparse)
(time2sub, timeoff, gtime):
* tzfile.h (SECSPERDAY):
* zdump.c (SECSPERDAY):
* zic.c (convert, puttzcode):
Use int_fast32_t, not long, when all we care is that values up to
2**31 can be stored. This doesn't fix any bugs, but it allows
more opportunity for compiler optimization.
(struct lsinfo.ls_corr, timesub, leapcorr):
Use int_fast64_t, not long, when values up to 2**63 can be stored.
(timesub): Make it clearer when we are truncating 0.5 to 0.
(increment_overflow32): Rename from long_increment_overflow.
All uses changed.
(normalize_overflow32): Rename from long_normalize_overflow.
All uses changed.
* private.h (HAVE_INTTYPES_H, ATTRIBUTE_CONST): New macros.
Include <inttypes.h> if HAVE_INTTYPES_H.
(INT_FAST64_MIN, INT_FAST64_MAX, SCNdFAST64, int_fast32_t, PRIdMAX)
(uintmax_t, PRIuMAX, _Noreturn):
Define to reasonable values if it's an older compiler.
* scheck.c (scheck): Add support for arbitrary formats, such as
those that SCNdFAST64 can expand to, at the price of no longer
supporting weird conversion specs like "%[%]".
* strftime.c (_fmt): Use intmax_t and uintmax_t to format time_t,
not long and unsigned long.
* zdump.c (int_fast32_t, intmax_t, PRIdMAX, SCNdMAX):
Define for pre-C99 compilers, like private.h does.
(delta, yeartot, main): Use intmax_t, not long.
(hunt): Use time_t, not long, since the diff must be nonnegative.
(tformat): Allow for time_t wider than long.
* zic.c (ZIC_MIN, ZIC_MAX, SCNdZIC): New macros.
(OFFSET_STRLEN_MAXIMUM, RULE_STRLEN_MAXIMUM): Remove.
(struct rule): Make r_loyear, r_hiyear, r_tod, r_stdoff, z_gmtoff,
z_stdoff zic_t, not long.
(addtype, gethms, oadd, rpytime, tadd, gmtoffs, corr, inleap)
(stringoffset, stringrule, outzone, addtype, adjleap, rpytime)
(LDAYSPERWEEK):
Use zic_t, not long.
(leapminyear, leapmaxyear, min_year, max_year, rulesub, updateminmax)
(outzone, rpytime):
Use zic_t, not int.
(usage): Now _Noreturn.
(main): Use S_IWGRP, not 'unix', to determine whether to call umask.
(writezone): Omit unnecessary cast.
(mkdirs): Use HAVE_DOS_FILE_NAMES, not 'unix', to determine
whether to parse DOS file anmes.
(eitol): Remove; no longer needed.
2013-05-27 21:26:18 -07:00
|
|
|
# -DHAVE_DOS_FILE_NAMES if file names have drive specifiers etc. (MS-DOS)
|
1996-02-21 15:47:19 -05:00
|
|
|
# -DHAVE_GETTEXT=1 if `gettext' works (GNU, Linux, Solaris); also see LDLIBS
|
2000-04-17 12:53:07 -04:00
|
|
|
# -DHAVE_INCOMPATIBLE_CTIME_R=1 if your system's time.h declares
|
|
|
|
|
# ctime_r and asctime_r incompatibly with the POSIX standard (Solaris 8).
|
Port to NetBSD, where, e.g., 'time_t' is wider than 'long'.
I audited the code and fixed as many width-asssumptions as I could
find, including several places where the code assumed that 'time_t'
was no wider than 'long'; this assumption is not true on 32-bit
NetBSD platforms. This caught every problem that is already fixed
in the NetBSD zic.c, and caught quite a few more.
* Makefile: Add comments re HAVE_DOS_FILE_NAMES and HAVE_INTTYPES_H.
* date.c (checkfinal, netsettime): Don't use 'long' where 'int' will do.
* difftime.c (difftime): Mark with ATTRIBUTE_CONST.
Use uintmax_t, not unsigned long, for the widest unsigned integer type.
Use long double, not double, if time_t is wider than uintmax_t;
this can in theory help on nonstandard platforms, such as GCC
with 64-bit uintmax_t and 128-bit __int128_t.
* localtime.c (struct ttinfo.tt_gmtoff, struct rule.r_time)
(detzcode, getsecs, getoffset, gmtsub, localsub, increment_overflow32)
(normalize_overflow32, time1, time2, timesub, transtime, tzparse)
(time2sub, timeoff, gtime):
* tzfile.h (SECSPERDAY):
* zdump.c (SECSPERDAY):
* zic.c (convert, puttzcode):
Use int_fast32_t, not long, when all we care is that values up to
2**31 can be stored. This doesn't fix any bugs, but it allows
more opportunity for compiler optimization.
(struct lsinfo.ls_corr, timesub, leapcorr):
Use int_fast64_t, not long, when values up to 2**63 can be stored.
(timesub): Make it clearer when we are truncating 0.5 to 0.
(increment_overflow32): Rename from long_increment_overflow.
All uses changed.
(normalize_overflow32): Rename from long_normalize_overflow.
All uses changed.
* private.h (HAVE_INTTYPES_H, ATTRIBUTE_CONST): New macros.
Include <inttypes.h> if HAVE_INTTYPES_H.
(INT_FAST64_MIN, INT_FAST64_MAX, SCNdFAST64, int_fast32_t, PRIdMAX)
(uintmax_t, PRIuMAX, _Noreturn):
Define to reasonable values if it's an older compiler.
* scheck.c (scheck): Add support for arbitrary formats, such as
those that SCNdFAST64 can expand to, at the price of no longer
supporting weird conversion specs like "%[%]".
* strftime.c (_fmt): Use intmax_t and uintmax_t to format time_t,
not long and unsigned long.
* zdump.c (int_fast32_t, intmax_t, PRIdMAX, SCNdMAX):
Define for pre-C99 compilers, like private.h does.
(delta, yeartot, main): Use intmax_t, not long.
(hunt): Use time_t, not long, since the diff must be nonnegative.
(tformat): Allow for time_t wider than long.
* zic.c (ZIC_MIN, ZIC_MAX, SCNdZIC): New macros.
(OFFSET_STRLEN_MAXIMUM, RULE_STRLEN_MAXIMUM): Remove.
(struct rule): Make r_loyear, r_hiyear, r_tod, r_stdoff, z_gmtoff,
z_stdoff zic_t, not long.
(addtype, gethms, oadd, rpytime, tadd, gmtoffs, corr, inleap)
(stringoffset, stringrule, outzone, addtype, adjleap, rpytime)
(LDAYSPERWEEK):
Use zic_t, not long.
(leapminyear, leapmaxyear, min_year, max_year, rulesub, updateminmax)
(outzone, rpytime):
Use zic_t, not int.
(usage): Now _Noreturn.
(main): Use S_IWGRP, not 'unix', to determine whether to call umask.
(writezone): Omit unnecessary cast.
(mkdirs): Use HAVE_DOS_FILE_NAMES, not 'unix', to determine
whether to parse DOS file anmes.
(eitol): Remove; no longer needed.
2013-05-27 21:26:18 -07:00
|
|
|
# -DHAVE_INTTYPES_H=1 if you have a pre-C99 compiler with "inttypes.h"
|
1995-01-03 11:08:17 -05:00
|
|
|
# -DHAVE_SETTIMEOFDAY=0 if settimeofday does not exist (SVR0?)
|
|
|
|
|
# -DHAVE_SETTIMEOFDAY=1 if settimeofday has just 1 arg (SVR4)
|
|
|
|
|
# -DHAVE_SETTIMEOFDAY=2 if settimeofday uses 2nd arg (4.3BSD)
|
|
|
|
|
# -DHAVE_SETTIMEOFDAY=3 if settimeofday ignores 2nd arg (4.4BSD)
|
2006-02-20 09:53:09 -05:00
|
|
|
# -DHAVE_STDINT_H=1 if you have a pre-C99 compiler with "stdint.h"
|
1998-01-31 13:52:40 -05:00
|
|
|
# -DHAVE_SYMLINK=0 if your system lacks the symlink function
|
2001-06-05 13:48:07 -04:00
|
|
|
# -DHAVE_SYS_STAT_H=0 if your compiler lacks a "sys/stat.h"
|
1999-08-17 14:09:02 -04:00
|
|
|
# -DHAVE_SYS_WAIT_H=0 if your compiler lacks a "sys/wait.h"
|
1995-12-21 12:31:40 -05:00
|
|
|
# -DHAVE_UNISTD_H=0 if your compiler lacks a "unistd.h" (Microsoft C++ 7?)
|
1996-01-10 16:46:38 -05:00
|
|
|
# -DHAVE_UTMPX_H=1 if your compiler has a "utmpx.h"
|
Add support for testing time_t types other than the system's.
This makes it easier to test on (say) Debian, even if we're
testing the time_t type on (say) NetBSD. NetBSD uses 64-bit
time_t on 32-bit hosts, and this lets us test a NetBSD-style
implementation (32-bit 'long', 64-bit time_t) on a 32-bit Debian host.
* Makefile: Update comments to talk about TIME_T_FLOATING and time_tz.
Sort the comments.
* private.h (restrict): Define to empty with older compilers.
'restrict' is now needed, to define gmtime_r and localtime_r in
standard ways when time_tz is defined.
Make the following changes if time_tz is defined:
(sys_time, time): New static functions. The former is the system
'time' function that applies to the system time_t, the latter
our function that applies to our time_t.
(time_t, ctime, ctime_r, difftime, gmtime, gmtime_r, localtime)
(localtime_r, mktime): Rename to tz_time_t, tz_ctime, etc.,
via macros. Declare the renamed versions.
* zdump.8: Document new options -V, -t.
* zdump.c: Include private.h if time_tz is defined.
(INITIALIZE): Remove; no longer needed.
(absolute_min_time, absolute_max_time): Work even if time_t
is wider than intmax_t, which can be true with GCC and __int128_t.
Use the new TIME_T_FLOATING macro for this.
(usage): Document new flags.
(main): Support them.
2013-05-27 14:01:55 -07:00
|
|
|
# -DLOCALE_HOME=\"path\" if locales are in "path", not "/usr/lib/locale"
|
1996-09-08 16:17:30 -04:00
|
|
|
# -DNO_RUN_TIME_WARNINGS_ABOUT_YEAR_2000_PROBLEMS_THANK_YOU=1
|
|
|
|
|
# if you do not want run time warnings about formats that may cause
|
|
|
|
|
# year 2000 grief
|
Add support for testing time_t types other than the system's.
This makes it easier to test on (say) Debian, even if we're
testing the time_t type on (say) NetBSD. NetBSD uses 64-bit
time_t on 32-bit hosts, and this lets us test a NetBSD-style
implementation (32-bit 'long', 64-bit time_t) on a 32-bit Debian host.
* Makefile: Update comments to talk about TIME_T_FLOATING and time_tz.
Sort the comments.
* private.h (restrict): Define to empty with older compilers.
'restrict' is now needed, to define gmtime_r and localtime_r in
standard ways when time_tz is defined.
Make the following changes if time_tz is defined:
(sys_time, time): New static functions. The former is the system
'time' function that applies to the system time_t, the latter
our function that applies to our time_t.
(time_t, ctime, ctime_r, difftime, gmtime, gmtime_r, localtime)
(localtime_r, mktime): Rename to tz_time_t, tz_ctime, etc.,
via macros. Declare the renamed versions.
* zdump.8: Document new options -V, -t.
* zdump.c: Include private.h if time_tz is defined.
(INITIALIZE): Remove; no longer needed.
(absolute_min_time, absolute_max_time): Work even if time_t
is wider than intmax_t, which can be true with GCC and __int128_t.
Use the new TIME_T_FLOATING macro for this.
(usage): Document new flags.
(main): Support them.
2013-05-27 14:01:55 -07:00
|
|
|
# -Dtime_tz=\"T\" to use T as the time_t type, rather than the system time_t
|
|
|
|
|
# -DTZ_DOMAIN=\"foo\" to use "foo" for gettext domain name; default is "tz"
|
|
|
|
|
# -TTZ_DOMAINDIR=\"/path\" to use "/path" for gettext directory;
|
|
|
|
|
# the default is system-supplied, typically "/usr/lib/locale"
|
|
|
|
|
# -DTZDEFRULESTRING=\",date/time,date/time\" to default to the specified
|
|
|
|
|
# DST transitions if the time zone files cannot be accessed
|
2005-05-24 13:20:21 -04:00
|
|
|
# -DZIC_MAX_ABBR_LEN_WO_WARN=3
|
|
|
|
|
# (or some other number) to set the maximum time zone abbreviation length
|
|
|
|
|
# that zic will accept without a warning (the default is 6)
|
Add support for testing time_t types other than the system's.
This makes it easier to test on (say) Debian, even if we're
testing the time_t type on (say) NetBSD. NetBSD uses 64-bit
time_t on 32-bit hosts, and this lets us test a NetBSD-style
implementation (32-bit 'long', 64-bit time_t) on a 32-bit Debian host.
* Makefile: Update comments to talk about TIME_T_FLOATING and time_tz.
Sort the comments.
* private.h (restrict): Define to empty with older compilers.
'restrict' is now needed, to define gmtime_r and localtime_r in
standard ways when time_tz is defined.
Make the following changes if time_tz is defined:
(sys_time, time): New static functions. The former is the system
'time' function that applies to the system time_t, the latter
our function that applies to our time_t.
(time_t, ctime, ctime_r, difftime, gmtime, gmtime_r, localtime)
(localtime_r, mktime): Rename to tz_time_t, tz_ctime, etc.,
via macros. Declare the renamed versions.
* zdump.8: Document new options -V, -t.
* zdump.c: Include private.h if time_tz is defined.
(INITIALIZE): Remove; no longer needed.
(absolute_min_time, absolute_max_time): Work even if time_t
is wider than intmax_t, which can be true with GCC and __int128_t.
Use the new TIME_T_FLOATING macro for this.
(usage): Document new flags.
(main): Support them.
2013-05-27 14:01:55 -07:00
|
|
|
# $(GCC_DEBUG_FLAGS) if you are using GCC and want lots of checking
|
Assume C89.
* Makefile (GCC_DEBUG_FLAGS): Modernize for GCC 4.6.3 x86.
* asctime.c (asctime_r, asctime):
* date.c (main, dogmt, reset, wildinput, nondigit, oops, display)
(timeout, sametm, netsettime):
* difftime.c (difftime):
* ialloc.c (icatalloc, icpyalloc):
* localtime.c (detzcode, detzcode64, differ_by_repeat)
(tzload, typesequiv, getzname, getnum, getsecs, getoffset)
(getrule, transtime, tzparse, gmtload, tzsetwall, tzset)
(localsub, localtime, localtime_r, gmtsub, gmtime, gmtime_r)
(offtime, leaps_thru_end_of, timesub, ctime, ctime_r)
(increment_overflow, long_increment_overflow)
(normalize_overflow, long_normalize_overflow, tmcomp, time2sub)
(time2, time1, mktime, timelocal, timegm, timeoff, gtime)
(leapcorr, time2posix, posix2time):
* scheck.c (scheck):
* strftime.c (strftime, _fmt, _conv, _add, _yconv, _loc):
* zdump.c (my_localtime, abbrok, usage, main, yeartot)
(delta, abbr, dumptime):
* zic.c (memcheck, eats, eat, error, warning, main)
(dolink, itsdir, rcomp, associate, infile, gethms, inrule)
(inzone, inzcont, inzsub, inleap, inlink, rulesub, convert)
(convert64, puttzcode, puttzcode64, atcomp, is32, writezone, DO)
(doabbr, updateminmax, stringoffset, stringrule, stringzone)
(outzone, addtt, addtype, leapadd, yearistype, lowerit, ciequal)
(itsabbr, byword, getfields, oadd, tadd, rpytime, newabbr)
(mkdirs, eitol):
Assume C89 or better. Mostly this consists of using function
prototypes. In a few places, prototypes are required for
portability to hosts where time_t does not promote to itself and
where a preceding prototype does not override a definition. But
while we're at it we might as well be consistent: it's safe to
assume at-least-C89 these days.
* ialloc.c (nonzero, imalloc, icalloc, irealloc, ifree, icfree):
Remove; no longer needed now that we assume C89 or better.
All callers changed to use malloc, calloc, realloc, free.
* localtime.c (getzname, getqzname, leaps_thru_end_of, transtime):
* zdump.c (delta, yeartot):
* zic.c (eitol):
Now pure.
* private.h, zdump.c (ATTRIBUTE_PURE): New macro.
* private.h (icalloc, imalloc, irealloc, icfree, ifree): Remove decls.
* zic.c: Remove no-longer-necessary forward decls.
(max_time, min_time): Now const.
(setboundaries): Remove.
2012-10-12 07:53:12 -07:00
|
|
|
GCC_DEBUG_FLAGS = -Dlint -g3 -O3 -fno-common -fstrict-aliasing \
|
|
|
|
|
-Wall -Wextra \
|
|
|
|
|
-Wbad-function-cast -Wcast-align -Wcast-qual \
|
|
|
|
|
-Wformat=2 -Winit-self \
|
|
|
|
|
-Wmissing-declarations -Wmissing-noreturn -Wmissing-prototypes \
|
|
|
|
|
-Wnested-externs \
|
|
|
|
|
-Wno-format-nonliteral -Wno-sign-compare -Wno-sign-conversion \
|
|
|
|
|
-Wno-type-limits \
|
|
|
|
|
-Wno-unused-parameter -Woverlength-strings -Wpointer-arith \
|
|
|
|
|
-Wshadow -Wstrict-prototypes -Wsuggest-attribute=const \
|
|
|
|
|
-Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wtrampolines \
|
|
|
|
|
-Wwrite-strings
|
1989-03-05 22:10:42 -05:00
|
|
|
#
|
1986-12-26 15:21:45 -05:00
|
|
|
# If you want to use System V compatibility code, add
|
|
|
|
|
# -DUSG_COMPAT
|
1989-03-21 20:05:59 -05:00
|
|
|
# to the end of the "CFLAGS=" line. This arrange for "timezone" and "daylight"
|
|
|
|
|
# variables to be kept up-to-date by the time conversion functions. Neither
|
|
|
|
|
# "timezone" nor "daylight" is described in X3J11's work.
|
1986-12-26 15:21:45 -05:00
|
|
|
#
|
1989-02-07 13:08:06 -05:00
|
|
|
# If your system has a "GMT offset" field in its "struct tm"s
|
|
|
|
|
# (or if you decide to add such a field in your system's "time.h" file),
|
|
|
|
|
# add the name to a define such as
|
|
|
|
|
# -DTM_GMTOFF=tm_gmtoff
|
|
|
|
|
# or
|
|
|
|
|
# -DTM_GMTOFF=_tm_gmtoff
|
|
|
|
|
# to the end of the "CFLAGS=" line.
|
1989-03-21 20:05:59 -05:00
|
|
|
# Neither tm_gmtoff nor _tm_gmtoff is described in X3J11's work;
|
|
|
|
|
# in its work, use of "tm_gmtoff" is described as non-conforming.
|
1997-12-29 09:31:30 -05:00
|
|
|
# Both Linux and BSD have done the equivalent of defining TM_GMTOFF in
|
1989-03-21 20:05:59 -05:00
|
|
|
# their recent releases.
|
1989-02-07 13:08:06 -05:00
|
|
|
#
|
1989-04-10 18:36:22 -04:00
|
|
|
# If your system has a "zone abbreviation" field in its "struct tm"s
|
1989-02-07 13:08:06 -05:00
|
|
|
# (or if you decide to add such a field in your system's "time.h" file),
|
|
|
|
|
# add the name to a define such as
|
|
|
|
|
# -DTM_ZONE=tm_zone
|
|
|
|
|
# or
|
|
|
|
|
# -DTM_ZONE=_tm_zone
|
|
|
|
|
# to the end of the "CFLAGS=" line.
|
1989-03-21 20:05:59 -05:00
|
|
|
# Neither tm_zone nor _tm_zone is described in X3J11's work;
|
|
|
|
|
# in its work, use of "tm_zone" is described as non-conforming.
|
|
|
|
|
# Both UCB and Sun have done the equivalent of defining TM_ZONE in
|
|
|
|
|
# their recent releases.
|
1987-02-12 19:56:12 -05:00
|
|
|
#
|
1989-03-21 20:05:59 -05:00
|
|
|
# If you want functions that were inspired by early versions of X3J11's work,
|
|
|
|
|
# add
|
1987-02-12 19:56:12 -05:00
|
|
|
# -DSTD_INSPIRED
|
1989-03-22 20:00:34 -05:00
|
|
|
# to the end of the "CFLAGS=" line. This arranges for the functions
|
1993-10-31 18:48:25 -05:00
|
|
|
# "tzsetwall", "offtime", "timelocal", "timegm", "timeoff",
|
|
|
|
|
# "posix2time", and "time2posix" to be added to the time conversion library.
|
1989-03-22 20:00:34 -05:00
|
|
|
# "tzsetwall" is like "tzset" except that it arranges for local wall clock
|
|
|
|
|
# time (rather than the time specified in the TZ environment variable)
|
|
|
|
|
# to be used.
|
1989-03-21 20:05:59 -05:00
|
|
|
# "offtime" is like "gmtime" except that it accepts a second (long) argument
|
|
|
|
|
# that gives an offset to add to the time_t when converting it.
|
|
|
|
|
# "timelocal" is equivalent to "mktime".
|
|
|
|
|
# "timegm" is like "timelocal" except that it turns a struct tm into
|
1997-12-29 09:31:30 -05:00
|
|
|
# a time_t using UTC (rather than local time as "timelocal" does).
|
1989-03-21 20:05:59 -05:00
|
|
|
# "timeoff" is like "timegm" except that it accepts a second (long) argument
|
|
|
|
|
# that gives an offset to use when converting to a time_t.
|
1993-10-31 18:48:25 -05:00
|
|
|
# "posix2time" and "time2posix" are described in an included manual page.
|
1999-09-21 10:15:28 -04:00
|
|
|
# X3J11's work does not describe any of these functions.
|
1989-03-22 20:00:34 -05:00
|
|
|
# Sun has provided "tzsetwall", "timelocal", and "timegm" in SunOS 4.0.
|
1989-03-21 20:05:59 -05:00
|
|
|
# These functions may well disappear in future releases of the time
|
|
|
|
|
# conversion package.
|
1987-02-12 19:56:12 -05:00
|
|
|
#
|
1987-02-08 17:59:44 -05:00
|
|
|
# If you'll never want to handle solar-time-based time zones, add
|
|
|
|
|
# -DNOSOLAR
|
1987-02-12 19:56:12 -05:00
|
|
|
# to the end of the "CFLAGS=" line
|
1988-02-18 04:31:21 -05:00
|
|
|
# (and comment out the "SDATA=" line below).
|
1989-03-21 20:05:59 -05:00
|
|
|
# This reduces (slightly) the run-time data-space requirements of
|
|
|
|
|
# the time conversion functions; it may reduce the acceptability of your system
|
|
|
|
|
# to folks in oil- and cash-rich places.
|
1989-02-26 15:28:37 -05:00
|
|
|
#
|
|
|
|
|
# If you want to allocate state structures in localtime, add
|
|
|
|
|
# -DALL_STATE
|
1989-03-21 20:05:59 -05:00
|
|
|
# to the end of the "CFLAGS=" line. Storage is obtained by calling malloc.
|
1989-02-26 15:28:37 -05:00
|
|
|
#
|
|
|
|
|
# If you want an "altzone" variable (a la System V Release 3.1), add
|
|
|
|
|
# -DALTZONE
|
|
|
|
|
# to the end of the "CFLAGS=" line.
|
1989-03-21 20:05:59 -05:00
|
|
|
# This variable is not described in X3J11's work.
|
1989-02-27 10:06:50 -05:00
|
|
|
#
|
|
|
|
|
# If you want a "gtime" function (a la MACH), add
|
|
|
|
|
# -DCMUCS
|
|
|
|
|
# to the end of the "CFLAGS=" line
|
1989-03-21 20:05:59 -05:00
|
|
|
# This function is not described in X3J11's work.
|
1994-03-29 07:31:43 -05:00
|
|
|
#
|
1994-03-30 23:15:22 -05:00
|
|
|
# NIST-PCTS:151-2, Version 1.4, (1993-12-03) is a test suite put
|
|
|
|
|
# out by the National Institute of Standards and Technology
|
|
|
|
|
# which claims to test C and Posix conformance. If you want to pass PCTS, add
|
1994-03-29 07:31:43 -05:00
|
|
|
# -DPCTS
|
|
|
|
|
# to the end of the "CFLAGS=" line.
|
1994-04-09 20:33:20 -04:00
|
|
|
#
|
1996-09-08 19:56:42 -04:00
|
|
|
# If you want strict compliance with XPG4 as of 1994-04-09, add
|
1994-04-09 20:33:20 -04:00
|
|
|
# -DXPG4_1994_04_09
|
|
|
|
|
# to the end of the "CFLAGS=" line. This causes "strftime" to always return
|
|
|
|
|
# 53 as a week number (rather than 52 or 53) for those days in January that
|
|
|
|
|
# before the first Monday in January when a "%V" format is used and January 1
|
|
|
|
|
# falls on a Friday, Saturday, or Sunday.
|
1986-12-26 15:21:45 -05:00
|
|
|
|
2012-03-03 13:25:06 -05:00
|
|
|
CFLAGS=
|
1986-11-27 12:46:22 -05:00
|
|
|
|
2012-10-27 12:54:47 -07:00
|
|
|
# Linker flags. Default to $(LFLAGS) for backwards compatibility
|
|
|
|
|
# to tzcode2012h and earlier.
|
|
|
|
|
|
|
|
|
|
LDFLAGS= $(LFLAGS)
|
|
|
|
|
|
1997-03-04 10:03:59 -05:00
|
|
|
zic= ./zic
|
|
|
|
|
ZIC= $(zic) $(ZFLAGS)
|
1997-03-03 18:27:59 -05:00
|
|
|
|
1996-09-08 15:51:04 -04:00
|
|
|
# The name of a Posix-compliant `awk' on your system.
|
2012-10-27 12:36:00 -07:00
|
|
|
AWK= awk
|
1996-09-08 15:51:04 -04:00
|
|
|
|
2012-10-27 13:54:13 -07:00
|
|
|
# The full path name of a Posix-compliant shell that supports the Korn shell's
|
|
|
|
|
# 'select' statement, as an extension. These days, Bash is the most popular.
|
|
|
|
|
KSHELL= /bin/bash
|
|
|
|
|
|
2001-04-05 16:43:36 -04:00
|
|
|
# The path where SGML DTDs are kept.
|
2013-01-11 12:02:22 -08:00
|
|
|
# The default is appropriate for Ubuntu 12.10.
|
2012-07-18 19:23:31 -07:00
|
|
|
SGML_TOPDIR= /usr
|
2013-01-11 12:02:22 -08:00
|
|
|
SGML_DTDDIR= $(SGML_TOPDIR)/share/xml/w3c-sgml-lib/schema/dtd
|
|
|
|
|
SGML_SEARCH_PATH= $(SGML_DTDDIR)/REC-html401-19991224
|
2001-04-05 16:43:36 -04:00
|
|
|
|
2006-08-28 12:18:47 -04:00
|
|
|
# The catalog file(s) to use when validating.
|
2006-08-21 09:56:06 -04:00
|
|
|
SGML_CATALOG_FILES= HTML4.cat
|
2001-04-05 16:43:36 -04:00
|
|
|
|
|
|
|
|
# The name, arguments and environment of a program to validate your web pages.
|
2000-12-14 15:31:52 -05:00
|
|
|
# See <http://www.jclark.com/sp/> for a validator, and
|
|
|
|
|
# <http://validator.w3.org/source/> for a validation library.
|
|
|
|
|
VALIDATE = nsgmls
|
2006-08-21 09:56:06 -04:00
|
|
|
VALIDATE_FLAGS = -s -B -wall -wno-unused-param
|
2001-04-05 16:43:36 -04:00
|
|
|
VALIDATE_ENV = \
|
|
|
|
|
SGML_CATALOG_FILES=$(SGML_CATALOG_FILES) \
|
|
|
|
|
SGML_SEARCH_PATH=$(SGML_SEARCH_PATH) \
|
|
|
|
|
SP_CHARSET_FIXED=YES \
|
|
|
|
|
SP_ENCODING=UTF-8
|
2000-12-14 15:31:52 -05:00
|
|
|
|
2012-12-13 17:19:47 -08:00
|
|
|
# INVALID_CHAR is a regular expression that matches invalid characters in
|
|
|
|
|
# distributed files. For now, stick to a safe subset of ASCII.
|
|
|
|
|
# The caller must set the shell variable 'sharp' to the character '#',
|
|
|
|
|
# since Makefile macros cannot contain '#'.
|
|
|
|
|
# TAB_CHAR is a single tab character, in single quotes.
|
|
|
|
|
TAB_CHAR= ' '
|
|
|
|
|
INVALID_CHAR1= $(TAB_CHAR)' !\"'$$sharp'$$%&'\''()*+,./0123456789:;<=>?@'
|
|
|
|
|
INVALID_CHAR2= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\^_`'
|
|
|
|
|
INVALID_CHAR3= 'abcdefghijklmnopqrstuvwxyz{|}~'
|
|
|
|
|
INVALID_CHAR= '[^]'$(INVALID_CHAR1)$(INVALID_CHAR2)$(INVALID_CHAR3)'-]'
|
|
|
|
|
|
2012-07-19 16:35:33 -07:00
|
|
|
# Flags to give 'tar' when making a distribution.
|
|
|
|
|
# Try to use flags appropriate for GNU tar.
|
|
|
|
|
GNUTARFLAGS= --numeric-owner --owner=0 --group=0 --mode=go+u,go-w
|
|
|
|
|
TARFLAGS= `if tar $(GNUTARFLAGS) --version >/dev/null 2>&1; \
|
|
|
|
|
then echo $(GNUTARFLAGS); \
|
|
|
|
|
else :; \
|
|
|
|
|
fi`
|
|
|
|
|
|
|
|
|
|
# Flags to give 'gzip' when making a distribution.
|
|
|
|
|
GZIPFLAGS= -9n
|
|
|
|
|
|
1995-12-21 12:31:40 -05:00
|
|
|
###############################################################################
|
1986-12-26 15:21:45 -05:00
|
|
|
|
1995-01-02 12:15:47 -05:00
|
|
|
cc= cc
|
|
|
|
|
CC= $(cc) -DTZDIR=\"$(TZDIR)\"
|
1986-01-16 08:50:41 -05:00
|
|
|
|
1995-01-06 18:10:11 -05:00
|
|
|
TZCSRCS= zic.c localtime.c asctime.c scheck.c ialloc.c
|
|
|
|
|
TZCOBJS= zic.o localtime.o asctime.o scheck.o ialloc.o
|
2004-08-05 10:45:27 -04:00
|
|
|
TZDSRCS= zdump.c localtime.c ialloc.c
|
|
|
|
|
TZDOBJS= zdump.o localtime.o ialloc.o
|
2008-07-20 14:23:26 -04:00
|
|
|
DATESRCS= date.c localtime.c strftime.c asctime.c
|
|
|
|
|
DATEOBJS= date.o localtime.o strftime.o asctime.o
|
1989-03-07 22:22:17 -05:00
|
|
|
LIBSRCS= localtime.c asctime.c difftime.c
|
|
|
|
|
LIBOBJS= localtime.o asctime.o difftime.o
|
1989-03-21 11:36:47 -05:00
|
|
|
HEADERS= tzfile.h private.h
|
1995-01-06 18:10:11 -05:00
|
|
|
NONLIBSRCS= zic.c zdump.c scheck.c ialloc.c
|
2008-07-20 14:23:26 -04:00
|
|
|
NEWUCBSRCS= date.c strftime.c
|
1996-09-08 17:03:58 -04:00
|
|
|
SOURCES= $(HEADERS) $(LIBSRCS) $(NONLIBSRCS) $(NEWUCBSRCS) tzselect.ksh
|
1996-01-04 12:40:31 -05:00
|
|
|
MANS= newctime.3 newstrftime.3 newtzset.3 time2posix.3 \
|
1996-09-08 15:51:04 -04:00
|
|
|
tzfile.5 tzselect.8 zic.8 zdump.8
|
2012-10-17 20:59:45 -07:00
|
|
|
COMMON= Makefile
|
|
|
|
|
DOCS= README Theory $(MANS) date.1
|
1996-09-08 15:51:04 -04:00
|
|
|
PRIMARY_YDATA= africa antarctica asia australasia \
|
|
|
|
|
europe northamerica southamerica
|
2010-10-07 17:25:45 -04:00
|
|
|
YDATA= $(PRIMARY_YDATA) pacificnew etcetera backward
|
|
|
|
|
NDATA= systemv factory
|
1989-01-28 21:07:46 -05:00
|
|
|
SDATA= solar87 solar88 solar89
|
1989-02-04 18:30:06 -05:00
|
|
|
TDATA= $(YDATA) $(NDATA) $(SDATA)
|
2013-08-16 12:19:42 -07:00
|
|
|
TABDATA= iso3166.tab time.tab zone.tab
|
2013-08-12 23:58:29 -07:00
|
|
|
DATA= $(YDATA) $(NDATA) $(SDATA) $(TABDATA) \
|
|
|
|
|
leap-seconds.list yearistype.sh
|
2000-12-14 15:31:52 -05:00
|
|
|
WEB_PAGES= tz-art.htm tz-link.htm
|
2004-10-18 11:43:08 -04:00
|
|
|
MISC= usno1988 usno1989 usno1989a usno1995 usno1997 usno1998 \
|
2013-08-12 23:58:29 -07:00
|
|
|
$(WEB_PAGES) checktab.awk leapseconds.awk workman.sh \
|
2006-08-07 12:30:31 -04:00
|
|
|
zoneinfo2tdf.pl
|
2012-10-17 20:59:45 -07:00
|
|
|
ENCHILADA= $(COMMON) $(DOCS) $(SOURCES) $(DATA) $(MISC)
|
1986-01-16 08:50:41 -05:00
|
|
|
|
1989-05-13 14:43:20 -04:00
|
|
|
# And for the benefit of csh users on systems that assume the user
|
|
|
|
|
# shell should be used to handle commands in Makefiles. . .
|
|
|
|
|
|
|
|
|
|
SHELL= /bin/sh
|
|
|
|
|
|
2013-08-16 12:19:42 -07:00
|
|
|
all: tzselect zic zdump $(LIBOBJS) $(TABDATA)
|
1986-01-13 17:26:56 -05:00
|
|
|
|
2002-01-28 12:55:52 -05:00
|
|
|
ALL: all date
|
1989-03-07 22:22:17 -05:00
|
|
|
|
2013-08-16 12:19:42 -07:00
|
|
|
install: all $(DATA) $(REDO) $(TZLIB) $(MANS)
|
1997-03-03 18:27:59 -05:00
|
|
|
$(ZIC) -y $(YEARISTYPE) \
|
1992-06-15 16:24:49 -04:00
|
|
|
-d $(TZDIR) -l $(LOCALTIME) -p $(POSIXRULES)
|
2013-08-16 12:19:42 -07:00
|
|
|
-rm -f $(TZDIR)/iso3166.tab $(TZDIR)/time.tab $(TZDIR)/zone.tab
|
|
|
|
|
cp iso3166.tab time.tab zone.tab $(TZDIR)/.
|
1989-03-21 20:05:59 -05:00
|
|
|
-mkdir $(TOPDIR) $(ETCDIR)
|
2002-01-28 12:55:52 -05:00
|
|
|
cp tzselect zic zdump $(ETCDIR)/.
|
1989-03-21 20:05:59 -05:00
|
|
|
-mkdir $(TOPDIR) $(MANDIR) \
|
|
|
|
|
$(MANDIR)/man3 $(MANDIR)/man5 $(MANDIR)/man8
|
1989-03-22 20:00:34 -05:00
|
|
|
-rm -f $(MANDIR)/man3/newctime.3 \
|
1991-01-17 19:06:17 -05:00
|
|
|
$(MANDIR)/man3/newtzset.3 \
|
1989-03-22 20:00:34 -05:00
|
|
|
$(MANDIR)/man5/tzfile.5 \
|
1996-09-08 15:51:04 -04:00
|
|
|
$(MANDIR)/man8/tzselect.8 \
|
1989-03-22 20:00:34 -05:00
|
|
|
$(MANDIR)/man8/zdump.8 \
|
|
|
|
|
$(MANDIR)/man8/zic.8
|
1991-01-17 19:06:17 -05:00
|
|
|
cp newctime.3 newtzset.3 $(MANDIR)/man3/.
|
1989-03-21 20:05:59 -05:00
|
|
|
cp tzfile.5 $(MANDIR)/man5/.
|
1996-09-08 15:51:04 -04:00
|
|
|
cp tzselect.8 zdump.8 zic.8 $(MANDIR)/man8/.
|
1989-03-21 20:05:59 -05:00
|
|
|
|
1989-03-22 20:00:34 -05:00
|
|
|
INSTALL: ALL install date.1
|
1989-03-21 20:05:59 -05:00
|
|
|
-mkdir $(TOPDIR) $(BINDIR)
|
|
|
|
|
cp date $(BINDIR)/.
|
|
|
|
|
-mkdir $(TOPDIR) $(MANDIR) $(MANDIR)/man1
|
1989-03-22 20:00:34 -05:00
|
|
|
-rm -f $(MANDIR)/man1/date.1
|
1989-03-21 20:05:59 -05:00
|
|
|
cp date.1 $(MANDIR)/man1/.
|
|
|
|
|
|
Switch from SCCS to git.
Remove the SCCS keyword '%W%' from all files.
Mostly this just remove comments.
Remove trailing white space, too.
* Makefile (TZCODE_VERSION): New macro.
(version.h): New rule.
(tzselect): Interpolate TZCODE_VERSION.
(clean): Remove version.h.
(zdump.o, zic.o): Depend on version.h.
* asctime.c, date.c, difftime.c, ialloc.c, localtime.c, scheck.c:
* strftime.c, zdump.c, zic.c: Remove elsieid.
* private.h: Remove privatehid.
* tzfile.h: Remove tzfilehid.
* tzselect.h (TZCODE_VERSION): Rename from VERSION.
* zdump.c, zic.c: Include "version.h",
and use TZCODE_VERSION instead of elsieid.
2012-07-18 17:30:38 -07:00
|
|
|
version.h:
|
2012-11-09 18:12:22 -08:00
|
|
|
(echo 'static char const PKGVERSION[]="($(PACKAGE)) ";' && \
|
2012-11-12 21:52:35 -08:00
|
|
|
echo 'static char const TZVERSION[]="$(VERSION)";' && \
|
|
|
|
|
echo 'static char const REPORT_BUGS_TO[]="$(BUGEMAIL)";') >$@
|
Switch from SCCS to git.
Remove the SCCS keyword '%W%' from all files.
Mostly this just remove comments.
Remove trailing white space, too.
* Makefile (TZCODE_VERSION): New macro.
(version.h): New rule.
(tzselect): Interpolate TZCODE_VERSION.
(clean): Remove version.h.
(zdump.o, zic.o): Depend on version.h.
* asctime.c, date.c, difftime.c, ialloc.c, localtime.c, scheck.c:
* strftime.c, zdump.c, zic.c: Remove elsieid.
* private.h: Remove privatehid.
* tzfile.h: Remove tzfilehid.
* tzselect.h (TZCODE_VERSION): Rename from VERSION.
* zdump.c, zic.c: Include "version.h",
and use TZCODE_VERSION instead of elsieid.
2012-07-18 17:30:38 -07:00
|
|
|
|
1989-03-21 20:05:59 -05:00
|
|
|
zdump: $(TZDOBJS)
|
2012-10-27 12:54:47 -07:00
|
|
|
$(CC) -o $@ $(CFLAGS) $(LDFLAGS) $(TZDOBJS) $(LDLIBS)
|
1989-03-21 20:05:59 -05:00
|
|
|
|
1992-03-15 22:02:43 -05:00
|
|
|
zic: $(TZCOBJS) yearistype
|
2012-10-27 12:54:47 -07:00
|
|
|
$(CC) -o $@ $(CFLAGS) $(LDFLAGS) $(TZCOBJS) $(LDLIBS)
|
1986-01-16 11:00:37 -05:00
|
|
|
|
1992-03-15 22:02:43 -05:00
|
|
|
yearistype: yearistype.sh
|
|
|
|
|
cp yearistype.sh yearistype
|
|
|
|
|
chmod +x yearistype
|
|
|
|
|
|
2013-08-12 23:58:29 -07:00
|
|
|
leapseconds: leapseconds.awk leap-seconds.list
|
|
|
|
|
$(AWK) -f leapseconds.awk leap-seconds.list >$@
|
|
|
|
|
|
1989-03-11 21:05:20 -05:00
|
|
|
posix_only: zic $(TDATA)
|
1997-03-03 18:27:59 -05:00
|
|
|
$(ZIC) -y $(YEARISTYPE) -d $(TZDIR) -L /dev/null $(TDATA)
|
1989-02-04 18:30:06 -05:00
|
|
|
|
1989-03-11 21:05:20 -05:00
|
|
|
right_only: zic leapseconds $(TDATA)
|
1997-03-03 18:27:59 -05:00
|
|
|
$(ZIC) -y $(YEARISTYPE) -d $(TZDIR) -L leapseconds $(TDATA)
|
1989-02-04 18:30:06 -05:00
|
|
|
|
1998-05-25 13:04:43 -04:00
|
|
|
# In earlier versions of this makefile, the other two directories were
|
|
|
|
|
# subdirectories of $(TZDIR). However, this led to configuration errors.
|
|
|
|
|
# For example, with posix_right under the earlier scheme,
|
|
|
|
|
# TZ='right/Australia/Adelaide' got you localtime with leap seconds,
|
|
|
|
|
# but gmtime without leap seconds, which led to problems with applications
|
|
|
|
|
# like sendmail that subtract gmtime from localtime.
|
|
|
|
|
# Therefore, the other two directories are now siblings of $(TZDIR).
|
|
|
|
|
# You must replace all of $(TZDIR) to switch from not using leap seconds
|
|
|
|
|
# to using them, or vice versa.
|
2013-08-12 23:58:29 -07:00
|
|
|
right_posix: right_only leapseconds
|
2013-08-11 10:14:18 -07:00
|
|
|
rm -fr $(TZDIR)-leaps
|
|
|
|
|
ln -s $(TZDIR_BASENAME) $(TZDIR)-leaps || \
|
|
|
|
|
$(ZIC) -y $(YEARISTYPE) \
|
|
|
|
|
-d $(TZDIR)-leaps -L leapseconds $(TDATA)
|
1998-05-25 13:04:43 -04:00
|
|
|
$(ZIC) -y $(YEARISTYPE) -d $(TZDIR)-posix -L /dev/null $(TDATA)
|
2013-08-11 10:14:18 -07:00
|
|
|
|
2013-08-12 23:58:29 -07:00
|
|
|
posix_right: posix_only leapseconds
|
2013-08-11 10:14:18 -07:00
|
|
|
rm -fr $(TZDIR)-posix
|
|
|
|
|
ln -s $(TZDIR_BASENAME) $(TZDIR)-posix || \
|
|
|
|
|
$(ZIC) -y $(YEARISTYPE) \
|
|
|
|
|
-d $(TZDIR)-posix -L /dev/null $(TDATA)
|
1997-03-03 18:27:59 -05:00
|
|
|
$(ZIC) -y $(YEARISTYPE) \
|
1998-05-28 09:53:12 -04:00
|
|
|
-d $(TZDIR)-leaps -L leapseconds $(TDATA)
|
1989-02-04 18:30:06 -05:00
|
|
|
|
1997-12-11 12:50:00 -05:00
|
|
|
zones: $(REDO)
|
|
|
|
|
|
2013-08-16 12:19:42 -07:00
|
|
|
time.tab: $(YDATA) zone.tab zone-time.awk
|
|
|
|
|
$(AWK) -f zone-time.awk $(YDATA) >$@
|
|
|
|
|
|
1986-12-31 14:23:02 -05:00
|
|
|
$(TZLIB): $(LIBOBJS)
|
1991-12-24 11:32:40 -05:00
|
|
|
-mkdir $(TOPDIR) $(LIBDIR)
|
1986-12-31 14:23:02 -05:00
|
|
|
ar ru $@ $(LIBOBJS)
|
2012-10-27 12:54:47 -07:00
|
|
|
if [ -x /usr/ucb/ranlib ] || [ -x /usr/bin/ranlib ]; \
|
1989-04-07 17:59:38 -04:00
|
|
|
then ranlib $@ ; fi
|
1986-07-12 07:27:55 -04:00
|
|
|
|
1989-03-21 20:05:59 -05:00
|
|
|
date: $(DATEOBJS)
|
2012-10-27 12:54:47 -07:00
|
|
|
$(CC) -o $@ $(CFLAGS) $(LDFLAGS) $(DATEOBJS) $(LDLIBS)
|
1986-01-21 09:11:47 -05:00
|
|
|
|
1996-09-08 15:51:04 -04:00
|
|
|
tzselect: tzselect.ksh
|
|
|
|
|
sed \
|
2012-10-27 13:54:13 -07:00
|
|
|
-e 's|#!/bin/bash|#!$(KSHELL)|g' \
|
1996-09-08 15:51:04 -04:00
|
|
|
-e 's|AWK=[^}]*|AWK=$(AWK)|g' \
|
2012-11-09 18:12:22 -08:00
|
|
|
-e 's|\(PKGVERSION\)=.*|\1='\''($(PACKAGE)) '\''|' \
|
2012-11-12 21:52:35 -08:00
|
|
|
-e 's|\(REPORT_BUGS_TO\)=.*|\1=$(BUGEMAIL)|' \
|
1996-09-08 15:51:04 -04:00
|
|
|
-e 's|TZDIR=[^}]*|TZDIR=$(TZDIR)|' \
|
2012-11-09 18:12:22 -08:00
|
|
|
-e 's|\(TZVERSION\)=.*|\1=$(VERSION)|' \
|
2013-08-16 12:19:42 -07:00
|
|
|
-e 's|^\(ZONETABTYPE\)=.*|\1=$(ZONETABTYPE)|' \
|
1996-09-08 15:51:04 -04:00
|
|
|
<$? >$@
|
|
|
|
|
chmod +x $@
|
|
|
|
|
|
2012-12-13 17:19:47 -08:00
|
|
|
check: check_character_set check_tables check_web
|
|
|
|
|
|
|
|
|
|
check_character_set: $(ENCHILADA)
|
|
|
|
|
sharp='#'; ! grep -n $(INVALID_CHAR) $(ENCHILADA)
|
2000-12-14 15:31:52 -05:00
|
|
|
|
1996-09-08 15:51:04 -04:00
|
|
|
check_tables: checktab.awk $(PRIMARY_YDATA)
|
|
|
|
|
$(AWK) -f checktab.awk $(PRIMARY_YDATA)
|
|
|
|
|
|
2000-12-14 15:31:52 -05:00
|
|
|
check_web: $(WEB_PAGES)
|
2001-04-05 16:43:36 -04:00
|
|
|
$(VALIDATE_ENV) $(VALIDATE) $(VALIDATE_FLAGS) $(WEB_PAGES)
|
2000-12-14 15:31:52 -05:00
|
|
|
|
2013-05-27 14:16:25 -07:00
|
|
|
clean_misc:
|
Switch from SCCS to git.
Remove the SCCS keyword '%W%' from all files.
Mostly this just remove comments.
Remove trailing white space, too.
* Makefile (TZCODE_VERSION): New macro.
(version.h): New rule.
(tzselect): Interpolate TZCODE_VERSION.
(clean): Remove version.h.
(zdump.o, zic.o): Depend on version.h.
* asctime.c, date.c, difftime.c, ialloc.c, localtime.c, scheck.c:
* strftime.c, zdump.c, zic.c: Remove elsieid.
* private.h: Remove privatehid.
* tzfile.h: Remove tzfilehid.
* tzselect.h (TZCODE_VERSION): Rename from VERSION.
* zdump.c, zic.c: Include "version.h",
and use TZCODE_VERSION instead of elsieid.
2012-07-18 17:30:38 -07:00
|
|
|
rm -f core *.o *.out \
|
2013-08-12 23:58:29 -07:00
|
|
|
date leapseconds tzselect version.h zdump zic yearistype
|
2013-05-27 14:16:25 -07:00
|
|
|
clean: clean_misc
|
2012-11-03 19:39:56 -07:00
|
|
|
rm -f -r tzpublic
|
1986-01-13 17:26:56 -05:00
|
|
|
|
2003-12-15 09:31:40 -05:00
|
|
|
maintainer-clean: clean
|
|
|
|
|
@echo 'This command is intended for maintainers to use; it'
|
|
|
|
|
@echo 'deletes files that may need special tools to rebuild.'
|
2012-11-03 17:41:16 -07:00
|
|
|
rm -f *.[1-8].txt *.asc *.tar.gz
|
2003-12-15 09:31:40 -05:00
|
|
|
|
1988-02-13 10:06:38 -05:00
|
|
|
names:
|
|
|
|
|
@echo $(ENCHILADA)
|
1986-11-24 16:39:58 -05:00
|
|
|
|
2013-05-27 14:16:25 -07:00
|
|
|
public: check check_public check_time_t_alternatives \
|
|
|
|
|
set-timestamps tarballs signatures
|
2012-11-03 12:56:05 -07:00
|
|
|
|
2012-07-19 16:35:33 -07:00
|
|
|
# Set the time stamps to those of the git repository, if available,
|
|
|
|
|
# and if the files have not changed since then.
|
|
|
|
|
# This uses GNU 'touch' syntax 'touch -d@N FILE',
|
|
|
|
|
# where N is the number of seconds since 1970.
|
|
|
|
|
# If git or GNU 'touch' is absent, do nothing.
|
|
|
|
|
set-timestamps:
|
|
|
|
|
-TZ=UTC0 && export TZ && files=`git ls-files` && \
|
|
|
|
|
touch -d @1 test.out && rm -f test.out && \
|
|
|
|
|
for file in $$files; do \
|
|
|
|
|
test -z "`git diff --name-only $$file`" || continue; \
|
|
|
|
|
cmd="touch -d @`git log -1 --format='format:%ct' $$file \
|
|
|
|
|
` $$file" && \
|
|
|
|
|
echo "$$cmd" && \
|
|
|
|
|
$$cmd || exit; \
|
|
|
|
|
done
|
|
|
|
|
|
1999-03-29 11:18:12 -05:00
|
|
|
# The zics below ensure that each data file can stand on its own.
|
2005-01-27 08:12:53 -05:00
|
|
|
# We also do an all-files run to catch links to links.
|
1999-03-29 11:18:12 -05:00
|
|
|
|
2012-11-03 12:56:05 -07:00
|
|
|
check_public: $(ENCHILADA)
|
2005-01-24 12:21:45 -05:00
|
|
|
make maintainer-clean
|
|
|
|
|
make "CFLAGS=$(GCC_DEBUG_FLAGS)"
|
2012-11-03 19:39:56 -07:00
|
|
|
mkdir tzpublic
|
|
|
|
|
for i in $(TDATA) ; do \
|
|
|
|
|
$(zic) -v -d tzpublic $$i 2>&1 || exit; \
|
2012-11-03 12:56:05 -07:00
|
|
|
done
|
2012-11-03 19:39:56 -07:00
|
|
|
$(zic) -v -d tzpublic $(TDATA)
|
|
|
|
|
rm -f -r tzpublic
|
2012-11-03 12:56:05 -07:00
|
|
|
|
2013-05-27 14:16:25 -07:00
|
|
|
# Check that the code works under various alternative
|
|
|
|
|
# implementations of time_t.
|
|
|
|
|
check_time_t_alternatives:
|
|
|
|
|
mkdir tzpublic
|
|
|
|
|
zones=`$(AWK) '/^[^#]/ { print $$3 }' <zone.tab` && \
|
|
|
|
|
for type in $(TIME_T_ALTERNATIVES); do \
|
|
|
|
|
mkdir tzpublic/$$type && \
|
|
|
|
|
make clean_misc && \
|
|
|
|
|
make TOPDIR=`pwd`/tzpublic/$$type \
|
|
|
|
|
CFLAGS='$(CFLAGS) -Dtime_tz='"'$$type'" \
|
|
|
|
|
install && \
|
|
|
|
|
diff -qr tzpublic/int64_t/etc/zoneinfo tzpublic/$$type/etc/zoneinfo && \
|
|
|
|
|
case $$type in \
|
|
|
|
|
int32_t) range=-2147483648,2147483647;; \
|
|
|
|
|
uint32_t) range=0,4294967296;; \
|
|
|
|
|
int64_t) continue;; \
|
|
|
|
|
*u*) range=0,10000000000;; \
|
|
|
|
|
*) range=-10000000000,10000000000;; \
|
|
|
|
|
esac && \
|
|
|
|
|
echo checking $$type zones ... && \
|
|
|
|
|
tzpublic/int64_t/etc/zdump -V -t $$range $$zones \
|
|
|
|
|
>tzpublic/int64_t.out && \
|
|
|
|
|
tzpublic/$$type/etc/zdump -V -t $$range $$zones \
|
|
|
|
|
>tzpublic/$$type.out && \
|
|
|
|
|
diff -u tzpublic/int64_t.out tzpublic/$$type.out \
|
|
|
|
|
|| exit; \
|
|
|
|
|
done
|
|
|
|
|
rm -f -r tzpublic
|
|
|
|
|
|
2012-11-03 12:56:05 -07:00
|
|
|
tarballs: tzcode$(VERSION).tar.gz tzdata$(VERSION).tar.gz
|
|
|
|
|
|
|
|
|
|
tzcode$(VERSION).tar.gz: $(COMMON) $(DOCS) $(SOURCES) $(MISC)
|
2012-07-19 16:35:33 -07:00
|
|
|
for i in *.[1-8] ; do \
|
|
|
|
|
LC_ALL=C sh workman.sh $$i > $$i.txt && \
|
|
|
|
|
touch -r $$i $$i.txt || exit; \
|
|
|
|
|
done
|
|
|
|
|
LC_ALL=C && export LC_ALL && \
|
2012-10-17 20:59:45 -07:00
|
|
|
tar $(TARFLAGS) -cf - \
|
|
|
|
|
$(COMMON) $(DOCS) $(SOURCES) $(MISC) *.[1-8].txt | \
|
2012-11-03 12:56:05 -07:00
|
|
|
gzip $(GZIPFLAGS) > $@
|
|
|
|
|
|
|
|
|
|
tzdata$(VERSION).tar.gz: $(COMMON) $(DATA)
|
2012-07-19 16:35:33 -07:00
|
|
|
LC_ALL=C && export LC_ALL && \
|
2012-10-17 20:59:45 -07:00
|
|
|
tar $(TARFLAGS) -cf - $(COMMON) $(DATA) | \
|
2012-11-03 12:56:05 -07:00
|
|
|
gzip $(GZIPFLAGS) > $@
|
|
|
|
|
|
2012-11-03 17:41:16 -07:00
|
|
|
signatures: tzcode$(VERSION).tar.gz.asc tzdata$(VERSION).tar.gz.asc
|
2012-11-03 12:56:05 -07:00
|
|
|
|
2012-11-03 17:41:16 -07:00
|
|
|
tzcode$(VERSION).tar.gz.asc: tzcode$(VERSION).tar.gz
|
|
|
|
|
gpg --armor --detach-sign $?
|
2012-11-03 12:56:05 -07:00
|
|
|
|
2012-11-03 17:41:16 -07:00
|
|
|
tzdata$(VERSION).tar.gz.asc: tzdata$(VERSION).tar.gz
|
|
|
|
|
gpg --armor --detach-sign $?
|
1993-01-08 06:51:58 -05:00
|
|
|
|
2005-01-31 14:06:03 -05:00
|
|
|
typecheck:
|
2004-11-29 10:02:21 -05:00
|
|
|
make clean
|
Remove attempt to support floating-point time_t.
It wasn't tested and probably never worked, no platform used it,
and the latest POSIX no longer allows it.
* Makefile (typecheck): Don't check time_t being 'double'.
* Theory: Document the change.
* difftime.c (difftime):
* localtime.c (differ_by_repeat, tzload, timesub, time2sub):
* private.h (time_t_min, time_t_max):
* zdump.c (absolute_min_time, absolute_max_time, tformat):
Don't try to support floating-point time_t.
* localtime.c, private.h, zdump.c: Don't include float.h.
* localtime.c (truncate_time, double_to_time):
* private.h (TYPE_INTEGRAL):
* zdump.c (checkabsolutes):
Remove; no longer needed. All uses removed.
* zdump.8 (LIMITATIONS): Remove discussion of floating-point time_t.
2013-08-12 01:41:34 -07:00
|
|
|
for i in "long long" unsigned; \
|
2004-11-30 08:38:36 -05:00
|
|
|
do \
|
More C modernization.
* Makefile (typecheck): Add -D__time_t_defined to CFLAGS,
for glibc 2.15.
* asctime.c (asctime_r, asctime):
* date.c (main, dogmt, reset, nondigit, sametm, convert, checkfinal):
* ialloc.c (icatalloc):
* localtime.c (detzcode, detzcode64, settzname, tzload)
(typesequiv, getzname, getqzname, getnum, getsecs, getoffset)
(getrule, transtime, tzparse, tzset, localsub, gmtsub)
(leaps_thru_end_of, timesub, increment_overflow)
(long_increment_overflow, normalize_overflow)
(long_normalize_overflow, tmcomp, time2sub, time1, leapcorr):
* scheck.c (scheck):
* strftime.c (_yconv):
* zdump.c (my_localtime, abbrok, main, yeartot, hunt)
(delta, show, abbr, dumptime):
* zic.c (main, dolink, itsdir, associate, infile, inrule)
(inzone, inzcont, inzsub, inleap, inlink, rulesub, convert64)
(writezone, doabbr, stringoffset, stringrule, stringzone)
(outzone, addtype, leapadd, adjleap, ciequal, itsabbr, byword)
(getfields, rpytime, newabbr, mkdirs):
Omit 'register', as it adds no value these days. See Christos Zoulas in
<http://mm.icann.org/pipermail/tz/2012-October/018376.html>.
* date.c (netsettime) [TSP_SETDATE]: Add forward decl.
Don't rely on implicit int. Now static. Use NULL, not 0.
* zdump.c: Include "limits.h".
(absolute_min_time, absolute_max_time): Compute at compile-time,
as the run-time tests relied on undefined behavior.
(checkabsolutes): Rename from setabsolutes. Just check, since
there's nothing to set now. All uses changed.
2012-10-26 00:48:01 -07:00
|
|
|
make CFLAGS="-DTYPECHECK -D__time_t_defined -D_TIME_T \"-Dtime_t=$$i\"" ; \
|
2005-03-17 21:48:15 -05:00
|
|
|
./zdump -v Europe/Rome ; \
|
2004-11-30 08:38:36 -05:00
|
|
|
make clean ; \
|
|
|
|
|
done
|
2004-11-29 10:02:21 -05:00
|
|
|
|
1989-03-21 11:36:47 -05:00
|
|
|
zonenames: $(TDATA)
|
1999-11-04 16:41:29 -05:00
|
|
|
@$(AWK) '/^Zone/ { print $$2 } /^Link/ { print $$3 }' $(TDATA)
|
1989-03-21 11:36:47 -05:00
|
|
|
|
|
|
|
|
asctime.o: private.h tzfile.h
|
1989-03-22 20:00:34 -05:00
|
|
|
date.o: private.h
|
1989-03-21 11:36:47 -05:00
|
|
|
difftime.o: private.h
|
|
|
|
|
ialloc.o: private.h
|
|
|
|
|
localtime.o: private.h tzfile.h
|
|
|
|
|
scheck.o: private.h
|
1989-03-22 20:00:34 -05:00
|
|
|
strftime.o: tzfile.h
|
Switch from SCCS to git.
Remove the SCCS keyword '%W%' from all files.
Mostly this just remove comments.
Remove trailing white space, too.
* Makefile (TZCODE_VERSION): New macro.
(version.h): New rule.
(tzselect): Interpolate TZCODE_VERSION.
(clean): Remove version.h.
(zdump.o, zic.o): Depend on version.h.
* asctime.c, date.c, difftime.c, ialloc.c, localtime.c, scheck.c:
* strftime.c, zdump.c, zic.c: Remove elsieid.
* private.h: Remove privatehid.
* tzfile.h: Remove tzfilehid.
* tzselect.h (TZCODE_VERSION): Rename from VERSION.
* zdump.c, zic.c: Include "version.h",
and use TZCODE_VERSION instead of elsieid.
2012-07-18 17:30:38 -07:00
|
|
|
zdump.o: version.h
|
|
|
|
|
zic.o: private.h tzfile.h version.h
|
1989-02-17 20:21:00 -05:00
|
|
|
|
|
|
|
|
.KEEP_STATE:
|