From: Dave Thomas Date: 2003-04-24T06:21:51+09:00 Subject: IPAddr patch It looks like I can't commit patches to /src/ruby, so I'm posting them here: could some kind person apply them please? Cheers Dave Index: ChangeLog =================================================================== RCS file: /src/ruby/ChangeLog,v retrieving revision 1.1664 diff -u -r1.1664 ChangeLog --- ChangeLog 23 Apr 2003 06:31:27 -0000 1.1664 +++ ChangeLog 23 Apr 2003 14:26:11 -0000 @@ -1,3 +1,7 @@ +Wed Apr 23 14:05:1r40 2003 Dave Thomas + + * lib/ipaddr.rb (include?): Support non-IPAddr parameters + Wed Apr 23 13:31:10 2003 Yukihiro Matsumoto * lib/cgi.rb (CGI::QueryExtension::[]): always return Value Index: lib/ipaddr.rb =================================================================== RCS file: /src/ruby/lib/ipaddr.rb,v retrieving revision 1.1 diff -u -r1.1 ipaddr.rb --- lib/ipaddr.rb 23 Dec 2002 17:07:49 -0000 1.1 +++ lib/ipaddr.rb 23 Apr 2003 14:26:14 -0000 @@ -131,9 +131,13 @@ other_addr = other.to_i other_family = other.family end - if family != other_family - return false - end + else # Not IPAddr - assume integer in same family as us + other_addr = other.to_i + other_family = family + end + + if family != other_family + return false end return ((addr & mask_addr) == (other_addr & mask_addr)) end @@ -685,6 +689,14 @@ assert_equal(true, net1.include?(IPAddr.new("192.168.2.0"))) assert_equal(true, net1.include?(IPAddr.new("192.168.2.255"))) assert_equal(false, net1.include?(IPAddr.new("192.168.3.0"))) + # test with integer parameter + int = (192 << 24) + (168 << 16) + (2 << 8) + 13 +printf "%x\n", int +printf "%x\n", net1.to_i + + assert_equal(true, net1.include?(int)) + assert_equal(false, net1.include?(int+255)) + end end