aboutsummaryrefslogtreecommitdiffstats
path: root/src/utils.c
diff options
context:
space:
mode:
authorLars Henriksen <LarsHenriksen@get2net.dk>2020-05-25 20:52:22 +0200
committerLukas Fleischer <lfleischer@calcurse.org>2020-06-13 10:56:15 -0400
commitd8c1c48e78bd6cdfbee922c6bda4022c7d7cb9dd (patch)
treec4a27777909eb68a4e293e1579090262c04361e2 /src/utils.c
parent32783496e6a002f6408ad21d1436e61442173536 (diff)
downloadcalcurse-d8c1c48e78bd6cdfbee922c6bda4022c7d7cb9dd.tar.gz
calcurse-d8c1c48e78bd6cdfbee922c6bda4022c7d7cb9dd.zip
Support import of time zones (RFC 5545)
The property parameter time zone identifier (TZID) is recognized in DTSTART, DTEND and EXDATE and the DATE-TIME value converted to a local time. The time zone identifier is logged in the note file. Signed-off-by: Lars Henriksen <LarsHenriksen@get2net.dk> Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
Diffstat (limited to 'src/utils.c')
-rw-r--r--src/utils.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/utils.c b/src/utils.c
index 6f849ea..23b9d89 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -423,22 +423,25 @@ struct date sec2date(time_t t)
return d;
}
-time_t utcdate2sec(struct date day, unsigned hour, unsigned min)
+time_t tzdate2sec(struct date day, unsigned hour, unsigned min, char *tznew)
{
- char *tz;
+ char *tzold;
time_t t;
- tz = getenv("TZ");
- if (tz)
- tz = mem_strdup(tz);
- setenv("TZ", "", 1);
- tzset();
+ if (!tznew)
+ return date2sec(day, hour, min);
+
+ tzold = getenv("TZ");
+ if (tzold)
+ tzold = mem_strdup(tzold);
+ setenv("TZ", tznew, 1);
+ tzset();
t = date2sec(day, hour, min);
- if (tz) {
- setenv("TZ", tz, 1);
- mem_free(tz);
+ if (tzold) {
+ setenv("TZ", tzold, 1);
+ mem_free(tzold);
} else {
unsetenv("TZ");
}