glibc-2.7 i TimeZone

Jakub Bogusz qboosh w pld-linux.org
Sob, 3 Lis 2007, 18:51:45 CET


On Sat, Nov 03, 2007 at 05:59:01PM +0100, Szymon Siwek wrote:
> On Fri, Nov 02, 2007 at 11:02:41PM +0100, Jakub Bogusz wrote:
> > On Tue, Oct 30, 2007 at 09:59:35PM +0000, Szymon Siwek wrote:
> > > Witam!
> > > 
> > > $ date
> > > Tue Oct 30 21:40:28 UTC 2007
> > > $ TZ=GMT date
> > > Tue Oct 30 21:40:38 GMT 2007
> > > $ TZ=CET date
> > > Tue Oct 30 21:40:48 CET 2007
> > > $ TZ=CEST date
> > > Tue Oct 30 21:40:58 CEST 2007
> > 
> > "CEST" nie jest obsługiwanym oznaczeniem, więc jest traktowane jako UTC.
> Tego nie sprawdziłem. A swoją drogą to glibc, gdy stwierdzi, że w TZ jest
> nie obsługiwane oznaczenie, powinien chyba ustawiać tm_zone na UTC, a nie
> przekazywać podaną bzdurę.
> 
> $ TZ="= ale późno..." date
> pią, 2 lis 2007, 23:32:04 = ale późno...

Jeżeli nie jest to znane oznaczenie, to uznaje za nazwę strefy czasowej.
Jeżeli w TZ brakuje przy tym informacji o przesunięciu, to zakłada UTC.
Można podać TZ="cokolwiek-8" i będzie co innego niż UTC.

> > Odnośnie GMT vs CET nie zaobserwowałem takiego zachowania, nawet przed
> > poprawką w tzfile.c.
> > 
> O. Teraz to się zdziwiłem.
> U mnie problem był w pełni powtarzalny (glibc-2.6-1 - dobrze, instaluję
> 2.7-3 - źle; downgrade do 2.6-1 - znowu dobrze).
> Piszę "był", bo po zainstalowaniu glibc-2.7-4 i downgradzie do 2.7-3, nie
> ma już tego objawu.
> Żeby ów błąd w tzfile_read się objawił, konieczne było aby
> tzhead.tzh_version było pustym łańcuchem, gdy sterowanie dojdzie do
> porawionej linii. I tak też było, gdy opisywałem i badałem zgłoszony
> problem. Obecnie, zarówno w 2.7-3 jak i w 2.7-4, tzhead.tzh_version jest
> ustawione na "2". Dziwne.

A dla mnie już chyba jasne.
Hint: którą (a właściwie kiedy budowaną) wersję tzdata miałeś przedtem
i teraz?
glibc >= 2.6 generuje pliki stref w nowym formacie (ze znacznikiem TZif2
zamiast TZif\0).

> > BTW, zgłosiłeś ją do upstreamu?
> > 
> Jeszcze nie. Trzeba przez ichnią bugzillę, czy można jakoś prościej?

Można wysłać maila na libc-alpha, ale wtedy jest ryzyko, że zostanie
zapomniany.

Swoją drogą o tą zmianę zachowania localtime() też by się przydało
pomęczyć, nie wiem czy to tak powinno być.


-- 
Jakub Bogusz    http://qboosh.pl/


Więcej informacji o liście dyskusyjnej pld-devel-pl