From: nobu.nakada@... Date: 2002-08-29T15:24:15+09:00 Subject: [ruby-list:35815] Re: 祝 1.7.3 But cast_256.so Segmentaation fault なかだです。 At Thu, 29 Aug 2002 13:28:28 +0900, U.Nakamura wrote: > それはそれとして、件のcast_256(というかrcast_256かな?)ですが、 > 以下のパッチを適応して、 > ruby extconf.rb > nmake > でrcast_256.soを生成できると思います。 > 単にコンパイルを通すだけのパッチで、ソースの中身はぜんぜん見 > てないんですが、いちおう動く模様。 cygwinだと extern "C" EXTERN でエラーになるのでこんな感じで。と いうか、一つだけでgcc, vcともに使えるはずなんですが、nmakeは .SUFFIXESにないルールは無視してしまうようで。 # nmake使ってなかったから気づかなかった。 [ruby-list:35814]も含んでます。 diff -ru2pwP -x 1.? cast_256.orig/gcc/extconf.rb cast_256/gcc/extconf.rb --- cast_256.orig/gcc/extconf.rb Thu Jan 1 09:00:00 1970 +++ cast_256/gcc/extconf.rb Thu Aug 29 14:38:28 2002 @@ -0,0 +1,3 @@ +require 'mkmf' + +create_makefile('rcast_256') diff -ru2pwP -x 1.? cast_256.orig/gcc/rcast_256.cc cast_256/gcc/rcast_256.cc --- cast_256.orig/gcc/rcast_256.cc Sun May 23 15:26:24 1999 +++ cast_256/gcc/rcast_256.cc Thu Aug 29 15:02:22 2002 @@ -31,5 +31,5 @@ struct dsubkeys -extern "C" VALUE set_key(VALUE obj, VALUE key) +static VALUE set_key(VALUE obj, VALUE key) { // parameter: key : string[32] @@ -57,5 +57,5 @@ extern "C" VALUE set_key(VALUE obj, VALU -extern "C" VALUE crypt_block(VALUE obj, VALUE block, VALUE subkeys, VALUE mode) +static VALUE crypt_block(VALUE obj, VALUE block, VALUE subkeys, VALUE mode) { // parameter: @@ -108,5 +108,6 @@ extern "C" VALUE crypt_block(VALUE obj, -extern "C" EXTERN void Init_rcast_256(void){ +extern "C" void Init_rcast_256(void) +{ VALUE mCAST_256 = rb_define_module("RCAST_256"); @@ -114,5 +115,5 @@ extern "C" EXTERN void Init_rcast_256(vo rb_define_const(mCAST_256, "DECRYPT", INT2FIX(DECRYPT) ); - rb_define_module_function(mCAST_256, "set_key",(unsigned long (__cdecl *)(void)) set_key ,1); - rb_define_module_function(mCAST_256, "crypt_block",(unsigned long (__cdecl *)(void)) crypt_block ,3); + rb_define_module_function(mCAST_256, "set_key", RUBY_METHOD_FUNC(set_key), 1); + rb_define_module_function(mCAST_256, "crypt_block", RUBY_METHOD_FUNC(crypt_block), 3); } diff -ru2pwP -x 1.? cast_256.orig/test.rb cast_256/test.rb --- cast_256.orig/test.rb Fri May 21 12:31:54 1999 +++ cast_256/test.rb Thu Aug 29 15:12:30 2002 @@ -2,12 +2,5 @@ require 'cast_256' def print_block(b) - for i in 0..(b.length-1) - if i % 4 == 0 then - print " " - end - x = b[i].to_i - printf("%X%X", Integer(x/16), x%16) - end - print "\n" + puts b.unpack("H*")[0].upcase.unpack("a8"*4).join(" ") end -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦