nginx-0.0.3-2004-05-20-21:33:52 import
diff --git a/src/core/ngx_string.c b/src/core/ngx_string.c index 92b4b53..fd115cc 100644 --- a/src/core/ngx_string.c +++ b/src/core/ngx_string.c
@@ -63,6 +63,46 @@ if (value < 0) { return NGX_ERROR; + + } else { + return value; + } +} + + +ngx_int_t ngx_hextoi(u_char *line, size_t n) +{ + u_char ch; + ngx_int_t value; + + if (n == 0) { + return NGX_ERROR; + } + + for (value = 0; n--; line++) { + ch = *line; + + if (ch >= '0' && ch <= '9') { + value = value * 16 + (ch - '0'); + continue; + } + + if (ch >= 'A' && ch <= 'F') { + value = value * 16 + (*line - 'A'); + continue; + } + + if (ch >= 'a' && ch <= 'f') { + value = value * 16 + (*line - 'a'); + continue; + } + + return NGX_ERROR; + } + + if (value < 0) { + return NGX_ERROR; + } else { return value; }
diff --git a/src/core/ngx_string.h b/src/core/ngx_string.h index 09de18e..d087e3e 100644 --- a/src/core/ngx_string.h +++ b/src/core/ngx_string.h
@@ -65,7 +65,9 @@ u_char *ngx_cpystrn(u_char *dst, u_char *src, size_t n); ngx_int_t ngx_rstrncmp(u_char *s1, u_char *s2, size_t n); + ngx_int_t ngx_atoi(u_char *line, size_t n); +ngx_int_t ngx_hextoi(u_char *line, size_t n); void ngx_md5_text(u_char *text, u_char *md5);