Return to ngx_file.h CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / nginx / src / core |
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_ */