Re: [PATCH 1/2] date: recognize bogus FreeBSD gmtime output
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Apr 1, 2014, 19:08 UTC
- Message-ID
- <xmqq7g7827h8.fsf@gitster.dls.corp.google.com>
- In-Reply-To
- <533AFA86.2090905@web.de>
René Scharfe <l.s.r@web.de> writes:
Show 37 quoted lines
> Am 01.04.2014 09:42, schrieb Jeff King:
>> diff --git a/compat/gmtime.c b/compat/gmtime.c
>> new file mode 100644
>> index 0000000..ffcabf4
>> --- /dev/null
>> +++ b/compat/gmtime.c
>> @@ -0,0 +1,26 @@
>> +#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;
>> +
>> + ret = gmtime_r(timep, result);
>> +
>> + /*
>> + * Rather than NULL, FreeBSD gmtime will return a "struct tm" with all
>> + * fields zeroed. Since "mday" cannot otherwise be zero, we can test
>> + * this very quickly.
>> + */
>> + if (ret && !ret->tm_mday)
>> + ret = NULL;
>> +
>> + return ret;
>> +}
>
> http://pubs.opengroup.org/onlinepubs/009695399/functions/gmtime.html
> says that errno shall be set on error and only mentions EOVERFLOW as a
> possible error code.So are you saying we should set EOVERFLOW ourselves, or does FreeBSD set EOVERFLOW for us in this case and we do not have to worry?