Annotation of embedaddon/nginx/src/core/ngx_conf_file.h, revision 1.1.1.1

1.1       misho       1: 
                      2: /*
                      3:  * Copyright (C) Igor Sysoev
                      4:  * Copyright (C) Nginx, Inc.
                      5:  */
                      6: 
                      7: 
                      8: #ifndef _NGX_HTTP_CONF_FILE_H_INCLUDED_
                      9: #define _NGX_HTTP_CONF_FILE_H_INCLUDED_
                     10: 
                     11: 
                     12: #include <ngx_config.h>
                     13: #include <ngx_core.h>
                     14: 
                     15: 
                     16: /*
                     17:  *        AAAA  number of arguments
                     18:  *      FF      command flags
                     19:  *    TT        command type, i.e. HTTP "location" or "server" command
                     20:  */
                     21: 
                     22: #define NGX_CONF_NOARGS      0x00000001
                     23: #define NGX_CONF_TAKE1       0x00000002
                     24: #define NGX_CONF_TAKE2       0x00000004
                     25: #define NGX_CONF_TAKE3       0x00000008
                     26: #define NGX_CONF_TAKE4       0x00000010
                     27: #define NGX_CONF_TAKE5       0x00000020
                     28: #define NGX_CONF_TAKE6       0x00000040
                     29: #define NGX_CONF_TAKE7       0x00000080
                     30: 
                     31: #define NGX_CONF_MAX_ARGS    8
                     32: 
                     33: #define NGX_CONF_TAKE12      (NGX_CONF_TAKE1|NGX_CONF_TAKE2)
                     34: #define NGX_CONF_TAKE13      (NGX_CONF_TAKE1|NGX_CONF_TAKE3)
                     35: 
                     36: #define NGX_CONF_TAKE23      (NGX_CONF_TAKE2|NGX_CONF_TAKE3)
                     37: 
                     38: #define NGX_CONF_TAKE123     (NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3)
                     39: #define NGX_CONF_TAKE1234    (NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3   \
                     40:                               |NGX_CONF_TAKE4)
                     41: 
                     42: #define NGX_CONF_ARGS_NUMBER 0x000000ff
                     43: #define NGX_CONF_BLOCK       0x00000100
                     44: #define NGX_CONF_FLAG        0x00000200
                     45: #define NGX_CONF_ANY         0x00000400
                     46: #define NGX_CONF_1MORE       0x00000800
                     47: #define NGX_CONF_2MORE       0x00001000
                     48: #define NGX_CONF_MULTI       0x00000000  /* compatibility */
                     49: 
                     50: #define NGX_DIRECT_CONF      0x00010000
                     51: 
                     52: #define NGX_MAIN_CONF        0x01000000
                     53: #define NGX_ANY_CONF         0x0F000000
                     54: 
                     55: 
                     56: 
                     57: #define NGX_CONF_UNSET       -1
                     58: #define NGX_CONF_UNSET_UINT  (ngx_uint_t) -1
                     59: #define NGX_CONF_UNSET_PTR   (void *) -1
                     60: #define NGX_CONF_UNSET_SIZE  (size_t) -1
                     61: #define NGX_CONF_UNSET_MSEC  (ngx_msec_t) -1
                     62: 
                     63: 
                     64: #define NGX_CONF_OK          NULL
                     65: #define NGX_CONF_ERROR       (void *) -1
                     66: 
                     67: #define NGX_CONF_BLOCK_START 1
                     68: #define NGX_CONF_BLOCK_DONE  2
                     69: #define NGX_CONF_FILE_DONE   3
                     70: 
                     71: #define NGX_CORE_MODULE      0x45524F43  /* "CORE" */
                     72: #define NGX_CONF_MODULE      0x464E4F43  /* "CONF" */
                     73: 
                     74: 
                     75: #define NGX_MAX_CONF_ERRSTR  1024
                     76: 
                     77: 
                     78: struct ngx_command_s {
                     79:     ngx_str_t             name;
                     80:     ngx_uint_t            type;
                     81:     char               *(*set)(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
                     82:     ngx_uint_t            conf;
                     83:     ngx_uint_t            offset;
                     84:     void                 *post;
                     85: };
                     86: 
                     87: #define ngx_null_command  { ngx_null_string, 0, NULL, 0, 0, NULL }
                     88: 
                     89: 
                     90: struct ngx_open_file_s {
                     91:     ngx_fd_t              fd;
                     92:     ngx_str_t             name;
                     93: 
                     94:     void                (*flush)(ngx_open_file_t *file, ngx_log_t *log);
                     95:     void                 *data;
                     96: };
                     97: 
                     98: 
                     99: #define NGX_MODULE_V1          0, 0, 0, 0, 0, 0, 1
                    100: #define NGX_MODULE_V1_PADDING  0, 0, 0, 0, 0, 0, 0, 0
                    101: 
                    102: struct ngx_module_s {
                    103:     ngx_uint_t            ctx_index;
                    104:     ngx_uint_t            index;
                    105: 
                    106:     ngx_uint_t            spare0;
                    107:     ngx_uint_t            spare1;
                    108:     ngx_uint_t            spare2;
                    109:     ngx_uint_t            spare3;
                    110: 
                    111:     ngx_uint_t            version;
                    112: 
                    113:     void                 *ctx;
                    114:     ngx_command_t        *commands;
                    115:     ngx_uint_t            type;
                    116: 
                    117:     ngx_int_t           (*init_master)(ngx_log_t *log);
                    118: 
                    119:     ngx_int_t           (*init_module)(ngx_cycle_t *cycle);
                    120: 
                    121:     ngx_int_t           (*init_process)(ngx_cycle_t *cycle);
                    122:     ngx_int_t           (*init_thread)(ngx_cycle_t *cycle);
                    123:     void                (*exit_thread)(ngx_cycle_t *cycle);
                    124:     void                (*exit_process)(ngx_cycle_t *cycle);
                    125: 
                    126:     void                (*exit_master)(ngx_cycle_t *cycle);
                    127: 
                    128:     uintptr_t             spare_hook0;
                    129:     uintptr_t             spare_hook1;
                    130:     uintptr_t             spare_hook2;
                    131:     uintptr_t             spare_hook3;
                    132:     uintptr_t             spare_hook4;
                    133:     uintptr_t             spare_hook5;
                    134:     uintptr_t             spare_hook6;
                    135:     uintptr_t             spare_hook7;
                    136: };
                    137: 
                    138: 
                    139: typedef struct {
                    140:     ngx_str_t             name;
                    141:     void               *(*create_conf)(ngx_cycle_t *cycle);
                    142:     char               *(*init_conf)(ngx_cycle_t *cycle, void *conf);
                    143: } ngx_core_module_t;
                    144: 
                    145: 
                    146: typedef struct {
                    147:     ngx_file_t            file;
                    148:     ngx_buf_t            *buffer;
                    149:     ngx_uint_t            line;
                    150: } ngx_conf_file_t;
                    151: 
                    152: 
                    153: typedef char *(*ngx_conf_handler_pt)(ngx_conf_t *cf,
                    154:     ngx_command_t *dummy, void *conf);
                    155: 
                    156: 
                    157: struct ngx_conf_s {
                    158:     char                 *name;
                    159:     ngx_array_t          *args;
                    160: 
                    161:     ngx_cycle_t          *cycle;
                    162:     ngx_pool_t           *pool;
                    163:     ngx_pool_t           *temp_pool;
                    164:     ngx_conf_file_t      *conf_file;
                    165:     ngx_log_t            *log;
                    166: 
                    167:     void                 *ctx;
                    168:     ngx_uint_t            module_type;
                    169:     ngx_uint_t            cmd_type;
                    170: 
                    171:     ngx_conf_handler_pt   handler;
                    172:     char                 *handler_conf;
                    173: };
                    174: 
                    175: 
                    176: typedef char *(*ngx_conf_post_handler_pt) (ngx_conf_t *cf,
                    177:     void *data, void *conf);
                    178: 
                    179: typedef struct {
                    180:     ngx_conf_post_handler_pt  post_handler;
                    181: } ngx_conf_post_t;
                    182: 
                    183: 
                    184: typedef struct {
                    185:     ngx_conf_post_handler_pt  post_handler;
                    186:     char                     *old_name;
                    187:     char                     *new_name;
                    188: } ngx_conf_deprecated_t;
                    189: 
                    190: 
                    191: typedef struct {
                    192:     ngx_conf_post_handler_pt  post_handler;
                    193:     ngx_int_t                 low;
                    194:     ngx_int_t                 high;
                    195: } ngx_conf_num_bounds_t;
                    196: 
                    197: 
                    198: typedef struct {
                    199:     ngx_str_t                 name;
                    200:     ngx_uint_t                value;
                    201: } ngx_conf_enum_t;
                    202: 
                    203: 
                    204: #define NGX_CONF_BITMASK_SET  1
                    205: 
                    206: typedef struct {
                    207:     ngx_str_t                 name;
                    208:     ngx_uint_t                mask;
                    209: } ngx_conf_bitmask_t;
                    210: 
                    211: 
                    212: 
                    213: char * ngx_conf_deprecated(ngx_conf_t *cf, void *post, void *data);
                    214: char *ngx_conf_check_num_bounds(ngx_conf_t *cf, void *post, void *data);
                    215: 
                    216: 
                    217: #define ngx_get_conf(conf_ctx, module)  conf_ctx[module.index]
                    218: 
                    219: 
                    220: 
                    221: #define ngx_conf_init_value(conf, default)                                   \
                    222:     if (conf == NGX_CONF_UNSET) {                                            \
                    223:         conf = default;                                                      \
                    224:     }
                    225: 
                    226: #define ngx_conf_init_ptr_value(conf, default)                               \
                    227:     if (conf == NGX_CONF_UNSET_PTR) {                                        \
                    228:         conf = default;                                                      \
                    229:     }
                    230: 
                    231: #define ngx_conf_init_uint_value(conf, default)                              \
                    232:     if (conf == NGX_CONF_UNSET_UINT) {                                       \
                    233:         conf = default;                                                      \
                    234:     }
                    235: 
                    236: #define ngx_conf_init_size_value(conf, default)                              \
                    237:     if (conf == NGX_CONF_UNSET_SIZE) {                                       \
                    238:         conf = default;                                                      \
                    239:     }
                    240: 
                    241: #define ngx_conf_init_msec_value(conf, default)                              \
                    242:     if (conf == NGX_CONF_UNSET_MSEC) {                                       \
                    243:         conf = default;                                                      \
                    244:     }
                    245: 
                    246: #define ngx_conf_merge_value(conf, prev, default)                            \
                    247:     if (conf == NGX_CONF_UNSET) {                                            \
                    248:         conf = (prev == NGX_CONF_UNSET) ? default : prev;                    \
                    249:     }
                    250: 
                    251: #define ngx_conf_merge_ptr_value(conf, prev, default)                        \
                    252:     if (conf == NGX_CONF_UNSET_PTR) {                                        \
                    253:         conf = (prev == NGX_CONF_UNSET_PTR) ? default : prev;                \
                    254:     }
                    255: 
                    256: #define ngx_conf_merge_uint_value(conf, prev, default)                       \
                    257:     if (conf == NGX_CONF_UNSET_UINT) {                                       \
                    258:         conf = (prev == NGX_CONF_UNSET_UINT) ? default : prev;               \
                    259:     }
                    260: 
                    261: #define ngx_conf_merge_msec_value(conf, prev, default)                       \
                    262:     if (conf == NGX_CONF_UNSET_MSEC) {                                       \
                    263:         conf = (prev == NGX_CONF_UNSET_MSEC) ? default : prev;               \
                    264:     }
                    265: 
                    266: #define ngx_conf_merge_sec_value(conf, prev, default)                        \
                    267:     if (conf == NGX_CONF_UNSET) {                                            \
                    268:         conf = (prev == NGX_CONF_UNSET) ? default : prev;                    \
                    269:     }
                    270: 
                    271: #define ngx_conf_merge_size_value(conf, prev, default)                       \
                    272:     if (conf == NGX_CONF_UNSET_SIZE) {                                       \
                    273:         conf = (prev == NGX_CONF_UNSET_SIZE) ? default : prev;               \
                    274:     }
                    275: 
                    276: #define ngx_conf_merge_off_value(conf, prev, default)                        \
                    277:     if (conf == NGX_CONF_UNSET) {                                            \
                    278:         conf = (prev == NGX_CONF_UNSET) ? default : prev;                    \
                    279:     }
                    280: 
                    281: #define ngx_conf_merge_str_value(conf, prev, default)                        \
                    282:     if (conf.data == NULL) {                                                 \
                    283:         if (prev.data) {                                                     \
                    284:             conf.len = prev.len;                                             \
                    285:             conf.data = prev.data;                                           \
                    286:         } else {                                                             \
                    287:             conf.len = sizeof(default) - 1;                                  \
                    288:             conf.data = (u_char *) default;                                  \
                    289:         }                                                                    \
                    290:     }
                    291: 
                    292: #define ngx_conf_merge_bufs_value(conf, prev, default_num, default_size)     \
                    293:     if (conf.num == 0) {                                                     \
                    294:         if (prev.num) {                                                      \
                    295:             conf.num = prev.num;                                             \
                    296:             conf.size = prev.size;                                           \
                    297:         } else {                                                             \
                    298:             conf.num = default_num;                                          \
                    299:             conf.size = default_size;                                        \
                    300:         }                                                                    \
                    301:     }
                    302: 
                    303: #define ngx_conf_merge_bitmask_value(conf, prev, default)                    \
                    304:     if (conf == 0) {                                                         \
                    305:         conf = (prev == 0) ? default : prev;                                 \
                    306:     }
                    307: 
                    308: 
                    309: char *ngx_conf_param(ngx_conf_t *cf);
                    310: char *ngx_conf_parse(ngx_conf_t *cf, ngx_str_t *filename);
                    311: char *ngx_conf_include(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
                    312: 
                    313: 
                    314: ngx_int_t ngx_conf_full_name(ngx_cycle_t *cycle, ngx_str_t *name,
                    315:     ngx_uint_t conf_prefix);
                    316: ngx_open_file_t *ngx_conf_open_file(ngx_cycle_t *cycle, ngx_str_t *name);
                    317: void ngx_cdecl ngx_conf_log_error(ngx_uint_t level, ngx_conf_t *cf,
                    318:     ngx_err_t err, const char *fmt, ...);
                    319: 
                    320: 
                    321: char *ngx_conf_set_flag_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
                    322: char *ngx_conf_set_str_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
                    323: char *ngx_conf_set_str_array_slot(ngx_conf_t *cf, ngx_command_t *cmd,
                    324:     void *conf);
                    325: char *ngx_conf_set_keyval_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
                    326: char *ngx_conf_set_num_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
                    327: char *ngx_conf_set_size_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
                    328: char *ngx_conf_set_off_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
                    329: char *ngx_conf_set_msec_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
                    330: char *ngx_conf_set_sec_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
                    331: char *ngx_conf_set_bufs_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
                    332: char *ngx_conf_set_enum_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
                    333: char *ngx_conf_set_bitmask_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
                    334: 
                    335: 
                    336: extern ngx_uint_t     ngx_max_module;
                    337: extern ngx_module_t  *ngx_modules[];
                    338: 
                    339: 
                    340: #endif /* _NGX_HTTP_CONF_FILE_H_INCLUDED_ */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>