Update and clean Tomato RAF files
[tomato.git] / release / src / router / nginx / src / core / ngx_file.h
blob18abf1423160a7784fe93bfcf87b086157c1526f
2 /*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) Nginx, Inc.
5 */
8 #ifndef _NGX_FILE_H_INCLUDED_
9 #define _NGX_FILE_H_INCLUDED_
12 #include <ngx_config.h>
13 #include <ngx_core.h>
16 struct ngx_file_s {
17 ngx_fd_t fd;
18 ngx_str_t name;
19 ngx_file_info_t info;
21 off_t offset;
22 off_t sys_offset;
24 ngx_log_t *log;
26 #if (NGX_HAVE_FILE_AIO)
27 ngx_event_aio_t *aio;
28 #endif
30 unsigned valid_info:1;
31 unsigned directio:1;
35 #define NGX_MAX_PATH_LEVEL 3
38 typedef time_t (*ngx_path_manager_pt) (void *data);
39 typedef void (*ngx_path_loader_pt) (void *data);
42 typedef struct {
43 ngx_str_t name;
44 size_t len;
45 size_t level[3];
47 ngx_path_manager_pt manager;
48 ngx_path_loader_pt loader;
49 void *data;
51 u_char *conf_file;
52 ngx_uint_t line;
53 } ngx_path_t;
56 typedef struct {
57 ngx_str_t name;
58 size_t level[3];
59 } ngx_path_init_t;
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;
69 ngx_uint_t access;
71 unsigned log_level:8;
72 unsigned persistent:1;
73 unsigned clean:1;
74 } ngx_temp_file_t;
77 typedef struct {
78 ngx_uint_t access;
79 ngx_uint_t path_access;
80 time_t time;
81 ngx_fd_t fd;
83 unsigned create_path:1;
84 unsigned delete_file:1;
86 ngx_log_t *log;
87 } ngx_ext_rename_file_t;
90 typedef struct {
91 off_t size;
92 size_t buf_size;
94 ngx_uint_t access;
95 time_t time;
97 ngx_log_t *log;
98 } ngx_copy_file_t;
101 typedef struct ngx_tree_ctx_s ngx_tree_ctx_t;
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);
106 struct ngx_tree_ctx_s {
107 off_t size;
108 off_t fs_size;
109 ngx_uint_t access;
110 time_t mtime;
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;
118 void *data;
119 size_t alloc;
121 ngx_log_t *log;
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);
139 ngx_atomic_uint_t ngx_next_temp_number(ngx_uint_t collision);
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);
147 extern ngx_atomic_t *ngx_temp_number;
148 extern ngx_atomic_int_t ngx_random_number;
151 #endif /* _NGX_FILE_H_INCLUDED_ */