Mercurial > hg > nginx
changeset 2162:429269167fab
ngx_next_time()
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 11 Aug 2008 15:28:15 +0000 |
parents | 904eab9dedb6 |
children | 3e8a4d057b77 |
files | src/core/ngx_times.c src/core/ngx_times.h |
diffstat | 2 files changed, 42 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/core/ngx_times.c Mon Aug 11 15:25:40 2008 +0000 +++ b/src/core/ngx_times.c Mon Aug 11 15:28:15 2008 +0000 @@ -291,3 +291,42 @@ tp->ngx_tm_year = (ngx_tm_year_t) year; tp->ngx_tm_wday = (ngx_tm_wday_t) wday; } + + +time_t +ngx_next_time(time_t when) +{ + time_t now, next; + struct tm tm; + + now = ngx_time(); + + ngx_libc_localtime(now, &tm); + + tm.tm_hour = (int) (when / 3600); + when %= 3600; + tm.tm_min = (int) (when / 60); + tm.tm_sec = (int) (when % 60); + + next = mktime(&tm); + + if (next == -1) { + return -1; + } + + if (next - now > 0) { + return next; + } + + tm.tm_mday++; + + /* mktime() should normalize a date (Jan 32, etc) */ + + next = mktime(&tm); + + if (next != -1) { + return next; + } + + return -1; +}
--- a/src/core/ngx_times.h Mon Aug 11 15:25:40 2008 +0000 +++ b/src/core/ngx_times.h Mon Aug 11 15:28:15 2008 +0000 @@ -25,6 +25,9 @@ u_char *ngx_http_cookie_time(u_char *buf, time_t t); void ngx_gmtime(time_t t, ngx_tm_t *tp); +time_t ngx_next_time(time_t when); +#define ngx_next_time_n "mktime()" + extern volatile ngx_time_t *ngx_cached_time;