Annotation of embedaddon/nginx/src/core/ngx_file.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_FILE_H_INCLUDED_
! 9: #define _NGX_FILE_H_INCLUDED_
! 10:
! 11:
! 12: #include <ngx_config.h>
! 13: #include <ngx_core.h>
! 14:
! 15:
! 16: struct ngx_file_s {
! 17: ngx_fd_t fd;
! 18: ngx_str_t name;
! 19: ngx_file_info_t info;
! 20:
! 21: off_t offset;
! 22: off_t sys_offset;
! 23:
! 24: ngx_log_t *log;
! 25:
! 26: #if (NGX_HAVE_FILE_AIO)
! 27: ngx_event_aio_t *aio;
! 28: #endif
! 29:
! 30: unsigned valid_info:1;
! 31: unsigned directio:1;
! 32: };
! 33:
! 34:
! 35: #define NGX_MAX_PATH_LEVEL 3
! 36:
! 37:
! 38: typedef time_t (*ngx_path_manager_pt) (void *data);
! 39: typedef void (*ngx_path_loader_pt) (void *data);
! 40:
! 41:
! 42: typedef struct {
! 43: ngx_str_t name;
! 44: size_t len;
! 45: size_t level[3];
! 46:
! 47: ngx_path_manager_pt manager;
! 48: ngx_path_loader_pt loader;
! 49: void *data;
! 50:
! 51: u_char *conf_file;
! 52: ngx_uint_t line;
! 53: } ngx_path_t;
! 54:
! 55:
! 56: typedef struct {
! 57: ngx_str_t name;
! 58: size_t level[3];
! 59: } ngx_path_init_t;
! 60:
! 61:
! 62: typedef struct {
! 63: ngx_file_t file;
! 64: off_t offset;
! 65: ngx_path_t *path;
! 66: ngx_pool_t *pool;
! 67: char *warn;
! 68:
! 69: ngx_uint_t access;
! 70:
! 71: unsigned log_level:8;
! 72: unsigned persistent:1;
! 73: unsigned clean:1;
! 74: } ngx_temp_file_t;
! 75:
! 76:
! 77: typedef struct {
! 78: ngx_uint_t access;
! 79: ngx_uint_t path_access;
! 80: time_t time;
! 81: ngx_fd_t fd;
! 82:
! 83: unsigned create_path:1;
! 84: unsigned delete_file:1;
! 85:
! 86: ngx_log_t *log;
! 87: } ngx_ext_rename_file_t;
! 88:
! 89:
! 90: typedef struct {
! 91: off_t size;
! 92: size_t buf_size;
! 93:
! 94: ngx_uint_t access;
! 95: time_t time;
! 96:
! 97: ngx_log_t *log;
! 98: } ngx_copy_file_t;
! 99:
! 100:
! 101: typedef struct ngx_tree_ctx_s ngx_tree_ctx_t;
! 102:
! 103: typedef ngx_int_t (*ngx_tree_init_handler_pt) (void *ctx, void *prev);
! 104: typedef ngx_int_t (*ngx_tree_handler_pt) (ngx_tree_ctx_t *ctx, ngx_str_t *name);
! 105:
! 106: struct ngx_tree_ctx_s {
! 107: off_t size;
! 108: off_t fs_size;
! 109: ngx_uint_t access;
! 110: time_t mtime;
! 111:
! 112: ngx_tree_init_handler_pt init_handler;
! 113: ngx_tree_handler_pt file_handler;
! 114: ngx_tree_handler_pt pre_tree_handler;
! 115: ngx_tree_handler_pt post_tree_handler;
! 116: ngx_tree_handler_pt spec_handler;
! 117:
! 118: void *data;
! 119: size_t alloc;
! 120:
! 121: ngx_log_t *log;
! 122: };
! 123:
! 124:
! 125: ssize_t ngx_write_chain_to_temp_file(ngx_temp_file_t *tf, ngx_chain_t *chain);
! 126: ngx_int_t ngx_create_temp_file(ngx_file_t *file, ngx_path_t *path,
! 127: ngx_pool_t *pool, ngx_uint_t persistent, ngx_uint_t clean,
! 128: ngx_uint_t access);
! 129: void ngx_create_hashed_filename(ngx_path_t *path, u_char *file, size_t len);
! 130: ngx_int_t ngx_create_path(ngx_file_t *file, ngx_path_t *path);
! 131: ngx_err_t ngx_create_full_path(u_char *dir, ngx_uint_t access);
! 132: ngx_int_t ngx_add_path(ngx_conf_t *cf, ngx_path_t **slot);
! 133: ngx_int_t ngx_create_paths(ngx_cycle_t *cycle, ngx_uid_t user);
! 134: ngx_int_t ngx_ext_rename_file(ngx_str_t *src, ngx_str_t *to,
! 135: ngx_ext_rename_file_t *ext);
! 136: ngx_int_t ngx_copy_file(u_char *from, u_char *to, ngx_copy_file_t *cf);
! 137: ngx_int_t ngx_walk_tree(ngx_tree_ctx_t *ctx, ngx_str_t *tree);
! 138:
! 139: ngx_atomic_uint_t ngx_next_temp_number(ngx_uint_t collision);
! 140:
! 141: char *ngx_conf_set_path_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
! 142: char *ngx_conf_merge_path_value(ngx_conf_t *cf, ngx_path_t **path,
! 143: ngx_path_t *prev, ngx_path_init_t *init);
! 144: char *ngx_conf_set_access_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
! 145:
! 146:
! 147: extern ngx_atomic_t *ngx_temp_number;
! 148: extern ngx_atomic_int_t ngx_random_number;
! 149:
! 150:
! 151: #endif /* _NGX_FILE_H_INCLUDED_ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>