1 /* Ruby 1.8.6+ macros (for compatibility with Ruby 1.9) */
3 # define RSTRING_PTR(s) (RSTRING(s)->ptr)
6 # define RSTRING_LEN(s) (RSTRING(s)->len)
9 # define RARRAY_PTR(s) (RARRAY(s)->ptr)
12 # define RARRAY_LEN(s) (RARRAY(s)->len)
15 #ifndef HAVE_RB_STR_SET_LEN
16 /* this is taken from Ruby 1.8.7, 1.8.6 may not have it */
17 static void rb_18_str_set_len(VALUE str
, long len
)
19 RSTRING(str
)->len
= len
;
20 RSTRING(str
)->ptr
[len
] = '\0';
22 #define rb_str_set_len(str,len) rb_18_str_set_len(str,len)
26 # define rb_io_t OpenFile
30 # define FPTR_TO_FD(fptr) (fileno(GetReadFile(fptr)))
32 # if !HAVE_RB_IO_T || (RUBY_VERSION_MAJOR == 1 && RUBY_VERSION_MINOR == 8)
33 # define FPTR_TO_FD(fptr) fileno(fptr->f)
35 # define FPTR_TO_FD(fptr) fptr->fd
39 static int my_fileno(VALUE io
)
46 GetOpenFile(io
, fptr
);
47 return FPTR_TO_FD(fptr
);
50 io
= rb_convert_type(io
, T_FILE
, "IO", "to_io");