29 lines
		
	
	
	
		
			605 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
	
		
			605 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #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;
 | |
| }
 |