X-Git-Url: http://git.rot13.org/?p=nginx.git;a=blobdiff_plain;f=nginx%2Fsrc%2Fos%2Funix%2Fngx_files.h;h=068b4d8fdb3c38ef4de211f917729e3ac5ab8ee5;hp=fe14887f1e255f0896bf50a1452ae88a997976a4;hb=72cfa48da0d7e9dece140f36e9f6ab08fd8c1eb8;hpb=edef48fd7f4269957bc636301b0ffc73a16f9a4a diff --git a/nginx/src/os/unix/ngx_files.h b/nginx/src/os/unix/ngx_files.h index fe14887..068b4d8 100644 --- a/nginx/src/os/unix/ngx_files.h +++ b/nginx/src/os/unix/ngx_files.h @@ -200,10 +200,25 @@ ngx_int_t ngx_read_dir(ngx_dir_t *dir); #if (NGX_HAVE_D_TYPE) +#if (NGX_LINUX) + +/* XFS on Linux does not set dirent.d_type */ + +#define ngx_de_is_dir(dir) \ + (((dir)->type) ? ((dir)->type == DT_DIR) : (S_ISDIR((dir)->info.st_mode))) +#define ngx_de_is_file(dir) \ + (((dir)->type) ? ((dir)->type == DT_REG) : (S_ISREG((dir)->info.st_mode))) +#define ngx_de_is_link(dir) \ + (((dir)->type) ? ((dir)->type == DT_LINK) : (S_ISLNK((dir)->info.st_mode))) + +#else + #define ngx_de_is_dir(dir) ((dir)->type == DT_DIR) #define ngx_de_is_file(dir) ((dir)->type == DT_REG) #define ngx_de_is_link(dir) ((dir)->type == DT_LINK) +#endif /* NGX_LINUX */ + #else #define ngx_de_is_dir(dir) (S_ISDIR((dir)->info.st_mode))