Return to ngx_http_variables.h CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / nginx / src / http |
1.1 ! misho 1: ! 2: /* ! 3: * Copyright (C) Igor Sysoev ! 4: * Copyright (C) Nginx, Inc. ! 5: */ ! 6: ! 7: ! 8: #ifndef _NGX_HTTP_VARIABLES_H_INCLUDED_ ! 9: #define _NGX_HTTP_VARIABLES_H_INCLUDED_ ! 10: ! 11: ! 12: #include <ngx_config.h> ! 13: #include <ngx_core.h> ! 14: #include <ngx_http.h> ! 15: ! 16: ! 17: typedef ngx_variable_value_t ngx_http_variable_value_t; ! 18: ! 19: #define ngx_http_variable(v) { sizeof(v) - 1, 1, 0, 0, 0, (u_char *) v } ! 20: ! 21: typedef struct ngx_http_variable_s ngx_http_variable_t; ! 22: ! 23: typedef void (*ngx_http_set_variable_pt) (ngx_http_request_t *r, ! 24: ngx_http_variable_value_t *v, uintptr_t data); ! 25: typedef ngx_int_t (*ngx_http_get_variable_pt) (ngx_http_request_t *r, ! 26: ngx_http_variable_value_t *v, uintptr_t data); ! 27: ! 28: ! 29: #define NGX_HTTP_VAR_CHANGEABLE 1 ! 30: #define NGX_HTTP_VAR_NOCACHEABLE 2 ! 31: #define NGX_HTTP_VAR_INDEXED 4 ! 32: #define NGX_HTTP_VAR_NOHASH 8 ! 33: ! 34: ! 35: struct ngx_http_variable_s { ! 36: ngx_str_t name; /* must be first to build the hash */ ! 37: ngx_http_set_variable_pt set_handler; ! 38: ngx_http_get_variable_pt get_handler; ! 39: uintptr_t data; ! 40: ngx_uint_t flags; ! 41: ngx_uint_t index; ! 42: }; ! 43: ! 44: ! 45: ngx_http_variable_t *ngx_http_add_variable(ngx_conf_t *cf, ngx_str_t *name, ! 46: ngx_uint_t flags); ! 47: ngx_int_t ngx_http_get_variable_index(ngx_conf_t *cf, ngx_str_t *name); ! 48: ngx_http_variable_value_t *ngx_http_get_indexed_variable(ngx_http_request_t *r, ! 49: ngx_uint_t index); ! 50: ngx_http_variable_value_t *ngx_http_get_flushed_variable(ngx_http_request_t *r, ! 51: ngx_uint_t index); ! 52: ! 53: ngx_http_variable_value_t *ngx_http_get_variable(ngx_http_request_t *r, ! 54: ngx_str_t *name, ngx_uint_t key); ! 55: ! 56: ngx_int_t ngx_http_variable_unknown_header(ngx_http_variable_value_t *v, ! 57: ngx_str_t *var, ngx_list_part_t *part, size_t prefix); ! 58: ! 59: ! 60: #if (NGX_PCRE) ! 61: ! 62: typedef struct { ! 63: ngx_uint_t capture; ! 64: ngx_int_t index; ! 65: } ngx_http_regex_variable_t; ! 66: ! 67: ! 68: typedef struct { ! 69: ngx_regex_t *regex; ! 70: ngx_uint_t ncaptures; ! 71: ngx_http_regex_variable_t *variables; ! 72: ngx_uint_t nvariables; ! 73: ngx_str_t name; ! 74: } ngx_http_regex_t; ! 75: ! 76: ! 77: typedef struct { ! 78: ngx_http_regex_t *regex; ! 79: void *value; ! 80: } ngx_http_map_regex_t; ! 81: ! 82: ! 83: ngx_http_regex_t *ngx_http_regex_compile(ngx_conf_t *cf, ! 84: ngx_regex_compile_t *rc); ! 85: ngx_int_t ngx_http_regex_exec(ngx_http_request_t *r, ngx_http_regex_t *re, ! 86: ngx_str_t *s); ! 87: ! 88: #endif ! 89: ! 90: ! 91: typedef struct { ! 92: ngx_hash_combined_t hash; ! 93: #if (NGX_PCRE) ! 94: ngx_http_map_regex_t *regex; ! 95: ngx_uint_t nregex; ! 96: #endif ! 97: } ngx_http_map_t; ! 98: ! 99: ! 100: void *ngx_http_map_find(ngx_http_request_t *r, ngx_http_map_t *map, ! 101: ngx_str_t *match); ! 102: ! 103: ! 104: ngx_int_t ngx_http_variables_add_core_vars(ngx_conf_t *cf); ! 105: ngx_int_t ngx_http_variables_init_vars(ngx_conf_t *cf); ! 106: ! 107: ! 108: extern ngx_http_variable_value_t ngx_http_variable_null_value; ! 109: extern ngx_http_variable_value_t ngx_http_variable_true_value; ! 110: ! 111: ! 112: #endif /* _NGX_HTTP_VARIABLES_H_INCLUDED_ */