The code is using gnu C extensions. The following new patchfile under files/ fixes the issue: # cat files/patch-descriptors.c --- a/descriptors.c 2012-10-03 12:39:42.000000000 +0200 +++ b/descriptors.c 2012-10-03 12:39:56.000000000 +0200 @@ -1000,6 +1000,16 @@ } } +__u8 LeapYear(__u16 year) { + if ((year % 400) == 0) + return 1; + else if ((year % 100) == 0) + return 0; + else if ((year % 4) == 0) + return 1; + return 0; +} + /* 300468 v011101 annex C, Conversion between time and date conventions * NOTE: These formulas are applicable between the inclusive dates 1900 March 1 to 2100 February 28. @@ -1011,16 +1021,6 @@ int _M = (int) (MJD - 14956.1 - (int) (_Y * 365.25)) / 30.6001; int K = (_M == 14) ? 1 : (_M == 15) ? 1 : 0; - __u8 LeapYear(__u16 year) { - if ((year % 400) == 0) - return 1; - else if ((year % 100) == 0) - return 0; - else if ((year % 4) == 0) - return 1; - return 0; - } - memset(&utc, 0, sizeof(struct tm)); utc.tm_mday = MJD - 14956 - (int) (_Y * 365.25) - (int) (_M * 30.6001); utc.tm_year = _Y + K;