about summary refs log tree commit diff
path: root/src/time/gmtime_r.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/time/gmtime_r.c')
-rw-r--r--src/time/gmtime_r.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/time/gmtime_r.c b/src/time/gmtime_r.c
index 13a2548f..0272870d 100644
--- a/src/time/gmtime_r.c
+++ b/src/time/gmtime_r.c
@@ -1,10 +1,17 @@
-#include <time.h>
+#include "time_impl.h"
+#include <errno.h>
+#include "libc.h"
 
-#include "__time.h"
-
-struct tm *gmtime_r(const time_t *restrict t, struct tm *restrict 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 = EINVAL;
+		return 0;
+	}
+	tm->tm_isdst = 0;
+	tm->__tm_gmtoff = 0;
+	tm->__tm_zone = "GMT";
+	return tm;
 }
+
+weak_alias(__gmtime_r, gmtime_r);