20#include "pedigree/kernel/processor/types.h"
21#include "pedigree/kernel/time/Time.h"
22#include "pedigree/kernel/utilities/assert.h"
24static const uint16_t cumulativeDays[] = {0, 31, 59, 90, 120, 151, 181,
25 212, 243, 273, 304, 334, 365};
29Timestamp toUnix(
size_t second,
size_t minute,
size_t hour,
size_t dom,
size_t month,
size_t year) {
30 if (year < 1970 || month < 1 || month > 12 || dom < 1 || dom > 31) {
35 assert(month >= 1 && month <= 12);
36 assert(dom >= 1 && dom <= 31);
41 size_t leaps = (year / 4) - (year / 100) + (year / 400);
43 leaps -= (1970 / 4) - (1970 / 100) + (1970 / 400);
45 size_t cumuldays = cumulativeDays[month - 1];
47 Time::Timestamp result = 0;
49 result += minute * 60;
50 result += hour * 60 * 60;
51 result += dom * 24 * 60 * 60;
52 result += cumuldays * 24 * 60 * 60;
53 result += leaps * 24 * 60 * 60;
54 result += (year - 1970) * 365 * 24 * 60 * 60;