line |
true |
false |
branch |
112
|
0 |
1240 |
if (bodyV1_size == -1) return false; |
115
|
1240 |
0 |
if (version >= 2) { |
117
|
0 |
1240 |
if (tzparse_headerV2(ptr, end, head, &version) == -1) return false; |
118
|
1240 |
0 |
result = tzparse_bodyV2(ptr, end, head, zone); |
120
|
0 |
0 |
result = tzparse_bodyV1(ptr, end, head, zone); |
132
|
4 |
1314 |
if (tzparse_rule_abbrev(rulestr, rule->outer.abbrev) != ParseResult::OK) return false; |
133
|
5 |
1309 |
if (tzparse_rule_time(rulestr, &rule->outer.gmt_offset) != ParseResult::OK) return false; |
138
|
1 |
1308 |
if ((result = tzparse_rule_abbrev(rulestr, rule->inner.abbrev)) == ParseResult::ERROR) return false; |
139
|
825 |
483 |
if (result == ParseResult::ABSENT) return *rulestr == '\0'; |
141
|
0 |
483 |
if ((result = tzparse_rule_time(rulestr, &rule->inner.gmt_offset)) == ParseResult::ERROR) return false; |
142
|
477 |
6 |
if (result == ParseResult::ABSENT) rule->inner.gmt_offset = rule->outer.gmt_offset + 3600; |
144
|
481 |
2 |
if (*rulestr == ',') { |
149
|
11 |
470 |
if (tzparse_rule_switch(rulestr, &rule->outer.type, &rule->outer.end) != ParseResult::OK) return false; |
150
|
1 |
469 |
if (*rulestr != ',') return false; |
152
|
3 |
466 |
if (tzparse_rule_switch(rulestr, &rule->inner.type, &rule->inner.end) != ParseResult::OK) return false; |
154
|
462 |
4 |
if (rule->outer.type != Timezone::Rule::Zone::Switch::DATE || rule->inner.type != Timezone::Rule::Zone::Switch::DATE) { |
|
0 |
462 |
if (rule->outer.type != Timezone::Rule::Zone::Switch::DATE || rule->inner.type != Timezone::Rule::Zone::Switch::DATE) { |
158
|
68 |
394 |
else if (rule->outer.end.mon > rule->inner.end.mon) { |
172
|
2082 |
0 |
while (*str && *str != '>') str++; |
|
1581 |
501 |
while (*str && *str != '>') str++; |
173
|
0 |
501 |
if (*str != '>') return ParseResult::ERROR; |
177
|
5481 |
830 |
while ((c = *str) && !isdigit(c) && c != ',' && c != '+' && c != '-') str++; |
|
5003 |
478 |
while ((c = *str) && !isdigit(c) && c != ',' && c != '+' && c != '-') str++; |
|
4566 |
437 |
while ((c = *str) && !isdigit(c) && c != ',' && c != '+' && c != '-') str++; |
|
4563 |
3 |
while ((c = *str) && !isdigit(c) && c != ',' && c != '+' && c != '-') str++; |
|
4187 |
376 |
while ((c = *str) && !isdigit(c) && c != ',' && c != '+' && c != '-') str++; |
|
4187 |
2124 |
while ((c = *str) && !isdigit(c) && c != ',' && c != '+' && c != '-') str++; |
181
|
501 |
2124 |
if (*str == '>') str++; |
183
|
825 |
1800 |
if (!len) return ParseResult::ABSENT; |
184
|
3 |
1797 |
if (len < ZONE_ABBR_MIN) return ParseResult::ERROR; |
195
|
482 |
1656 |
if (str == st) return ParseResult::ABSENT; |
196
|
854 |
802 |
int sign = (*dest >= 0 ? 1 : -1); |
197
|
82 |
1574 |
if (*str == ':') { |
200
|
3 |
79 |
if (str == st) return ParseResult::ERROR; |
201
|
16 |
63 |
if (*str == ':') { |
204
|
3 |
13 |
if (str == st) return ParseResult::ERROR; |
215
|
940 |
10 |
if (*str == 'M') { |
219
|
940 |
0 |
if (st == str || swdate->mon < 0 || swdate->mon > 11 || *str != '.') return ParseResult::ERROR; |
|
940 |
0 |
if (st == str || swdate->mon < 0 || swdate->mon > 11 || *str != '.') return ParseResult::ERROR; |
|
940 |
0 |
if (st == str || swdate->mon < 0 || swdate->mon > 11 || *str != '.') return ParseResult::ERROR; |
|
0 |
940 |
if (st == str || swdate->mon < 0 || swdate->mon > 11 || *str != '.') return ParseResult::ERROR; |
222
|
940 |
0 |
if (st == str || swdate->yday < 1 || swdate->yday > 5 || *str != '.') return ParseResult::ERROR; |
|
937 |
3 |
if (st == str || swdate->yday < 1 || swdate->yday > 5 || *str != '.') return ParseResult::ERROR; |
|
936 |
1 |
if (st == str || swdate->yday < 1 || swdate->yday > 5 || *str != '.') return ParseResult::ERROR; |
|
0 |
936 |
if (st == str || swdate->yday < 1 || swdate->yday > 5 || *str != '.') return ParseResult::ERROR; |
225
|
936 |
0 |
if (st == str || swdate->wday < 0 || swdate->wday > 6) return ParseResult::ERROR; |
|
935 |
1 |
if (st == str || swdate->wday < 0 || swdate->wday > 6) return ParseResult::ERROR; |
|
1 |
934 |
if (st == str || swdate->wday < 0 || swdate->wday > 6) return ParseResult::ERROR; |
227
|
8 |
2 |
else if (*str == 'J') { |
231
|
8 |
0 |
if (st == str || swdate->yday < 1 || swdate->yday > 365) return ParseResult::ERROR; |
|
8 |
0 |
if (st == str || swdate->yday < 1 || swdate->yday > 365) return ParseResult::ERROR; |
|
0 |
8 |
if (st == str || swdate->yday < 1 || swdate->yday > 365) return ParseResult::ERROR; |
235
|
0 |
2 |
if (st == str || swdate->yday < 0 || swdate->yday > 365) return ParseResult::ERROR; |
|
0 |
0 |
if (st == str || swdate->yday < 0 || swdate->yday > 365) return ParseResult::ERROR; |
|
0 |
0 |
if (st == str || swdate->yday < 0 || swdate->yday > 365) return ParseResult::ERROR; |
238
|
341 |
601 |
if (*str == '/') { |
241
|
6 |
335 |
if (tzparse_rule_time(str, &when) != ParseResult::OK) return ParseResult::ERROR; |
243
|
335 |
0 |
if (when < -604799 || when > 604799) return ParseResult::ERROR; |
|
0 |
335 |
if (when < -604799 || when > 604799) return ParseResult::ERROR; |
244
|
330 |
5 |
int sign = when >= 0 ? 1 : -1; |
262
|
18 |
0 |
}}; |
|
18 |
0 |
}}; |