Igor Sysoev | 6de5c2c | 2002-08-06 16:39:45 +0000 | [diff] [blame] | 1 | #ifndef _NGX_STRING_H_INCLUDED_ |
| 2 | #define _NGX_STRING_H_INCLUDED_ |
| 3 | |
| 4 | |
| 5 | #include <ngx_config.h> |
Igor Sysoev | 1c10462 | 2003-06-03 15:42:58 +0000 | [diff] [blame] | 6 | #include <ngx_core.h> |
Igor Sysoev | 6de5c2c | 2002-08-06 16:39:45 +0000 | [diff] [blame] | 7 | |
| 8 | |
Igor Sysoev | a0bb31f | 2002-12-02 16:09:40 +0000 | [diff] [blame] | 9 | typedef struct { |
Igor Sysoev | 10a543a | 2004-03-16 07:10:12 +0000 | [diff] [blame] | 10 | size_t len; |
| 11 | u_char *data; |
Igor Sysoev | a0bb31f | 2002-12-02 16:09:40 +0000 | [diff] [blame] | 12 | } ngx_str_t; |
| 13 | |
Igor Sysoev | 6de5c2c | 2002-08-06 16:39:45 +0000 | [diff] [blame] | 14 | |
Igor Sysoev | 10a543a | 2004-03-16 07:10:12 +0000 | [diff] [blame] | 15 | #define ngx_string(str) { sizeof(str) - 1, (u_char *) str } |
Igor Sysoev | b738757 | 2003-03-11 20:38:13 +0000 | [diff] [blame] | 16 | #define ngx_null_string { 0, NULL } |
Igor Sysoev | 960ffa4 | 2002-12-26 07:24:21 +0000 | [diff] [blame] | 17 | |
| 18 | |
| 19 | #if (WIN32) |
Igor Sysoev | 42feecb | 2002-12-15 06:25:09 +0000 | [diff] [blame] | 20 | |
Igor Sysoev | da85f7f | 2004-03-16 21:26:01 +0000 | [diff] [blame^] | 21 | #define ngx_strncasecmp(s1, s2, n) \ |
| 22 | strnicmp((const char *) s1, (const char *) s2, n) |
| 23 | #define ngx_strcasecmp(s1, s2) \ |
| 24 | stricmp((const char *) s1, (const char *) s2) |
Igor Sysoev | ad22e01 | 2003-01-15 07:02:27 +0000 | [diff] [blame] | 25 | |
Igor Sysoev | 6de5c2c | 2002-08-06 16:39:45 +0000 | [diff] [blame] | 26 | #define ngx_snprintf _snprintf |
| 27 | #define ngx_vsnprintf _vsnprintf |
| 28 | |
| 29 | #else |
| 30 | |
Igor Sysoev | 10a543a | 2004-03-16 07:10:12 +0000 | [diff] [blame] | 31 | #define ngx_strncasecmp(s1, s2, n) \ |
| 32 | strncasecmp((const char *) s1, (const char *) s2, n) |
| 33 | #define ngx_strcasecmp(s1, s2) \ |
| 34 | strcasecmp((const char *) s1, (const char *) s2) |
Igor Sysoev | ad22e01 | 2003-01-15 07:02:27 +0000 | [diff] [blame] | 35 | |
Igor Sysoev | 6de5c2c | 2002-08-06 16:39:45 +0000 | [diff] [blame] | 36 | #define ngx_snprintf snprintf |
| 37 | #define ngx_vsnprintf vsnprintf |
| 38 | |
| 39 | #endif |
| 40 | |
Igor Sysoev | 3646a16 | 2004-03-14 20:46:25 +0000 | [diff] [blame] | 41 | |
Igor Sysoev | 10a543a | 2004-03-16 07:10:12 +0000 | [diff] [blame] | 42 | #define ngx_strncmp(s1, s2, n) \ |
| 43 | strncmp((const char *) s1, (const char *) s2, n) |
Igor Sysoev | 3646a16 | 2004-03-14 20:46:25 +0000 | [diff] [blame] | 44 | |
| 45 | /* msvc and icc compile strcmp() to inline loop */ |
Igor Sysoev | 10a543a | 2004-03-16 07:10:12 +0000 | [diff] [blame] | 46 | #define ngx_strcmp(s1, s2) strcmp((const char *) s1, (const char *) s2) |
Igor Sysoev | 3646a16 | 2004-03-14 20:46:25 +0000 | [diff] [blame] | 47 | |
Igor Sysoev | 10a543a | 2004-03-16 07:10:12 +0000 | [diff] [blame] | 48 | #define ngx_strstr(s1, s2) strstr((const char *) s1, (const char *) s2) |
| 49 | #define ngx_strlen(s) strlen((const char *) s) |
Igor Sysoev | 3646a16 | 2004-03-14 20:46:25 +0000 | [diff] [blame] | 50 | |
Igor Sysoev | 6abfde6 | 2003-07-01 15:00:03 +0000 | [diff] [blame] | 51 | /* |
| 52 | * msvc and icc compile memset() to inline "rep stos" |
| 53 | * while ZeroMemory and bzero are calls. |
Igor Sysoev | 3646a16 | 2004-03-14 20:46:25 +0000 | [diff] [blame] | 54 | * |
| 55 | * icc can also inline mov's of a zeroed register for small blocks. |
Igor Sysoev | 6abfde6 | 2003-07-01 15:00:03 +0000 | [diff] [blame] | 56 | */ |
Igor Sysoev | 9d9f58f | 2003-07-02 18:51:41 +0000 | [diff] [blame] | 57 | #define ngx_memzero(buf, n) memset(buf, 0, n) |
Igor Sysoev | 6abfde6 | 2003-07-01 15:00:03 +0000 | [diff] [blame] | 58 | |
| 59 | /* msvc and icc compile memcpy() to inline "rep movs" */ |
Igor Sysoev | 6de5c2c | 2002-08-06 16:39:45 +0000 | [diff] [blame] | 60 | #define ngx_memcpy(dst, src, n) memcpy(dst, src, n) |
Igor Sysoev | 10a543a | 2004-03-16 07:10:12 +0000 | [diff] [blame] | 61 | #define ngx_cpymem(dst, src, n) ((u_char *) memcpy(dst, src, n)) + n |
Igor Sysoev | 6de5c2c | 2002-08-06 16:39:45 +0000 | [diff] [blame] | 62 | |
Igor Sysoev | 6abfde6 | 2003-07-01 15:00:03 +0000 | [diff] [blame] | 63 | /* msvc and icc compile memcmp() to inline loop */ |
| 64 | #define ngx_memcmp memcmp |
| 65 | |
Igor Sysoev | 10a543a | 2004-03-16 07:10:12 +0000 | [diff] [blame] | 66 | u_char *ngx_cpystrn(u_char *dst, u_char *src, size_t n); |
| 67 | ngx_int_t ngx_rstrncmp(u_char *s1, u_char *s2, size_t n); |
| 68 | ngx_int_t ngx_atoi(u_char *line, size_t n); |
Igor Sysoev | 6de5c2c | 2002-08-06 16:39:45 +0000 | [diff] [blame] | 69 | |
Igor Sysoev | 10a543a | 2004-03-16 07:10:12 +0000 | [diff] [blame] | 70 | void ngx_md5_text(u_char *text, u_char *md5); |
Igor Sysoev | 9cc1ace | 2003-11-04 22:12:39 +0000 | [diff] [blame] | 71 | |
| 72 | |
Igor Sysoev | 1393325 | 2003-05-29 13:02:09 +0000 | [diff] [blame] | 73 | #define ngx_qsort qsort |
Igor Sysoev | 6de5c2c | 2002-08-06 16:39:45 +0000 | [diff] [blame] | 74 | |
Igor Sysoev | 1393325 | 2003-05-29 13:02:09 +0000 | [diff] [blame] | 75 | |
| 76 | #define ngx_value_helper(n) #n |
| 77 | #define ngx_value(n) ngx_value_helper(n) |
Igor Sysoev | a983011 | 2003-05-19 16:39:14 +0000 | [diff] [blame] | 78 | |
| 79 | |
Igor Sysoev | 6de5c2c | 2002-08-06 16:39:45 +0000 | [diff] [blame] | 80 | #endif /* _NGX_STRING_H_INCLUDED_ */ |