comparison src/os/unix/ngx_files.h @ 406:79c5df00501e NGINX_0_7_15

nginx 0.7.15 *) Feature: the ngx_http_random_index_module. *) Feature: the "directio" directive has been optimized for file requests starting from arbitrary position. *) Feature: the "directio" directive turns off sendfile if it is necessary. *) Feature: now nginx allows underscores in a client request header line names.
author Igor Sysoev <http://sysoev.ru>
date Mon, 08 Sep 2008 00:00:00 +0400
parents 9d81578d04bb
children a8e3f1441eec
comparison
equal deleted inserted replaced
405:2993e60bc4e0 406:79c5df00501e
8 #define _NGX_FILES_H_INCLUDED_ 8 #define _NGX_FILES_H_INCLUDED_
9 9
10 10
11 #include <ngx_config.h> 11 #include <ngx_config.h>
12 #include <ngx_core.h> 12 #include <ngx_core.h>
13
14
15 typedef int ngx_fd_t;
16 typedef struct stat ngx_file_info_t;
17 typedef ino_t ngx_file_uniq_t;
18
19
20 typedef struct {
21 DIR *dir;
22 struct dirent *de;
23 struct stat info;
24
25 unsigned type:8;
26 unsigned valid_info:1;
27 unsigned valid_type:1;
28 } ngx_dir_t;
29
30
31 typedef struct {
32 size_t n;
33 glob_t pglob;
34 u_char *pattern;
35 ngx_log_t *log;
36 ngx_uint_t test;
37 } ngx_glob_t;
13 38
14 39
15 #define NGX_INVALID_FILE -1 40 #define NGX_INVALID_FILE -1
16 #define NGX_FILE_ERROR -1 41 #define NGX_FILE_ERROR -1
17 42
133 158
134 #define ngx_close_dir(d) closedir((d)->dir) 159 #define ngx_close_dir(d) closedir((d)->dir)
135 #define ngx_close_dir_n "closedir()" 160 #define ngx_close_dir_n "closedir()"
136 161
137 162
138 #define ngx_read_dir(d) \ 163 ngx_int_t ngx_read_dir(ngx_dir_t *dir);
139 (((d)->de = readdir((d)->dir)) ? NGX_OK : NGX_ERROR)
140 #define ngx_read_dir_n "readdir()" 164 #define ngx_read_dir_n "readdir()"
141 165
142 166
143 #define ngx_create_dir(name, access) mkdir((const char *) name, access) 167 #define ngx_create_dir(name, access) mkdir((const char *) name, access)
144 #define ngx_create_dir_n "mkdir()" 168 #define ngx_create_dir_n "mkdir()"
150 174
151 #define ngx_dir_access(a) (a | (a & 0444) >> 2) 175 #define ngx_dir_access(a) (a | (a & 0444) >> 2)
152 176
153 177
154 #define ngx_de_name(dir) ((u_char *) (dir)->de->d_name) 178 #define ngx_de_name(dir) ((u_char *) (dir)->de->d_name)
155 #if (NGX_FREEBSD) 179 #if (NGX_HAVE_D_NAMLEN)
156 #define ngx_de_namelen(dir) (dir)->de->d_namlen 180 #define ngx_de_namelen(dir) (dir)->de->d_namlen
157 #else 181 #else
158 #define ngx_de_namelen(dir) ngx_strlen((dir)->de->d_name) 182 #define ngx_de_namelen(dir) ngx_strlen((dir)->de->d_name)
159 #endif 183 #endif
160 #define ngx_de_info(name, dir) stat((const char *) name, &(dir)->info) 184 #define ngx_de_info(name, dir) stat((const char *) name, &(dir)->info)
161 #define ngx_de_info_n "stat()" 185 #define ngx_de_info_n "stat()"
162 #define ngx_de_link_info(name, dir) lstat((const char *) name, &(dir)->info) 186 #define ngx_de_link_info(name, dir) lstat((const char *) name, &(dir)->info)
163 #define ngx_de_link_info_n "lstat()" 187 #define ngx_de_link_info_n "lstat()"
188
189 #if (NGX_HAVE_D_TYPE)
190
191 #define ngx_de_is_dir(dir) ((dir)->type == DT_DIR)
192 #define ngx_de_is_file(dir) ((dir)->type == DT_REG)
193 #define ngx_de_is_link(dir) ((dir)->type == DT_LINK)
194
195 #else
196
164 #define ngx_de_is_dir(dir) (S_ISDIR((dir)->info.st_mode)) 197 #define ngx_de_is_dir(dir) (S_ISDIR((dir)->info.st_mode))
165 #define ngx_de_is_file(dir) (S_ISREG((dir)->info.st_mode)) 198 #define ngx_de_is_file(dir) (S_ISREG((dir)->info.st_mode))
166 #define ngx_de_is_link(dir) (S_ISLNK((dir)->info.st_mode)) 199 #define ngx_de_is_link(dir) (S_ISLNK((dir)->info.st_mode))
200
201 #endif
202
167 #define ngx_de_access(dir) (((dir)->info.st_mode) & 0777) 203 #define ngx_de_access(dir) (((dir)->info.st_mode) & 0777)
168 #define ngx_de_size(dir) (dir)->info.st_size 204 #define ngx_de_size(dir) (dir)->info.st_size
169 #define ngx_de_mtime(dir) (dir)->info.st_mtime 205 #define ngx_de_mtime(dir) (dir)->info.st_mtime
170
171
172 typedef struct {
173 size_t n;
174 glob_t pglob;
175 u_char *pattern;
176 ngx_log_t *log;
177 ngx_uint_t test;
178 } ngx_glob_t;
179 206
180 207
181 ngx_int_t ngx_open_glob(ngx_glob_t *gl); 208 ngx_int_t ngx_open_glob(ngx_glob_t *gl);
182 #define ngx_open_glob_n "glob()" 209 #define ngx_open_glob_n "glob()"
183 ngx_int_t ngx_read_glob(ngx_glob_t *gl, ngx_str_t *name); 210 ngx_int_t ngx_read_glob(ngx_glob_t *gl, ngx_str_t *name);