source:
EcnlProtoTool/trunk/musl-1.1.18/src/time/localtime_r.c
Last change on this file was 444, checked in by , 4 years ago | |
---|---|
|
|
File size: 578 bytes |
Line | |
---|---|
1 | #include "time_impl.h" |
2 | #include <errno.h> |
3 | #include "libc.h" |
4 | |
5 | struct tm *__localtime_r(const time_t *restrict t, struct tm *restrict tm) |
6 | { |
7 | /* Reject time_t values whose year would overflow int because |
8 | * __secs_to_zone cannot safely handle them. */ |
9 | if (*t < INT_MIN * 31622400LL || *t > INT_MAX * 31622400LL) { |
10 | errno = EOVERFLOW; |
11 | return 0; |
12 | } |
13 | __secs_to_zone(*t, 0, &tm->tm_isdst, &tm->__tm_gmtoff, 0, &tm->__tm_zone); |
14 | if (__secs_to_tm((long long)*t + tm->__tm_gmtoff, tm) < 0) { |
15 | errno = EOVERFLOW; |
16 | return 0; |
17 | } |
18 | return tm; |
19 | } |
20 | |
21 | weak_alias(__localtime_r, localtime_r); |
Note:
See TracBrowser
for help on using the repository browser.