Annotation of embedaddon/nginx/src/core/ngx_file.h, revision 1.1.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>