[前][次][番号順一覧][スレッド一覧]

ruby-changes:45175

From: nobu <ko1@a...>
Date: Mon, 2 Jan 2017 07:20:44 +0900 (JST)
Subject: [ruby-changes:45175] nobu:r57248 (trunk): dir.c: getattrlist on OSX 10.5

nobu	2017-01-02 07:20:38 +0900 (Mon, 02 Jan 2017)

  New Revision: 57248

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=57248

  Log:
    dir.c: getattrlist on OSX 10.5
    
    * dir.c (is_case_sensitive): use getattrlist() if fgetattrlist()
      is unavailable, on OSX 10.5.  [ruby-core:68829] [Bug #11054]

  Modified files:
    trunk/dir.c
Index: dir.c
===================================================================
--- dir.c	(revision 57247)
+++ dir.c	(revision 57248)
@@ -1516,8 +1516,13 @@ join_path(const char *path, long len, in https://github.com/ruby/ruby/blob/trunk/dir.c#L1516
 }
 
 #ifdef HAVE_GETATTRLIST
+# if defined HAVE_FGETATTRLIST
+#   define is_case_sensitive(dirp, path) is_case_sensitive(dirp)
+# else
+#   define is_case_sensitive(dirp, path) is_case_sensitive(path)
+# endif
 static int
-is_case_sensitive(DIR *dirp)
+is_case_sensitive(DIR *dirp, const char *path)
 {
     struct {
 	u_int32_t length;
@@ -1528,8 +1533,13 @@ is_case_sensitive(DIR *dirp) https://github.com/ruby/ruby/blob/trunk/dir.c#L1533
     const int idx = VOL_CAPABILITIES_FORMAT;
     const uint32_t mask = VOL_CAP_FMT_CASE_SENSITIVE;
 
+#   if defined HAVE_FGETATTRLIST
     if (fgetattrlist(dirfd(dirp), &al, attrbuf, sizeof(attrbuf), FSOPT_NOFOLLOW))
 	return -1;
+#   else
+    if (getattrlist(path, &al, attrbuf, sizeof(attrbuf), FSOPT_NOFOLLOW))
+	return -1;
+#   endif
     if (!(cap->valid[idx] & mask))
 	return -1;
     return (cap->capabilities[idx] & mask) != 0;
@@ -1824,7 +1834,7 @@ glob_helper( https://github.com/ruby/ruby/blob/trunk/dir.c#L1834
 	}
 # endif
 # ifdef HAVE_GETATTRLIST
-	if (is_case_sensitive(dirp) == 0)
+	if (is_case_sensitive(dirp, path) == 0)
 	    flags |= FNM_CASEFOLD;
 # endif
 	while ((dp = READDIR(dirp, enc)) != NULL) {

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]