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>