Auto merge of #25632 - alexcrichton:dt-dir, r=brson

This "fast path" in `DirEntry::file_type` on Unix wasn't turning out to be so
much of a fast path as the `DT_DIR` case wasn't handled, so directories fell
back to using `lstat` instead. This commit adds the missing case to return
quickly if a path is a directory and `DirEntry::file_type` is used.
This commit is contained in:
bors 2015-05-23 12:47:16 +00:00
commit d11399039c

View File

@ -59,7 +59,7 @@ rust_list_dir_val(struct dirent* entry_ptr) {
int
rust_dir_get_mode(struct dirent* entry_ptr) {
#if defined(_DIRENT_HAVE_D_TYPE)
#if defined(_DIRENT_HAVE_D_TYPE) || defined(__APPLE__)
switch (entry_ptr->d_type) {
case DT_BLK: return S_IFBLK;
case DT_CHR: return S_IFCHR;
@ -67,6 +67,7 @@ rust_dir_get_mode(struct dirent* entry_ptr) {
case DT_LNK: return S_IFLNK;
case DT_REG: return S_IFREG;
case DT_SOCK: return S_IFSOCK;
case DT_DIR: return S_IFDIR;
}
#endif
return -1;