[Freeassociation-devel] libical: TZID prefix

Patrick Ohly patrick.ohly at gmx.de
Tue Aug 23 02:25:23 PDT 2011


Hello!

Any comments on this? It's still broken in Trunk.

Bye, Patrick

On Di, 2011-08-16 at 13:03 +0200, Patrick Ohly wrote:
> On Fri, 2011-08-12 at 20:23 -0400, Allen Winter wrote:
> > On Friday 12 August 2011 2:49:42 AM Patrick Ohly wrote:
> > > On Do, 2011-08-11 at 19:21 -0400, Allen Winter wrote:
> > > > On Thursday 11 August 2011 5:52:27 AM Patrick Ohly wrote:
> > > > > Hello Allen!
> > > > > 
> > > > > I'm having some issue with the libical compiled from source which might
> > > > > be related to your following commit:
> > > > > 
> > > > Ok, reverted in SVN commit r1083
> > > > 
> > > > Please try now and let me know if things work better.
> > > 
> > > I can't test that particular commit because the nightly test machine
> > > went down and I cannot reset it remotely myself. But I had already
> > > tested with a version where I reverted the commit myself. I can confirm
> > > that this fixes the problem for me.
> > > 
> > > > regression test fails now btw.  I'll try to fix that once Patrick reports back.
> > > 
> > > Please continue.
> > > 
> > 
> > I think I fixed the regression test.
> > There was a bug in icaltimezone_get_builtin_timezone_from_tzid()
> > that didn't skip past the "/Tzfile" when extracting the location from the TZID.
> 
> Your fix is:
> 
> commit a65a0894ce7cf9672f9837dd38a95bbcba84b49b
> Author: awinterz <awinterz at b29e25b1-4845-0410-9c6e-9608a45a5811>
> Date:   Sat Aug 13 00:11:14 2011 +0000
> 
>     in icaltimezone_get_builtin_timezone_from_tzid(), skip past the 4th '/' character
>     to find the location from the tzid, not the 3rd '/' character.  This is needed
>     because there has been a "/Tzfile" encoded into the tzid as of late.
>     
>     fixes the 'test_convenience' regression test.
> 
> But that is not correct for the TZID as produced by the latest libical.
> In the test program from my initial email, I get
> TZID /freeassociation.sourceforge.net/Tzfile/Europe/Berlin. With the
> commit above, icaltimezone_get_builtin_timezone_from_tzid() skips
> forward to the "Berlin" part, which then fails to be found.
> 
> I fail to see how the commit relates to the 'test_convenience'. Isn't
> that the one which uses
> icaltimezone_get_builtin_timezone("Europe/Rome")? Is
> icaltimezone_get_builtin_timezone_from_tzid() used indirectly in that
> test?
> 
> [talking to myself while looking at the source...]
> 
> Yes, that's it. The tests call
> icaltimezone_get_builtin_timezone_from_tzid() like this:
> 
> #0  icaltimezone_get_builtin_timezone_from_tzid (
>     tzid=0x62d1f0 "/softwarestudio.org/Olson_20010626_2/Tzfile/Europe/Rome")
>     at /home/nightly/freeassociation/libical/src/libical/icaltimezone.c:1468
> #1  0x00007ffff777c3c8 in icalcomponent_get_datetime (comp=<value optimized out>, prop=<value optimized out>)
>     at /home/nightly/freeassociation/libical/src/libical/icalcomponent.c:1587
> #2  0x00007ffff777c41c in icalcomponent_get_dtstart (comp=0x6288f0)
>     at /home/nightly/freeassociation/libical/src/libical/icalcomponent.c:1615
> #3  0x0000000000407d79 in test_convenience () at /home/nightly/freeassociation/libical/src/test/regression.c:2282
> #4  0x0000000000416f5a in test_run (test_name=<value optimized out>, test_fcn=0x406c40 <test_convenience>, 
>     do_test=0, headeronly=<value optimized out>)
>     at /home/nightly/freeassociation/libical/src/test/regression-utils.c:170
> #5  0x0000000000406b37 in main (argc=<value optimized out>, argv=0x7fffffffdff8)
>     at /home/nightly/freeassociation/libical/src/test/regression.c:3813
> 
> The problem is that
> "/softwarestudio.org/Olson_20010626_2/Tzfile/Europe/Rome" is not an
> internal TZID for which icaltimezone_get_builtin_timezone_from_tzid() is
> meant to work - at least when internal timezones are taken from the zone
> database.
> 
> Allen, were you perhaps testing on a system where internal TZIDs are not
> of the form /freeassociation.sourceforge.net/Tzfile/Europe/Berlin? How
> did you make strcmp("1997-08-01 12:00:00 Europe/Rome", ictt_as_string())
> pass in test_convenience? In my understanding of the source it'll always
> insert the TZID, which is not Europe/Rome either way.
> 
> I'm not sure what the right solution is:
>      1. Use three slashes consistently, including all tests?
>      2. Use four slashes consistently, including icaltz-util.c?
>      3. #ifdefs?
> 
> Attached a patch which implements solution 1. I chose to go that route
> because the format /<source>/<version>/<location>/ seems to be the
> established one, with "Tzfile" taking the place of <version> when
> parsing zone info. Adding one more slash would introduce an unnecessary
> change compared to previous libical releases, too.
> 
> ------------------------------------------------------------------------------
> uberSVN's rich system and user administration capabilities and model 
> configuration take the hassle out of deploying and managing Subversion and 
> the tools developers use with it. Learn more about uberSVN and get a free 
> download at:  http://p.sf.net/sfu/wandisco-dev2dev
> _______________________________________________
> Freeassociation-devel mailing list
> Freeassociation-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/freeassociation-devel






More information about the libical-devel mailing list