comparison src/os/unix/ngx_files.h @ 2550:5e87ddb4764f

XFS on Linux does not set dirent.d_type, therefore fallback to stat() if dirent.d_type is not set, this fixes slash after directory name in ngx_http_autoindex_module; the issue has been introduced in r2235
author Igor Sysoev <igor@sysoev.ru>
date Fri, 06 Mar 2009 13:01:21 +0000
parents 2abf14c952a2
children 3a8a53c0c42f
comparison
equal deleted inserted replaced
2549:2d34fba7cf06 2550:5e87ddb4764f
198 #define ngx_de_link_info(name, dir) lstat((const char *) name, &(dir)->info) 198 #define ngx_de_link_info(name, dir) lstat((const char *) name, &(dir)->info)
199 #define ngx_de_link_info_n "lstat()" 199 #define ngx_de_link_info_n "lstat()"
200 200
201 #if (NGX_HAVE_D_TYPE) 201 #if (NGX_HAVE_D_TYPE)
202 202
203 #if (NGX_LINUX)
204
205 /* XFS on Linux does not set dirent.d_type */
206
207 #define ngx_de_is_dir(dir) \
208 (((dir)->type) ? ((dir)->type == DT_DIR) : (S_ISDIR((dir)->info.st_mode)))
209 #define ngx_de_is_file(dir) \
210 (((dir)->type) ? ((dir)->type == DT_REG) : (S_ISREG((dir)->info.st_mode)))
211 #define ngx_de_is_link(dir) \
212 (((dir)->type) ? ((dir)->type == DT_LINK) : (S_ISLNK((dir)->info.st_mode)))
213
214 #else
215
203 #define ngx_de_is_dir(dir) ((dir)->type == DT_DIR) 216 #define ngx_de_is_dir(dir) ((dir)->type == DT_DIR)
204 #define ngx_de_is_file(dir) ((dir)->type == DT_REG) 217 #define ngx_de_is_file(dir) ((dir)->type == DT_REG)
205 #define ngx_de_is_link(dir) ((dir)->type == DT_LINK) 218 #define ngx_de_is_link(dir) ((dir)->type == DT_LINK)
219
220 #endif /* NGX_LINUX */
206 221
207 #else 222 #else
208 223
209 #define ngx_de_is_dir(dir) (S_ISDIR((dir)->info.st_mode)) 224 #define ngx_de_is_dir(dir) (S_ISDIR((dir)->info.st_mode))
210 #define ngx_de_is_file(dir) (S_ISREG((dir)->info.st_mode)) 225 #define ngx_de_is_file(dir) (S_ISREG((dir)->info.st_mode))