chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
macro: use C11 static_assert() macro for static assertions
[elogind.git]
/
src
/
shared
/
time-dst.c
diff --git
a/src/shared/time-dst.c
b/src/shared/time-dst.c
index df5f15151d063bbb6c317c324a13a99194f4e51b..afc893cccc95cdbd664ea4b6a53ab71da4ee7082 100644
(file)
--- a/
src/shared/time-dst.c
+++ b/
src/shared/time-dst.c
@@
-83,7
+83,7
@@
static inline int64_t decode64(const void *ptr) {
int time_get_dst(time_t date, const char *tzfile,
time_t *switch_cur, char **zone_cur, bool *dst_cur,
int time_get_dst(time_t date, const char *tzfile,
time_t *switch_cur, char **zone_cur, bool *dst_cur,
- time_t *switch_next, char **zone_next, bool *dst_next) {
+ time_t *switch_next,
int *delta_next,
char **zone_next, bool *dst_next) {
time_t *transitions = NULL;
size_t num_transitions = 0;
unsigned char *type_idxs = 0;
time_t *transitions = NULL;
size_t num_transitions = 0;
unsigned char *type_idxs = 0;
@@
-321,8
+321,11
@@
found:
*zone_cur = strdup(&zone_names[types[type_idxs[i - 1]].idx]);
if (dst_cur)
*dst_cur = types[type_idxs[i-1]].isdst;
*zone_cur = strdup(&zone_names[types[type_idxs[i - 1]].idx]);
if (dst_cur)
*dst_cur = types[type_idxs[i-1]].isdst;
+
if (switch_next)
*switch_next = transitions[i];
if (switch_next)
*switch_next = transitions[i];
+ if (delta_next)
+ *delta_next = (types[type_idxs[i]].offset - types[type_idxs[i-1]].offset) / 60;
if (zone_next)
*zone_next = strdup(&zone_names[types[type_idxs[i]].idx]);
if (dst_next)
if (zone_next)
*zone_next = strdup(&zone_names[types[type_idxs[i]].idx]);
if (dst_next)