echo x - "Theory" 2>&1
sed "s/^X//" >"Theory" <<'!The!End!'
X@(#)Theory	3.1
X
XThese time and date functions are much like the System V Release 2.0 (SVR2)
Xtime and date functions; there are a few additions and changes to extend
Xthe usefulness of the SVR2 functions:
X
X*	In SVR2, time display in a process is controlled by the environment
X	variable TZ, which "must be a three-letter time zone name, followed
X	by a number representing the difference between local time and
X	Greenwich Mean Time in hours, followed by an optional three-letter
X	name for a daylight time zone;" when the optional daylight time zone is
X	present, "standard U.S.A. Daylight Savings Time conversion is applied."
X	This means that SVR2 can't deal with other (for example, Australian) 
X	daylight savings time rules, or situations where more than two
X	time zone abbreviations are used in an area.
X
X*	In SVR2, time conversion information is compiled into each program
X	that does time conversion.  This means that when time conversion
X	rules change (as in the United States in 1987), all programs that
X	do time conversion must be recompiled to ensure proper results.
X
X*	In SVR2, time conversion fails for near-minimum or near-maximum
X	time_t values when doing conversions for places that don't use GMT.
X
X*	In SVR2, there's no tamper-proof way for a process to learn the
X	system's best idea of local wall clock.  (This is important for 
X	applications that an administrator wants used only at certain times--
X	without regard to whether the user has fiddled the "TZ" environment
X	variable.  While an administrator can "do everything in GMT" to get
X	around the problem, doing so is inconvenient and precludes handling
X	daylight savings time shifts--as might be required to limit phone
X	calls to off-peak hours.)
X
XThese are the changes that have been made to the SVR2 functions:
X
X*	The "TZ" environment variable is used in generating the name of a file
X	from which time zone information is read; "TZ" is no longer constrained
X	to be a three-letter time zone name followed by a number of hours and
X	an optional three-letter daylight time zone name.  The daylight saving
X	time rules to be used for a particular time zone are encoded in the
X	time zone file; the format of the file allows U.S., Australian, and
X	other rules to be encoded, and allows for situations where more than
X	two time zone abbreviations are used.
X
X	It was recognized that allowing the "TZ" environment variable to
X	take on values such as "US/Eastern" might cause "old" programs
X	(that expect "TZ" to have a certain form) to operate incorrectly;
X	consideration was given to using some other environment variable
X	(for example, "TIMEZONE") to hold the string used to generate the
X	time zone information file name.  In the end, however, it was decided
X	to continue using "TZ":  it is widely used for time zone purposes;
X	separately maintaining both "TZ" and "TIMEZONE" seemed a nuisance;
X	and systems where "new" forms of "TZ" might cause problems can simply
X	give time zone files names such as "EST5EDT" which can be used both by
X	"new" programs (as file names) and "old" programs (as zone names and
X	offsets).
X
X*	To handle places where more than two time zone abbreviations are used,
X	the functions "localtime" and "gmtime" set tzname[tmp->tm_isdst]
X	(where "tmp" is the value the function returns) to the time zone
X	abbreviation to be used.  This differs from SVR2, where the elements
X	of tzname are only changed as a result of calls to tzset.
X
X*	Since the "TZ" environment variable can now be used to control time
X	conversion, the "daylight" and "timezone" variables are no longer
X	needed or supported.  (You can use a compile-time option to cause
X	these variables to be defined and to be set by "tzset"; however, their
X	values will not be used by "localtime.")
X
X*	The "localtime" function has been set up to deliver correct results
X	for near-minimum or near-maximum time_t values.  (A comment in the
X	source code tells how to get compatibly wrong results).
X
X*	A function "tzsetwall" has been added to arrange for the system's
X	best approximation to local wall clock time to be delivered by
X	subsequent calls to "localtime."  Source code for portable
X	applications that "must" run on local wall clock time should call
X	"tzsetwall();" if such code is moved to "old" systems that don't provide
X	tzsetwall, you won't be able to generate an executable program.
X	(These time zone functions also arrange for local wall clock time to be
X	used if tzset is called--directly or indirectly--and there's no "TZ"
X	environment variable; portable applications should not, however, rely
X	on this behavior since it's not the way SVR2 systems behave.)
X
XPoints of interest to folks with Version 7 or BSD systems:
X
X*	The BSD "timezone" function is not present in this package;
X	it's impossible to reliably map timezone's arguments (a "minutes west
X	of GMT" value and a "daylight saving time in effect" flag) to a
X	time zone abbreviation, and we refuse to guess. 
X	Programs that in the past used the timezone function may now examine
X	tzname[localtime(&clock)->tm_isdst] to learn the correct time
X	zone abbreviation to use.  Alternatively, use localtime(&clock)->tm_zone
X	if this has been enabled.
X
X*	The BSD gettimeofday function is not used in this package;
X	this lets users control the time zone used in doing time conversions.
X	Users who don't try to control things (that is, users who do not set
X	the environment variable TZ) get the time conversion specified in the
X	file "/etc/zoneinfo/localtime"; see the time zone compiler writeup for
X	information on how to initialize this file.
X
X*	The BSD "dysize" function is only included if the preprocessor symbol
X	BSD_COMPAT is defined.  For a year y, the BSD code returns the value
X	   ((y % 4) == 0) : 366 : 365
X	while this code returns the value
X	   (((y) % 4) == 0 && ((y) % 100) != 0 || ((y) % 400) == 0) ? 366 : 365
X	There's a comment in the code telling how to get the BSD value.
X
XThe functions that are conditionally compiled if STD_INSPIRED is defined should,
Xat this point, be looked on primarily as food for thought.  They are not in
Xany sense "standard compatible"--some are not, in fact, specified in *any*
Xstandard.  They do, however, represent responses of various authors to
Xstandardization proposals.
X
XOther time conversion proposals, in particular the one developed by folks at
XHewlett Packard, offer a wider selection of functions that provide capabilities
Xbeyond those provided here.  The absence of such functions from this package
Xis not meant to discourage the development, standardization, or use of such
Xfunctions.  Rather, their absence reflects the decision to make this package
Xclose to SVR2 (with the exceptions outlined above) to ensure its broad
Xacceptability.  If more powerful time conversion functions can be standardized,
Xso much the better.
X
XIt's probably not wise to standardize everything in this package.
XWhile the command
X	nroff -man newctime.3
Xproduces a document that describes this package, the command
X	nroff -man -rX3J11 newctime.3
Xproduces a document that describes the "standardizable" parts.
!The!End!

echo x - "README" 2>&1
sed "s/^X//" >"README" <<'!The!End!'
X@(#)README	3.1
X
XPlease send comments or information to
X	seismo!elsie!tz
Xfor forwarding to folks interested in time zone matters.
X
XBe sure to read the comments in "Makefile" and make any changes
Xneeded to make things right for your system.
X
XThis version of the time zone software uses a new format
X(based on the work of Guy Harris, a.k.a g...@sun.UUCP)
Xfor the time zone information files.  They are now stored by default in a
Xdirectory named "/etc/zoneinfo" rather than "/etc/tzdir" or "/etc/timezones"
Xas before.  If you've already compiled programs with older time zone software,
Xjust leave the "/etc/tzdir" and/or "/etc/timezones" files around until you
Xhave a chance to recompile.
X
XFor better compatability with other versions of time conversion functions,
Xthe time zone abbreviation to be used with localtime's return value is now
Xpointed to by one of the two elements of the (char *) array tzname, rather
Xthan by the (char *) tz_abbr.  If you have code that uses tz_abbr, add a
X	-DTZA_COMPAT
Xto the end of the
X	CFLAGS=
Xline in "Makefile".
X
XTo use the new functions, use a "-lz" option when compiling or linking.
X
XHistorical local time information has been included here not because it
Xis particularly useful, but rather to:
X
X*	give an idea of the variety of local time rules that have
X	existed in the past and thus an idea of the variety that may be
X	expected in the future;
X
X*	provide a test of the generality of the local time rule description
X	system.
X
XThe information in the time zone data files is by no means authoritative;
Xif you know that the rules are different from those in a file, by all means
Xfeel free to change file (and please send the changed version to seismo!elsie!tz
Xfor use in the future).  Europeans take note!
!The!End!

echo x - "Makefile" 2>&1
sed "s/^X//" >"Makefile" <<'!The!End!'
X# @(#)Makefile	3.1
X
X# If you want something other than Eastern United States time used on your
X# system, change the line below (after finding the zone you want in the
X# time zone files, or adding it to a time zone file).
X# Alternately, if you discover you've got the wrong time zone, you can just
X#	zic -l rightzone
X
XLOCALTIME=	US/Eastern
X
X# Use an absolute path name for TZDIR unless you're just testing the software.
X
XTZDIR=		/etc/zoneinfo
X
X# You may want to change this define if you're just testing the software.
X# Alternatively, you can put these functions in /lib/libc.a, removing
X# the old "ctime.o" (and "timezone.o" on a BSD system).  This is the
X# ideal solution if you are able.  Build libz.a, extract the files, and
X# then add them to libc.a.
X
XTZLIB=		/usr/lib/libz.a
X
X#
X# If you're running on a System V-style system and don't want lint grief,
X# add
X#	-DUSG
X# to the end of the "CFLAGS=" line.
X#
X# If you're running on a system where "strchr" is known as "index",
X# (for example, a 4.[012]BSD system), add
X#	-Dstrchr=index
X# to the end of the "CFLAGS=" line.
X#
X# If you want to use System V compatibility code, add
X#	-DUSG_COMPAT
X# to the end of the "CFLAGS=" line.
X#
X# If you want BSD compatibility code, add
X#	-DBSD_COMPAT
X# to the end of the "CFLAGS=" line.
X#
X# If you've used older versions of this software and want "tz_abbr"
X# compatibility code, add
X#	-DTZA_COMPAT
X# to the end of the "CFLAGS=" line.
X#
X# If you'd like to use Robert Elz's additions to the "struct tm" structure,
X# add a
X#	-DKRE_COMPAT
X# to the end of the "CFLAGS=" line, and add the structure elements
X#	long	tm_gmtoff;
X#	char *	tm_zone;
X# to the END of the "struct tm" structure defined in "/usr/include/time.h".
X#
X# If you want code inspired by certain emerging standards, add
X#	-DSTD_INSPIRED
X# to the end of the "CFLAGS=" line.
X#
X# If you want Source Code Control System ID's left out of object modules, add
X#	-DNOID
X# to the end of the "CFLAGS=" line.
X#
X# If you'll never want to handle solar-time-based time zones, add
X#	-DNOSOLAR
X# to the end of the "CFLAGS=" line
X# (and remove solar87 from the DATA= line below).
X#
X
XCFLAGS=
X
X# LINTFLAGS is set for 4.[123]BSD systems.
X# If you're using System V, you'll want to comment out the "LINTFLAGS=" line.
X
XLINTFLAGS=	-phbaaxc
X
X# BUNDLE was set to "bundle" in the original, "shar" is more universal
X
XBUNDLE=		shar
X
X################################################################################
X
XCC=		cc -DTZDIR=\"$(TZDIR)\"
X
XTZCSRCS=	zic.c localtime.c asctime.c scheck.c ialloc.c mkdir.c
XTZCOBJS=	zic.o localtime.o asctime.o scheck.o ialloc.o mkdir.o
XTZDSRCS=	zdump.c localtime.c asctime.c ialloc.c
XTZDOBJS=	zdump.o localtime.o asctime.o ialloc.o
XLIBSRCS=	localtime.c asctime.c ctime.c dysize.c timemk.c
XLIBOBJS=	localtime.o asctime.o ctime.o dysize.o timemk.o
XDOCS=		Theory README Makefile newctime.3 tzfile.5 zic.8 zdump.8
XSOURCES=	tzfile.h zic.c zdump.c \
X		localtime.c asctime.c ctime.c dysize.c timemk.c \
X		scheck.c ialloc.c mkdir.c
XDATA=		asia australasia europe etcetera northamerica \
X		pacificnew systemv solar87
XENCHILADA=	$(DOCS) $(SOURCES) $(DATA)
X
Xall:		REDID_BINARIES zdump $(TZLIB)
X
XREDID_BINARIES:	zic $(DATA)
X		PATH=.:$$PATH zic -l $(LOCALTIME) -d $(TZDIR) $(DATA) && > $@
X
Xzdump:		$(TZDOBJS)
X		$(CC) $(CFLAGS) $(LFLAGS) $(TZDOBJS) -o $@
X
X$(TZLIB):	$(LIBOBJS)
X		ar ru $@ $(LIBOBJS)
X		test -f /usr/bin/ranlib && ranlib $@
X
Xzic:		$(TZCOBJS)
X		$(CC) $(CFLAGS) $(LFLAGS) $(TZCOBJS) -o $@
X
XBUNDLES:	BUNDLE1 BUNDLE2 BUNDLE3
X
XBUNDLE1:	$(DOCS)
X		$(BUNDLE) $(DOCS) > $@
X
XBUNDLE2:	$(SOURCES)
X		$(BUNDLE) $(SOURCES) > $@
X
XBUNDLE3:	$(DATA)
X		$(BUNDLE) $(DATA) > $@
X
X$(ENCHILADA):
X		sccs get $(REL) $(REV) $@
X
Xsure:		$(TZCSRCS) $(TZDSRCS) tzfile.h
X		lint $(LINTFLAGS) $(CFLAGS) -DTZDIR=\"$(TZDIR)\" $(TZCSRCS)
X		lint $(LINTFLAGS) $(CFLAGS) -DTZDIR=\"$(TZDIR)\" $(TZDSRCS)
X		lint $(LINTFLAGS) $(CFLAGS) -DTZDIR=\"$(TZDIR)\" $(LIBSRCS)
X
Xclean:
X		rm -f core *.o *.out REDID_BINARIES zdump zic BUNDLE* \#*
X
XCLEAN:		clean
X		sccs clean
X
Xlisting:	$(ENCHILADA)
X		pr $(ENCHILADA) | lpr
X
Xzdump.o zic.o newctime.o:	tzfile.h
!The!End!

echo x - "newctime.3" 2>&1
sed "s/^X//" >"newctime.3" <<'!The!End!'
X.TH NEWCTIME 3 
X.SH NAME
Xctime, localtime, gmtime, asctime, tzset, tzsetwall \- convert date and time to ASCII
X.SH SYNOPSIS
X.nf
X.B extern char *tzname[2];
X.PP
X.B void tzset()
X.PP
X.B void tzsetwall()
X.PP
X.B char *ctime(clock)
X.B long *clock;
X.PP
X.B #include <time.h>
X.PP
X.B char *asctime(tm)
X.B struct tm *tm;
X.PP
X.B struct tm *localtime(clock)
X.B long *clock;
X.PP
X.B struct tm *gmtime(clock)
X.B long *clock;
X.PP
Xcc ... -lz
X.fi
X.SH DESCRIPTION
X.I Tzset
Xuses the value of the environment variable
X.B TZ
Xto set time conversion information used by
X.IR localtime .
X.if \nX \{\
XIF
X.B TZ
Xis absent from the environment,
Xthe behavior is implementation defined.
XIf
X.B TZ
Xdoes appear in the environment,
X.I localtime
Xwill only work correctly if
Xits value is one of an
Ximplementation-defined set of values.
X\}
X.if !\nX \{\
XIf
X.B TZ
Xdoes not appear in the environment,
Xthe best available approximation to local wall clock time is used by
X.IR localtime .
XIf
X.B TZ
Xappears in the environment but its value is a null string,
XGreenwich Mean Time is used;
Xif
X.B TZ
Xappears and
Xbegins with a slash,
Xit is used as the absolute pathname of the
X.IR tzfile (5)-format
Xfile from which to read the time conversion information;
Xif
X.B TZ
Xappears and
Xbegins with a character other than a slash,
Xit's used as a pathname relative to a system time conversion information
Xdirectory.
X\}
X.PP
X.I Tzsetwall
Xsets things up so that
X.I localtime
Xreturns the best available approximation of local wall clock time.
X.PP
X.I Ctime\^
Xconverts a long integer, pointed to by
X.IR clock ,
Xrepresenting the time in seconds since
X00:00:00 GMT, January 1, 1970,
Xand returns a pointer to a
X26-character string
Xof the form
X.br
X.ce
XThu Nov 24 18:22:48 1986\\n\\0
X.br
XAll the fields have constant width.
X.PP
X.IR Localtime\^
Xand
X.I gmtime\^
Xreturn pointers to ``tm'' structures, described below.
X.I Localtime\^
Xcorrects for the time zone and any time zone adjustments
X(such as Daylight Savings time in the U.S.A.).
X.if \nX Whether, before doing so,
X.if !\nX Before doing so,
X.I localtime\^
Xcalls
X.I tzset\^
X(if
X.I tzset\^
Xhas not been called in
X.if \nX the current process) is implementation defined.
X.if !\nX the current process).
X.if !\nX \{\
XAfter filling in the ``tm'' structure,
X.I localtime
Xsets the
X.BR tm_isdst 'th
Xelement of
X.B tzname
Xto a pointer to an 
XASCII string that's the time zone abbreviation to be used with
X.IR localtime 's
Xreturn value.
X\}
X.PP
X.I Gmtime\^
Xconverts to Greenwich Mean Time (GMT).
X.PP
X.I Asctime\^
Xconverts a time value contained in a
X``tm'' structure to a 26-character string,
Xas shown in the above example,
Xand returns a pointer
Xto the string.
X.PP
XDeclarations of all the functions and externals, and the ``tm'' structure,
Xare in the
X.B <time.h>\^
Xheader file.
XThe structure (of type)
X.B struct tm
Xincludes the following fields:
X.RS
X.PP
X.nf
X.ta .5i +\w'long tm_gmtoff;\0\0'u
X	int tm_sec;	/\(** seconds (0 - 59) \(**/
X	int tm_min;	/\(** minutes (0 - 59) \(**/
X	int tm_hour;	/\(** hours (0 - 23) \(**/
X	int tm_mday;	/\(** day of month (1 - 31) \(**/
X	int tm_mon;	/\(** month of year (0 - 11) \(**/
X	int tm_year;	/\(** year \- 1900 \(**/
X	int tm_wday;	/\(** day of week (Sunday = 0) \(**/
X	int tm_yday;	/\(** day of year (0 - 365) \(**/
X	int tm_isdst;	/\(** is DST in effect? \(**/
X	char \(**tm_zone;	/\(** abbreviation of timezone name \(**/
X	long tm_gmtoff;	/\(** offset from GMT in seconds \(**/
X.fi
X.RE
X.PP
XThe
X.I tm_zone
Xand
X.I tm_gmtoff
Xfields exist, and are filled in, only if arrangements to do
Xso were made when the library containing these functions was
Xcreated.
XThere is no guarantee that these fields will continue to exist
Xin this form in future releases of this code.
X.PP
X.I Tm_isdst\^
Xis non-zero if a 
Xtime zone adjustment such as Daylight Savings time
Xis in effect.
X.PP
X.I Tm_gmtoff
Xis the offset (in seconds) of the time represented
Xfrom GMT, with positive values indicating East
Xof Greenwich.
X.if !\nX \{\
X.SH FILES
X.ta \w'/etc/zoneinfo/localtime\0\0'u
X/etc/zoneinfo	time zone information directory
X.br
X/etc/zoneinfo/localtime	local time zone file
X\}
X.SH SEE ALSO
X.if !\nX tzfile(5),
Xgetenv(3),
Xtime(2)
X.SH NOTE
XThe return values point to static data
Xwhose content is overwritten by each call.
XThe
X.B tm_zone
Xfield of a returned
X.B "struct tm"
Xpoints to a static array of characters, which
Xwill also be overwritten at the next call
X(and by calls to
X.I tzset
Xor
X.IR tzsetwall ).
X.. @(#)newctime.3	3.1
!The!End!

echo x - "tzfile.5" 2>&1
sed "s/^X//" >"tzfile.5" <<'!The!End!'
X.TH TZFILE 5
X.SH NAME
Xtzfile \- time zone information
X.SH SYNOPSIS
X.B
X#include <tzfile.h>
X.SH DESCRIPTION
XThe time zone information files used by
X.IR tzset (3)
Xbegin with bytes reserved for future use,
Xfollowed by three four-byte values of type
X.BR long ,
Xwritten in a ``standard'' byte order
X(the high-order byte of the value is written first).
XThese values are,
Xin order:
X.TP
X.I tzh_timecnt
XThe number of "transition times" for which data is stored
Xin the file.
X.TP
X.I tzh_typecnt
XThe number of "local time types" for which data is stored
Xin the file (must not be zero).
X.TP
X.I tzh_charcnt
XThe number of characters of "time zone abbreviation strings"
Xstored in the file.
X.PP
XThe above header is followed by
X.I tzh_timecnt
Xfour-byte values of type
X.BR long ,
Xsorted in ascending order.
XThese values are written in ``standard'' byte order.
XEach is used as a transition time (as returned by
X.IR time (2))
Xat which the rules for computing local time change.
XNext come
X.I tzh_timecnt
Xone-byte values of type
X.BR "unsigned char" ;
Xeach one tells which of the different types of ``local time'' types
Xdescribed in the file is associated with the same-indexed transition time.
XThese values serve as indices into an array of
X.I ttinfo
Xstructures that appears next in the file; 
Xthese structures are defined as follows:
X.in +.5i
X.sp
X.nf
X.ta .5i +\w'unsigned int\0\0'u
Xstruct ttinfo {	
X	long	tt_gmtoff;
X	int	tt_isdst;
X	unsigned int	tt_abbrind;
X};
X.in -.5i
X.fi
X.sp
XEach structure is written as a four-byte value for
X.I tt_gmtoff
Xof type
X.BR long ,
Xin a standard byte order, followed by a one-byte value for
X.I tt_isdst
Xand a one-byte value for
X.IR tt_abbrind .
XIn each structure,
X.I tt_gmtoff
Xgives the number of seconds to be added to GMT,
X.I tt_isdst
Xtells whether
X.I tm_isdst
Xshould be set by
X.I localtime (3)
Xand
X.I tt_abbrind
Xserves as an index into the array of time zone abbreviation characters
Xthat follow the
X.I ttinfo
Xstructure(s) in the file.
X.PP
X.I Localtime
Xuses the first standard-time
X.I ttinfo
Xstructure in the file
X(or simply the first
X.I ttinfo
Xstructure in the absence of a standard-time structure)
Xif either
X.I tzh_timecnt
Xis zero or the time argument is less than the first transition time recorded
Xin the file.
X.SH SEE ALSO
Xnewctime(3)
X.. @(#)tzfile.5	3.1
!The!End!

echo x - "zic.8" 2>&1
sed "s/^X//" >"zic.8" <<'!The!End!'
X.TH ZIC 8
X.SH NAME
Xzic \- time zone compiler
X.SH SYNOPSIS
X.B zic
X[
X.B \-v
X] [
X.B \-d
X.I directory
X] [
X.B \-l
X.I localtime
X] [
X.I filename
X\&... ]
X.SH DESCRIPTION
X.I Zic
Xreads text from the file(s) named on the command line
Xand creates the time conversion information files specified in this input.
XIf a
X.I filename
Xis
X.BR \- ,
Xthe standard input is read.
X.PP
XThese options are available:
X.TP
X.BI "\-d " directory
XCreate time conversion information files in the named directory rather than
Xin the standard directory named below.
X.TP
X.BI "\-l " timezone
XUse the given time zone as local time.
X.I Zic
Xwill act as if the file contained a link line of the form
X.sp
X.ti +.5i
XLink	\fItimezone\fP		localtime
X.TP
X.B \-v
XComplain if a year that appears in a data file is outside the range
Xof years representable by
X.IR time (2)
Xvalues.
X.sp
XInput lines are made up of fields.
XFields are separated from one another by any number of white space characters.
XLeading and trailing white space on input lines is ignored.
XAn unquoted sharp character (#) in the input introduces a comment which extends
Xto the end of the line the sharp character appears on.
XWhite space characters and sharp characters may be enclosed in double quotes
X(") if they're to be used as part of a field.
XAny line that is blank (after comment stripping) is ignored.
XNon-blank lines are expected to be of one of three types:
Xrule lines, zone lines, and link lines.
X.PP
XA rule line has the form
X.nf
X.B
X.ti +.5i
X.ta \w'Rule\0\0'u +\w'NAME\0\0'u +\w'FROM\0\0'u +\w'1973\0\0'u +\w'TYPE\0\0'u +\w'Apr\0\0'u +\w'lastSun\0\0'u +\w'2:00\0\0'u +\w'SAVE\0\0'u
X.sp
XRule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
X.sp
XFor example:
X.ti +.5i
X.sp
XRule	USA	1969	1973	\-	Apr	lastSun	2:00	1:00	D
X.sp
X.fi
XThe fields that make up a rule line are:
X.TP "\w'LETTER/S'u"
X.B NAME
XGives the (arbitrary) name of the set of rules this rule is part of.
X.TP
X.B FROM
XGives the first year in which the rule applies.
XThe word
X.B minimum
X(or an abbreviation) means the minimum year with a representable time value.
XThe word
X.B maximum
X(or an abbreviation) means the maximum year with a representable time value.
X.TP
X.B TO
XGives the final year in which the rule applies.
XIn addition to
X.B minimum
Xand
X.B maximum
X(as above),
Xthe word
X.B only
X(or an abbreviation)
Xmay be used to repeat the value of the
X.B FROM
Xfield.
X.TP
X.B TYPE
XGives the type of year in which the year applies.
XIf
X.B TYPE
Xis
X.B \-
Xthen the rule applies in all years between
X.B FROM
Xand
X.B TO
Xinclusive;
Xif
X.B TYPE
Xis
X.BR uspres ,
Xthe rule applies in U.S. Presidential election years;
Xif
X.B TYPE
Xis
X.BR nonpres ,
Xthe rule applies in years other than U.S. Presidential election years.
XIf
X.B TYPE
Xis something else, then
X.I zic
Xexecutes the command
X.ti +.5i
X\fByearistype\fP \fIyear\fP \fItype\fP
X.br
Xto check the type of a year:
Xan exit status of zero is taken to mean that the year is of the given type;
Xan exit status of one is taken to mean that the year is not of the given type.
X.TP
X.B IN
XNames the month in which the rule takes effect.
XMonth names may be abbreviated.
X.TP
X.B ON
XGives the day on which the rule takes effect.
XRecognized forms include:
X.nf
X.in +.5i
X.sp
X.ta \w'Sun<=25\0\0'u
X5	the fifth of the month
XlastSun	the last Sunday in the month
XlastMon	the last Monday in the month
XSun>=8	first Sunday on or after the eighth
XSun<=25	last Sunday on or before the 25th
X.fi
X.in -.5i
X.sp
XNames of days of the week may be abbreviated or spelled out in full.
XNote that there must be no spaces within the
X.B ON
Xfield.
X.TP
X.B AT
XGives the time of day at which the rule takes affect.
XRecognized forms include:
X.nf
X.in +.5i
X.sp
X.ta \w'1:28:13\0\0'u
X2	time in hours
X2:00	time in hours and minutes
X15:00	24-hour format time (for times after noon)
X1:28:14	time in hours, minutes, and seconds
X.fi
X.in -.5i
X.sp
XAny of these forms may be followed by the letter
X.B w
Xif the given time is local ``wall clock'' time or
X.B s
Xif the given time is local ``standard'' time; in the absence of
X.B w
Xor
X.BR s ,
Xwall clock time is assumed.
X.TP
X.B SAVE
XGives the amount of time to be added to local standard time when the rule is in
Xeffect.
XThis field has the same format as the
X.B AT
Xfield
X(although, of course, the
X.B w
Xand
X.B s
Xsuffixes are not used).
X.TP
X.B LETTER/S
XGives the ``variable part'' (for example, the ``S'' or ``D'' in ``EST''
Xor ``EDT'') of time zone abbreviations to be used when this rule is in effect.
XIf this field is
X.BR \- ,
Xthe variable part is null.
X.PP
XA zone line has the form
X.sp
X.nf
X.ti +.5i
X.ta \w'Zone\0\0'u +\w'Australia/South\-west\0\0'u +\w'GMTOFF\0\0'u +\w'RULES/SAVE\0\0'u +\w'FORMAT\0\0'u
XZone	NAME	GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
X.sp
XFor example:
X.sp
X.ti +.5i
XZone	Australia/South\-west	9:30	Aus	CST	1987 Mar 15 2:00
X.sp
X.fi
XThe fields that make up a zone line are:
X.TP "\w'GMTOFF'u"
X.B NAME
XThe name of the time zone.
XThis is the name used in creating the time conversion information file for the
Xzone.
X.TP
X.B GMTOFF
XThe amount of time to add to GMT to get standard time in this zone.
XThis field has the same format as the
X.B AT
Xand
X.B SAVE
Xfields of rule lines;
Xbegin the field with a minus sign if time must be subtracted from GMT.
X.TP
X.B RULES/SAVE
XThe name of the rule(s) that apply in the time zone or,
Xalternately, an amount of time to add to local standard time.
XIf this field is
X.B \-
Xthen standard time always applies in the time zone.
X.TP
X.B FORMAT
XThe format for time zone abbreviations in this time zone.
XThe pair of characters
X.B %s
Xis used to show where the ``variable part'' of the time zone abbreviation goes.
X.B UNTIL
XThe time at which the GMT offset or the rule(s) change for a location.
XIt is specified as a year, a month, a day, and a time of day.
XIf this is specified,
Xthe time zone information is generated from the given GMT offset
Xand rule change until the time specified.
X.IP
XThe next line must be a
X``continuation'' line; this has the same form as a zone line except that the
Xstring ``Zone'' and the name are omitted, as the continuation line will
Xplace information starting at the time specified as the
X.B UNTIL
Xfield in the previous line in the file used by the previous line.
XContinuation lines may contain an
X.B UNTIL
Xfield, just as zone lines do, indicating that the next line is a further
Xcontinuation.
X.PP
XA link line has the form
X.sp
X.nf
X.ti +.5i
X.if t .ta \w'Link\0\0'u +\w'LINK-FROM\0\0'u
X.if n .ta \w'Link\0\0'u +\w'US/Eastern\0\0'u
XLink	LINK-FROM	LINK-TO
X.sp
XFor example:
X.sp
X.ti +.5i
XLink	US/Eastern	EST5EDT
X.sp
X.fi
XThe
X.B LINK-FROM
Xfield should appear as the
X.B NAME
Xfield in some zone line;
Xthe
X.B LINK-TO
Xfield is used as an alternate name for that zone.
X.PP
XExcept for continuation lines,
Xlines may appear in any order in the input.
X.SH NOTE
XFor areas with more than two types of local time,
Xyou may need to use local standard time in the
X.B AT
Xfield of the earliest transition time's rule to ensure that
Xthe earliest transition time recorded in the compiled file is correct.
X.SH FILES
X/etc/zoneinfo	standard directory used for created files
X.SH "SEE ALSO"
Xnewctime(3), tzfile(5), zdump(8)
X.. @(#)zic.8	3.1
!The!End!

echo x - "zdump.8" 2>&1
sed "s/^X//" >"zdump.8" <<'!The!End!'
X.TH ZDUMP 8
X.SH NAME
Xzdump \- time zone dumper
X.SH SYNOPSIS
X.B zdump
X[
X.B \-v
X] [
X.B \-c
Xcutoffyear ] [ zonename ... ]
X.SH DESCRIPTION
X.I Zdump
Xprints the current time in each
X.I zonename
Xnamed on the command line.
X.PP
XThese options are available:
X.TP
X.B \-v
XFor each
X.I zonename
Xon the command line,
Xprint the current time,
Xthe time at the lowest possible time value,
Xthe time one day after the lowest possible time value,
Xthe times both one second before and exactly at
Xeach time at which the rules for computing local time change,
Xthe time at the highest possible time value,
Xand the time at one day less than the highest possible time value.
XEach line ends with
X.B isdst=1
Xif the given time is Daylight Saving Time or
X.B isdst=0
Xotherwise.
X.TP
X.BI "\-c " cutoffyear
XCut off the verbose output near the start of the given year.
X.SH FILES
X/etc/zoneinfo	standard zone information directory
X.SH "SEE ALSO"
Xnewctime(3), tzfile(5), zic(8)
X.. @(#)zdump.8	3.1
!The!End!
exit