On Wed, Sep 27, 2006 at 05:38:45PM -0700, Ken Pizzini wrote:
I'll make an attempt at making the text clearer...
Okay, here's what I came up with --- not so much rewording as adding clarifications: [snip] Input lines are made up of specified fields. Fields are separated from one another by any number of white space characters. Leading and trailing white space on input lines is ignored. An unquoted sharp character (#) in the input introduces a comment which extends to the end of the line the sharp character appears on. White space characters and sharp characters may be enclosed in double quotes (") if they're to be used as part of a field. Any line that is blank (after comment stripping) is ignored. Non-blank lines are expected to be of one of three types: rule lines, zone lines, and link lines. A rule line has the form Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S For example: Rule US 1967 1973 - Apr lastSun 2:00 1:00 D Each rule specifies one or more transitions between standard and saving time. The fields that make up a rule line are: NAME Gives the (arbitrary) name of the set of rules this rule is part of. FROM Gives the first year in which the transition rule applies. Any integer year can be supplied; the Gregorian calendar is assumed. The word minimum (or an abbreviation) means the mini- mum year representable as an integer. The word maximum (or an abbreviation) means the maximum year representable as an inte- ger. Rules can describe times that are not representable as time values, with the unrepresentable times ignored; this allows rules to be portable among hosts with differing time value types. TO Gives the final year in which the rule applies. In addition to minimum and maximum (as above), the word only (or an abbrevia- tion) may be used to repeat the value of the FROM field. Note that the offset that the rule transitions will continue on until the next transition occurs, no matter how far in the future of the FROM or TO years that may be. TYPE Gives the type of year in which the rule applies. If TYPE is - then the rule applies in all years between FROM and TO inclu- sive. If TYPE is something else, then zic executes the command yearistype year type to check the type of a year: an exit status of zero is taken to mean that the year is of the given type; an exit status of one is taken to mean that the year is not of the given type. This might be used, for example, to have a rule which applies only in leap years. [...unchanged text omitted...] LETTER/S Gives the "variable part" (for example, the "S" or "D" in "EST" or "EDT") of time zone abbreviations to be used when this rule is in effect. If this field is -, the variable part is null. Note that, as a special case, references to a rule's LETTER/S field (through a %s in a zone line's FORMAT field) for a date which predates the oldest date specified in a given rule will be assigned the "variable part" specified by the oldest stan- dard time (i.e., with a SAVE value of zero) transition speci- fied for the named rule. A zone line has the form Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL] [...unchanged text omitted...] UNTIL The time at which the UTC offset or the rule(s) change for a location. This field, which is logically a single field in the sense of the high-level description, consists of whitespace sepa- rated subfields consisting of a year, a month, a day, and a time of day. If this is specified, the time zone information is gen- erated from the given UTC offset and rule change until the time specified. The month, day, and time of day have the same format as the IN, ON, and AT columns of a rule; trailing columns can be omitted, and default to the earliest possible value for the miss- ing columns. The next line must be a "continuation" line; this has the same form as a zone line except that the string "Zone" and the name are omitted, as the continuation line will place information starting at the time specified as the UNTIL field in the previous line in the file used by the previous line. Continuation lines may contain an UNTIL field, just as zone lines do, indicating that the next line is a further continuation. [snip] And for ADO, here is the corresponding diff to the zic.8 page: --- zic.8~ 2006-08-21 06:56:12.000000000 -0700 +++ zic.8 2006-09-27 19:54:52.597649904 -0700 @@ -98,7 +98,9 @@ .B yearistype when checking year types (see below). .PP -Input lines are made up of fields. +Input lines are made up of +.B specified +fields. Fields are separated from one another by any number of white space characters. Leading and trailing white space on input lines is ignored. An unquoted sharp character (#) in the input introduces a comment which extends @@ -122,13 +124,16 @@ Rule US 1967 1973 \- Apr lastSun 2:00 1:00 D .sp .fi +Each rule specifies one or more +.I transitions +between standard and saving time. The fields that make up a rule line are: .TP "\w'LETTER/S'u" .B NAME Gives the (arbitrary) name of the set of rules this rule is part of. .TP .B FROM -Gives the first year in which the rule applies. +Gives the first year in which the transition rule applies. Any integer year can be supplied; the Gregorian calendar is assumed. The word .B minimum @@ -153,6 +158,16 @@ may be used to repeat the value of the .B FROM field. +.IP +Note that the +.I offset +that the rule transitions will continue on until the next +transition occurs, +no matter how far in the future of the +.B FROM +or +.B TO +years that may be. .TP .B TYPE Gives the type of year in which the rule applies. @@ -176,6 +191,8 @@ to check the type of a year: an exit status of zero is taken to mean that the year is of the given type; an exit status of one is taken to mean that the year is not of the given type. +This might be used, for example, to have a rule which applies only in +leap years. .TP .B IN Names the month in which the rule takes effect. @@ -263,6 +280,22 @@ If this field is .BR \- , the variable part is null. +.IP +Note that, as a special case, references to a rule's +.B LETTER/S +field +(through a %s in a zone line's +.B FORMAT +field) +for a date which predates the oldest date specified in a given rule +will be assigned the +.q "variable part" +specified by the oldest +.I standard time +(i.e., with a +.B SAVE +value of zero) +transition specified for the named rule. .PP A zone line has the form .sp @@ -313,7 +346,9 @@ .TP .B UNTIL The time at which the UTC offset or the rule(s) change for a location. -It is specified as a year, a month, a day, and a time of day. +This field, which is logically a single field in the sense of the +high-level description, consists of whitespace separated subfields +consisting of a year, a month, a day, and a time of day. If this is specified, the time zone information is generated from the given UTC offset and rule change until the time specified. @@ -321,7 +356,9 @@ columns of a rule; trailing columns can be omitted, and default to the earliest possible value for the missing columns. .IP -The next line must be a +The next line +.I must +be a .q continuation line; this has the same form as a zone line except that the string --Ken Pizzini