Use dynamic table for leap second days
This commit is contained in:
parent
849744bb07
commit
2c016208f2
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int leap_second_days[] = {
|
static int leap_second_days_table[] = {
|
||||||
720439, /* 1972-06-30 */
|
720439, /* 1972-06-30 */
|
||||||
720623, /* 1972-12-31 */
|
720623, /* 1972-12-31 */
|
||||||
720988, /* 1973-12-31 */
|
720988, /* 1973-12-31 */
|
||||||
|
@ -36,12 +36,15 @@ static int leap_second_days[] = {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static int* leap_second_days = leap_second_days_table;
|
||||||
|
static int leap_second_days_num = sizeof(leap_second_days_table) / sizeof(int);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int iso8601_seconds_leap(const struct iso8601_date* date)
|
int iso8601_seconds_leap(const struct iso8601_date* date)
|
||||||
{
|
{
|
||||||
int num_ly = 0, i = 0;
|
int i;
|
||||||
|
for(i = 0; i < leap_second_days_num; ++i) if(leap_second_days[i] == date->day) return 86401;
|
||||||
num_ly = sizeof(leap_second_days) / sizeof(int);
|
|
||||||
for(i = 0; i < num_ly; ++i) if(leap_second_days[i] == date->day) return 86401;
|
|
||||||
return 86400;
|
return 86400;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,10 +54,10 @@ static int _leap_elapsed_day(int sday, int eday)
|
||||||
{
|
{
|
||||||
int spos, epos;
|
int spos, epos;
|
||||||
|
|
||||||
for(spos = 0; (unsigned)spos < sizeof(leap_second_days) / sizeof(int); ++spos) {
|
for(spos = 0; spos < leap_second_days_num; ++spos) {
|
||||||
if(sday <= leap_second_days[spos]) break;
|
if(sday <= leap_second_days[spos]) break;
|
||||||
}
|
}
|
||||||
for(epos = 0; (unsigned)epos < sizeof(leap_second_days) / sizeof(int); ++epos) {
|
for(epos = 0; epos < leap_second_days_num; ++epos) {
|
||||||
if(eday <= leap_second_days[epos]) break;
|
if(eday <= leap_second_days[epos]) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue