From b1ac4cb1f93005d09502910924d4409e8417d960 Mon Sep 17 00:00:00 2001 From: Vladimir 'phcoder' Serbinenko Date: Sat, 14 Jan 2012 11:51:52 +0100 Subject: [PATCH] * include/grub/datetime.h (grub_datetime2unixtime): Fix offset. --- ChangeLog | 4 ++++ include/grub/datetime.h | 10 +++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index ce3b20192..8f06d2217 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2012-01-14 Vladimir Serbinenko + + * include/grub/datetime.h (grub_datetime2unixtime): Fix offset. + 2012-01-14 Vladimir Serbinenko * grub-core/lib/posix_wrap/stdlib.h (MB_CUR_MAX): Moved from here ... diff --git a/include/grub/datetime.h b/include/grub/datetime.h index a7154fa1a..66c1aa2fe 100644 --- a/include/grub/datetime.h +++ b/include/grub/datetime.h @@ -85,14 +85,14 @@ grub_datetime2unixtime (const struct grub_datetime *datetime, grub_int32_t *nix) /* In the period of validity of unixtime all years divisible by 4 are bissextile*/ /* Convenience: let's have 3 consecutive non-bissextile years - at the beginning of the epoch. So count from 1971 instead of 1970 */ - ret = 2 * SECPERYEAR + SECPERDAY; + at the beginning of the epoch. So count from 1973 instead of 1970 */ + ret = 3 * SECPERYEAR + SECPERDAY; /* Transform C divisions and modulos to mathematical ones */ - y4 = (datetime->year - 1972) / 4; - if (datetime->year < 1972) + y4 = (datetime->year - 1973) / 4; + if (datetime->year < 1973) y4--; - ay = datetime->year - 1972 - 4 * y4; + ay = datetime->year - 1973 - 4 * y4; ret += y4 * SECPER4YEARS; ret += ay * SECPERYEAR;