Hi,

At Tue, 3 Apr 2007 04:00:24 +0900 (JST),
technorama / ruby-lang.org wrote in [ruby-cvs:19369]:
>     * ext/openssl/{ossl_bio.c,ossl_ssl.c,ruby_missing.h} compatibility with 1.8.

I don't recommend to check RUBY_VERSION_CODE in extension
libraries.  Per-features checks should be placed in extconf.rb
instead.

Furthermore, I'd rather want to remove RUBY_VERSION_CODE from
version.h, and change RUBY_VERSION object to a particular
object from mere String.


Index: ext/openssl/extconf.rb =================================================================== --- ext/openssl/extconf.rb (revision 12136) +++ ext/openssl/extconf.rb (working copy) @@ -60,4 +60,6 @@ unless have_header("openssl/conf_api.h") end +%w"rb_str_set_len rb_block_call".each {|func| have_func(func, "ruby.h")} + message "=== Checking for OpenSSL features... ===\n" have_func("ERR_peek_last_error") Index: ext/openssl/ruby_missing.h =================================================================== --- ext/openssl/ruby_missing.h (revision 12136) +++ ext/openssl/ruby_missing.h (working copy) @@ -10,7 +10,5 @@ */ #if !defined(_OSSL_RUBY_MISSING_H_) -#define _OSS_RUBY_MISSING_H_ - -#include "version.h" +#define _OSSL_RUBY_MISSING_H_ #define rb_define_copy_func(klass, func) \ @@ -18,12 +16,15 @@ -#if RUBY_VERSION_CODE >= 190 +#ifndef GetReadFile #define FPTR_TO_FD(fptr) (fptr->fd) #else +#define FPTR_TO_FD(fptr) (fileno(GetReadFile(fptr))) +#endif +#ifndef HAVE_RB_IO_T #define rb_io_t OpenFile -#define FPTR_TO_FD(fptr) (fileno(fptr->f)) - +#endif +#ifndef HAVE_RB_STR_SET_LEN /* these methods should probably be backported to 1.8 */ #define rb_str_set_len(str, length) do { \ @@ -31,11 +32,10 @@ RSTRING(str)->len = length; \ } while(0) +#endif /* ! HAVE_RB_STR_SET_LEN */ +#ifndef HAVE_RB_BLOCK_CALL /* the openssl module doesn't use arg[3-4] and arg2 is always rb_each */ #define rb_block_call(arg1, arg2, arg3, arg4, arg5, arg6) rb_iterate(rb_each, arg1, arg5, arg6) +#endif /* ! HAVE_RB_BLOCK_CALL */ -#endif /* RUBY_VERSION_CODE >= 190 */ - - -#endif /* _OSS_RUBY_MISSING_H_ */ - +#endif /* _OSSL_RUBY_MISSING_H_ */
-- Nobu Nakada