1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 16:27:35 +00:00

AK+LibC+Kernel: Have fewer implementations of year_to_days_in_epoch

I believe the implementation in RTC.cpp had an off-by-one
in the year passed to is_leap_year(). If that's true, then this
fixes that too.
This commit is contained in:
Nico Weber 2020-08-25 16:53:36 -04:00 committed by Andreas Kling
parent 84ed257959
commit 9b17082899
3 changed files with 13 additions and 18 deletions

View file

@ -33,6 +33,16 @@ inline bool is_leap_year(int year)
return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
}
inline int years_to_days_since_epoch(int year)
{
int days = 0;
for (int current_year = 1970; current_year < year; ++current_year)
days += 365 + is_leap_year(current_year);
for (int current_year = year; current_year < 1970; ++current_year)
days -= 365 + is_leap_year(current_year);
return days;
}
template<typename TimevalType>
inline void timeval_sub(const TimevalType& a, const TimevalType& b, TimevalType& result)
{
@ -160,6 +170,7 @@ using AK::timespec_to_timeval;
using AK::timeval_add;
using AK::timeval_sub;
using AK::timeval_to_timespec;
using AK::years_to_days_since_epoch;
using AK::operator<=;
using AK::operator<;
using AK::operator>;