Mercurial > hg > nginx
comparison src/os/unix/ngx_files.h @ 2234:c7c319896bb4
*) autoconfigure struct dirent capabilities
*) move src/os/.../ngx_types.h's content into src/os/.../ngx_files.h and
delete src/os/.../ngx_types.h
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Fri, 05 Sep 2008 15:43:34 +0000 |
parents | 992613253d93 |
children | 1adec90a0e46 |
comparison
equal
deleted
inserted
replaced
2233:f62751dab60d | 2234:c7c319896bb4 |
---|---|
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); |