summaryrefslogtreecommitdiff
path: root/gnome-extra/evolution-data-server/files/3.24.7-libical3-compat.patch
blob: 8f574b0f8d9c3e1539c5ddefe04224318f0226ad (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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
From dc5fc0e163421f5a01c3cdaab23ca2ea1eb3fae2 Mon Sep 17 00:00:00 2001
From: Milan Crha <mcrha@redhat.com>
Date: Wed, 4 Oct 2017 11:48:48 +0200
Subject: [PATCH 1/2] Use icaltime_is_utc() instead of icaltimetype::is_utc

The structure member is going to be removed from libical in the next release
and the function is available for a long time, thus it's safe to replace
the usage in the code.

(cherry picked from commit f607f8628a28440374579531bc78848dfe0c782e)
---
 src/calendar/backends/contacts/e-cal-backend-contacts.c | 1 -
 src/calendar/libecal/e-cal-component.c                  | 8 ++++----
 src/calendar/libecal/e-cal-recur.c                      | 8 ++++----
 src/calendar/libecal/e-cal-time-util.c                  | 3 +--
 4 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/src/calendar/backends/contacts/e-cal-backend-contacts.c b/src/calendar/backends/contacts/e-cal-backend-contacts.c
index d2b570885..cf2c62062 100644
--- a/src/calendar/backends/contacts/e-cal-backend-contacts.c
+++ b/src/calendar/backends/contacts/e-cal-backend-contacts.c
@@ -699,7 +699,6 @@ cdate_to_icaltime (EContactDate *cdate)
 	ret.month = cdate->month;
 	ret.day = cdate->day;
 	ret.is_date = TRUE;
-	ret.is_utc = FALSE;
 	ret.zone = NULL;
 	ret.is_daylight = FALSE;
 
diff --git a/src/calendar/libecal/e-cal-component.c b/src/calendar/libecal/e-cal-component.c
index 65b530d1e..6d8a9814d 100644
--- a/src/calendar/libecal/e-cal-component.c
+++ b/src/calendar/libecal/e-cal-component.c
@@ -2522,7 +2522,7 @@ get_datetime (struct datetime *datetime,
 	 * This makes the timezone code simpler. */
 	if (datetime->tzid_param)
 		dt->tzid = g_strdup (icalparameter_get_tzid (datetime->tzid_param));
-	else if (dt->value && dt->value->is_utc)
+	else if (dt->value && icaltime_is_utc (*dt->value))
 		dt->tzid = g_strdup ("UTC");
 	else
 		dt->tzid = NULL;
@@ -2559,9 +2559,9 @@ set_datetime (ECalComponent *comp,
 
 	/* If the TZID is set to "UTC", we set the is_utc flag. */
 	if (dt->tzid && !strcmp (dt->tzid, "UTC"))
-		dt->value->is_utc = 1;
-	else
-		dt->value->is_utc = 0;
+		dt->value->zone = icaltimezone_get_utc_timezone ();
+	else if (dt->value->zone == icaltimezone_get_utc_timezone ())
+		dt->value->zone = NULL;
 
 	if (datetime->prop) {
 		/* make sure no VALUE property is left if not needed */
diff --git a/src/calendar/libecal/e-cal-recur.c b/src/calendar/libecal/e-cal-recur.c
index 535d56c14..cad588c4d 100644
--- a/src/calendar/libecal/e-cal-recur.c
+++ b/src/calendar/libecal/e-cal-recur.c
@@ -195,7 +195,7 @@ ensure_timezone (icalcomponent *comp,
 	   a different icalcomponent and cause use-after-free. */
 	tt->zone = NULL;
 
-	if (tt->is_utc)
+	if (icaltime_is_utc (*tt))
 		return TRUE;
 
 	tt->zone = default_timezone;
@@ -435,7 +435,7 @@ e_cal_recur_generate_instances_sync (icalcomponent *comp,
 				rrule.until.minute = 0;
 				rrule.until.second = 0;
 
-				if (!rrule.until.zone && !rrule.until.is_utc)
+				if (!rrule.until.zone && !icaltime_is_utc (rrule.until))
 					rrule.until.zone = dtstart.zone;
 			}
 
@@ -542,7 +542,7 @@ e_cal_recur_generate_instances_sync (icalcomponent *comp,
 				exrule.until.minute = 0;
 				exrule.until.second = 0;
 
-				if (!exrule.until.zone && !exrule.until.is_utc)
+				if (!exrule.until.zone && !icaltime_is_utc (exrule.until))
 					exrule.until.zone = dtstart.zone;
 			}
 
@@ -586,7 +586,7 @@ e_cal_recur_generate_instances_sync (icalcomponent *comp,
 			if (!success)
 				break;
 
-			if (!exdate.zone && !exdate.is_utc)
+			if (!exdate.zone && !icaltime_is_utc (exdate))
 				exdate.zone = dtstart.zone;
 
 			if (intersects_interval (&exdate, NULL, duration_days, duration_seconds, &interval_start, &interval_end)) {
diff --git a/src/calendar/libecal/e-cal-time-util.c b/src/calendar/libecal/e-cal-time-util.c
index 7bcbc8ba1..914761cb0 100644
--- a/src/calendar/libecal/e-cal-time-util.c
+++ b/src/calendar/libecal/e-cal-time-util.c
@@ -763,9 +763,8 @@ tm_to_icaltimetype (struct tm *tm,
 
 	itt.day = tm->tm_mday;
 	itt.month = tm->tm_mon + 1;
-	itt.year = tm->tm_year+ 1900;
+	itt.year = tm->tm_year + 1900;
 
-	itt.is_utc = 0;
 	itt.is_date = is_date;
 
 	return itt;
-- 
2.15.1


From fccd77cf4620ca76c4fd2bf7721e3fb7eaf55ec6 Mon Sep 17 00:00:00 2001
From: Milan Crha <mcrha@redhat.com>
Date: Thu, 5 Oct 2017 13:50:08 +0200
Subject: [PATCH 2/2] e-cal-recur.c:ensure_timezone(): Unset icaltimetype::zone
 only if not UTC

With a removal of icaltimetype::is_utc the icaltimetype::zone is used
to determine whether it's UTC or not. That means that the icaltimetype::zone
can be unset only if it's not the built-in UTC time zone.

(cherry picked from commit 1f39ade8db00091d6fa4c752ccb70361ef0e8abc)
---
 src/calendar/libecal/e-cal-recur.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/calendar/libecal/e-cal-recur.c b/src/calendar/libecal/e-cal-recur.c
index cad588c4d..fc14fb15c 100644
--- a/src/calendar/libecal/e-cal-recur.c
+++ b/src/calendar/libecal/e-cal-recur.c
@@ -193,7 +193,8 @@ ensure_timezone (icalcomponent *comp,
 
 	/* Do not trust the 'zone' set on the structure, as it can come from
 	   a different icalcomponent and cause use-after-free. */
-	tt->zone = NULL;
+	if (tt->zone != icaltimezone_get_utc_timezone ())
+		tt->zone = NULL;
 
 	if (icaltime_is_utc (*tt))
 		return TRUE;
-- 
2.15.1