]> git.kaiwu.me - nginx.git/commitdiff
ngx_next_time()
authorIgor Sysoev <igor@sysoev.ru>
Mon, 11 Aug 2008 15:28:15 +0000 (15:28 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Mon, 11 Aug 2008 15:28:15 +0000 (15:28 +0000)
src/core/ngx_times.c
src/core/ngx_times.h

index c1798b5bcdbf0ef6b33d2b870ae29eb9c7380bf6..99b25813b24040d872360aa72583dacc98787d84 100644 (file)
@@ -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;
+}
index 6e7ab638c74cb00f156963d45d98cc91c26f3a69..8363ca1362670d3453fcbc699dc757cc0107837b 100644 (file)
@@ -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;