Revert r320997. There are reports of it getting the wrong results, so
clearly my testing was insuffficent, and it's best to just revert it until I get it straightened out.
This commit is contained in:
parent
a4ea52aab6
commit
cfcdbe4b52
@ -97,13 +97,6 @@ static const int month_days[12] = {
|
||||
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
|
||||
};
|
||||
|
||||
/*
|
||||
* Optimization: using a precomputed count of days between POSIX_BASE_YEAR and a
|
||||
* recent year avoids lots of needless loop iterations in conversion.
|
||||
* recent_base_days is the number of days through the end of recent_base_year.
|
||||
*/
|
||||
static const int recent_base_year = 2016;
|
||||
static const int recent_base_days = 17167;
|
||||
|
||||
/*
|
||||
* This inline avoids some unnecessary modulo operations
|
||||
@ -164,14 +157,8 @@ clock_ct_to_ts(struct clocktime *ct, struct timespec *ts)
|
||||
* Compute days since start of time
|
||||
* First from years, then from months.
|
||||
*/
|
||||
if (year > recent_base_year) {
|
||||
i = recent_base_year;
|
||||
days = recent_base_days;
|
||||
} else {
|
||||
i = POSIX_BASE_YEAR;
|
||||
days = 0;
|
||||
}
|
||||
for (; i < year; i++)
|
||||
days = 0;
|
||||
for (i = POSIX_BASE_YEAR; i < year; i++)
|
||||
days += days_in_year(i);
|
||||
|
||||
/* Months */
|
||||
@ -201,14 +188,8 @@ clock_ts_to_ct(struct timespec *ts, struct clocktime *ct)
|
||||
|
||||
ct->dow = day_of_week(days);
|
||||
|
||||
/* Subtract out whole years. */
|
||||
if (days >= recent_base_days) {
|
||||
year = recent_base_year + 1;
|
||||
days -= recent_base_days;
|
||||
} else {
|
||||
year = POSIX_BASE_YEAR;
|
||||
}
|
||||
for (; days >= days_in_year(year); year++)
|
||||
/* Subtract out whole years, counting them in i. */
|
||||
for (year = POSIX_BASE_YEAR; days >= days_in_year(year); year++)
|
||||
days -= days_in_year(year);
|
||||
ct->year = year;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user