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