File libopensync-fix-vcal-reminder.diff of Package libopensync

Index: formats/vformats-xml/xml-vcal.c
===================================================================
--- formats/vformats-xml/xml-vcal.c	(Revision 1863)
+++ formats/vformats-xml/xml-vcal.c	(Revision 2505)
@@ -2018,6 +2018,8 @@
 			isruntime = TRUE;
 		}
 	}
+	
+	g_free(value);
 
 	startvtime = osxml_find_node(dtstart, "Content");
 
@@ -2027,26 +2029,28 @@
 	/* Duration */	
 	} else {
 		tmp = osxml_find_node(trigger, "Content");
+
 		duration = osync_time_alarmdu2sec(tmp);
 		g_free(tmp);
 
 		tmp = osxml_find_node(dtstart, "Content");
-		/* AlarmTrigger MUST be UTC (see rfc2445).
-		   So there is an offset to UTC of 0 seconds. */
-		if (osync_time_isutc(tmp))
-			osync_trace(TRACE_INTERNAL, "WARNNING: timestamp is not UTC: %s", tmp);
 
 		dtstarted = osync_time_vtime2unix(tmp, 0);
 
-		g_free(tmp);
-
 		dtstarted += duration;
 
 		runtime = osync_time_unix2vtime(&dtstarted);
+
+		if (!osync_time_isutc(tmp)) {
+			osync_trace(TRACE_INTERNAL, "WARNNING: timestamp is not UTC - converting reminder to localtime");
+			char *utc_runtime = runtime;
+			runtime = osync_time_vtime2localtime(utc_runtime, 0);
+			g_free(utc_runtime);
+		}
+
+		g_free(tmp);
 	}
 
-	g_free(value);
-
 	vformat_attribute_add_value(attr, runtime);
 	
 	add_value(attr, root, "AlarmDuration", encoding);
openSUSE Build Service is sponsored by