Annotation of embedaddon/nginx/src/http/ngx_http_script.h, revision 1.1
1.1 ! misho 1:
! 2: /*
! 3: * Copyright (C) Igor Sysoev
! 4: * Copyright (C) Nginx, Inc.
! 5: */
! 6:
! 7:
! 8: #ifndef _NGX_HTTP_SCRIPT_H_INCLUDED_
! 9: #define _NGX_HTTP_SCRIPT_H_INCLUDED_
! 10:
! 11:
! 12: #include <ngx_config.h>
! 13: #include <ngx_core.h>
! 14: #include <ngx_http.h>
! 15:
! 16:
! 17: typedef struct {
! 18: u_char *ip;
! 19: u_char *pos;
! 20: ngx_http_variable_value_t *sp;
! 21:
! 22: ngx_str_t buf;
! 23: ngx_str_t line;
! 24:
! 25: /* the start of the rewritten arguments */
! 26: u_char *args;
! 27:
! 28: unsigned flushed:1;
! 29: unsigned skip:1;
! 30: unsigned quote:1;
! 31: unsigned is_args:1;
! 32: unsigned log:1;
! 33:
! 34: ngx_int_t status;
! 35: ngx_http_request_t *request;
! 36: } ngx_http_script_engine_t;
! 37:
! 38:
! 39: typedef struct {
! 40: ngx_conf_t *cf;
! 41: ngx_str_t *source;
! 42:
! 43: ngx_array_t **flushes;
! 44: ngx_array_t **lengths;
! 45: ngx_array_t **values;
! 46:
! 47: ngx_uint_t variables;
! 48: ngx_uint_t ncaptures;
! 49: ngx_uint_t captures_mask;
! 50: ngx_uint_t size;
! 51:
! 52: void *main;
! 53:
! 54: unsigned compile_args:1;
! 55: unsigned complete_lengths:1;
! 56: unsigned complete_values:1;
! 57: unsigned zero:1;
! 58: unsigned conf_prefix:1;
! 59: unsigned root_prefix:1;
! 60:
! 61: unsigned dup_capture:1;
! 62: unsigned args:1;
! 63: } ngx_http_script_compile_t;
! 64:
! 65:
! 66: typedef struct {
! 67: ngx_str_t value;
! 68: ngx_uint_t *flushes;
! 69: void *lengths;
! 70: void *values;
! 71: } ngx_http_complex_value_t;
! 72:
! 73:
! 74: typedef struct {
! 75: ngx_conf_t *cf;
! 76: ngx_str_t *value;
! 77: ngx_http_complex_value_t *complex_value;
! 78:
! 79: unsigned zero:1;
! 80: unsigned conf_prefix:1;
! 81: unsigned root_prefix:1;
! 82: } ngx_http_compile_complex_value_t;
! 83:
! 84:
! 85: typedef void (*ngx_http_script_code_pt) (ngx_http_script_engine_t *e);
! 86: typedef size_t (*ngx_http_script_len_code_pt) (ngx_http_script_engine_t *e);
! 87:
! 88:
! 89: typedef struct {
! 90: ngx_http_script_code_pt code;
! 91: uintptr_t len;
! 92: } ngx_http_script_copy_code_t;
! 93:
! 94:
! 95: typedef struct {
! 96: ngx_http_script_code_pt code;
! 97: uintptr_t index;
! 98: } ngx_http_script_var_code_t;
! 99:
! 100:
! 101: typedef struct {
! 102: ngx_http_script_code_pt code;
! 103: ngx_http_set_variable_pt handler;
! 104: uintptr_t data;
! 105: } ngx_http_script_var_handler_code_t;
! 106:
! 107:
! 108: typedef struct {
! 109: ngx_http_script_code_pt code;
! 110: uintptr_t n;
! 111: } ngx_http_script_copy_capture_code_t;
! 112:
! 113:
! 114: #if (NGX_PCRE)
! 115:
! 116: typedef struct {
! 117: ngx_http_script_code_pt code;
! 118: ngx_http_regex_t *regex;
! 119: ngx_array_t *lengths;
! 120: uintptr_t size;
! 121: uintptr_t status;
! 122: uintptr_t next;
! 123:
! 124: uintptr_t test:1;
! 125: uintptr_t negative_test:1;
! 126: uintptr_t uri:1;
! 127: uintptr_t args:1;
! 128:
! 129: /* add the r->args to the new arguments */
! 130: uintptr_t add_args:1;
! 131:
! 132: uintptr_t redirect:1;
! 133: uintptr_t break_cycle:1;
! 134:
! 135: ngx_str_t name;
! 136: } ngx_http_script_regex_code_t;
! 137:
! 138:
! 139: typedef struct {
! 140: ngx_http_script_code_pt code;
! 141:
! 142: uintptr_t uri:1;
! 143: uintptr_t args:1;
! 144:
! 145: /* add the r->args to the new arguments */
! 146: uintptr_t add_args:1;
! 147:
! 148: uintptr_t redirect:1;
! 149: } ngx_http_script_regex_end_code_t;
! 150:
! 151: #endif
! 152:
! 153:
! 154: typedef struct {
! 155: ngx_http_script_code_pt code;
! 156: uintptr_t conf_prefix;
! 157: } ngx_http_script_full_name_code_t;
! 158:
! 159:
! 160: typedef struct {
! 161: ngx_http_script_code_pt code;
! 162: uintptr_t status;
! 163: ngx_http_complex_value_t text;
! 164: } ngx_http_script_return_code_t;
! 165:
! 166:
! 167: typedef enum {
! 168: ngx_http_script_file_plain = 0,
! 169: ngx_http_script_file_not_plain,
! 170: ngx_http_script_file_dir,
! 171: ngx_http_script_file_not_dir,
! 172: ngx_http_script_file_exists,
! 173: ngx_http_script_file_not_exists,
! 174: ngx_http_script_file_exec,
! 175: ngx_http_script_file_not_exec
! 176: } ngx_http_script_file_op_e;
! 177:
! 178:
! 179: typedef struct {
! 180: ngx_http_script_code_pt code;
! 181: uintptr_t op;
! 182: } ngx_http_script_file_code_t;
! 183:
! 184:
! 185: typedef struct {
! 186: ngx_http_script_code_pt code;
! 187: uintptr_t next;
! 188: void **loc_conf;
! 189: } ngx_http_script_if_code_t;
! 190:
! 191:
! 192: typedef struct {
! 193: ngx_http_script_code_pt code;
! 194: ngx_array_t *lengths;
! 195: } ngx_http_script_complex_value_code_t;
! 196:
! 197:
! 198: typedef struct {
! 199: ngx_http_script_code_pt code;
! 200: uintptr_t value;
! 201: uintptr_t text_len;
! 202: uintptr_t text_data;
! 203: } ngx_http_script_value_code_t;
! 204:
! 205:
! 206: void ngx_http_script_flush_complex_value(ngx_http_request_t *r,
! 207: ngx_http_complex_value_t *val);
! 208: ngx_int_t ngx_http_complex_value(ngx_http_request_t *r,
! 209: ngx_http_complex_value_t *val, ngx_str_t *value);
! 210: ngx_int_t ngx_http_compile_complex_value(ngx_http_compile_complex_value_t *ccv);
! 211: char *ngx_http_set_complex_value_slot(ngx_conf_t *cf, ngx_command_t *cmd,
! 212: void *conf);
! 213:
! 214:
! 215: ngx_int_t ngx_http_test_predicates(ngx_http_request_t *r,
! 216: ngx_array_t *predicates);
! 217: char *ngx_http_set_predicate_slot(ngx_conf_t *cf, ngx_command_t *cmd,
! 218: void *conf);
! 219:
! 220: ngx_uint_t ngx_http_script_variables_count(ngx_str_t *value);
! 221: ngx_int_t ngx_http_script_compile(ngx_http_script_compile_t *sc);
! 222: u_char *ngx_http_script_run(ngx_http_request_t *r, ngx_str_t *value,
! 223: void *code_lengths, size_t reserved, void *code_values);
! 224: void ngx_http_script_flush_no_cacheable_variables(ngx_http_request_t *r,
! 225: ngx_array_t *indices);
! 226:
! 227: void *ngx_http_script_start_code(ngx_pool_t *pool, ngx_array_t **codes,
! 228: size_t size);
! 229: void *ngx_http_script_add_code(ngx_array_t *codes, size_t size, void *code);
! 230:
! 231: size_t ngx_http_script_copy_len_code(ngx_http_script_engine_t *e);
! 232: void ngx_http_script_copy_code(ngx_http_script_engine_t *e);
! 233: size_t ngx_http_script_copy_var_len_code(ngx_http_script_engine_t *e);
! 234: void ngx_http_script_copy_var_code(ngx_http_script_engine_t *e);
! 235: size_t ngx_http_script_copy_capture_len_code(ngx_http_script_engine_t *e);
! 236: void ngx_http_script_copy_capture_code(ngx_http_script_engine_t *e);
! 237: size_t ngx_http_script_mark_args_code(ngx_http_script_engine_t *e);
! 238: void ngx_http_script_start_args_code(ngx_http_script_engine_t *e);
! 239: #if (NGX_PCRE)
! 240: void ngx_http_script_regex_start_code(ngx_http_script_engine_t *e);
! 241: void ngx_http_script_regex_end_code(ngx_http_script_engine_t *e);
! 242: #endif
! 243: void ngx_http_script_return_code(ngx_http_script_engine_t *e);
! 244: void ngx_http_script_break_code(ngx_http_script_engine_t *e);
! 245: void ngx_http_script_if_code(ngx_http_script_engine_t *e);
! 246: void ngx_http_script_equal_code(ngx_http_script_engine_t *e);
! 247: void ngx_http_script_not_equal_code(ngx_http_script_engine_t *e);
! 248: void ngx_http_script_file_code(ngx_http_script_engine_t *e);
! 249: void ngx_http_script_complex_value_code(ngx_http_script_engine_t *e);
! 250: void ngx_http_script_value_code(ngx_http_script_engine_t *e);
! 251: void ngx_http_script_set_var_code(ngx_http_script_engine_t *e);
! 252: void ngx_http_script_var_set_handler_code(ngx_http_script_engine_t *e);
! 253: void ngx_http_script_var_code(ngx_http_script_engine_t *e);
! 254: void ngx_http_script_nop_code(ngx_http_script_engine_t *e);
! 255:
! 256:
! 257: #endif /* _NGX_HTTP_SCRIPT_H_INCLUDED_ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>