fix asctime day/month names not to vary by locale
[musl] / src / time / gmtime_r.c
index 5b565a6..8cbdadc 100644 (file)
@@ -1,10 +1,19 @@
-#include <time.h>
+#include "time_impl.h"
+#include <errno.h>
+#include "libc.h"
 
-#include "__time.h"
+extern const char __gmt[];
 
-struct tm *gmtime_r(const time_t *t, struct tm *result)
+struct tm *__gmtime_r(const time_t *restrict t, struct tm *restrict tm)
 {
-       __time_to_tm(*t, result);
-       result->tm_isdst = 0;
-       return result;
+       if (__secs_to_tm(*t, tm) < 0) {
+               errno = EOVERFLOW;
+               return 0;
+       }
+       tm->tm_isdst = 0;
+       tm->__tm_gmtoff = 0;
+       tm->__tm_zone = __gmt;
+       return tm;
 }
+
+weak_alias(__gmtime_r, gmtime_r);