Lines Matching refs:tz

52 static void read_preamble(const unsigned char **tzf, timelib_tzinfo *tz)  in read_preamble()  argument
58 tz->bc = (**tzf == '\1'); in read_preamble()
62 memcpy(tz->location.country_code, *tzf, 2); in read_preamble()
63 tz->location.country_code[2] = '\0'; in read_preamble()
70 static void read_header(const unsigned char **tzf, timelib_tzinfo *tz) in read_header() argument
75 tz->ttisgmtcnt = timelib_conv_int(buffer[0]); in read_header()
76 tz->ttisstdcnt = timelib_conv_int(buffer[1]); in read_header()
77 tz->leapcnt = timelib_conv_int(buffer[2]); in read_header()
78 tz->timecnt = timelib_conv_int(buffer[3]); in read_header()
79 tz->typecnt = timelib_conv_int(buffer[4]); in read_header()
80 tz->charcnt = timelib_conv_int(buffer[5]); in read_header()
84 static void read_transistions(const unsigned char **tzf, timelib_tzinfo *tz) in read_transistions() argument
90 if (tz->timecnt) { in read_transistions()
91 buffer = (int32_t*) malloc(tz->timecnt * sizeof(int32_t)); in read_transistions()
95 memcpy(buffer, *tzf, sizeof(int32_t) * tz->timecnt); in read_transistions()
96 *tzf += (sizeof(int32_t) * tz->timecnt); in read_transistions()
97 for (i = 0; i < tz->timecnt; i++) { in read_transistions()
101 cbuffer = (unsigned char*) malloc(tz->timecnt * sizeof(unsigned char)); in read_transistions()
106 memcpy(cbuffer, *tzf, sizeof(unsigned char) * tz->timecnt); in read_transistions()
107 *tzf += sizeof(unsigned char) * tz->timecnt; in read_transistions()
110 tz->trans = buffer; in read_transistions()
111 tz->trans_idx = cbuffer; in read_transistions()
114 static void read_types(const unsigned char **tzf, timelib_tzinfo *tz) in read_types() argument
120 buffer = (unsigned char*) malloc(tz->typecnt * sizeof(unsigned char) * 6); in read_types()
124 memcpy(buffer, *tzf, sizeof(unsigned char) * 6 * tz->typecnt); in read_types()
125 *tzf += sizeof(unsigned char) * 6 * tz->typecnt; in read_types()
127 tz->type = (ttinfo*) malloc(tz->typecnt * sizeof(struct ttinfo)); in read_types()
128 if (!tz->type) { in read_types()
133 for (i = 0; i < tz->typecnt; i++) { in read_types()
135tz->type[i].offset = (buffer[j] * 16777216) + (buffer[j + 1] * 65536) + (buffer[j + 2] * 256) + bu… in read_types()
136 tz->type[i].isdst = buffer[j + 4]; in read_types()
137 tz->type[i].abbr_idx = buffer[j + 5]; in read_types()
141 tz->timezone_abbr = (char*) malloc(tz->charcnt); in read_types()
142 if (!tz->timezone_abbr) { in read_types()
145 memcpy(tz->timezone_abbr, *tzf, sizeof(char) * tz->charcnt); in read_types()
146 *tzf += sizeof(char) * tz->charcnt; in read_types()
148 if (tz->leapcnt) { in read_types()
149 leap_buffer = (int32_t *) malloc(tz->leapcnt * 2 * sizeof(int32_t)); in read_types()
153 memcpy(leap_buffer, *tzf, sizeof(int32_t) * tz->leapcnt * 2); in read_types()
154 *tzf += sizeof(int32_t) * tz->leapcnt * 2; in read_types()
156 tz->leap_times = (tlinfo*) malloc(tz->leapcnt * sizeof(tlinfo)); in read_types()
157 if (!tz->leap_times) { in read_types()
161 for (i = 0; i < tz->leapcnt; i++) { in read_types()
162 tz->leap_times[i].trans = timelib_conv_int(leap_buffer[i * 2]); in read_types()
163 tz->leap_times[i].offset = timelib_conv_int(leap_buffer[i * 2 + 1]); in read_types()
168 if (tz->ttisstdcnt) { in read_types()
169 buffer = (unsigned char*) malloc(tz->ttisstdcnt * sizeof(unsigned char)); in read_types()
173 memcpy(buffer, *tzf, sizeof(unsigned char) * tz->ttisstdcnt); in read_types()
174 *tzf += sizeof(unsigned char) * tz->ttisstdcnt; in read_types()
176 for (i = 0; i < tz->ttisstdcnt; i++) { in read_types()
177 tz->type[i].isstdcnt = buffer[i]; in read_types()
182 if (tz->ttisgmtcnt) { in read_types()
183 buffer = (unsigned char*) malloc(tz->ttisgmtcnt * sizeof(unsigned char)); in read_types()
187 memcpy(buffer, *tzf, sizeof(unsigned char) * tz->ttisgmtcnt); in read_types()
188 *tzf += sizeof(unsigned char) * tz->ttisgmtcnt; in read_types()
190 for (i = 0; i < tz->ttisgmtcnt; i++) { in read_types()
191 tz->type[i].isgmtcnt = buffer[i]; in read_types()
197 static void read_location(const unsigned char **tzf, timelib_tzinfo *tz) in read_location() argument
203 tz->location.latitude = timelib_conv_int(buffer[0]); in read_location()
204 tz->location.latitude = (tz->location.latitude / 100000) - 90; in read_location()
205 tz->location.longitude = timelib_conv_int(buffer[1]); in read_location()
206 tz->location.longitude = (tz->location.longitude / 100000) - 180; in read_location()
210 tz->location.comments = malloc(comments_len + 1); in read_location()
211 memcpy(tz->location.comments, *tzf, comments_len); in read_location()
212 tz->location.comments[comments_len] = '\0'; in read_location()
216 void timelib_dump_tzinfo(timelib_tzinfo *tz) in timelib_dump_tzinfo() argument
220 printf("Country Code: %s\n", tz->location.country_code); in timelib_dump_tzinfo()
221 printf("Geo Location: %f,%f\n", tz->location.latitude, tz->location.longitude); in timelib_dump_tzinfo()
222 printf("Comments:\n%s\n", tz->location.comments); in timelib_dump_tzinfo()
223 printf("BC: %s\n", tz->bc ? "" : "yes"); in timelib_dump_tzinfo()
224 printf("UTC/Local count: %lu\n", (unsigned long) tz->ttisgmtcnt); in timelib_dump_tzinfo()
225 printf("Std/Wall count: %lu\n", (unsigned long) tz->ttisstdcnt); in timelib_dump_tzinfo()
226 printf("Leap.sec. count: %lu\n", (unsigned long) tz->leapcnt); in timelib_dump_tzinfo()
227 printf("Trans. count: %lu\n", (unsigned long) tz->timecnt); in timelib_dump_tzinfo()
228 printf("Local types count: %lu\n", (unsigned long) tz->typecnt); in timelib_dump_tzinfo()
229 printf("Zone Abbr. count: %lu\n", (unsigned long) tz->charcnt); in timelib_dump_tzinfo()
233 (long int) tz->type[0].offset, in timelib_dump_tzinfo()
234 tz->type[0].isdst, in timelib_dump_tzinfo()
235 tz->type[0].abbr_idx, in timelib_dump_tzinfo()
236 &tz->timezone_abbr[tz->type[0].abbr_idx], in timelib_dump_tzinfo()
237 tz->type[0].isstdcnt, in timelib_dump_tzinfo()
238 tz->type[0].isgmtcnt in timelib_dump_tzinfo()
240 for (i = 0; i < tz->timecnt; i++) { in timelib_dump_tzinfo()
242 tz->trans[i], tz->trans[i], tz->trans_idx[i], in timelib_dump_tzinfo()
243 (long int) tz->type[tz->trans_idx[i]].offset, in timelib_dump_tzinfo()
244 tz->type[tz->trans_idx[i]].isdst, in timelib_dump_tzinfo()
245 tz->type[tz->trans_idx[i]].abbr_idx, in timelib_dump_tzinfo()
246 &tz->timezone_abbr[tz->type[tz->trans_idx[i]].abbr_idx], in timelib_dump_tzinfo()
247 tz->type[tz->trans_idx[i]].isstdcnt, in timelib_dump_tzinfo()
248 tz->type[tz->trans_idx[i]].isgmtcnt in timelib_dump_tzinfo()
251 for (i = 0; i < tz->leapcnt; i++) { in timelib_dump_tzinfo()
253 tz->leap_times[i].trans, in timelib_dump_tzinfo()
254 (long) tz->leap_times[i].trans, in timelib_dump_tzinfo()
255 tz->leap_times[i].offset); in timelib_dump_tzinfo()
335 static ttinfo* fetch_timezone_offset(timelib_tzinfo *tz, timelib_sll ts, timelib_sll *transition_ti… in fetch_timezone_offset() argument
341 if (!tz->timecnt || !tz->trans) { in fetch_timezone_offset()
343 if (tz->typecnt == 1) { in fetch_timezone_offset()
344 return &(tz->type[0]); in fetch_timezone_offset()
353 if (ts < tz->trans[0]) { in fetch_timezone_offset()
358 while (j < tz->timecnt && tz->type[j].isdst) { in fetch_timezone_offset()
361 if (j == tz->timecnt) { in fetch_timezone_offset()
364 return &(tz->type[j]); in fetch_timezone_offset()
369 for (i = 0; i < tz->timecnt; i++) { in fetch_timezone_offset()
370 if (ts < tz->trans[i]) { in fetch_timezone_offset()
371 *transition_time = tz->trans[i - 1]; in fetch_timezone_offset()
372 return &(tz->type[tz->trans_idx[i - 1]]); in fetch_timezone_offset()
375 *transition_time = tz->trans[tz->timecnt - 1]; in fetch_timezone_offset()
376 return &(tz->type[tz->trans_idx[tz->timecnt - 1]]); in fetch_timezone_offset()
379 static tlinfo* fetch_leaptime_offset(timelib_tzinfo *tz, timelib_sll ts) in fetch_leaptime_offset() argument
383 if (!tz->leapcnt || !tz->leap_times) { in fetch_leaptime_offset()
387 for (i = tz->leapcnt - 1; i > 0; i--) { in fetch_leaptime_offset()
388 if (ts > tz->leap_times[i].trans) { in fetch_leaptime_offset()
389 return &(tz->leap_times[i]); in fetch_leaptime_offset()
395 int timelib_timestamp_is_in_dst(timelib_sll ts, timelib_tzinfo *tz) in timelib_timestamp_is_in_dst() argument
400 if ((to = fetch_timezone_offset(tz, ts, &dummy))) { in timelib_timestamp_is_in_dst()
406 timelib_time_offset *timelib_get_time_zone_info(timelib_sll ts, timelib_tzinfo *tz) in timelib_get_time_zone_info() argument
415 if ((to = fetch_timezone_offset(tz, ts, &transistion_time))) { in timelib_get_time_zone_info()
417 abbr = &(tz->timezone_abbr[to->abbr_idx]); in timelib_get_time_zone_info()
422 abbr = tz->timezone_abbr; in timelib_get_time_zone_info()
427 if ((tl = fetch_leaptime_offset(tz, ts))) { in timelib_get_time_zone_info()