6 /* days per month -- nonleap! */
7 const short __spm
[13] =
15 (31+28+31+30+31+30+31),
16 (31+28+31+30+31+30+31+31),
17 (31+28+31+30+31+30+31+31+30),
18 (31+28+31+30+31+30+31+31+30+31),
19 (31+28+31+30+31+30+31+31+30+31+30),
20 (31+28+31+30+31+30+31+31+30+31+30+31),
23 int __isleap(int year
) {
24 /* every fourth year is a leap year except for century years that are
25 * not divisible by 400. */
26 /* return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)); */
27 return (!(year
%4) && ((year
%100) || !(year
%400)));
30 struct tm
*gmtime(const time_t *timep
) {
33 register time_t work
=*timep
%(SPD
);
34 r
.tm_sec
=work
%60; work
/=60;
35 r
.tm_min
=work
%60; r
.tm_hour
=work
/60;
39 register time_t k
=__isleap(i
)?366:365;
49 if (__isleap(i
) && (work
>58)) {
50 if (work
==59) r
.tm_mday
=2; /* 29.2. */
54 for (i
=11; i
&& (__spm
[i
]>work
); --i
) ;
56 r
.tm_mday
+=work
-__spm
[i
];