mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	there is no guarantee that mode_t is as wide as int
POSIX only defines mode_t to be "an integer typea", and in fact MacOS defines it to be uint16_t. We didn't have NUM2USHORT before so it did not make sense but now that we have it. Why not check apptopriately. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61950 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									26b08ed144
								
							
						
					
					
						commit
						de9d264026
					
				
					 4 changed files with 11 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -1611,6 +1611,8 @@ AC_DEFUN([RUBY_REPLACE_TYPE], [dnl
 | 
			
		|||
	    t=LL],
 | 
			
		||||
	  [*" long "*], [
 | 
			
		||||
	    t=LONG],
 | 
			
		||||
	  [*" short "*], [
 | 
			
		||||
	    t=SHORT],
 | 
			
		||||
	  [
 | 
			
		||||
	    t=INT])
 | 
			
		||||
	rb_cv_[$1]_convertible=${u}${t}])
 | 
			
		||||
| 
						 | 
				
			
			@ -1620,6 +1622,7 @@ AC_DEFUN([RUBY_REPLACE_TYPE], [dnl
 | 
			
		|||
	AS_CASE(["${rb_cv_[$1]_convertible}"],
 | 
			
		||||
		[*LL], [n="long long"],
 | 
			
		||||
		[*LONG], [n="long"],
 | 
			
		||||
		[*SHORT], [n="short"],
 | 
			
		||||
		[n="int"])
 | 
			
		||||
	AS_CASE(["${rb_cv_[$1]_convertible}"],
 | 
			
		||||
		[U*], [n="unsigned $n"])
 | 
			
		||||
| 
						 | 
				
			
			@ -1637,7 +1640,7 @@ RUBY_REPLACE_TYPE(uid_t, int, UIDT)
 | 
			
		|||
RUBY_REPLACE_TYPE(gid_t, int, GIDT)
 | 
			
		||||
RUBY_REPLACE_TYPE(time_t, [], TIMET, [@%:@include <time.h>])
 | 
			
		||||
RUBY_REPLACE_TYPE(dev_t, [int long "long long"], DEVT)
 | 
			
		||||
RUBY_REPLACE_TYPE(mode_t, ["unsigned int" long], MODET, [@%:@include <sys/stat.h>])
 | 
			
		||||
RUBY_REPLACE_TYPE(mode_t, ["unsigned short" "unsigned int" long], MODET, [@%:@include <sys/stat.h>])
 | 
			
		||||
RUBY_REPLACE_TYPE(rlim_t, [int long "long long"], RLIM, [
 | 
			
		||||
@%:@ifdef HAVE_SYS_TYPES_H
 | 
			
		||||
@%:@include <sys/types.h>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										4
									
								
								file.c
									
										
									
									
									
								
							
							
						
						
									
										4
									
								
								file.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -2384,12 +2384,12 @@ static VALUE
 | 
			
		|||
rb_file_chmod(VALUE obj, VALUE vmode)
 | 
			
		||||
{
 | 
			
		||||
    rb_io_t *fptr;
 | 
			
		||||
    int mode;
 | 
			
		||||
    mode_t mode;
 | 
			
		||||
#if !defined HAVE_FCHMOD || !HAVE_FCHMOD
 | 
			
		||||
    VALUE path;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    mode = NUM2INT(vmode);
 | 
			
		||||
    mode = NUM2MODET(vmode);
 | 
			
		||||
 | 
			
		||||
    GetOpenFile(obj, fptr);
 | 
			
		||||
#ifdef HAVE_FCHMOD
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -113,6 +113,9 @@ typedef char ruby_check_sizeof_voidp[SIZEOF_VOIDP == sizeof(void*) ? 1 : -1];
 | 
			
		|||
#ifndef PRI_LONG_PREFIX
 | 
			
		||||
#define PRI_LONG_PREFIX "l"
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef PRI_SHORT_PREFIX
 | 
			
		||||
#define PRI_SHORT_PREFIX "h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if SIZEOF_LONG == 8
 | 
			
		||||
#define PRI_64_PREFIX PRI_LONG_PREFIX
 | 
			
		||||
| 
						 | 
				
			
			@ -1571,6 +1574,7 @@ rb_num2char_inline(VALUE x)
 | 
			
		|||
 | 
			
		||||
#define LONG2NUM(x) RB_LONG2NUM(x)
 | 
			
		||||
#define ULONG2NUM(x) RB_ULONG2NUM(x)
 | 
			
		||||
#define USHORT2NUM(x) RB_INT2FIX(x)
 | 
			
		||||
#define NUM2CHR(x) RB_NUM2CHR(x)
 | 
			
		||||
#define CHR2FIX(x) RB_CHR2FIX(x)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2348,7 +2348,7 @@ rb_execarg_parent_start1(VALUE execarg_obj)
 | 
			
		|||
            VALUE param = RARRAY_AREF(elt, 1);
 | 
			
		||||
            VALUE vpath = RARRAY_AREF(param, 0);
 | 
			
		||||
            int flags = NUM2INT(RARRAY_AREF(param, 1));
 | 
			
		||||
            int perm = NUM2INT(RARRAY_AREF(param, 2));
 | 
			
		||||
            mode_t perm = NUM2MODET(RARRAY_AREF(param, 2));
 | 
			
		||||
            VALUE fd2v = RARRAY_AREF(param, 3);
 | 
			
		||||
            int fd2;
 | 
			
		||||
            if (NIL_P(fd2v)) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue