[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Freeipmi-devel] [bug #31769] Leap years are not included into the formu
From: |
anonymous |
Subject: |
[Freeipmi-devel] [bug #31769] Leap years are not included into the formula |
Date: |
Thu, 25 Nov 2010 21:51:26 +0000 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.44 Safari/534.7 |
URL:
<http://savannah.gnu.org/bugs/?31769>
Summary: Leap years are not included into the formula
Project: GNU FreeIPMI
Submitted by: None
Submitted on: Thu 25 Nov 2010 09:51:25 PM UTC
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: GNU/Linux
_______________________________________________________
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/?31769>
_______________________________________________
Message sent via/by Savannah
http://savannah.gnu.org/
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Freeipmi-devel] [bug #31769] Leap years are not included into the formula,
anonymous <=