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 してみてください。まあこれ位だったら、手で直しちゃった方が早いか。。