ngx_file.h

来自「Nginx是一个高性能的HTTP和反向代理服务器」· C头文件 代码 · 共 149 行

H
149
字号
/* * Copyright (C) Igor Sysoev */#ifndef _NGX_FILE_H_INCLUDED_#define _NGX_FILE_H_INCLUDED_#include <ngx_config.h>#include <ngx_core.h>typedef struct ngx_path_s  ngx_path_t;#include <ngx_garbage_collector.h>struct ngx_file_s {    ngx_fd_t            fd;    ngx_str_t           name;    ngx_file_info_t     info;    off_t               offset;    off_t               sys_offset;    ngx_log_t          *log;    ngx_uint_t          valid_info;  /* unsigned  valid_info:1; */};#define NGX_MAX_PATH_LEVEL  3struct ngx_path_s {    ngx_str_t           name;    size_t              len;    size_t              level[3];    ngx_gc_handler_pt   cleaner;    u_char             *conf_file;    ngx_uint_t          line;};typedef struct {    ngx_file_t          file;    off_t               offset;    ngx_path_t         *path;    ngx_pool_t         *pool;    char               *warn;    ngx_uint_t          access;    unsigned            log_level:8;    unsigned            persistent:1;    unsigned            clean:1;} ngx_temp_file_t;typedef struct {    ngx_uint_t          access;    time_t              time;    ngx_fd_t            fd;    unsigned            create_path:1;    unsigned            delete_file:1;    ngx_log_t          *log;} ngx_ext_rename_file_t;typedef struct ngx_tree_ctx_s  ngx_tree_ctx_t;typedef ngx_int_t (*ngx_tree_init_handler_pt) (void *ctx, void *prev);typedef ngx_int_t (*ngx_tree_handler_pt) (ngx_tree_ctx_t *ctx, ngx_str_t *name);struct ngx_tree_ctx_s {    off_t                      size;    ngx_uint_t                 access;    time_t                     mtime;    ngx_tree_init_handler_pt   init_handler;    ngx_tree_handler_pt        file_handler;    ngx_tree_handler_pt        pre_tree_handler;    ngx_tree_handler_pt        post_tree_handler;    ngx_tree_handler_pt        spec_handler;    void                      *data;    size_t                     alloc;    ngx_log_t                 *log;};ssize_t ngx_write_chain_to_temp_file(ngx_temp_file_t *tf, ngx_chain_t *chain);ngx_int_t ngx_create_temp_file(ngx_file_t *file, ngx_path_t *path,    ngx_pool_t *pool, ngx_uint_t persistent, ngx_uint_t clean,    ngx_uint_t access);void ngx_create_hashed_filename(ngx_path_t *path, u_char *file, size_t len);ngx_int_t ngx_create_path(ngx_file_t *file, ngx_path_t *path);ngx_err_t ngx_create_full_path(u_char *dir, ngx_uint_t access);ngx_int_t ngx_add_path(ngx_conf_t *cf, ngx_path_t **slot);ngx_int_t ngx_create_pathes(ngx_cycle_t *cycle, ngx_uid_t user);ngx_int_t ngx_ext_rename_file(ngx_str_t *src, ngx_str_t *to,    ngx_ext_rename_file_t *ext);ngx_int_t ngx_walk_tree(ngx_tree_ctx_t *ctx, ngx_str_t *tree);void ngx_init_temp_number(void);ngx_atomic_uint_t ngx_next_temp_number(ngx_uint_t collision);char *ngx_conf_set_path_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);char *ngx_conf_set_access_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);#define ngx_conf_merge_path_value(curr, prev, path, l1, l2, l3, clean, cf)    \    if (curr == NULL) {                                                       \        if (prev == NULL) {                                                   \            curr = ngx_palloc(cf->pool, sizeof(ngx_path_t));                  \            if (curr == NULL) {                                               \                return NGX_CONF_ERROR;                                        \            }                                                                 \                                                                              \            curr->name.len = sizeof(path) - 1;                                \            curr->name.data = (u_char *) path;                                \                                                                              \            if (ngx_conf_full_name(cf->cycle, &curr->name, 0) == NGX_ERROR) { \                return NGX_CONF_ERROR;                                        \            }                                                                 \                                                                              \            curr->level[0] = l1;                                              \            curr->level[1] = l2;                                              \            curr->level[2] = l3;                                              \            curr->len = l1 + l2 + l3 + (l1 ? 1:0) + (l2 ? 1:0) + (l3 ? 1:0);  \            curr->cleaner = clean;                                            \            curr->conf_file = NULL;                                           \                                                                              \            if (ngx_add_path(cf, &curr) == NGX_ERROR) {                       \                return NGX_CONF_ERROR;                                        \            }                                                                 \                                                                              \        } else {                                                              \            curr = prev;                                                      \        }                                                                     \    }#endif /* _NGX_FILE_H_INCLUDED_ */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?