Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10 5/3/83; site asgb.UUCP
Path: utzoo!watmath!clyde!bonnie!akgua!sdcsvax!bmcg!asgb!nkn
From: n...@asgb.UUCP
Newsgroups: net.unix-wizards
Subject: TZ in Other Countries
Message-ID: <561@asgb.UUCP>
Date: Fri, 26-Oct-84 18:10:11 EST
Article-I.D.: asgb.561
Posted: Fri Oct 26 18:10:11 1984
Date-Received: Sun, 28-Oct-84 06:34:15 EST
Organization: Burroughs Corporation, Boulder Colo.
Lines: 23


NOTE:
	The following refers to AT&T's UNIX(tm).  It may or may not also
apply to Berkeley versions.

	I would like to know how UNIX installations outside of the U.S.A.
manage Day Light Savings  in their ctime(3C) routines.  There  is code in
tzset() (which  is called by all of the ctime routines) to move the clock
ahead (back) at the appropriate time of the year.
	I know that some other countries  move their clocks  at different
times of the year  from us.  Also, some  countries have time  zones which
are not in hour  jumps, but  increments of  15 or 30 minutes.  I am  very
curious as to how UNIX sites outside of the U.S.A. have  accommodated the
assumptions built into ctime.  If you haven't had to modify ctime because
the assumptions work in your country,  I'd also be  interested in hearing
that.
	Please mail me your responses; it's probably not worth cluttering
up the net just to satisfy my curiosity.
	As usual, thanks in advance.

Neil Nelson
Burroughs Advanced Systems Group
. . .!sdcsvax!bmcg!asgb!nkn

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.2 9/18/84; site rlgvax.UUCP
Path: utzoo!linus!decvax!genrad!mit-eddie!godot!harvard!seismo!rlgvax!guy
From: g...@rlgvax.UUCP (Guy Harris)
Newsgroups: net.unix-wizards
Subject: Re: TZ in Other Countries
Message-ID: <221@rlgvax.UUCP>
Date: Mon, 29-Oct-84 18:18:12 EST
Article-I.D.: rlgvax.221
Posted: Mon Oct 29 18:18:12 1984
Date-Received: Fri, 2-Nov-84 02:44:59 EST
References: <561@asgb.UUCP>
Organization: CCI Office Systems Group, Reston, VA
Lines: 55

> NOTE:
> 	The following refers to AT&T's UNIX(tm).  It may or may not also
> apply to Berkeley versions.
> 
> 	I would like to know how UNIX installations outside of the U.S.A.
> manage Day Light Savings  in their ctime(3C) routines.  There  is code in
> tzset() (which  is called by all of the ctime routines) to move the clock
> ahead (back) at the appropriate time of the year.
> 	I know that some other countries  move their clocks  at different
> times of the year  from us....

This is one thing that 4.2 has worked on; AT&T should pick it up (preferably
intact, unless they've got one that's *significantly* better - no reason
to be different from 4.2 just for the sake of being different).  Instead of
a binary "daylight savings time is in use here" flag, there's a "type of
daylight savings time" flag.  A value of 0 means no DST, and a non-zero
value selects one of several tables indicating the start and end of DST.

> Also, some  countries have time  zones which are not in hour  jumps, but
> increments of  15 or 30 minutes.

AT&T should put in a trivial fix to this; they should permit the time zone
offset to be of the form "hours:minutes", such as

	QST7:30QDT

where Quahog Standard Time is 7 hours 30 minutes away from GMT.

While they're at it, they should provide a way of getting the time zone
other than from the TZ environment variable, because

1) It's a royal pain in the *ss to make sure every program has the TZ
variable set; putting in /etc/profile is *not* sufficient, as not all
login shells are Bourne shells that read /etc/profile!  Furthermore,
in a vanilla S3 system (and, I think, a vanilla S5 system), setting
the environment of the "getty" command doesn't help because "login"
blows away its environment and replaces it with a freshly-crafted one
that doesn't have TZ (or TERM, thus forcing you to set TERM every time
you log in, even if the system knows that you're logging in from the VT100
at your desk).

2) You can fool programs like "uucp" into making calls to other systems
outside of the hours specified in the L.sys file by faking the time zone
offset.  (Thanks to Mark Horton for poiinting this one out.)

Getting it from the OS, as was done in V7, would be nice; either it could
be set at sysgen time, or by a system call or just a command which writes on
/unix and /dev/kmem.  If TZ is present, it'll use that, otherwise it'll use
the value from the OS (rather than the hardcoded EST5EDT that it currently
uses if TZ is missing).  Programs which don't want TZ faked out can do
a "putenv" to stomp on TZ (making it a null string, say), and the "ctime"
routines should use the value from the OS.

	Guy Harris
	{seismo,ihnp4,allegra}!rlgvax!guy