<html><body>

<p>Thanks, Terry. </p><p>your Patch is applied. there are two more of those TODO's in the source which remained from the merger of Evolution and Kcal fork backpatching action. If you've got a sugestion for these too, be welcome ;-)</p><p>The mailinglist which caries the anouncements and so on is at  libical@softwarestudio.org; this one mostly just caries the commit comments.</p><p>We're hoping to release the 0.30 within the next two weeks. Outstanding points are the two TODO's mentioned above, and getting a working cmake implementation, so libkcal can use the upstream libical again. </p><blockquote>Tue Jan 29 2008 03:36:06 CET from Terry Wilson to freeassociation-devel@lists.sourceforge.net <br />Subject: [Freeassociation-devel] [patch] Problem using icalcomponent_foreach_recurrence() with time filters<br /><br />Ok, I've spent a while tracking this down and think I have a suitable<br />fix for it.<br /><br />Situation:<br /><br />I need to parse a calendar for whether or not someone is busy over a<br />particular timeframe.  As an example:<br />...<br />     calendar = icalparser_parse_string(calendar_text);<br /><br />     utc_zone = icaltimezone_get_utc_timezone();<br />     start = icaltime_current_time_with_zone(utc_zone);<br />     end = icaltime_current_time_with_zone(utc_zone);<br />     end.hour += 1;<br />     icaltime_normalize(end);<br /><br />     for(iter = icalcomponent_get_first_component(calendar,<br />ICAL_VEVENT_COMPONENT); iter; iter =<br />icalcomponent_get_next_component(calendar, ICAL_VEVENT_COMPONENT)) {<br />         icalcomponent_foreach_recurrence(iter, start, end, callback,<br />NULL);<br />     }<br /><br />There are two problems.  The first is that the VEVENT does not have<br />VTIMEZONEs locally, but they are in the parent so matching the TZID<br />with a VTIMEZONE fails.  There are two copies of<br />icalcomponent_get_datetime in the source.  One is commented out with a<br />TODO trying to figure out which  one to use.  The one that is<br />currently uncommented checks for the VTIMEZONE in the component.<br />Since this is being called from the _get_dtstart function, it will<br />almost always fail to find the VTIMEZONE, so dtstart will be returned<br />without a timezone.  The one that is commented out, searches parents<br />until it finds the VTIMEZONE to compare against.  This seems to be the<br />correct way to go about things.<br /><br />The second problem is that the dtstart is not being converted to UTC<br />in this situation because icalcomponent_foreach_recurrence() calls<br />icaltime_span_new(dtstart, dtend, 1) which in turn calls<br />icaltime_as_timet_with_zone(dtstart,<br />icaltimezone_get_utc_timezone()).  Now, dtstart in my case is GMT -6.<br />If you look in icaltimezone_convert_time, you will see that it returns<br />early because this means that we would be trying to convert from UTC<br />to UTC--completely ignoring the actual timezone of the dtstart.<br /><br />Attatched is a patch that changes which icalcomponent_get_datetime to<br />use, as well as fixes icaltime_span_new to call<br />icaltime_as_timet_with_zone with the correct zone of the start/end of<br />the span if it exists.  I also have sample data and sample code<br />exploiting the bug if it is helpful.<br /><br />Terry Wilson<br /><br /></blockquote>
</body></html>