[tz] NetBSD vs Darwin timezone API (was: tzdata2016g missing version info)
Guy Harris
guy at alum.mit.edu
Fri Nov 11 01:17:22 UTC 2016
On Nov 10, 2016, at 4:16 PM, Christos Zoulas <christos at zoulas.com> wrote:
> On Nov 10, 6:17pm, tgl at sss.pgh.pa.us (Tom Lane) wrote:
> -- Subject: Re: [tz] NetBSD vs Darwin timezone API (was: tzdata2016g missing
>
> | Also ... what will you do for localtime() wherein there's no explicit
> | initialization call whereby callers could say which behavior they want?
>
> Nothing happens to that. If you use localtime() you don't get autoupdates.
> We could add a new call tzsetflags(int flags); to turn this on for the
> statically allocated global timezone... I am not sure if this is a good
> idea or not. I guess Darwin is doing it?
Yes. If you compile and run this program:
#include <stdio.h>
#include <time.h>
#include <unistd.h>
int
main(void)
{
time_t now;
for (;;) {
now = time(NULL);
printf("%s", ctime(&now));
sleep(5);
}
return 0;
}
and then go into the "Time Zone" pane of the "Date & Time" page of System Preferences and change your system's time zone, and wait for the next time printout, the next printout will reflect the local time in *that* zone, *not* the zone that was in effect when the program was started - and the same will happen for the next change, etc.. (I just tested this a few minutes ago.) It'll probably happen if you stick with "Set time zone automatically using current location", and take the machine across a tzdb zone boundary where the current offset from UTC changes; I'm too far from such a boundary to test it right now. :-)
More information about the tz
mailing list