geoip-c 0.7.2 → 0.8.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/README.md +14 -8
  2. data/Rakefile +6 -6
  3. data/extconf.rb +6 -0
  4. data/geoip.c +16 -5
  5. metadata +19 -14
data/README.md CHANGED
@@ -75,17 +75,23 @@ Some variation of the following should work.
75
75
  ./configure --prefix=/opt/GeoIP
76
76
  make && sudo make install
77
77
 
78
- On Mac OS X, you can install using MacPorts:
78
+ On Mac OS X, you can install using [homebrew](http://github.com/mxcl/homebrew):
79
79
 
80
- sudo port install libgeoip
80
+ brew install geoip
81
81
 
82
- 2. Now install the `geoip` gem
82
+ Linux platforms utilizing Apt have several packages available:
83
83
 
84
- gem install mtodd-geoip -s http://gems.github.com/ -- --with-geoip-dir=/opt/GeoIP
84
+ geoip-bin
85
+ geoip-database
86
+ libgeoip-dev
85
87
 
86
- Alternatively, if you installed libgeoip using MacPorts:
88
+ 2. Now install the `geoip` gem
87
89
 
88
- env ARCHFLAGS="-arch x86_64" gem install geoip-c -- --with-opt-dir=/opt/local
90
+ gem install geoip-c -- --with-geoip-dir=/opt/GeoIP
91
+
92
+ Alternatively, if you installed libgeoip using homebrew:
93
+
94
+ gem install geoip-c
89
95
 
90
96
  3. Download the GeoLite City database file in binary format at http://www.maxmind.com/app/geolitecity
91
97
  Maybe this [direct link](http://www.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz) will work.
@@ -93,7 +99,7 @@ Some variation of the following should work.
93
99
 
94
100
  /opt/GeoIP/share/GeoIP/GeoLiteCity.dat
95
101
 
96
- If you installed libgeoip using MacPorts then put it in:
102
+ If you installed libgeoip using homebrew then put it in:
97
103
 
98
104
  /opt/local/share/GeoIP/GeoLiteCity.dat
99
105
 
@@ -118,7 +124,7 @@ Hints
118
124
 
119
125
  Example:
120
126
 
121
- env ARCHFLAGS="-arch i386" gem install mtodd-geoip -s http://gems.github.com/ -- --with-geoip-dir=/opt/GeoIP
127
+ env ARCHFLAGS="-arch i386" gem install geoip-c -- --with-geoip-dir=/opt/GeoIP
122
128
 
123
129
  2. You might find [this shell script](http://github.com/grimen/my_shell_scripts/blob/8cf04cb6829e68a47f2d6f9d9e057766ea72beb4/install_geoip-city.sh)
124
130
  helpful to install the C library.
data/Rakefile CHANGED
@@ -16,24 +16,24 @@ Rake::RDocTask.new do |rdoc|
16
16
  end
17
17
 
18
18
  Rake::TestTask.new do |t|
19
- t.test_files = 'test.rb'
19
+ t.test_files = ['test.rb']
20
20
  t.verbose = true
21
21
  end
22
22
 
23
23
  spec = Gem::Specification.new do |s|
24
24
  s.name = 'geoip-c'
25
- s.version = "0.7.2"
25
+ s.version = "0.8.0.rc1"
26
26
 
27
- s.authors = ['Ryah Dahl', 'Matt Todd']
28
- s.email = 'mtodd@highgroove.com'
27
+ s.authors = ['Ryah Dahl', 'Matt Todd', 'Andy Lindeman']
28
+ s.email = ['alindeman@gmail.com', 'mtodd@highgroove.com']
29
29
 
30
30
  s.summary = "A Binding to the GeoIP C library"
31
31
  s.description = 'Generic GeoIP lookup tool. Based on the geoip_city RubyGem by Ryah Dahl'
32
32
  s.homepage = "http://github.com/mtodd/geoip"
33
33
 
34
34
  s.files = ["Rakefile", "extconf.rb", "test.rb", "geoip.c", "README.md"]
35
- s.test_files = 'test.rb'
36
- s.extensions = 'extconf.rb'
35
+ s.test_files = ['test.rb']
36
+ s.extensions = ['extconf.rb']
37
37
  s.require_path = '.'
38
38
  end
39
39
 
data/extconf.rb CHANGED
@@ -7,6 +7,12 @@ unless have_func('iconv_open', 'iconv.h') or have_library('iconv', 'iconv_open',
7
7
  end
8
8
 
9
9
  if have_library('GeoIP', 'GeoIP_record_by_ipnum') and have_header('GeoIPCity.h')
10
+ # Defines HAVE_GEOIP_ADDR_TO_NUM
11
+ have_func('GeoIP_addr_to_num', 'GeoIP.h')
12
+
13
+ # Defines HAVE_GEOIP_NUM_TO_ADDR
14
+ have_func('GeoIP_num_to_addr', 'GeoIP.h')
15
+
10
16
  create_makefile('geoip')
11
17
  else
12
18
  abort("you must have geoip c library installed!")
data/geoip.c CHANGED
@@ -21,6 +21,20 @@ static VALUE rb_geoip_memory;
21
21
  static VALUE rb_geoip_filesystem;
22
22
  static VALUE rb_geoip_index;
23
23
 
24
+ #ifndef HAVE_GEOIP_ADDR_TO_NUM
25
+ // Support geoip <= 1.4.6
26
+ #define GeoIP_addr_to_num _GeoIP_addr_to_num
27
+ #endif
28
+
29
+ #ifndef HAVE_GEOIP_NUM_TO_ADDR
30
+ // Support geoip <= 1.4.6
31
+
32
+ // Fixes a bug with 64bit architectures where this delcaration doesn't exist
33
+ // in the GeoIP library causing segmentation faults.
34
+ char *_GeoIP_num_to_addr(GeoIP* gi, unsigned long ipnum);
35
+ #define GeoIP_num_to_addr(ipnum) _GeoIP_num_to_addr(NULL, ipnum)
36
+ #endif
37
+
24
38
  /* helpers */
25
39
  void rb_hash_sset(VALUE hash, const char *str, VALUE v) {
26
40
  rb_hash_aset(hash, ID2SYM(rb_intern(str)), v);
@@ -320,12 +334,9 @@ VALUE rb_geoip_domain_look_up(VALUE self, VALUE addr) {
320
334
  */
321
335
  VALUE rb_geoip_addr_to_num(VALUE self, VALUE addr) {
322
336
  Check_Type(addr, T_STRING);
323
- return UINT2NUM((unsigned int)_GeoIP_addr_to_num(StringValuePtr(addr)));
337
+ return UINT2NUM((unsigned int)GeoIP_addr_to_num(StringValuePtr(addr)));
324
338
  }
325
339
 
326
- // Fixes a bug with 64bit architectures where this delcaration doesn't exist
327
- // in the GeoIP library causing segmentation faults.
328
- char *_GeoIP_num_to_addr(GeoIP* gi, unsigned long ipnum);
329
340
 
330
341
  VALUE rb_geoip_num_to_addr(VALUE self, VALUE num) {
331
342
  VALUE num_type = TYPE(num);
@@ -334,7 +345,7 @@ VALUE rb_geoip_num_to_addr(VALUE self, VALUE num) {
334
345
  case T_BIGNUM: break;
335
346
  default: rb_raise(rb_eTypeError, "wrong argument type %s (expected Fixnum or Bignum)", rb_obj_classname(num));
336
347
  }
337
- return rb_str_new2((char*)_GeoIP_num_to_addr(NULL, (unsigned long)NUM2ULONG(num)));
348
+ return rb_str_new2((char*)GeoIP_num_to_addr((unsigned long)NUM2ULONG(num)));
338
349
  }
339
350
 
340
351
  void Init_geoip()
metadata CHANGED
@@ -1,27 +1,31 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geoip-c
3
3
  version: !ruby/object:Gem::Version
4
- hash: 7
5
- prerelease:
4
+ hash: 15424151
5
+ prerelease: 6
6
6
  segments:
7
7
  - 0
8
- - 7
9
- - 2
10
- version: 0.7.2
8
+ - 8
9
+ - 0
10
+ - rc
11
+ - 1
12
+ version: 0.8.0.rc1
11
13
  platform: ruby
12
14
  authors:
13
15
  - Ryah Dahl
14
16
  - Matt Todd
17
+ - Andy Lindeman
15
18
  autorequire:
16
19
  bindir: bin
17
20
  cert_chain: []
18
21
 
19
- date: 2011-03-21 00:00:00 -04:00
20
- default_executable:
22
+ date: 2011-09-28 00:00:00 Z
21
23
  dependencies: []
22
24
 
23
25
  description: Generic GeoIP lookup tool. Based on the geoip_city RubyGem by Ryah Dahl
24
- email: mtodd@highgroove.com
26
+ email:
27
+ - alindeman@gmail.com
28
+ - mtodd@highgroove.com
25
29
  executables: []
26
30
 
27
31
  extensions:
@@ -34,7 +38,6 @@ files:
34
38
  - test.rb
35
39
  - geoip.c
36
40
  - README.md
37
- has_rdoc: true
38
41
  homepage: http://github.com/mtodd/geoip
39
42
  licenses: []
40
43
 
@@ -55,16 +58,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
55
58
  required_rubygems_version: !ruby/object:Gem::Requirement
56
59
  none: false
57
60
  requirements:
58
- - - ">="
61
+ - - ">"
59
62
  - !ruby/object:Gem::Version
60
- hash: 3
63
+ hash: 25
61
64
  segments:
62
- - 0
63
- version: "0"
65
+ - 1
66
+ - 3
67
+ - 1
68
+ version: 1.3.1
64
69
  requirements: []
65
70
 
66
71
  rubyforge_project:
67
- rubygems_version: 1.4.2
72
+ rubygems_version: 1.8.10
68
73
  signing_key:
69
74
  specification_version: 3
70
75
  summary: A Binding to the GeoIP C library