debian/rules: Use `git' potty wrapper.
[qmail] / datetime.c
1 /* 19950925 */
2 #include "datetime.h"
3
4 void datetime_tai(dt,t)
5 struct datetime *dt;
6 datetime_sec t;
7 {
8 int day;
9 int tod;
10 int year;
11 int yday;
12 int wday;
13 int mon;
14
15 tod = t % 86400;
16 day = t / 86400;
17 if (tod < 0) { tod += 86400; --day; }
18
19 dt->hour = tod / 3600;
20 tod %= 3600;
21 dt->min = tod / 60;
22 dt->sec = tod % 60;
23
24 wday = (day + 4) % 7; if (wday < 0) wday += 7;
25 dt->wday = wday;
26
27 day -= 11017;
28 /* day 0 is march 1, 2000 */
29 year = 5 + day / 146097;
30 day = day % 146097; if (day < 0) { day += 146097; --year; }
31 /* from now on, day is nonnegative */
32 year *= 4;
33 if (day == 146096) { year += 3; day = 36524; }
34 else { year += day / 36524; day %= 36524; }
35 year *= 25;
36 year += day / 1461;
37 day %= 1461;
38 year *= 4;
39 yday = (day < 306);
40 if (day == 1460) { year += 3; day = 365; }
41 else { year += day / 365; day %= 365; }
42 yday += day;
43
44 day *= 10;
45 mon = (day + 5) / 306;
46 day = day + 5 - 306 * mon;
47 day /= 10;
48 if (mon >= 10) { yday -= 306; ++year; mon -= 10; }
49 else { yday += 59; mon += 2; }
50
51 dt->yday = yday;
52 dt->year = year - 1900;
53 dt->mon = mon;
54 dt->mday = day + 1;
55 }