about summary refs log tree commit diff
path: root/compat/time32/time32gm.c
diff options
context:
space:
mode:
Diffstat (limited to 'compat/time32/time32gm.c')
-rw-r--r--compat/time32/time32gm.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/compat/time32/time32gm.c b/compat/time32/time32gm.c
new file mode 100644
index 00000000..60d68fbf
--- /dev/null
+++ b/compat/time32/time32gm.c
@@ -0,0 +1,15 @@
+#define _GNU_SOURCE
+#include "time32.h"
+#include <time.h>
+#include <errno.h>
+#include <stdint.h>
+
+time32_t __time32gm(struct tm *tm)
+{
+	time_t t = timegm(tm);
+	if (t < INT32_MIN || t > INT32_MAX) {
+		errno = EOVERFLOW;
+		return -1;
+	}
+	return t;
+}