Fix for libical >= 4

Index: src/plugins/vcalendar/vcal_folder.c
--- src/plugins/vcalendar/vcal_folder.c.orig
+++ src/plugins/vcalendar/vcal_folder.c
@@ -536,7 +536,7 @@ static gint feed_fetch(FolderItem *fitem, MsgNumberLis
 	while (evt) {
 		icalproperty *prop;
 		icalproperty *rprop = icalcomponent_get_first_property(evt, ICAL_RRULE_PROPERTY);
-		struct icalrecurrencetype recur;
+		struct icalrecurrencetype* recur;
         	struct icaltimetype next;
         	icalrecur_iterator* ritr = NULL;
 		EventTime days;
@@ -559,7 +559,7 @@ static gint feed_fetch(FolderItem *fitem, MsgNumberLis
 			gchar *orig_uid = NULL;
 			gchar *uid = g_strdup(icalproperty_get_uid(prop));
 			IcalFeedData *data = icalfeeddata_new(
-						icalcomponent_new_clone(evt), NULL);
+						icalcomponent_clone(evt), NULL);
 			int i = 0;
 			orig_uid = g_strdup(uid);
 
@@ -610,7 +610,7 @@ add_new:			
 				struct icaldurationtype ical_dur;
 				struct icaltimetype dtstart = icaltime_null_time();
 				struct icaltimetype dtend = icaltime_null_time();
-				evt = icalcomponent_new_clone(evt);
+				evt = icalcomponent_clone(evt);
 				prop = icalcomponent_get_first_property(evt, ICAL_RRULE_PROPERTY);
 				if (prop) {
 					icalcomponent_remove_property(evt, prop);
@@ -626,7 +626,7 @@ add_new:			
 					dtend = icalproperty_get_dtend(prop);
 				else
 					debug_print("event has no DTEND!\n");
-				ical_dur = icaltime_subtract(dtend, dtstart);
+				ical_dur = icalduration_from_times(dtend, dtstart);
 				next = icalrecur_iterator_next(ritr);
 				if (!icaltime_is_null_time(next) &&
 				    !icaltime_is_null_time(dtstart) && i < 100) {
@@ -635,7 +635,7 @@ add_new:			
 
 					prop = icalcomponent_get_first_property(evt, ICAL_DTEND_PROPERTY);
 					if (prop)
-						icalproperty_set_dtend(prop, icaltime_add(next, ical_dur));
+						icalproperty_set_dtend(prop, icalduration_extend(next, ical_dur));
 
 					prop = icalcomponent_get_first_property(evt, ICAL_UID_PROPERTY);
 					uid = g_strdup_printf("%s-%d", orig_uid, i);
@@ -770,7 +770,7 @@ GSList *vcal_get_events_list(FolderItem *item)
 			if ((status == ICAL_PARTSTAT_ACCEPTED
 			     || status == ICAL_PARTSTAT_TENTATIVE) 
 			    && event->recur && *(event->recur)) {
-        			struct icalrecurrencetype recur;
+        			struct icalrecurrencetype* recur;
         			struct icaltimetype dtstart;
         			struct icaltimetype next;
         			icalrecur_iterator* ritr;
@@ -779,13 +779,13 @@ GSList *vcal_get_events_list(FolderItem *item)
 				int i = 0;
 
 				debug_print("dumping recurring events from main event %s\n", d);
-        			recur = icalrecurrencetype_from_string(event->recur);
+        			recur = icalrecurrencetype_new_from_string(event->recur);
 				dtstart = icaltime_from_string(event->dtstart);
 
 				duration = icaltime_as_timet(icaltime_from_string(event->dtend))
 							    - icaltime_as_timet(icaltime_from_string(event->dtstart));
 
-				ical_dur = icaldurationtype_from_int(duration);
+				ical_dur = icaldurationtype_from_seconds(duration);
 
         			ritr = icalrecur_iterator_new(recur, dtstart);
 
@@ -799,7 +799,7 @@ GSList *vcal_get_events_list(FolderItem *item)
 					gchar *uid = g_strdup_printf("%s-%d", event->uid, i);
 					new_start = icaltime_as_ical_string(next);
 					new_end = icaltime_as_ical_string(
-							icaltime_add(next, ical_dur));
+							icalduration_extend(next, ical_dur));
 					debug_print("adding with start/end %s:%s\n", new_start, new_end);
 					nevent = vcal_manager_new_event(uid, event->organizer, event->orgname, 
 								event->location, event->summary, event->description, 
@@ -825,6 +825,7 @@ GSList *vcal_get_events_list(FolderItem *item)
 					i++;
 				}
 				icalrecur_iterator_free(ritr);
+				icalrecurrencetype_unref(recur);
 			}
 		} else {
 			vcal_manager_free_event(event);
@@ -2379,7 +2380,7 @@ VCalEvent *vcal_get_event_from_ical(const gchar *ical,
 			if (prop) {
 				itt = icalproperty_get_dtstart(prop);
 				icalproperty_free(prop);
-				dtend = g_strdup(icaltime_as_ical_string(icaltime_add(itt,duration)));
+				dtend = g_strdup(icaltime_as_ical_string(icalduration_extend(itt,duration)));
 				TO_UTF8(dtend);
 			}
 		}
@@ -2434,8 +2435,8 @@ VCalEvent *vcal_get_event_from_ical(const gchar *ical,
 	}
 	GET_PROP(comp, prop, ICAL_RRULE_PROPERTY);
 	if (prop) {
-		struct icalrecurrencetype rrule = icalproperty_get_rrule(prop);
-		recur = g_strdup(icalrecurrencetype_as_string(&rrule));
+		struct icalrecurrencetype* rrule = icalproperty_get_rrule(prop);
+		recur = g_strdup(icalrecurrencetype_as_string(rrule));
 		TO_UTF8(recur);
 		icalproperty_free(prop);
 	}
