Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nginx/nginx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2008-08-11 19:28:15 +0400
committerIgor Sysoev <igor@sysoev.ru>2008-08-11 19:28:15 +0400
commitc2717759022bbc072d87a87e7208a8871389be2d (patch)
tree66ed2499accd6cd56a8c006d7c5d7949d5cf2a6a /src/core
parent2ff9a4b334b5849e9f792da0bed7e86a0b76cb1e (diff)
ngx_next_time()
Diffstat (limited to 'src/core')
-rw-r--r--src/core/ngx_times.c39
-rw-r--r--src/core/ngx_times.h3
2 files changed, 42 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;
+}
diff --git a/src/core/ngx_times.h b/src/core/ngx_times.h
index 6e7ab638c..8363ca136 100644
--- a/src/core/ngx_times.h
+++ b/src/core/ngx_times.h
@@ -25,6 +25,9 @@ u_char *ngx_http_time(u_char *buf, time_t t);
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;