summarylogtreecommitdiffstats
path: root/syncevolution-1.5.2-libical3.patch
blob: d2de4801dafc0f38eb99cf359f6a1fd53d84d180 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
diff -aur syncevolution-1.5.2.pristine/src/backends/webdav/CalDAVSource.cpp syncevolution-1.5.2.new/src/backends/webdav/CalDAVSource.cpp
--- syncevolution-1.5.2.pristine/src/backends/webdav/CalDAVSource.cpp	2014-07-14 13:42:44.000000000 +0200
+++ syncevolution-1.5.2.new/src/backends/webdav/CalDAVSource.cpp	2017-12-16 10:45:51.611051290 +0100
@@ -721,8 +721,8 @@
                 eptr<icalcomponent> fullcal = event.m_calendar;
                 loadItem(event);
                 event.m_sequence++;
-                lastmodtime = icaltime_from_timet(event.m_lastmodtime, false);
-                lastmodtime.is_utc = 1;
+                lastmodtime = icaltime_from_timet_with_zone(event.m_lastmodtime, false, NULL);
+                lastmodtime.zone = icaltimezone_get_utc_timezone();
                 event.m_calendar = fullcal;
                 for (icalcomponent *comp = icalcomponent_get_first_component(event.m_calendar, ICAL_VEVENT_COMPONENT);
                      comp;
diff -aur syncevolution-1.5.2.pristine/src/syncevo/icaltz-util.c syncevolution-1.5.2.new/src/syncevo/icaltz-util.c
--- syncevolution-1.5.2.pristine/src/syncevo/icaltz-util.c	2016-09-26 13:20:05.000000000 +0200
+++ syncevolution-1.5.2.new/src/syncevo/icaltz-util.c	2017-12-16 10:45:51.611051290 +0100
@@ -224,7 +224,7 @@
 	struct icaltimetype itime;
 
 	now = time (NULL);
-	itime = icaltime_from_timet (now, 0);
+	itime = icaltime_from_timet_with_zone (now, 0, NULL);
 	itime.month = itime.day = 1;
 	itime.hour = itime.minute = itime.second = 0;
 	year_start = icaltime_as_timet(itime);
@@ -304,13 +304,13 @@
 	icalrecur_iterator *iter;
 
 	now = time (NULL);
-	itime = icaltime_from_timet (now, 0);
+	itime = icaltime_from_timet_with_zone (now, 0, NULL);
 	itime.month = itime.day = 1;
 	itime.hour = itime.minute = itime.second = 0;
 	year_start = icaltime_as_timet(itime);
 
 	comp_start = icalcomponent_get_dtstart (comp);
-	start = icaltime_from_timet (year_start, 0);
+	start = icaltime_from_timet_with_zone (year_start, 0, NULL);
 
 	iter = icalrecur_iterator_new (rule, start);
 	iter_start = icalrecur_iterator_next (iter);
@@ -478,7 +478,7 @@
 			trans = transitions [stdidx] + types [zp_idx].gmtoff;
 		else
 			trans = types [zp_idx].gmtoff;
-		icaltime = icaltime_from_timet (trans, 0);
+		icaltime = icaltime_from_timet_with_zone (trans, 0, NULL);
 		dtstart = icaltime;
 		dtstart.year = 1970;
 		dtstart.minute = dtstart.second = 0;
@@ -520,7 +520,7 @@
 			trans = transitions [dstidx] + types [zp_idx].gmtoff;
 		else
 			trans = types [zp_idx].gmtoff;
-		icaltime = icaltime_from_timet (trans, 0);
+		icaltime = icaltime_from_timet_with_zone (trans, 0, NULL);
 		dtstart = icaltime;
 		dtstart.year = 1970;
 		dtstart.minute = dtstart.second = 0;
diff -aur syncevolution-1.5.2.pristine/src/synthesis/configure.in syncevolution-1.5.2.new/src/synthesis/configure.in
--- syncevolution-1.5.2.pristine/src/synthesis/configure.in	2016-10-06 16:40:43.000000000 +0200
+++ syncevolution-1.5.2.new/src/synthesis/configure.in	2017-12-16 10:45:51.611051290 +0100
@@ -101,9 +101,14 @@
 if test "$enable_libical" == "yes"; then
    PKG_CHECK_MODULES(LIBICAL, libical,
                      [AC_DEFINE(HAVE_LIBICAL, 1, "libical available")
-                      PKG_CHECK_MODULES(LIBICAL2, libical >= 2,
-                                        [AC_DEFINE(USE_ICALTZUTIL_SET_EXACT_VTIMEZONES_SUPPORT, 1, "Use icaltzutil_set_exact_vtimezones_support() to enable interoperable timezone definitions.")],
-                                        [true])],
+                      PKG_CHECK_MODULES(LIBICAL3, libical >= 3,
+                                        [have_libical3="yes"],
+                                        [have_libical3="no"])
+                      if test "$have_libical3" == "no"; then
+                          PKG_CHECK_MODULES(LIBICAL2, libical >= 2,
+                                            [AC_DEFINE(USE_ICALTZUTIL_SET_EXACT_VTIMEZONES_SUPPORT, 1, "Use icaltzutil_set_exact_vtimezones_support() to enable interoperable timezone definitions.")],
+                                            [true])
+                      fi],
                      [AC_ERROR([libical not found, required for --enable-libical])])
 fi
 
diff -aur syncevolution-1.5.2.pristine/src/synthesis/src/platform_adapters/linux/platform_timezones.cpp syncevolution-1.5.2.new/src/synthesis/src/platform_adapters/linux/platform_timezones.cpp
--- syncevolution-1.5.2.pristine/src/synthesis/src/platform_adapters/linux/platform_timezones.cpp	2016-10-06 16:40:43.000000000 +0200
+++ syncevolution-1.5.2.new/src/synthesis/src/platform_adapters/linux/platform_timezones.cpp	2017-12-16 10:45:51.611051290 +0100
@@ -59,6 +59,7 @@
   icalcomponent *(* icaltimezone_get_component_p)(icaltimezone *zone);
   char *(* icalcomponent_as_ical_string_p)(icalcomponent *comp);
   void (* icaltzutil_set_exact_vtimezones_support)(int on);
+  int (* icalrecur_iterator_set_start)(icalrecur_iterator *impl, struct icaltimetype start);
   bool must_free_strings;
 } icalcontext;
 
@@ -89,6 +90,8 @@
   }
   icalcontext.icaltzutil_set_exact_vtimezones_support =
     (typeof(icalcontext.icaltzutil_set_exact_vtimezones_support))dlsym(RTLD_DEFAULT, "icaltzutil_set_exact_vtimezones_support");
+  icalcontext.icalrecur_iterator_set_start =
+    (typeof(icalcontext.icalrecur_iterator_set_start))dlsym(RTLD_DEFAULT, "icalrecur_iterator_set_start");
 
   return icalcontext.icaltimezone_get_builtin_timezones_p ?
     icalcontext.icaltimezone_get_builtin_timezones_p() :
@@ -121,8 +124,8 @@
   };
   // distinguish between v2 and older based on
   // icaltzutil_set_exact_vtimezones_support, which was introduced in
-  // v2
-  return icalcontext.icaltzutil_set_exact_vtimezones_support ?
+  // v2, or icalrecur_iterator_set_start, which was introduced in v3
+  return (icalcontext.icaltzutil_set_exact_vtimezones_support || icalcontext.icalrecur_iterator_set_start) ?
     reinterpret_cast<icalarray_v2 *>(array)->num_elements :
     reinterpret_cast<icalarray_traditional *>(array)->num_elements;
 }
@@ -193,9 +196,10 @@
   icalarray *builtin = ICALTIMEZONE_GET_BUILTIN_TIMEZONES();
 #ifdef ICAL_COMPATIBILITY
   PLOGDEBUGPRINTFX(aGZones->getDbgLogger, DBG_PARSE+DBG_EXOTIC,
-                   ("runtime check: libical %s, %s icaltzutil_set_exact_vtimezones_support",
+                   ("runtime check: libical %s, %s icaltzutil_set_exact_vtimezones_support, %s icalrecur_iterator_set_start",
                     icalcontext.icaltimezone_get_builtin_timezones_p ? "available" : "unavailable",
-                    icalcontext.icaltzutil_set_exact_vtimezones_support ? "with" : "without"));
+                    icalcontext.icaltzutil_set_exact_vtimezones_support ? "with" : "without",
+                    icalcontext.icalrecur_iterator_set_start ? "with" : "without"));
   // If we end up using the libical code (and not some replacement
   // provided by SyncEvolution, which is the solution for distros with
   // a libical that doesn't have the API), then enable timezones in the