Ruby/Pcapの警告対応パッチ
OSX(Ruby1.8.6)でRuby/Pcapを使うと必ず
/Library/Ruby/Site/1.8/universal-darwin9.0/pcap.bundle: warning: do not use Fixnums as Symbols
とかいう警告が出てしまう。まあ放っておいても、実害はなさそうなんですが、ちょっと気持ち悪いので調べたら、どこ直すか書いている方が居ました。
とりあえずそのとおりやってうまくいったっぽいので、現状最新の0.6とのdiff取っておきました。
diff -ur pcap-0.6/Pcap.c pcap-working/Pcap.c --- pcap-0.6/Pcap.c 2008-02-10 19:10:30.000000000 +0900 +++ pcap-working/Pcap.c 2008-02-10 18:58:49.000000000 +0900 @@ -782,9 +782,9 @@ /* define class PcapStat */ cPcapStat = rb_funcall(rb_cStruct, rb_intern("new"), 4, Qnil, - INT2NUM(rb_intern("recv")), - INT2NUM(rb_intern("drop")), - INT2NUM(rb_intern("ifdrop"))); + ID2SYM(rb_intern("recv")), + ID2SYM(rb_intern("drop")), + ID2SYM(rb_intern("ifdrop"))); rb_define_const(mPcap, "Stat", cPcapStat); /* define exception classes */ diff -ur pcap-0.6/packet.c pcap-working/packet.c --- pcap-0.6/packet.c 2008-02-10 19:10:30.000000000 +0900 +++ pcap-working/packet.c 2008-02-10 18:55:13.000000000 +0900 @@ -17,8 +17,8 @@ VALUE cPacket; static VALUE mMarshal; -int id_load; -int id_dump; +ID id_load; +ID id_dump; /* called from GC */ static void
使う際には、pcapディレクトリで、
$ patch -p1 < this_patch_file_name
とかしてから make / make install してみてください。まあこれ位だったら、手で直しちゃった方が早いか。。