scc

A fork of https://git.simple-cc.org/scc/ for Qute

git clone https://git.8pit.net/scc.git

 1#include <stdlib.h>
 2#include <time.h>
 3
 4#include "../libc.h"
 5
 6#undef gmtime
 7
 8struct tm *
 9gmtime(const time_t *tim)
10{
11	div_t d;
12	int month, year;
13	time_t tday, day, t = *tim;
14	static struct tm tm;
15
16	day = t / SECDAY;
17	tday = t % SECDAY;
18	if (tday < 0) {
19		tday += SECDAY;
20		day--;
21	}
22
23	d = div(tday, 60);
24	tm.tm_sec = d.rem;
25	d = div(d.quot, 60);
26	tm.tm_min = d.rem;
27	tm.tm_hour = d.quot;
28
29	/* 1/1/1970 was Thursday */
30	tm.tm_wday = (day + THU) % 7;
31	if (tm.tm_wday < 0)
32		tm.tm_wday += 7;
33
34	year = EPOCH;
35	if (day >= 0) {
36		while (day >= _daysyear(year))
37			day -= _daysyear(year++);
38	} else {
39		while (day < 0)
40			day += _daysyear(--year);
41	}
42
43	tm.tm_year = year - 1900;
44	tm.tm_yday = day;
45
46	_daysmon[FEB] = FEBDAYS(year);
47	for (month = JAN; day >= _daysmon[month]; month++)
48		day -= _daysmon[month];
49	tm.tm_mon = month;
50	tm.tm_mday = day + 1;
51
52	tm.tm_isdst = 0;
53	tm.tm_zone = "UTC";
54	tm.tm_gmtoff = 0;
55
56	return &tm;
57}