Browse Source
Finishing touches for portability. * jk/commit-dates-parsing-fix: t4212: loosen far-in-future test for AIX date: recognize bogus FreeBSD gmtime outputmaint
![gitster@pobox.com](/assets/img/avatar_default.png)
5 changed files with 47 additions and 4 deletions
@ -0,0 +1,29 @@
@@ -0,0 +1,29 @@
|
||||
#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; |
||||
} |
Loading…
Reference in new issue