#include "../git-compat-util.h" | |
#undef gmtime | |
#undef gmtime_r | |
struct tm *git_gmtime(const time_t *timep) | |
{ | |
static struct tm result; | |
return git_gmtime_r(timep, &result); | |
} | |
struct tm *git_gmtime_r(const time_t *timep, struct tm *result) | |
{ | |
struct tm *ret; | |
memset(result, 0, sizeof(*result)); | |
ret = gmtime_r(timep, result); | |
/* | |
* Rather than NULL, FreeBSD gmtime simply leaves the "struct tm" | |
* untouched when it encounters overflow. Since "mday" cannot otherwise | |
* be zero, we can test this very quickly. | |
*/ | |
if (ret && !ret->tm_mday) { | |
ret = NULL; | |
errno = EOVERFLOW; | |
} | |
return ret; | |
} |