summaryrefslogtreecommitdiff
path: root/dir.c
diff options
context:
space:
mode:
authorYuta Saito <kateinoigakukun@gmail.com>2022-03-17 11:05:15 +0000
committerYuta Saito <kateinoigakukun@gmail.com>2022-04-03 01:13:16 +0900
commit44d0caa1ca56b17bf0ed9e3daf446c1eaacae108 (patch)
tree4c44fccb38118f611195c25e5f52143fa4132f99 /dir.c
parent07acd6006c69370c7af4ca50221f1a8166d78e3f (diff)
downloadruby-44d0caa1ca56b17bf0ed9e3daf446c1eaacae108.tar.gz
dir.c: refresh pathtype when emulating `IFTODT` in `glob_helper`
When using `IFTODT` defined in libc, `dirent.d_type` oriented pathtype is compatible with `IFTODT(stat.st_mode)`. However they are not compatible when emulating `IFTODT`, so `glob_helper` has to stat instead of reusing dirent result by passing unknown pathtype to `glob_helper`. This is a follow-up fix of 0c90ca4dd0abbd28d7bb34b9241d93995ab9cfb7
Diffstat (limited to 'dir.c')
-rw-r--r--dir.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/dir.c b/dir.c
index 8c6d6fea56..a090b9f38c 100644
--- a/dir.c
+++ b/dir.c
@@ -2148,7 +2148,7 @@ dirent_copy(const struct dirent *dp, rb_dirent_t *rdp)
newrdp->d_altname = dp->d_altname;
#endif
}
-#ifdef DT_UNKNOWN
+#if !EMULATE_IFTODT
newrdp->d_type = dp->d_type;
#else
newrdp->d_type = 0;
@@ -2470,7 +2470,7 @@ glob_helper(
break;
}
name = buf + pathlen + (dirsep != 0);
-#ifdef DT_UNKNOWN
+#if !EMULATE_IFTODT
if (dp->d_type != DT_UNKNOWN) {
/* Got it. We need no more lstat. */
new_pathtype = dp->d_type;