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:
Ian Lepore 2017-07-15 00:45:22 +00:00
parent a4ea52aab6
commit cfcdbe4b52

View File

@ -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;