forked from Bananymous/banan-os
LibC: Make time_t signed integer
Some port like python3 assumes this is the case
This commit is contained in:
parent
32f980e259
commit
9d6656451a
|
@ -30,19 +30,19 @@ namespace Kernel
|
|||
|
||||
timespec FATInode::atime() const
|
||||
{
|
||||
uint64_t epoch = fat_date_to_epoch(m_entry.last_access_date, {});
|
||||
const time_t epoch = fat_date_to_epoch(m_entry.last_access_date, {});
|
||||
return timespec { .tv_sec = epoch, .tv_nsec = 0 };
|
||||
}
|
||||
|
||||
timespec FATInode::mtime() const
|
||||
{
|
||||
uint64_t epoch = fat_date_to_epoch(m_entry.write_date, m_entry.write_time);
|
||||
const time_t epoch = fat_date_to_epoch(m_entry.write_date, m_entry.write_time);
|
||||
return timespec { .tv_sec = epoch, .tv_nsec = 0 };
|
||||
}
|
||||
|
||||
timespec FATInode::ctime() const
|
||||
{
|
||||
uint64_t epoch = fat_date_to_epoch(m_entry.creation_date, m_entry.creation_time);
|
||||
const time_t epoch = fat_date_to_epoch(m_entry.creation_date, m_entry.creation_time);
|
||||
return timespec { .tv_sec = epoch, .tv_nsec = 0 };
|
||||
}
|
||||
|
||||
|
|
|
@ -299,7 +299,7 @@ namespace Kernel
|
|||
long ns_this_second = ticks_this_second * regs.counter_clk_period / FS_PER_NS;
|
||||
|
||||
return timespec {
|
||||
.tv_sec = seconds,
|
||||
.tv_sec = static_cast<time_t>(seconds),
|
||||
.tv_nsec = ns_this_second
|
||||
};
|
||||
}
|
||||
|
|
|
@ -146,7 +146,7 @@ __BEGIN_DECLS
|
|||
|
||||
#if !defined(__time_t_defined) && (defined(__need_all_types) || defined(__need_time_t))
|
||||
#define __time_t_defined 1
|
||||
typedef unsigned long long time_t;
|
||||
typedef long long time_t;
|
||||
#endif
|
||||
#undef __need_time_t
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
#include <BAN/Assert.h>
|
||||
#include <BAN/Debug.h>
|
||||
#include <BAN/Math.h>
|
||||
|
||||
|
@ -167,15 +168,18 @@ time_t mktime(struct tm* tm)
|
|||
|
||||
struct tm* gmtime_r(const time_t* timer, struct tm* __restrict result)
|
||||
{
|
||||
// FIXME: allow negative times :)
|
||||
ASSERT(*timer >= 0);
|
||||
|
||||
constexpr uint64_t month_days[] { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 };
|
||||
|
||||
time_t time = *timer;
|
||||
unsigned long long time = *timer;
|
||||
|
||||
result->tm_sec = time % 60; time /= 60;
|
||||
result->tm_min = time % 60; time /= 60;
|
||||
result->tm_hour = time % 24; time /= 24;
|
||||
|
||||
time_t total_days = time;
|
||||
unsigned long long total_days = time;
|
||||
result->tm_wday = (total_days + 4) % 7;
|
||||
result->tm_year = 1970;
|
||||
while (total_days >= 365U + is_leap_year(result->tm_year))
|
||||
|
|
Loading…
Reference in New Issue