[jorton@xxxxxxxxxx: Re: [php-maint] Bug#535770: PHP system timezone patch for 5.3?]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Looks like I failed to CC that as intended, copying for the archives.

----- Forwarded message from Joe Orton <jorton@xxxxxxxxxx> -----

From: Joe Orton <jorton@xxxxxxxxxx>
To: sean finney <seanius@xxxxxxxxxx>
Cc: PHP Packagers <pkg-php-maint@xxxxxxxxxxxxxxxxxxxxxxx>,
	535770@xxxxxxxxxxxxxxx, judas.iscariote@xxxxxxxxx
Date: Tue, 7 Jul 2009 10:10:06 +0100
Subject: Re: [php-maint] Bug#535770: PHP system timezone patch for 5.3?
User-Agent: Mutt/1.5.18 (2008-05-17)

Hi Sean - adding the Fedora PHP devel list to CC.  Thanks for getting in 
touch.  For Fedora folks, Sean has referenced this Debian bug report:

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=535770

Quoting in full:

On Tue, Jul 07, 2009 at 12:05:31AM +0200, sean finney wrote:
> ...and hi again :)
> 
> On Mon, Jul 06, 2009 at 10:51:40PM +0200, sean finney wrote:
> > specifically timezone_identifiers_list() was extended to include country
> > codes as a filter for the returned values and it doesn't look like this
> > is covered by the patch and results in a segfault.
> 
> looking a bit more at the specifics, it doesn't seem so desirable to have
> to mmap and read every file to get all the country codes.  here's some
> options i see:
> 
> - read all the files anyway.  performance will be dismal but it's hopefully
>   a corner case except for someone running a public world clock app or
>   something :)
> 
> - fall back to the internal timezonedb for listing country names.  it would
>   be a bit ugly and there's maybe a possibility that timezone names might
>   get out of sync.
> 
> - pre-cache the tzdata at install time (and make use of triggers to
>   catch updates to the tzdata files).  nice performance but adds extra
>   complexity/dependencies outside of the engine.
> 
> - use zone.tab for country code -> tzdata mapping?  it seems to have the
>   info we'd want all in one file (assuming it's correct and consistant),
>   and we'd only have to read it in the specific cases that it was needed.
> 
> - disable the api extension.  not desirable.
>
> i guess zone.tab seems a nice easy and boring fix for this, what do you think?

It looks like they are (as threatened) shipping a mutated version of the 
zoneinfo data in 5.3.  Changes:

1) first four bytes are "PHP1" not "TZif"
2) in the "reserved" 16 bytes which follow, they have:
     ONE BYTE: "BC" flag
     TWO BYTES: country code
  ... those are being used by the code you mention above
3) after the end of the data, they have:
    TWO BYTES: latitude and longtitude
    ONE BYTE: length N
    (N) BYTES: "comment"

Whereas we have the 64-bit TZif2 block at the end of the TZif data.  I 
think that's everything that's different.

The "BC" flag seems to be an indication that the zone name is a 
deprecated form, and it's the case that BC is 0 if and only if the 
country code is '??', otherwise BC is 1; with 'UTC' as a special-case 
(BC=1, code is '??').

I believe it is also the case that, other than UTC, there is a 
one-to-one mapping between zones *not* listed in zone.tab, and zones 
which PHP designates with country code '??' (and hence BC=0).

zone.tab also has the lat/long data, and the country codes, so, yup, 
parsing that at startup seems to be the way to go.  I'll have a crack at 
a patch later today hopefully.

Regards, Joe

----- End forwarded message -----

_______________________________________________
Fedora-php-devel-list mailing list
Fedora-php-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/fedora-php-devel-list

[Index of Archives]     [Fedora Users]     [Fedora Desktop]     [Fedora KDE]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]

  Powered by Linux