home *** CD-ROM | disk | FTP | other *** search
- Date: Tue, 4 Mar 86 16:02:04 PST
- From: Snoopy <seifert%hammer.uucp@CSNET-RELAY.ARPA>
-
- Once upon a time, I posted a survey, asking which method people
- would prefer for allowing a user to override the system default
- timezone. I suggested a ~/.daterc file, and/or environment variables.
-
- I received 15 replies. The summary of votes is:
-
- environment variables - 4 votes
- either - 3 votes
- "not ~/.daterc" - 1 vote
- use GMT for everything - 1 vote
- "take it out of the kernel and put it in libc" - 1 vote
- other - 1 vote
- misunderstandings - 4 (at least)
-
- A number of people were concerned with performance, since lots of
- programs use timestamps. They were concerned that opening a file
- would slow things down.
-
- Some selected replies, edited for brevity:
- ------------------------------------
- From: ihnp4!cbosgd!cbpavo.cbosgd.ATT.UUCP!mark
-
- System V has a default (which always
- seems to be the time zone of the developers of the system, so that
- the developers will never find any bugs that only show up in non-default
- time zones) and overrides it with the TZ environment variable. This
- has some horrible properties:
-
- (1) People who don't use the Bourne shell, and hence don't source
- /etc/profile, don't get a TZ. This includes csh and uucico.
- (2) Programs run from crontab don't get a TZ.
- (3) Programs run single user don't get a TZ.
- (4) An individual can change his TZ to defraud the system. For
- example, a UUCP L.sys may restrict a certain long distance
- call to night hours, but by setting your time zone to some
- far off part of the world, you can dial out during the day.
-
- [...]
-
- (1) "time right now" must be fast for logging
- (2) "time of some date this year" should be reasonably fast for ls -l.
- (3) "time of some date some previous year" can be slow.
-
- Mark
- ----------------------------------
- From: hp-pcd!hp-sdd!sdcsvax!bmcg!asgb!devine
-
- My choice looks like:
-
- $TZ=MST-7 # name of timezone and difference from Univeral Time
- $DST=1 # how much to adjust for DST; ==0 if no DST is used
- $DST_START=(when daylight saving starts)
- $DST_STOP=(when daylight saving stops)
-
- Bob Devine
- Burroughs / Boulder, CO.
- -------------------------------
- From: sequent!riacs!seismo!ut-sally!cyb-eng!howard
-
- Whatever happened to the concepts of dynamic linking, true interprocess
- communication, and "lightweight processes"? If your operating system
- is frozen or hostile and you care about D.S.T., then dynamically loading
- a library module might be appropriate. If the o.s. is frozen/hostile and
- you don't care, use something like "/etc/daterc" which can be overridden
- by $TZ. If you're writing/modifying an o.s., consider dynamically-loaded,
- reentrant library routines and memory management hardware to support it.
- Of course, a more practical o.s. approach would be to have a date server:
- just set up a socket to your favorite date-server port and go get it.
-
- ------------------------------------
- From: tektronix!allegra!clyde!watmath!utzoo!ecrhub!ecr1!peterc
-
- In studying this problem a while ago, I found I needed three environment
- variables. They could have been encoded into one, of course, but that
- makes it harder for the user to set up right. I found the following
- were necessary:
-
- TIMEZONE: a comma-separated list of the time zones that apply.
- e.g. TIMEZONE=EST,EDT
- TIMEDIFF: a comma-separated list of the number of minutes west of GMT (east if
- negative) the corresponding time zone is.
- e.g. TIMEZONE=480,540
- TIMECHG: a comma-separated list of the dates on which time changes occur.
- It is assumed that at midnight on January 1st each year, we
- are in the initial time zone (e.g. EST), and then progress
- through the others in sequence, then backwards to the original.
- The time change dates are specified in the form
- mm/dd+n
- where "mm" is the month (1-12), "dd" is the day (1-31), and
- the "+n" (or "-n") causes that date to be moved forward
- (backward) to the appropriate day of the week (e.g. 4/24+0
- means the first Sunday on or after April 24th).
-
- I prefer environment variables for reasons of speed. However, the current
- UNIX scheme is not adequate, for several reasons:
- - it does not provide the flexibility needed, because everything
- is hard-coded.
- - it does not satisfy the real-world requirements. In particular,
- it does not take into account things like the double
- daylight savings time used in much of Europe.
-
- Even the scheme I propose here is not really adequate, because it only accounts
- for the current year, which may not be suitable for other years. A more general
- scheme could be built by adding special cases for unusual years:
-
- TIMECHG=4/24+0,10/25+0;1974-1975:.....;.....
-
- I.e. make the first set of values (up to the first ';') the rule that applies
- in the current year, and any other unspecified year. Then add special cases
- for other years.
-
- All this starts to get complex, ugly and unpleasant to set up and program.
- That is the way it is. Sir Stanford Fleming established a wonderful system
- when he defined Standard Time. I hope he didn't expect it to stay that way.
-
- ------------------------------
- This is getting prettty long, so I'll describe what I'm actually doing in
- a future article.
-
- Snoopy
- tektronix!tekecs!doghouse.TEK!snoopy
-
- Volume-Number: Volume 5, Number 66
-
-