1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#include "time32.h" #include <time.h> #include <errno.h> #include <stdint.h> time32_t __mktime32(struct tm *tm) { struct tm tmp = *tm; time_t t = mktime(&tmp); if (t < INT32_MIN || t > INT32_MAX) { errno = EOVERFLOW; return -1; } *tm = tmp; return t; }