diff src/http/ngx_http_parse_time.c @ 372:6639b93e81b2 NGINX_0_6_30

nginx 0.6.30 *) Change: now if an "include" directive pattern does not match any file, then nginx does not issue an error. *) Feature: now the time in directives may be specified without spaces, for example, "1h50m". *) Bugfix: memory leaks if the "ssl_verify_client" directive was on. Thanks to Chavelle Vincent. *) Bugfix: the "sub_filter" directive might set text to change into output. *) Bugfix: the "error_page" directive did not take into account arguments in redirected URI. *) Bugfix: now nginx always opens files in binary mode under Cygwin. *) Bugfix: nginx could not be built on OpenBSD; bug appeared in 0.6.15.
author Igor Sysoev <http://sysoev.ru>
date Tue, 29 Apr 2008 00:00:00 +0400
parents 05693816539c
children 79c5df00501e
line wrap: on
line diff
--- a/src/http/ngx_http_parse_time.c
+++ b/src/http/ngx_http_parse_time.c
@@ -240,7 +240,7 @@ ngx_http_parse_time(u_char *value, size_
 
     /*
      * shift new year to March 1 and start months from 1 (not 0),
-     * it is needed for Gauss's formula
+     * it is needed for Gauss' formula
      */
 
     if (--month <= 0) {
@@ -248,11 +248,20 @@ ngx_http_parse_time(u_char *value, size_
         year -= 1;
     }
 
-    /* Gauss's formula for Grigorian days from March 1, 1 BC */
+    /* Gauss' formula for Grigorian days since March 1, 1 BC */
+
+    return (
+            /* days in years including leap years since March 1, 1 BC */
+
+            365 * year + year / 4 - year / 100 + year / 400
 
-    return (365 * year + year / 4 - year / 100 + year / 400
-            + 367 * month / 12 - 31
-            + day
+            /* days before the month */
+
+            + 367 * month / 12 - 30
+
+            /* days before the day */
+
+            + day - 1
 
             /*
              * 719527 days were between March 1, 1 BC and March 1, 1970,