comparison src/core/ngx_times.c @ 1874:085e536d856d

treat time_t as unsigned time
author Igor Sysoev <igor@sysoev.ru>
date Thu, 31 Jan 2008 15:14:31 +0000
parents 02a22cd5282a
children 5bb2c374cab2
comparison
equal deleted inserted replaced
1873:5d076348c121 1874:085e536d856d
201 201
202 202
203 void 203 void
204 ngx_gmtime(time_t t, ngx_tm_t *tp) 204 ngx_gmtime(time_t t, ngx_tm_t *tp)
205 { 205 {
206 ngx_int_t sec, min, hour, mday, mon, year, wday, yday, days; 206 ngx_uint_t n, sec, min, hour, mday, mon, year, wday, yday, days;
207 207
208 days = (ngx_int_t) (t / 86400); 208 /* the calculation is valid for positive time_t only */
209 n = (ngx_uint_t) t;
210
211 days = n / 86400;
209 212
210 /* Jaunary 1, 1970 was Thursday */ 213 /* Jaunary 1, 1970 was Thursday */
211 wday = (4 + days) % 7; 214 wday = (4 + days) % 7;
212 215
213 t %= 86400; 216 n %= 86400;
214 hour = (ngx_int_t) (t / 3600); 217 hour = n / 3600;
215 t %= 3600; 218 n %= 3600;
216 min = (ngx_int_t) (t / 60); 219 min = n / 60;
217 sec = (ngx_int_t) (t % 60); 220 sec = n % 60;
218 221
219 /* the algorithm based on Gauss's formula */ 222 /* the algorithm based on Gauss's formula */
220 223
221 days = days - (31 + 28) + 719527; 224 days = days - (31 + 28) + 719527;
222 225