summaryrefslogtreecommitdiffhomepage
path: root/src/core/ngx_times.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2008-08-11 15:28:15 +0000
committerIgor Sysoev <igor@sysoev.ru>2008-08-11 15:28:15 +0000
commitc2717759022bbc072d87a87e7208a8871389be2d (patch)
tree66ed2499accd6cd56a8c006d7c5d7949d5cf2a6a /src/core/ngx_times.c
parent2ff9a4b334b5849e9f792da0bed7e86a0b76cb1e (diff)
downloadnginx-c2717759022bbc072d87a87e7208a8871389be2d.tar.gz
nginx-c2717759022bbc072d87a87e7208a8871389be2d.tar.bz2
ngx_next_time()
Diffstat (limited to 'src/core/ngx_times.c')
-rw-r--r--src/core/ngx_times.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/core/ngx_times.c b/src/core/ngx_times.c
index c1798b5bc..99b25813b 100644
--- a/src/core/ngx_times.c
+++ b/src/core/ngx_times.c
@@ -291,3 +291,42 @@ ngx_gmtime(time_t t, ngx_tm_t *tp)
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;
+}