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 + -
显示快捷键?