From 5bdf11fe3638d279edcad911906f801751e024da Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 23 Jul 2019 14:22:08 -0700
Subject: [PATCH] drop setting is_utc member of icaltimetype

This seems to be gone in libical3

Upstream-Status: Pending

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 src/ical-code.c | 7 -------
 1 file changed, 7 deletions(-)

diff --git a/src/ical-code.c b/src/ical-code.c
index d583140..d8e5543 100644
--- a/src/ical-code.c
+++ b/src/ical-code.c
@@ -129,7 +129,6 @@ static struct icaltimetype ical_get_current_local_time()
         &&   (strcmp(g_par.local_timezone, "floating") != 0))
         ctime = icaltime_current_time_with_zone(local_icaltimezone);
     else { / * use floating time * /
-        ctime.is_utc      = 0;
         ctime.is_date     = 0;
         ctime.is_daylight = 0;
         ctime.zone        = NULL;
@@ -2579,7 +2578,6 @@ static struct icaltimetype count_first_alarm_time(xfical_period per
  * when counting alarm time. */
         if (rel == ICAL_RELATED_START) {
             per.stime.is_date       = 0;
-            per.stime.is_utc        = 1;
             per.stime.is_daylight   = 0;
             per.stime.zone          = utc_icaltimezone;
             per.stime.hour          = 0;
@@ -2588,7 +2586,6 @@ static struct icaltimetype count_first_alarm_time(xfical_period per
         }
         else {
             per.etime.is_date       = 0;
-            per.etime.is_utc        = 1;
             per.etime.is_daylight   = 0;
             per.etime.zone          = utc_icaltimezone;
             per.etime.hour          = 0;
@@ -2613,7 +2610,6 @@ static struct icaltimetype count_next_alarm_time(struct icaltimetype start_time
 /* HACK: convert to UTC time so that we can use time arithmetic
  * when counting alarm time. */
         start_time.is_date       = 0;
-        start_time.is_utc        = 1;
         start_time.is_daylight   = 0;
         start_time.zone          = utc_icaltimezone;
         start_time.hour          = 0;
@@ -2768,7 +2764,6 @@ static alarm_struct *process_alarm_trigger(icalcomponent *c
      */
     if (icaltime_is_date(per.stime)) {
         if (local_icaltimezone != utc_icaltimezone) {
-            next_alarm_time.is_utc        = 0;
             next_alarm_time.is_daylight   = 0;
             next_alarm_time.zone          = local_icaltimezone;
         }
@@ -2850,7 +2845,6 @@ orage_message(120, P_N "Alarm rec loop next_start:%s next_alarm:%s per.stime:%s"
          */
         if (icaltime_is_date(per.stime)) {
             if (local_icaltimezone != utc_icaltimezone) {
-                next_alarm_time.is_utc        = 0;
                 next_alarm_time.is_daylight   = 0;
                 next_alarm_time.zone          = local_icaltimezone;
             }
@@ -2944,7 +2938,6 @@ orage_message(120, P_N "*****After loop Alarm %s %s", icaltime_as_ical_string(ne
          */
         if (icaltime_is_date(per.stime)) {
             if (local_icaltimezone != utc_icaltimezone) {
-                next_alarm_time.is_utc        = 0;
                 next_alarm_time.is_daylight   = 0;
                 next_alarm_time.zone          = local_icaltimezone;
             }
-- 
2.22.0

