diff options
author | Lukas Fleischer <calcurse@cryptocrack.de> | 2015-02-23 10:43:54 +0100 |
---|---|---|
committer | Lukas Fleischer <calcurse@cryptocrack.de> | 2015-02-23 10:46:16 +0100 |
commit | 1ea97795be8f9b8d63c5266ac7ea4889c3224a4d (patch) | |
tree | 7fdaaf4eaeb4b564b1479b375fef87a561c95bed /src/utils.c | |
parent | 4efa3f3fbf5525e37d7bae4bd8ed5ce747a0b32f (diff) | |
download | calcurse-1ea97795be8f9b8d63c5266ac7ea4889c3224a4d.zip |
Add support for UTC times in iCal imports
According to the iCal standard (4.3.12 Time):
UTC time, or absolute time, is identified by a LATIN CAPITAL LETTER
Z suffix character (US-ASCII decimal 90), the UTC designator,
appended to the time value.
Parse such time values properly when importing iCal files.
Fixes GitHub issue #3.
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
Diffstat (limited to 'src/utils.c')
-rw-r--r-- | src/utils.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/utils.c b/src/utils.c index b52de74..c7dc61c 100644 --- a/src/utils.c +++ b/src/utils.c @@ -386,6 +386,31 @@ long date2sec(struct date day, unsigned hour, unsigned min) return t; } +time_t +utcdate2sec(struct date day, unsigned hour, unsigned min) +{ + char *tz; + time_t t; + + tz = getenv("TZ"); + if (tz) + tz = mem_strdup(tz); + setenv("TZ", "", 1); + tzset(); + + t = date2sec(day, hour, min); + + if (tz) { + setenv("TZ", tz, 1); + mem_free(tz); + } else { + unsetenv("TZ"); + } + tzset(); + + return t; +} + /* Return a string containing the date, given a date in seconds. */ char *date_sec2date_str(long sec, const char *datefmt) { |