mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	dir.c: getattrlist on OSX 10.5
* dir.c (need_normalization): use getattrlist() if fgetattrlist() is unavailable, on OSX 10.5. [ruby-core:68829] [Bug #11054] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50218 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									b75b040e04
								
							
						
					
					
						commit
						9e459f7aa9
					
				
					 3 changed files with 21 additions and 5 deletions
				
			
		|  | @ -1,3 +1,8 @@ | |||
| Fri Apr 10 23:57:44 2015  Nobuyoshi Nakada  <nobu@ruby-lang.org> | ||||
| 
 | ||||
| 	* dir.c (need_normalization): use getattrlist() if fgetattrlist() | ||||
| 	  is unavailable, on OSX 10.5.  [ruby-core:68829] [Bug #11054] | ||||
| 
 | ||||
| Fri Apr 10 22:29:21 2015  Nobuyoshi Nakada  <nobu@ruby-lang.org> | ||||
| 
 | ||||
| 	* lib/mkmf.rb (try_compile): pass the given werror flag to try_do | ||||
|  |  | |||
|  | @ -2091,6 +2091,7 @@ AC_CHECK_FUNCS(fchmod) | |||
| AC_CHECK_FUNCS(fchown) | ||||
| AC_CHECK_FUNCS(fcntl) | ||||
| AC_CHECK_FUNCS(fdatasync) | ||||
| AC_CHECK_FUNCS(fgetattrlist) | ||||
| AC_CHECK_FUNCS(fmod) | ||||
| AC_CHECK_FUNCS(fsync) | ||||
| AC_CHECK_FUNCS(ftruncate) | ||||
|  |  | |||
							
								
								
									
										20
									
								
								dir.c
									
										
									
									
									
								
							
							
						
						
									
										20
									
								
								dir.c
									
										
									
									
									
								
							|  | @ -103,13 +103,23 @@ char *strchr(char*,char); | |||
| #include <sys/mount.h> | ||||
| #include <sys/vnode.h> | ||||
| 
 | ||||
| # if defined HAVE_FGETATTRLIST || !defined HAVE_GETATTRLIST | ||||
| #   define need_normalization(dirp, path) need_normalization(dirp) | ||||
| # else | ||||
| #   define need_normalization(dirp, path) need_normalization(path) | ||||
| # endif | ||||
| static inline int | ||||
| need_normalization(DIR *dirp) | ||||
| need_normalization(DIR *dirp, const char *path) | ||||
| { | ||||
| # ifdef HAVE_GETATTRLIST | ||||
| # if defined HAVE_FGETATTRLIST || defined HAVE_GETATTRLIST | ||||
|     u_int32_t attrbuf[SIZEUP32(fsobj_tag_t)]; | ||||
|     struct attrlist al = {ATTR_BIT_MAP_COUNT, 0, ATTR_CMN_OBJTAG,}; | ||||
|     if (!fgetattrlist(dirfd(dirp), &al, attrbuf, sizeof(attrbuf), 0)) { | ||||
| #   if defined HAVE_FGETATTRLIST | ||||
|     int ret = fgetattrlist(dirfd(dirp), &al, attrbuf, sizeof(attrbuf), 0); | ||||
| #   else | ||||
|     int ret = getattrlist(path, &al, attrbuf, sizeof(attrbuf), 0); | ||||
| #   endif | ||||
|     if (!ret) { | ||||
| 	const fsobj_tag_t *tag = (void *)(attrbuf+1); | ||||
| 	switch (*tag) { | ||||
| 	  case VT_HFS: | ||||
|  | @ -699,7 +709,7 @@ dir_each(VALUE dir) | |||
|     RETURN_ENUMERATOR(dir, 0, 0); | ||||
|     GetDIR(dir, dirp); | ||||
|     rewinddir(dirp->dir); | ||||
|     IF_NORMALIZE_UTF8PATH(norm_p = need_normalization(dirp->dir)); | ||||
|     IF_NORMALIZE_UTF8PATH(norm_p = need_normalization(dirp->dir, RSTRING_PTR(dirp->path))); | ||||
|     while ((dp = READDIR(dirp->dir, dirp->enc)) != NULL) { | ||||
| 	const char *name = dp->d_name; | ||||
| 	size_t namlen = NAMLEN(dp); | ||||
|  | @ -1701,7 +1711,7 @@ glob_helper( | |||
| # endif | ||||
| 	    return 0; | ||||
| 	} | ||||
| 	IF_NORMALIZE_UTF8PATH(norm_p = need_normalization(dirp)); | ||||
| 	IF_NORMALIZE_UTF8PATH(norm_p = need_normalization(dirp, *path ? path : ".")); | ||||
| 
 | ||||
| # if NORMALIZE_UTF8PATH | ||||
| 	if (!(norm_p || magical || recursive)) { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 nobu
						nobu