X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=blobdiff_plain;f=src%2Ftime%2Flocaltime_r.c;h=b36c1d825f077f2f53c427b6f683fb03f475b936;hp=2bf10378830f18d1a222b8104e1c134e712872a2;hb=1cc81f5cb0df2b66a795ff0c26d7bbc4d16e13c6;hpb=0b44a0315b47dd8eced9f3b7f31580cf14bbfc01 diff --git a/src/time/localtime_r.c b/src/time/localtime_r.c index 2bf10378..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 *t, struct tm *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);