From d8f628e582cb81c212979b186638ce69f1bd953e Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 10 Jul 2015 08:41:57 +0000 Subject: dir.c: get attributes by fd * dir.c (is_case_sensitive): get attributes by the file descriptor of open directory, instead of using mount point name. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51208 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ dir.c | 4 +--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7f43f3fd40..f7b8580ce8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Fri Jul 10 17:41:54 2015 Nobuyoshi Nakada + + * dir.c (is_case_sensitive): get attributes by the file descriptor + of open directory, instead of using mount point name. + Fri Jul 10 10:46:02 2015 ksss * ext/stringio/stringio.c (writable): remove unnecessary check for diff --git a/dir.c b/dir.c index 9b62cb3e07..b75e6d63c5 100644 --- a/dir.c +++ b/dir.c @@ -1451,10 +1451,8 @@ is_case_sensitive(DIR *dirp) const vol_capabilities_attr_t *const cap = attrbuf[0].cap; const int idx = VOL_CAPABILITIES_FORMAT; const uint32_t mask = VOL_CAP_FMT_CASE_SENSITIVE; - struct statfs sf; - if (fstatfs(dirfd(dirp), &sf)) return -1; - if (getattrlist(sf.f_mntonname, &al, attrbuf, sizeof(attrbuf), FSOPT_NOFOLLOW)) + if (fgetattrlist(dirfd(dirp), &al, attrbuf, sizeof(attrbuf), FSOPT_NOFOLLOW)) return -1; if (!(cap->valid[idx] & mask)) return -1; -- cgit v1.2.3