changeset 4183:c352c483263c

Improved ngx_parse_time() code readability.
author Ruslan Ermilov <ru@nginx.com>
date Fri, 07 Oct 2011 08:03:16 +0000
parents 75d2388bd6b9
children f5ef10fe9534
files src/core/ngx_parse.c src/core/ngx_parse.h
diffstat 2 files changed, 24 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/src/core/ngx_parse.c
+++ b/src/core/ngx_parse.c
@@ -93,7 +93,7 @@ ngx_parse_offset(ngx_str_t *line)
 
 
 ngx_int_t
-ngx_parse_time(ngx_str_t *line, ngx_uint_t sec)
+ngx_parse_time(ngx_str_t *line, ngx_uint_t is_sec)
 {
     u_char      *p, *last;
     ngx_int_t    value, total, scale;
@@ -114,8 +114,8 @@ ngx_parse_time(ngx_str_t *line, ngx_uint
     valid = 0;
     value = 0;
     total = 0;
-    step = sec ? st_start : st_month;
-    scale = sec ? 1 : 1000;
+    step = is_sec ? st_start : st_month;
+    scale = is_sec ? 1 : 1000;
 
     p = line->data;
     last = p + line->len;
@@ -135,81 +135,81 @@ ngx_parse_time(ngx_str_t *line, ngx_uint
                 return NGX_ERROR;
             }
             step = st_year;
-            max = 68;
+            max = NGX_MAX_INT32_VALUE / (60 * 60 * 24 * 365);
             scale = 60 * 60 * 24 * 365;
             break;
 
         case 'M':
-            if (step > st_year) {
+            if (step >= st_month) {
                 return NGX_ERROR;
             }
             step = st_month;
-            max = 828;
+            max = NGX_MAX_INT32_VALUE / (60 * 60 * 24 * 30);
             scale = 60 * 60 * 24 * 30;
             break;
 
         case 'w':
-            if (step > st_month) {
+            if (step >= st_week) {
                 return NGX_ERROR;
             }
             step = st_week;
-            max = 3550;
+            max = NGX_MAX_INT32_VALUE / (60 * 60 * 24 * 7);
             scale = 60 * 60 * 24 * 7;
             break;
 
         case 'd':
-            if (step > st_week) {
+            if (step >= st_day) {
                 return NGX_ERROR;
             }
             step = st_day;
-            max = 24855;
+            max = NGX_MAX_INT32_VALUE / (60 * 60 * 24);
             scale = 60 * 60 * 24;
             break;
 
         case 'h':
-            if (step > st_day) {
+            if (step >= st_hour) {
                 return NGX_ERROR;
             }
             step = st_hour;
-            max = 596523;
+            max = NGX_MAX_INT32_VALUE / (60 * 60);
             scale = 60 * 60;
             break;
 
         case 'm':
             if (*p == 's') {
-                if (sec || step > st_sec) {
+                if (is_sec || step >= st_msec) {
                     return NGX_ERROR;
                 }
                 p++;
                 step = st_msec;
-                max = 2147483647;
+                max = NGX_MAX_INT32_VALUE;
                 scale = 1;
                 break;
             }
 
-            if (step > st_hour) {
+            if (step >= st_min) {
                 return NGX_ERROR;
             }
             step = st_min;
-            max = 35791394;
+            max = NGX_MAX_INT32_VALUE / 60;
             scale = 60;
             break;
 
         case 's':
-            if (step > st_min) {
+            if (step >= st_sec) {
                 return NGX_ERROR;
             }
             step = st_sec;
-            max = 2147483647;
+            max = NGX_MAX_INT32_VALUE;
             scale = 1;
             break;
 
         case ' ':
-            if (step > st_min) {
+            if (step >= st_sec) {
                 return NGX_ERROR;
             }
             step = st_last;
-            max = 2147483647;
+            max = NGX_MAX_INT32_VALUE;
             scale = 1;
             break;
 
@@ -217,7 +217,7 @@ ngx_parse_time(ngx_str_t *line, ngx_uint
             return NGX_ERROR;
         }
 
-        if (step != st_msec && !sec) {
+        if (step != st_msec && !is_sec) {
             scale *= 1000;
             max /= 1000;
         }
@@ -228,12 +228,12 @@ ngx_parse_time(ngx_str_t *line, ngx_uint
 
         total += value * scale;
 
-        if ((ngx_uint_t) total > 2147483647) {
+        if ((ngx_uint_t) total > NGX_MAX_INT32_VALUE) {
             return NGX_ERROR;
         }
 
         value = 0;
-        scale = sec ? 1 : 1000;
+        scale = is_sec ? 1 : 1000;
 
         while (p < last && *p == ' ') {
             p++;
--- a/src/core/ngx_parse.h
+++ b/src/core/ngx_parse.h
@@ -17,7 +17,7 @@
 
 ssize_t ngx_parse_size(ngx_str_t *line);
 off_t ngx_parse_offset(ngx_str_t *line);
-ngx_int_t ngx_parse_time(ngx_str_t *line, ngx_uint_t sec);
+ngx_int_t ngx_parse_time(ngx_str_t *line, ngx_uint_t is_sec);
 
 
 #endif /* _NGX_PARSE_H_INCLUDED_ */