#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; }