[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Freeipmi-devel] [bug #31758] Leap years are not included into the formu
From: |
Albert Chu |
Subject: |
[Freeipmi-devel] [bug #31758] Leap years are not included into the formula |
Date: |
Thu, 02 Dec 2010 18:39:58 +0000 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.11) Gecko/20101026 Red Hat/3.6-2.el5 Firefox/3.6.11 |
URL:
<http://savannah.gnu.org/bugs/?31758>
Summary: Leap years are not included into the formula
Project: GNU FreeIPMI
Submitted by: chu11
Submitted on: Thu 02 Dec 2010 10:39:58 AM PST
Category: libfreeipmi
Severity: 3 - Normal
Priority: 5 - Normal
Item Group: Improper Behaviour
Status: None
Privacy: Public
Assigned to: None
Open/Closed: Open
Discussion Lock: Any
Operating System: None
_______________________________________________________
Details:
Hello,
I want to inform you about a possible bug in your library.
It touches the calculation of the difference in epoch
file: freeipmi-0.8.11/libfreeipmi/src/fru-parse/ipmi-fru-parse-data.c
336. /* In FRU, epoch is 0:00 hrs 1/1/96
337. *
338. * So convert into ansi epoch
339. *
340. * 26 years difference in epoch
341. * 365 days/year
342. * etc.
343. *
344. */
345. mfg_date_time_tmp += (26 * 365 * 24 * 60 * 60);
346. (*mfg_date_time) = mfg_date_time_tmp;
This formula doesn't take leap years and so it misses six days
Years: 1972, 1976, 1980, 1984, 1988, 1992
Here are GNU date output in comparison to your formula:
$ date -d "1996-01-01 00:00:00" +%s
820447200
$ calc "26 * 365 * 24 * 60 * 60"
819936000
I'm not certain with the whole library architecture. Maybe you are correcting
this in some other place or there is a doublebug? Please check if it is not
better to use something like this:
// this code gives the same result as `date`
#include <stdio.h>
#include <time.h>
int main()
{
struct tm t;
t.tm_year = 96;
t.tm_mon = 0;
t.tm_mday = 1;
t.tm_hour = 0;
t.tm_min = 0;
t.tm_sec = 0;
time_t result = mktime(&t);
printf("1996-01-01 00:00:00 = %d\n", result);
return 0;
}
Appreciate your work.
BR
_______________________________________________________
Reply to this item at:
<http://savannah.gnu.org/bugs/?31758>
_______________________________________________
Message sent via/by Savannah
http://savannah.gnu.org/
- [Freeipmi-devel] [bug #31758] Leap years are not included into the formula,
Albert Chu <=