X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=blobdiff_plain;f=src%2Ftime%2Flocaltime_r.c;h=b36c1d825f077f2f53c427b6f683fb03f475b936;hp=389a5917f2bbe1e9c7ddba579e853e76e4309271;hb=1cc81f5cb0df2b66a795ff0c26d7bbc4d16e13c6;hpb=f1292e3d28309bbc81f61671164843cec4319bfa diff --git a/src/time/localtime_r.c b/src/time/localtime_r.c index 389a5917..b36c1d82 100644 --- a/src/time/localtime_r.c +++ b/src/time/localtime_r.c @@ -1,11 +1,15 @@ -#include +#include "time_impl.h" +#include +#include "libc.h" -#include "__time.h" - -struct tm *localtime_r(const time_t *restrict t, struct tm *restrict result) +struct tm *__localtime_r(const time_t *restrict t, struct tm *restrict tm) { - __tzset(); - __time_to_tm(*t - __timezone, result); - result->tm_isdst = -1; - return __dst_adjust(result); + __secs_to_zone(*t, 0, &tm->tm_isdst, &tm->__tm_gmtoff, 0, &tm->__tm_zone); + if (__secs_to_tm((long long)*t - tm->__tm_gmtoff, tm) < 0) { + errno = EINVAL; + return 0; + } + return tm; } + +weak_alias(__localtime_r, localtime_r);