home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / std_unix / RFC.001 < prev    next >
Internet Message Format  |  1987-11-26  |  27KB

  1. From: std-unix%ut-sally.UUCP@SALLY.UTEXAS.EDU (Moderator, John Quarterman)
  2. Newsgroups: mod.std.unix
  3. Subject: RFC.001 Timezones
  4. Message-Id: <5350@ut-sally.UUCP>
  5. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  6. Date: 17 Jul 86 22:46:09 GMT
  7. Draft-9: TZ.RFC.001
  8.  
  9. This is the first of a series of five articles about timezones.
  10. It is posted to make public previous discussions in this area
  11. and not to stir up the issue again.  The time is propitious because
  12. the U.S. President has just signed a new daylight savings time law.
  13.  
  14. The other four articles of this series form RFC.001,
  15. which was submitted to the IEEE 1003.1 Working Group in
  16. Florence on 18 April 1986.  The set of articles is as follows:
  17.  
  18.     V6N29 RFC.001 Timezones:  this article (not part of RFC.001 proper).
  19.     V6N30 RFC.001 Summary of mod.std.unix Volume 5 by the moderator.
  20.     V6N31 RFC.001 Timezone Interface (reposting of V5N65) by Robert Elz.
  21.     V6N32 RFC.001 Timezone Examples (from V5N57) by Arthur Olson.
  22.         (just the examples from the last few pages, not the whole article).
  23.     V6N33 RFC.001 Time Zone Proposal by jsq.
  24.  
  25. The last item has the same intent as the Elz article but is in a form which
  26. should be usable as an actual proposal.  It may be submitted as such soon.
  27.  
  28. There was another RFC (from HP) which solved all the same problems but
  29. by a slightly different mechanism.  Perhaps its author would like to post it?
  30.  
  31. Volume-Number: Volume 6, Number 29
  32. From: std-unix%ut-sally.UUCP@SALLY.UTEXAS.EDU (Moderator, John Quarterman)
  33. Newsgroups: mod.std.unix
  34. Subject: RFC.001 Summary of mod.std.unix Volume 5.
  35. Message-Id: <5351@ut-sally.UUCP>
  36. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  37. Date: 17 Jul 86 22:53:24 GMT
  38. Draft-9: TZ.RFC.001
  39.  
  40. Summary of time zone discussion (and other material) in mod.std.unix Volume 5.
  41. The time zone discussion was in response to a request in P1003 Appendix A.3.
  42. The numbers in parentheses like (N3) correspond to article number within
  43. Volume 5.
  44.  
  45. The *problem* was first stated by Mark Horton (N3).
  46.     * GMT/local time disparities exist in the real world:
  47.     Internal system time must be GMT (N11) as used by make (N6), etc.
  48.     Many log files are in local time, e.g., RCS, SCCS (N15).
  49.     Users want to see dates displayed in local time (N3).
  50.     Some parameter files are in local time, such as
  51.         UUCP's L.sys (N5), crontab (N13), and at (N69).
  52.     Conversions should work for dates from at least 1 Jan 1970 (N26)
  53.         (for ls, SCCS, RCS, other logs) to near future
  54.         (L.sys, crontab, at) (N65).
  55.     * Network/dialup logistics:
  56.     Synchronization of networked hosts also requires internal GMT (N17).
  57.     Some network-related logs should perhaps be in GMT (N10).
  58.     Users may be in different timezones than hosts (N7, N14, N13).
  59.     Client workstations may be in different time zones than servers (N63).
  60.     * Politics in the real world sets time zones:
  61.     There are many standard one-hour-from GMT timezones (STs);
  62.         some of them may have different names in different countries.
  63.     There are many Dalight Savings Times (DSTs) related to STs,
  64.         usually by adding one hour.
  65.         These DSTs differ even within the same ST (N63).
  66.         Double daylight savings time is sometimes used (N62, N58).
  67.         Even daylight losing time is plausible (N51, N65).
  68.     Sometimes the DST offset from ST is not integral hours (N28).
  69.     There are local times which are not DSTs
  70.         and also not integral hours from GMT (N19, N13).
  71.     Offset precision of minutes is necessary (N19) but seconds not (N63).
  72.     ST may change at any time (China switching to several zones, N62).
  73.     DST may change at any time and with little notice (Australia, N65).
  74.         or for brief periods (U.S. presidential elections, N27).
  75.     Timezone names may conflict (Bering Strait Time/British Summer Time)
  76.         or be non-alphabetic (N54, N48).
  77.  
  78. Some *deficiencies* of existing implementations (N3).
  79.     * V7/BSD: inefficiency of system call.
  80.     * System III/V: initialization and security (N3, N66, N63, N4, N50);
  81.     one hour precision is not enough (N63).
  82.     * both: DST tables wired into kernel or library, respectively.
  83.  
  84. Proposed *solutions*.
  85.     * Early proposals by Kenneth Almquist (N24) and Bob Devine (N47)
  86.     were very useful for discussion but flawed.
  87.     * Interface as proposed by Robert Elz (N65):
  88.     Three conversions sufficient:  GMT, default local, user's local (N55).
  89.     Timezone format left to the implementation.
  90.     Timezone in environment allowed.
  91.     Default initialization and security provided.
  92.     (A routine to translate timezone name to offset possibly useful (N67).)
  93.  
  94. Proposed *implementation* by Arthur Olsen (N68,N57) since posted to mod.sources.
  95.     * Inspired Elz's interface and is sufficient for it (N65).
  96.     * Jack Jansen's implementation would also fit Elz's interface (N65).
  97.     * Miscellaneous implementation criteria:
  98.     Should not be shell-specific (N49).
  99.     Should not put timezone offset in u-area (N22, N21, N20).
  100.     Efficiency requirements (N66):
  101.         conversion    of present time fast for logging,
  102.             of near past pretty fast for "ls -l",
  103.             of distant past may be slow.
  104.     * A particular implementation may be broad or narrow,
  105.     depending on the intended market (N65, N63).
  106.  
  107. Far *future* considerations.
  108.     * Machines are currently considered stationary (N60).
  109.     * Days may not be of 24 hours (N58).
  110.     * Announcement of info-futures list (N59).
  111.  
  112. Other topics in mod.std.unix Volume 5, with numbers of the
  113. corresponding sections of the IEEE 1003.1 Trial Use Standard:
  114.  
  115. setuid and environment clearing (N39, N31) 3.1.2.
  116. setuid switching (N46, N45, N44, N43) 4.2.2.
  117. ex-directory (N12, N8)
  118. directory umask 5.3.3, 5.6.1.
  119.     motivation (N35, N23, N22)
  120.     objections (N34, N33, N25)
  121.     proposals to use .cshrc (N30, N35, N29)
  122.     clarifications:  not per cwd (N38); process umask remains (N40)
  123.     philosophy (N42, N37)
  124.     solution (N41)
  125. The IEEE 1003 Committee
  126.     and mod.std.unix (N36, N33, N35)
  127.     Draft 6 (N2)
  128.     meetings:  Denver (N18); Florence (N71).
  129. administrativia (N1, N30).
  130. guest moderator (N71, N70).
  131.  
  132. End of summary of mod.std.unix Volume 5.
  133.  
  134. Volume-Number: Volume 6, Number 30
  135. From: std-unix%ut-sally.UUCP@SALLY.UTEXAS.EDU (Moderator, John Quarterman)
  136. Newsgroups: mod.std.unix
  137. Subject: RFC.001 Timezone Interface
  138. Message-Id: <5352@ut-sally.UUCP>
  139. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  140. Date: 17 Jul 86 23:03:01 GMT
  141. Draft-9: TZ.RFC.001
  142.  
  143. [ This is part of RFC.001 and is a reposting of V5N65. -mod ]
  144.  
  145. Date: 02 Mar 86 05:47:32 +1100 (Sun)
  146. From: Robert Elz <munnari!kre@SEISMO.CSS.GOV>
  147. >Subject: localtime(), ctime() and timezones
  148.  
  149. It seems to me that this discussion is getting a bit overblown,
  150. as far as P1003 is concerned, it doesn't really seem to be
  151. as difficult or complex as some people are making out.
  152.  
  153. So, I'm going to propose something that could be inserted into
  154. P1003 (with the obvious extra definitions that I'm going to
  155. leave out on the assumption that everyone knows what they are,
  156. like the definition of a "struct tm").
  157.  
  158. In some words of other, it would go like this (with hopefully
  159. a lot of cleaning up of the typography to get rid of quotes
  160. and things like that where I would really prefer to use italics
  161. or bold):
  162.  
  163. Implementations shall provide the following functions:
  164.  
  165.     struct tm *gmttime(t) time_t *t;
  166.     struct tm *localtime(t) time_t *t;
  167.     int settz(p) char *p;
  168.     char *asctime(tp) struct tm *tp;
  169.     char *ctime(t) time_t *t;
  170.  
  171. gmttime: converts the time_t "*t" to a "struct tm" representing
  172. the same time (in Universal Co-ordinated Time).  (waffle about
  173. the returned value being in a static area, etc, goes here).
  174.  
  175. localtime: converts the time_t "*t" to a "struct tm" representing
  176. the given time adjusted to represent some local time difference.
  177. "local time" will be specified by a call to "settz", if no such
  178. call has preceded the call to localtime(), localtime() will call
  179. "settz(getenv("TZ"));".  Implementors should note that for any defined
  180. past time (from midnight January 1, 1970 until the time the call is made)
  181. the local time returned should be accurate (taking into account the effects
  182. of daylight saving, if any).  For future times, the local time returned
  183. should be as likely to be accurate as current projections of
  184. future timezone rules and daylight saving time changes allow.
  185.  
  186. settz: enables users to specify the local time conversion to be
  187. used by localtime.  The string is an implementation specific
  188. representation of the timezone offset desired, with 2 special
  189. cases..  The null pointer (t == (char *)0) will always select
  190. the appropriate local time offset for the host executing the call.
  191. A null string (t != (char *)0 && *t == '\0') will select
  192. no local time transformations (making localtime() equivalent
  193. to gmttime()).  Implementations should provide, and document,
  194. some mechanism to allow users to select another timezone.
  195. This mechanism is beyond the scope of the standard.  Implementors
  196. should, if possible, allow users to define their own timezones,
  197. and not restrict them to use one of some standard set.
  198. If settz is called with an unrecognisable argument, the effect
  199. is implementation defined.  (Users might expect any of three
  200. "reasonable"? actions could be taken here -- use GMT, use local time,
  201. or use local time in the area where the implementation was performed).
  202. settz returns 0 if the timezone selected could be obtained, and
  203. -1 otherwise.  settz can be called as many times as needed, each
  204. call affects future calls of localtime, until another call to settz.
  205.  
  206. acstime: returns a 25 character string representing the time
  207. specified by "*tp".  The format of the string is ... (you all know it).
  208.  
  209. ctime: is defined to be "asctime(localtime(t))".
  210.  
  211. ...................
  212.  
  213. Notes: this is (about) the right level of detail for the standard.
  214. There is no need to specify what the form of the argument to
  215. settz() is.  This enables things like the Sys V "EST5EDT" string,
  216. and Arthur Olson's (elsie!ado) "localtime" "Eastern" etc, to all
  217. be used with impunity - the implementor gets to choose whatever
  218. is appropriate to him - just provided that he can satisfy the
  219. needs of his customers (implementors who provide no means of getting
  220. daylight saving right in the Southern hemisphere can probably
  221. expect not to sell many copies there - but that's their choice).
  222.  
  223. In particular - this discourages programmers from writing programs
  224. which "know" what the local time should be - there's no reason at
  225. all why a program should ever need to do more than select GMT,
  226. host local time, or a user specified time zone.  (nb: while localtime
  227. uses the TZ environment variable in cases where the program has made
  228. no call to settz(), there's nothing to stop a program getting the
  229. argument to settz() from anywhere it pleases, including from several
  230. different environment variables if it chooses, and needs to operate
  231. in several timezones, or from an external configuration file, or
  232. wherever is appropriate).
  233.  
  234. This works for existing programs (in general) - localtime() performs
  235. the required call to settz() the first time it is called (directly
  236. or via ctime()).  There's no need to worry about who sets TZ, if
  237. its not set, getenv("TZ") will return (char *)0 and settz() will
  238. then use the appropriate local time for the host.  How settz()
  239. gets that information is an implementation matter.  The security
  240. problems (people faking local time for programs that expect it
  241. to be host local time, by setting TZ before running the program)
  242. can easily solved by causing those (comparatively few) programs
  243. to do "settz((char *)0)" before their first call to localtime().
  244.  
  245. What's missing:  So far here there is no mention of the "timezone name".
  246. None of the standard mechanisms is really adequate here.  The V7
  247. (and 4.xbsd) "timezone" function is clearly inadequate (although
  248. 4.2 bsd allows users to set the environment variable TZNAME to anything
  249. they like) since there can clearly be several possible names for the
  250. same offset, and "timezone" has no way to discover which one is wanted.
  251. Requiring the name to resice in the environment somewhere (Sys V) is also
  252. inadequate (there are too many problems about making sure it is set
  253. in all the right places).
  254.  
  255. Arthur Olson's scheme causes "localtime" to set a global variable
  256. "tz_abbr" to the correct string name for the timezone just used.
  257. I can't think of any cases where anything more than this is needed,
  258. but it is less flexible then "timezone()" and it would require
  259. programs that currently call timezone() to have to be altered.
  260. (He also has his version of "ctime" (but not "asctime") include
  261. the timezone in its output - I doubt if that is feasible for P1003,
  262. too many existing programs know what every byte in the returned
  263. string from ctime() contains.)
  264.  
  265. I solicit suggestions for what to do here - one might be to
  266. retain "timezone" but not require that it be capable of returning
  267. anything except the zone name corresponding to the last call of
  268. localtime() - then with ado's implementation it could simply
  269. ignore its arguments and return tz_abbr - I suspect that would
  270. satisfy all existing uses (and the ones it doesn't are quite
  271. likely not to work in general anyway).  Opinions?
  272.  
  273. There's also no discussion of how this relates to processes
  274. and images.  Not because there's anything doubtful here,
  275. but just because the necessary words take a lot of space.
  276. (informally, "the first call to localtime" is intended to
  277. be "the first after the program is exec'd, ignoring any
  278. fork()'s it may have since performed, as long as there
  279. has been no subsequent exec).  Getting this kind of thing
  280. right is essential for a standatds document, its not essential
  281. here.
  282.  
  283. ...................
  284.  
  285. A justification for all this ...  Today, just about 2 1/2 hours ago
  286. (it's early on a Sun morning as I write this) the daylight saving
  287. rules changed in at least 2 Australian states (no-one really seems
  288. very sure of what happened, or really why).  The politicians gave
  289. us less than a month's warning that it was coming (and the month
  290. was February, which isn't a long month...).
  291.  
  292. If there's anyone who doesn't believe that some form of dynamic
  293. timezone setting is required, they're welcome to come to Australia
  294. and suffer our local politicians (this isn't the first time: a
  295. couple of years ago New South Wales decided to extend daylight
  296. saving for a month to try and save on power bills - the amount of
  297. notice given was about the same - at that time, at least one local
  298. site decided to scrap running on GMT and run on localtime (ala VMS)
  299. instead.  They're still doing that, I think, and suffering because
  300. of it).
  301.  
  302. I'm extremely grateful that Arthur Olson decided to try an implementation,
  303. and donate it to the community - he made the task of converting things here
  304. much easier than it otherwise would have been.  His implementation
  305. meets the above specs (in fact, it inspired them...), and will work
  306. for all the contorted exampes that people have been proposing (multiple
  307. shifts in a year, multi-hour saving, even daylight wasting).
  308.  
  309. But note - there's no need for the standard to require this
  310. generality, market pressures will do that - all the standard
  311. needs to do is supply a suitable interface.  Arthur Olson's
  312. implementation proves that the above reccomendation is
  313. implementable (munnari is running his code, in libc, right now)
  314. and effecient enough.
  315.  
  316. [ Your last sentence gives the reason that I've encouraged
  317. discussions of implementations in the newsgroup:  it's good
  318. to know that a proposed standard is implementable and handles
  319. actual cases.  But you're right, of course, that the
  320. P1003 standard doesn't need implementation details.  -mod ]
  321.  
  322. Jack Jansen's (mcvax!jack) somewhat similar, but slightly different scheme
  323. would probably work just as well.
  324.  
  325. Bob Devine's (hao!asgb!devine) "I don't think its needed" attitude
  326. can also fit the standard - if he's right then he's probably going
  327. to have a very fast localtime() which will serve him well.
  328. If he's wrong, then he's not going to get many customers.
  329.  
  330. That's good - the more the better - that gives us users (or us system
  331. implementors perhaps) a wide choice of methods.
  332.  
  333. Robert Elz        kre%munnari.oz@seismo.css.gov    seismo!munnari!kre
  334.  
  335. Volume-Number: Volume 6, Number 31
  336. From: std-unix%ut-sally.UUCP@SALLY.UTEXAS.EDU (Moderator, John Quarterman)
  337. Newsgroups: mod.std.unix
  338. Subject: RFC.001 Timezone Examples
  339. Message-Id: <5353@ut-sally.UUCP>
  340. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  341. Date: 17 Jul 86 23:06:37 GMT
  342. Draft-9: TZ.RFC.001
  343.  
  344. [ This is part of RFC.001 and is a reposting of some examples from V5N57.
  345. Note that the current version of Arthur Olsen's implementation
  346. is to be found in the mod.sources archives, not in mod.std.unix.
  347. This posting is intended merely to illustrate the variety of
  348. possible timezones.  -mod ]
  349.  
  350. echo tzcomp.8 1>&2
  351. cat >tzcomp.8 <<'End of tzcomp.8'
  352. .TH TZCOMP 8
  353. .SH NAME
  354. tzcomp \- time zone compiler
  355. .SH SYNOPSIS
  356. .B tzcomp
  357. [
  358. .B \-d
  359. directory ] filename ...
  360. .SH DESCRIPTION
  361. .I Tzcomp
  362. reads text from the file(s) named on the command line
  363. and creates the time zone information files specified in this input.
  364. If a
  365. .I filename
  366. is
  367. .BR ` - ',
  368. the standard input is read.
  369. .PP
  370. This option is available:
  371. .TP
  372. .B \-d directory
  373. Create time zone information files in the named directory rather than
  374. in the standard directory named below.
  375. .PP
  376. A sharp characters (#) in the input introduces a comment which extends to
  377. the end of the line the sharp character appears on.
  378. Any line which is blank (after comment stripping) is ignored.
  379. Non-blank lines are expected to be of one of three
  380. types:  rule lines, zone lines, and link lines.
  381. .PP
  382. A rule line has the form
  383. .nf
  384. .B
  385. .ti +.5i
  386. .ta \w'Rule 'u +\w'MostNA 'u +\w'FROM 'u +\w'1973 'u +\w'TYPE 'u +\w'Apr 'u +\w'lastSun 'u +\w'2:00 'u +\w'SAVE 'u
  387. .sp
  388. Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  389. .sp
  390. For example:
  391. .ti +.5i
  392. .sp
  393. Rule    MostNA    1969    1973    -    Apr    lastSun    2:00    1:00    D
  394. .sp
  395. .fi
  396. The fields that make up a rule line are:
  397. .TP
  398. .B NAME
  399. Gives the (arbitrary) name of the set of rules this rule is part of.
  400. .TP
  401. .B FROM
  402. Gives the first year in which the rule applies.
  403. .TP
  404. .B TO
  405. Gives the last year in which the rule applies.
  406. The word
  407. .RB ` only '
  408. may be used to repeat the value of the
  409. .B
  410. FROM
  411. field.
  412. .TP
  413. .B TYPE
  414. Gives the type of year in which the year applies.  If
  415. .B TYPE
  416. is
  417. .B
  418. "-"
  419. then the rule is taken to apply in all years between
  420. .B FROM
  421. and
  422. .B TO
  423. inclusive.
  424. If
  425. .B TYPE
  426. is something else, then the command
  427. .B
  428. .ti +.5i
  429. years from to type
  430. .br
  431. is executed with arguments
  432. .IR from ,
  433. .IR to ,
  434. and
  435. .IR type
  436. taken from the rule line; the rule is taken to apply only in those years
  437. printed by the
  438. .I years
  439. command.
  440.  
  441. The distributed
  442. .I years
  443. command is a shell script that can handle year types
  444. .B uspres
  445. (United States presidential election years)
  446. and
  447. .B nonpres
  448. (all other years);
  449. other year types may be added by changing the script.
  450. .TP
  451. .B IN
  452. Names the month in which the rule takes effect.  Month names may be
  453. abbreviated.
  454. .TP
  455. .B ON
  456. Gives the day on which the rule takes effect.
  457. Recognized forms include:
  458. .nf
  459. .in +.5i
  460. .sp
  461. .ta \w'lastSun  'u
  462. 5    the fifth of the month
  463. lastSun    the last Sunday in the month
  464. lastMon    the last Monday in the month
  465. Sun>=8    first Sunday on or after the eighth
  466. Sun<=25    last Sunday on or before the 25th
  467. .fi
  468. .in -.5i
  469. .sp
  470. Names of days of the week may be abbreviated or spelled out in full.
  471. Note that there must be no spaces within the
  472. .B ON
  473. field 
  474. (or within any other field).
  475. .TP
  476. .B AT
  477. Gives the time of day at which the rule takes affect.
  478. Recognized forms include:
  479. .nf
  480. .in +.5i
  481. .sp
  482. .ta \w'1:28:13  'u
  483. 2    time in hours
  484. 2:00    time in hours and minutes
  485. 15:00    24-hour format time (for times after noon)
  486. 1:28:14    time in hours, minutes, and seconds
  487. .fi
  488. .in -.5i
  489. .sp
  490. .TP
  491. .B SAVE
  492. Gives the amount of time to be added to local standard time when the rule is in
  493. effect.  This field has the same format as the
  494. .B AT
  495. field.
  496. .TP
  497. .B LETTER/S
  498. Gives the "variable part" (for example, the 'S' or 'D' in "EST" or "EDT")
  499. of time zone abbreviations to be used when this rule is in effect.
  500. If this field is
  501. .B
  502. "-",
  503. the variable part is null.
  504. .PP
  505. A zone line has the form
  506. .sp
  507. .nf
  508. .ti +.5i
  509. .ta \w'Zone 'u +\w'Eastern 'u +\w'GMTOFF 'u +\w'MostNA 'u
  510. Zone    NAME    GMTOFF    RULES    FORMAT
  511. .sp
  512. For example:
  513. .sp
  514. .ti +.5i
  515. Zone    Eastern    -5:00    MostNA    E%sT
  516. .sp
  517. .fi
  518. The fields that make up a zone line are:
  519. .TP
  520. .B NAME
  521. The name of the time zone.
  522. This is the name used in creating the time zone information file for the zone.
  523. .TP
  524. .B GMTOFF
  525. The amount of time to add to GMT to get standard time in this zone.
  526. This field has the same format as the
  527. .B AT
  528. and
  529. .B SAVE
  530. fields of rule lines;
  531. begin the field with a minus sign if time must be subtracted from GMT.
  532. .TP
  533. .B RULES
  534. The name of the rule(s) that apply in the time zone.
  535. If this field contains
  536. .B
  537. "-"
  538. then standard time always applies in the time zone.
  539. .TP
  540. .B FORMAT
  541. The format for time zone abbreviations in this time zone.
  542. The pairs of characters
  543. .B
  544. "%s"
  545. is used to show where the "variable part" of the time zone abbreviation goes.
  546. .PP
  547. A link line has the form
  548. .sp
  549. .nf
  550. .ti +.5i
  551. .ta \w'Link 'u +\w'LINK-FROM 'u
  552. Link    LINK-FROM    LINK-TO
  553. .sp
  554. For example:
  555. .sp
  556. .ti +.5i
  557. Link    Eastern        EST5EDT
  558. .sp
  559. .fi
  560. The
  561. .B LINK-FROM
  562. field should appear as the
  563. .B NAME
  564. field in some zone line;
  565. the
  566. .B LINK-TO
  567. field is used as an alternate name for that zone.
  568. .PP
  569. Lines may appear in any order in the input.
  570. .SH EXAMPLE
  571. [Since a sample time zone file appears in the shell archive,
  572. this section has been omitted.]
  573. .SH FILES
  574. /etc/tzdir    standard directory used for created files
  575. .SH "SEE ALSO"
  576. settz(3), tzfile(5)
  577. .. @(#)tzcomp.8    1.4
  578. End of tzcomp.8
  579. echo tzinfo 1>&2
  580. cat >tzinfo <<'End of tzinfo'
  581. # @(#)tzinfo    1.5
  582.  
  583. # Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  584. Rule    MostNA    1969    1973    -    Apr    lastSun    2:00    1:00    D
  585. Rule    MostNA    1969    1973    -    Oct    lastSun    2:00    0    S
  586. Rule    MostNA    1974    only    -    Jan    6    2:00    1:00    D
  587. Rule    MostNA    1974    only    -    Nov    24    2:00    0    S
  588. Rule    MostNA    1975    only    -    Feb    23    2:00    1:00    D
  589. Rule    MostNA    1975    only    -    Oct    26    2:00    0    S
  590. Rule    MostNA    1976    2037    -    Apr    lastSun    2:00    1:00    D
  591. Rule    MostNA    1976    2037    -    Oct    lastSun    2:00    0    S
  592.  
  593. # Almost surely wrong:
  594.  
  595. # Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  596. Rule    Oz-Eur    1969    1973    -    Apr    lastSun    2:00    1:00    S
  597. Rule    Oz-Eur    1969    1973    -    Oct    lastSun    2:00    0    -
  598. Rule    Oz-Eur    1974    only    -    Jan    6    2:00    1:00    S
  599. Rule    Oz-Eur    1974    only    -    Nov    24    2:00    0    -
  600. Rule    Oz-Eur    1975    only    -    Feb    23    2:00    1:00    S
  601. Rule    Oz-Eur    1975    only    -    Oct    26    2:00    0    -
  602. Rule    Oz-Eur    1976    2037    -    Apr    lastSun    2:00    1:00    S
  603. Rule    Oz-Eur    1976    2037    -    Oct    lastSun    2:00    0    -
  604.  
  605. # New names
  606.  
  607. # Zone    NAME        GMTOFF    RULES    FORMAT
  608. Zone    Atlantic    -4:00    MostNA    A%sT
  609. Zone    Eastern        -5:00    MostNA    E%sT
  610. Zone    Central        -6:00    MostNA    C%sT
  611. Zone    Mountain    -7:00    MostNA    M%sT
  612. Zone    Pacific        -8:00    MostNA    P%sT
  613. Zone    Yukon        -9:00    MostNA    Y%sT
  614. Zone    Hawaiian    -10:00    MostNA    H%sT
  615. Zone    Newfoundland    -3:30    -    NST
  616. Zone    Japan        9:00    -    JST
  617. Zone    WET        0    Oz-Eur    WE%sT
  618. Zone    MET        1     Oz-Eur    ME%sT
  619. Zone    EET        2    Oz-Eur    EE%sT
  620. Zone    AEST        10:00    Oz-Eur    AES%sT
  621. Zone    ACST        9:30    Oz-Eur    ACS%sT
  622. Zone    AWST        8:00    -    AWST    # No Daylight Saving here?
  623.  
  624. #
  625. # A settz("") uses the code's built-in GMT without going to disk to get
  626. # the information.  Still, we want things to work if somebody does a
  627. # settz("GMT"), so. . .
  628. #
  629.  
  630. Zone    GMT        0    -    GMT
  631.  
  632. # Old names
  633.  
  634. # Link    LINK-FROM    LINK-TO
  635. Link    Eastern        EST5EDT
  636. Link    Central        CST6CDT
  637. Link    Mountain    MST7MDT
  638. Link    Pacific        PST8PDT
  639.  
  640. # "Pacific Presidential Election Time" is being contemplated in Congress
  641.  
  642. # Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  643. Rule    Twilite    1969    1973    -    Apr    lastSun    2:00    1:00    D
  644. Rule    Twilite    1969    1973    -    Oct    lastSun    2:00    0    S
  645. Rule    Twilite    1974    only    -    Jan    6    2:00    1:00    D
  646. Rule    Twilite    1974    only    -    Nov    24    2:00    0    S
  647. Rule    Twilite    1975    only    -    Feb    23    2:00    1:00    D
  648. Rule    Twilite    1975    only    -    Oct    26    2:00    0    S
  649. Rule    Twilite    1976    2037    -    Apr    lastSun    2:00    1:00    D
  650. Rule    Twilite    1976    1987    -    Oct    lastSun    2:00    0    S
  651. Rule    Twilite    1988    2037    uspres    Oct    lastSun    2:00    1:00    PE
  652. Rule    Twilite    1988    2037    uspres    Nov    Sun>=7    2:00    0    S
  653. Rule    Twilite    1988    2037    nonpres    Oct    lastSun    2:00    0    S
  654.  
  655. # Zone    NAME        GMTOFF    RULES    FORMAT
  656. Zone    New-Pacific    -8:00    Twilite    P%sT
  657.  
  658. # Next really belongs in a separate file
  659.  
  660. Link    Eastern        localtime
  661. End of tzinfo
  662. exit
  663. --
  664.     UUCP: ..decvax!seismo!elsie!ado    ARPA: elsie!ado@seismo.ARPA
  665.     DEC, VAX and Elsie are Digital Equipment and Borden trademarks
  666.  
  667. Volume-Number: Volume 6, Number 32
  668. From: std-unix%ut-sally.UUCP@SALLY.UTEXAS.EDU (Moderator, John Quarterman)
  669. Newsgroups: mod.std.unix
  670. Subject: RFC.001 Timezone Proposal
  671. Message-Id: <5354@ut-sally.UUCP>
  672. Organization: IEEE 1003 Portable Operating System for Computer Environments Committee
  673. Date: 17 Jul 86 23:10:14 GMT
  674. Draft-9: TZ.RFC.001
  675.  
  676. RFC.001 Proposal Form, 18 April 1986, submitted by John S. Quarterman.
  677.  
  678. Time Zone Proposal based on work by Robert Elz and Arthur Olsen.
  679.  
  680. Add 4.5.3 and 4.5.4 to the standard and perhaps also
  681. document Arthur Olsen's implementation in an Appendix.
  682.  
  683. 4.5.3    Set Local Time Conversion
  684. Function:  settz()
  685.  
  686. 4.5.3.1    Synopsis
  687.     int settz(p)
  688.     char *p;
  689.  
  690. 4.5.3.2    Description
  691. The settz() function determines the conversion from GMT
  692. of the local times returned by localtime() and ctime().
  693. When called with a null pointer argument (p==0), settz
  694. shall select the appropriate local time conversion for the
  695. location of the host machine on which the call is executed.
  696. When called with a null string (p!=0 && *p=='\0'), settz
  697. shall select no conversion for localtime, making localtime()
  698. and gmtime() equivalent and ctime() and asctime(gmtime())
  699. equivalent.  When called with a non-null string (p!=0 && *p!='\0'),
  700. settz may set the conversion according to that string.
  701. The format of the string and the conversions it may specify
  702. are implementation specific.  If an implementation accepts
  703. non-null string arguments to settz, the implementation
  704. should allow users to define their own conversions
  705. rather than restricting conversions to a standard set.
  706. If settz is called with a string for which the implementation
  707. can not find a conversion, settz shall return -1, but the
  708. conversion it sets is implementation defined and may be one of
  709. GMT, the executing machine's local time, or local time for
  710. the area where the implementation was performed.
  711.  
  712. 4.5.3.3    Returns
  713. Upon successful completion, settz() returns 0, otherwise -1.
  714.  
  715. 4.5.4    Get Local Time
  716. Functions:  localtime(), ctime()
  717.  
  718. 4.5.4.1    Synopsis
  719. [ as in X3J11 ]
  720.  
  721. 4.5.4.2    Description
  722. [ as in X3J11, plus: ]
  723. The local time conversion is specified by a call on settz().
  724. If localtime() or ctime() is called and settz() has not been called
  725. since the last exec(), the localtime() or ctime() call shall call
  726. settz(getenv("TZ")) before performing the local time conversion.
  727. The local time conversion should be accurate for all times
  728. from the base time of the time() function up to the time
  729. the call is made.  Future times should be converted as accurately
  730. as possible with available political information.  Daylight savings
  731. time should be taken into account in both cases.
  732.  
  733. 4.5.4.3    Returns
  734. [as in X3J11 ]
  735.  
  736. 4.5.4.4    Errors
  737. [as in X3J11 ]
  738.  
  739. Volume-Number: Volume 6, Number 33
  740.