undns 0.4.0d → 0.4.0f

Sign up to get free protection for your applications and to get access to all the features.
data/ext/undns/earth.c CHANGED
@@ -5,12 +5,17 @@
5
5
  #include <string.h>
6
6
  #include <math.h>
7
7
  #include <assert.h>
8
+ #include <sys/types.h>
8
9
 
9
10
  #ifdef HAVE_GNUREGEX_H
11
+ #ifdef DEPRECATED_GNU_REGEX
10
12
  #include <gnuregex.h>
11
13
  #else
12
14
  #include <regex.h>
13
15
  #endif
16
+ #else
17
+ #include <regex.h>
18
+ #endif
14
19
 
15
20
  #include "xmalloc.h"
16
21
  #include "nscommon.h"
@@ -108,13 +113,27 @@ void init_earth(const char *LocationTableFilename) {
108
113
  free(newlte);
109
114
  }
110
115
  #else
111
- int reg_ret = regexec(&rpbuf, linebuf, REGS_LEN, regs, 0);
116
+ // printf("-- %s", linebuf);
117
+ memset(regs, 0, sizeof(regs));
118
+ int reg_ret = regexec(&rpbuf, linebuf, REGS_LEN-1, regs, 0);
112
119
  if(reg_ret == REG_NOMATCH) {
113
120
  fprintf(stderr, "init_earth: Couldn't parse line: %s", linebuf);
114
121
  free(newlte);
115
122
  continue;
123
+ } else if(reg_ret == REG_ILLSEQ) {
124
+ fprintf(stderr, "init_earth: Illegal character sequence in (skipped) line: %s", linebuf);
125
+ free(newlte);
126
+ continue;
127
+ } else if(reg_ret != 0) {
128
+ fprintf(stderr, "init_earth: unexpected nonzero return from regexec: %d\n", reg_ret);
129
+ exit(1);
116
130
  }
131
+ /* on mac, at least, rm_eo and rm_so are long long (64 bit) */
132
+ // printf("%d %s %lld %lld\n", reg_ret, linebuf, regs[1].rm_eo, regs[1].rm_so);
133
+ /* if incorrectly thought to be 32 bit when it's 64, eo will be zero; fail quickly */
134
+ assert(regs[1].rm_eo >= regs[1].rm_so);
117
135
  newlte->place = malloc(regs[1].rm_eo - regs[1].rm_so + 1);
136
+ assert(newlte->place);
118
137
  strncpy(newlte->place, linebuf+regs[1].rm_so, regs[1].rm_eo-regs[1].rm_so);
119
138
  newlte->place[ regs[1].rm_eo - regs[1].rm_so ] = '\0';
120
139
  if(lte_ht_lookup(loctable, newlte) == NULL) {
data/ext/undns/extconf.rb CHANGED
@@ -15,7 +15,9 @@ have_header('sys/types.h')
15
15
  have_header('sys/time.h')
16
16
  have_header('ruby/io.h')
17
17
  have_func('snprintf')
18
- $defs.push('-DPKGDATADIR=\"$(RUBYLIBDIR)/undns\"')
18
+ # if installed as system, likely in rubylibdir
19
+ # if installed as user, perhaps relative to where unpacked.
20
+ $defs.push('-DPKGDATADIR=\"$(RUBYLIBDIR)/undns:%s\"' % [ File.expand_path(File.dirname(__FILE__) + "/../../lib/undns") ])
19
21
  $defs.push('-DONIG_ESCAPE_REGEX_T_COLLISION') # deep in there is a typedef
20
22
 
21
23
  # create_header('config.h')
@@ -88,14 +88,18 @@ hashtable ht_new(unsigned int size,
88
88
  ht->isequal = isequal;
89
89
  ht->free_keyval = free_keyval;
90
90
  #ifdef _REENTRANT
91
- #ifdef PTHREAD_MUTEX_RECURSIVE_NP
92
91
  (void)pthread_mutexattr_init(&attrib);
93
92
  // (void)pthread_mutexattr_setkind_np(&attrib, PTHREAD_MUTEX_RECURSIVE_NP);
94
93
  // (void)pthread_mutexattr_setkind(&attrib, PTHREAD_MUTEX_RECURSIVE_NP);
94
+ #ifdef PTHREAD_MUTEX_RECURSIVE_NP
95
+ /* linux only */
95
96
  (void)pthread_mutexattr_settype(&attrib, PTHREAD_MUTEX_RECURSIVE_NP);
97
+ #else
98
+ /* mac, at least */
99
+ (void)pthread_mutexattr_settype(&attrib, PTHREAD_MUTEX_RECURSIVE);
100
+ #endif
96
101
  (void)pthread_mutex_init(&ht->mutex, &attrib);
97
102
  (void)pthread_mutexattr_destroy(&attrib);
98
- #endif
99
103
  #endif
100
104
  return(ht);
101
105
  }
data/ext/undns/originAS.c CHANGED
@@ -22,12 +22,14 @@ static in_addr_t addr_from_octets(unsigned int o1, unsigned int o2,
22
22
  return (htonl((o1<<24) + (o2<<16) + (o3<<8) + o4));
23
23
  }
24
24
 
25
+ const char *Origins_In_Use;
26
+
25
27
  void
26
28
  origins_init(const char *origins_dat) {
27
29
  char linebuf[60];
28
30
  // FILE *in = popen("./show_origins.pl | sort -u", "r");
29
31
  const char *filename = (origins_dat != NULL) ? origins_dat : "origins.dat";
30
- FILE *in = fopen_path_r(filename);
32
+ FILE *in = fopen_path_r(filename, &Origins_In_Use);
31
33
  if(in == NULL) {
32
34
  char buf[255];
33
35
  sprintf(buf, "can't open origins.dat(%s): %s", filename, strerror(errno));
@@ -99,7 +101,7 @@ origins_regression_test(const char *origins_dat) {
99
101
  FILE *in;
100
102
  char linebuf[60];
101
103
  origins_init(origins_dat);
102
- in = fopen_path_r(origins_dat);
104
+ in = fopen_path_r(origins_dat, &Origins_In_Use);
103
105
  while(!feof(in) && fgets(linebuf, sizeof(linebuf), in) != NULL) {
104
106
  unsigned int o1, o2, o3, o4, len, as;
105
107
  if(sscanf(linebuf, "%u.%u.%u.%u/%u %u",
@@ -112,7 +114,7 @@ origins_regression_test(const char *origins_dat) {
112
114
  fprintf(stderr, "failed to verify %u == %u on line:\n%s",
113
115
  as, (unsigned int) pe->data, linebuf);
114
116
  if(pe->prefixlen > len) {
115
- fprintf(stderr, " -- because a more specific was matched. (%d > %d)\n", pe->prefixlen, len);
117
+ fprintf(stderr, " -- because a more specific was matched. (%u > %u)\n", pe->prefixlen, len);
116
118
  } else {
117
119
  #if !defined(CHECK_ORIGINS_SHOULD_FAIL) || CHECK_ORIGINS_SHOULD_FAIL == 0
118
120
  abort();
@@ -130,5 +132,5 @@ origins_regression_test(const char *origins_dat) {
130
132
  }
131
133
  }
132
134
  }
133
- fclose(in);
135
+ (void)fclose(in);
134
136
  }
data/ext/undns/originAS.h CHANGED
@@ -1,8 +1,11 @@
1
1
  /* (c) neil spring 2002 */
2
2
 
3
3
  #include "nscommon.h"
4
+ #include <sys/types.h>
4
5
  #include <netinet/in.h>
5
6
 
7
+ extern const char *Origins_In_Use; /* for ensuring the right one is being used */
8
+
6
9
  void origins_init(const char *origins_dat);
7
10
  unsigned short origin_for_address(in_addr_t a);
8
11
  unsigned short origin_for_address_str(const char *addrstring);
data/ext/undns/progress.c CHANGED
@@ -30,10 +30,10 @@
30
30
  #ifdef HAVE_CONFIG_H
31
31
  #include <config.h>
32
32
  #endif
33
- #include<float.h>
34
- #include<assert.h>
33
+ #include <float.h>
34
+ #include <assert.h>
35
35
 
36
- #include"nscommon.h"
36
+ #include "nscommon.h"
37
37
 
38
38
  /* gettimeofday */
39
39
  #include <sys/time.h>
data/ext/undns/ruleset.c CHANGED
@@ -70,7 +70,7 @@ static const char *inst_format_stats(char *buf, unsigned int buflen, const struc
70
70
 
71
71
  /* also invoked by originAS.c */
72
72
  /*@null@*/ FILE *
73
- fopen_path_r(const char *filename) {
73
+ fopen_path_r(const char *filename, const char **found_path_name) {
74
74
  char *fullpath = searchPath(ruleset_path, filename);
75
75
  if(fullpath != NULL) {
76
76
  FILE * ret;
@@ -85,7 +85,11 @@ fopen_path_r(const char *filename) {
85
85
  }
86
86
  */
87
87
  ret = fopen(fullpath, "r");
88
- free(fullpath);
88
+ if(found_path_name) {
89
+ *found_path_name = fullpath;
90
+ } else {
91
+ free(fullpath);
92
+ }
89
93
  return ret;
90
94
  } else {
91
95
  errno = ENOENT;
@@ -93,13 +97,15 @@ fopen_path_r(const char *filename) {
93
97
  }
94
98
  }
95
99
 
100
+ const char *Ruleset_In_Use;
101
+
96
102
  /* returns true if all good, false if there was a parse error */
97
103
  void load_ruleset(const char *filename) {
98
104
  FILE *fp;
99
105
  if(filename == NULL) {
100
106
  throw_void("load_ruleset: no filename to load\n");
101
107
  }
102
- fp=fopen_path_r(filename);
108
+ fp=fopen_path_r(filename, &Ruleset_In_Use);
103
109
  if(fp != NULL) {
104
110
  if(is_nonempty(fp)) {
105
111
  input_filename = filename;
data/ext/undns/ruleset.h CHANGED
@@ -16,6 +16,8 @@
16
16
  #include "nscommon.h"
17
17
  #include <stdio.h>
18
18
 
19
+ extern const char *Ruleset_In_Use; /* for ensuring the right one is being used */
20
+
19
21
  struct instrumentation {
20
22
  const char *file; unsigned int line;
21
23
  unsigned int dynamic_match_count;
@@ -98,7 +100,7 @@ const char *get_role(int asn, const char *hostname);
98
100
  const char *get_loc_list(int asn, const char **hostname_list); /* majority rule */
99
101
  int get_asn_bydns(const char *hostname);
100
102
  /*@mustfree@*/ /*@null@*/ char * search_path(const char *path, const char *find_me);
101
- /*@null@*/ FILE *fopen_path_r (const char *filename);
103
+ /*@null@*/ FILE *fopen_path_r (const char *filename, /*@out null@*/ const char **found);
102
104
  extern const char *ruleset_path; /* where to search */
103
105
 
104
106
  void set_conventions_debug(boolean v);
@@ -1,11 +1,11 @@
1
1
  /* ----------------------------------------------------------------------------
2
2
  * This file was automatically generated by SWIG (http://www.swig.org).
3
- * Version 2.0.12
4
- *
5
- * This file is not intended to be easily readable and contains a number of
3
+ * Version 2.0.7
4
+ *
5
+ * This file is not intended to be easily readable and contains a number of
6
6
  * coding conventions designed to improve portability and efficiency. Do not make
7
- * changes to this file unless you know what you are doing--modify the SWIG
8
- * interface file instead.
7
+ * changes to this file unless you know what you are doing--modify the SWIG
8
+ * interface file instead.
9
9
  * ----------------------------------------------------------------------------- */
10
10
 
11
11
  #define SWIGRUBY
@@ -41,28 +41,28 @@
41
41
  #ifndef SWIGUNUSED
42
42
  # if defined(__GNUC__)
43
43
  # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
44
- # define SWIGUNUSED __attribute__ ((__unused__))
44
+ # define SWIGUNUSED __attribute__ ((__unused__))
45
45
  # else
46
46
  # define SWIGUNUSED
47
47
  # endif
48
48
  # elif defined(__ICC)
49
- # define SWIGUNUSED __attribute__ ((__unused__))
49
+ # define SWIGUNUSED __attribute__ ((__unused__))
50
50
  # else
51
- # define SWIGUNUSED
51
+ # define SWIGUNUSED
52
52
  # endif
53
53
  #endif
54
54
 
55
55
  #ifndef SWIG_MSC_UNSUPPRESS_4505
56
56
  # if defined(_MSC_VER)
57
57
  # pragma warning(disable : 4505) /* unreferenced local function has been removed */
58
- # endif
58
+ # endif
59
59
  #endif
60
60
 
61
61
  #ifndef SWIGUNUSEDPARM
62
62
  # ifdef __cplusplus
63
63
  # define SWIGUNUSEDPARM(p)
64
64
  # else
65
- # define SWIGUNUSEDPARM(p) p SWIGUNUSED
65
+ # define SWIGUNUSEDPARM(p) p SWIGUNUSED
66
66
  # endif
67
67
  #endif
68
68
 
@@ -105,7 +105,7 @@
105
105
  # define SWIGSTDCALL __stdcall
106
106
  # else
107
107
  # define SWIGSTDCALL
108
- # endif
108
+ # endif
109
109
  #endif
110
110
 
111
111
  /* Deal with Microsoft's attempt at deprecating C standard runtime functions */
@@ -150,28 +150,28 @@
150
150
  #ifndef SWIGUNUSED
151
151
  # if defined(__GNUC__)
152
152
  # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
153
- # define SWIGUNUSED __attribute__ ((__unused__))
153
+ # define SWIGUNUSED __attribute__ ((__unused__))
154
154
  # else
155
155
  # define SWIGUNUSED
156
156
  # endif
157
157
  # elif defined(__ICC)
158
- # define SWIGUNUSED __attribute__ ((__unused__))
158
+ # define SWIGUNUSED __attribute__ ((__unused__))
159
159
  # else
160
- # define SWIGUNUSED
160
+ # define SWIGUNUSED
161
161
  # endif
162
162
  #endif
163
163
 
164
164
  #ifndef SWIG_MSC_UNSUPPRESS_4505
165
165
  # if defined(_MSC_VER)
166
166
  # pragma warning(disable : 4505) /* unreferenced local function has been removed */
167
- # endif
167
+ # endif
168
168
  #endif
169
169
 
170
170
  #ifndef SWIGUNUSEDPARM
171
171
  # ifdef __cplusplus
172
172
  # define SWIGUNUSEDPARM(p)
173
173
  # else
174
- # define SWIGUNUSEDPARM(p) p SWIGUNUSED
174
+ # define SWIGUNUSEDPARM(p) p SWIGUNUSED
175
175
  # endif
176
176
  #endif
177
177
 
@@ -214,7 +214,7 @@
214
214
  # define SWIGSTDCALL __stdcall
215
215
  # else
216
216
  # define SWIGSTDCALL
217
- # endif
217
+ # endif
218
218
  #endif
219
219
 
220
220
  /* Deal with Microsoft's attempt at deprecating C standard runtime functions */
@@ -252,7 +252,7 @@
252
252
  You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
253
253
  creating a static or dynamic library from the SWIG runtime code.
254
254
  In 99.9% of the cases, SWIG just needs to declare them as 'static'.
255
-
255
+
256
256
  But only do this if strictly necessary, ie, if you have problems
257
257
  with your compiler or suchlike.
258
258
  */
@@ -278,16 +278,16 @@
278
278
  #define SWIG_POINTER_OWN 0x1
279
279
 
280
280
 
281
- /*
281
+ /*
282
282
  Flags/methods for returning states.
283
-
284
- The SWIG conversion methods, as ConvertPtr, return an integer
283
+
284
+ The SWIG conversion methods, as ConvertPtr, return an integer
285
285
  that tells if the conversion was successful or not. And if not,
286
286
  an error code can be returned (see swigerrors.swg for the codes).
287
-
287
+
288
288
  Use the following macros/flags to set or process the returning
289
289
  states.
290
-
290
+
291
291
  In old versions of SWIG, code such as the following was usually written:
292
292
 
293
293
  if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) {
@@ -320,23 +320,23 @@
320
320
  } else {
321
321
  // fail code
322
322
  }
323
-
323
+
324
324
  I.e., now SWIG_ConvertPtr can return new objects and you can
325
325
  identify the case and take care of the deallocation. Of course that
326
326
  also requires SWIG_ConvertPtr to return new result values, such as
327
327
 
328
- int SWIG_ConvertPtr(obj, ptr,...) {
329
- if (<obj is ok>) {
330
- if (<need new object>) {
331
- *ptr = <ptr to new allocated object>;
332
- return SWIG_NEWOBJ;
333
- } else {
334
- *ptr = <ptr to old object>;
335
- return SWIG_OLDOBJ;
336
- }
337
- } else {
338
- return SWIG_BADOBJ;
339
- }
328
+ int SWIG_ConvertPtr(obj, ptr,...) {
329
+ if (<obj is ok>) {
330
+ if (<need new object>) {
331
+ *ptr = <ptr to new allocated object>;
332
+ return SWIG_NEWOBJ;
333
+ } else {
334
+ *ptr = <ptr to old object>;
335
+ return SWIG_OLDOBJ;
336
+ }
337
+ } else {
338
+ return SWIG_BADOBJ;
339
+ }
340
340
  }
341
341
 
342
342
  Of course, returning the plain '0(success)/-1(fail)' still works, but you can be
@@ -350,17 +350,17 @@
350
350
  int fooi(int);
351
351
 
352
352
  and you call
353
-
353
+
354
354
  food(1) // cast rank '1' (1 -> 1.0)
355
355
  fooi(1) // cast rank '0'
356
356
 
357
357
  just use the SWIG_AddCast()/SWIG_CheckState()
358
358
  */
359
359
 
360
- #define SWIG_OK (0)
360
+ #define SWIG_OK (0)
361
361
  #define SWIG_ERROR (-1)
362
362
  #define SWIG_IsOK(r) (r >= 0)
363
- #define SWIG_ArgError(r) ((r != SWIG_ERROR) ? r : SWIG_TypeError)
363
+ #define SWIG_ArgError(r) ((r != SWIG_ERROR) ? r : SWIG_TypeError)
364
364
 
365
365
  /* The CastRankLimit says how many bits are used for the cast rank */
366
366
  #define SWIG_CASTRANKLIMIT (1 << 8)
@@ -391,14 +391,14 @@
391
391
  # endif
392
392
  # define SWIG_CASTRANKMASK ((SWIG_CASTRANKLIMIT) -1)
393
393
  # define SWIG_CastRank(r) (r & SWIG_CASTRANKMASK)
394
- SWIGINTERNINLINE int SWIG_AddCast(int r) {
394
+ SWIGINTERNINLINE int SWIG_AddCast(int r) {
395
395
  return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r;
396
396
  }
397
- SWIGINTERNINLINE int SWIG_CheckState(int r) {
398
- return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0;
397
+ SWIGINTERNINLINE int SWIG_CheckState(int r) {
398
+ return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0;
399
399
  }
400
400
  #else /* no cast-rank mode */
401
- # define SWIG_AddCast(r) (r)
401
+ # define SWIG_AddCast
402
402
  # define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0)
403
403
  #endif
404
404
 
@@ -442,7 +442,7 @@ typedef struct swig_module_info {
442
442
  void *clientdata; /* Language specific module data */
443
443
  } swig_module_info;
444
444
 
445
- /*
445
+ /*
446
446
  Compare two type names skipping the space characters, therefore
447
447
  "char*" == "char *" and "Class<int>" == "Class<int >", etc.
448
448
 
@@ -462,18 +462,18 @@ SWIG_TypeNameComp(const char *f1, const char *l1,
462
462
 
463
463
  /*
464
464
  Check type equivalence in a name list like <name1>|<name2>|...
465
- Return 0 if equal, -1 if nb < tb, 1 if nb > tb
465
+ Return 0 if not equal, 1 if equal
466
466
  */
467
467
  SWIGRUNTIME int
468
- SWIG_TypeCmp(const char *nb, const char *tb) {
469
- int equiv = 1;
468
+ SWIG_TypeEquiv(const char *nb, const char *tb) {
469
+ int equiv = 0;
470
470
  const char* te = tb + strlen(tb);
471
471
  const char* ne = nb;
472
- while (equiv != 0 && *ne) {
472
+ while (!equiv && *ne) {
473
473
  for (nb = ne; *ne; ++ne) {
474
474
  if (*ne == '|') break;
475
475
  }
476
- equiv = SWIG_TypeNameComp(nb, ne, tb, te);
476
+ equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0;
477
477
  if (*ne) ++ne;
478
478
  }
479
479
  return equiv;
@@ -481,13 +481,24 @@ SWIG_TypeCmp(const char *nb, const char *tb) {
481
481
 
482
482
  /*
483
483
  Check type equivalence in a name list like <name1>|<name2>|...
484
- Return 0 if not equal, 1 if equal
484
+ Return 0 if equal, -1 if nb < tb, 1 if nb > tb
485
485
  */
486
486
  SWIGRUNTIME int
487
- SWIG_TypeEquiv(const char *nb, const char *tb) {
488
- return SWIG_TypeCmp(nb, tb) == 0 ? 1 : 0;
487
+ SWIG_TypeCompare(const char *nb, const char *tb) {
488
+ int equiv = 0;
489
+ const char* te = tb + strlen(tb);
490
+ const char* ne = nb;
491
+ while (!equiv && *ne) {
492
+ for (nb = ne; *ne; ++ne) {
493
+ if (*ne == '|') break;
494
+ }
495
+ equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0;
496
+ if (*ne) ++ne;
497
+ }
498
+ return equiv;
489
499
  }
490
500
 
501
+
491
502
  /*
492
503
  Check the typename
493
504
  */
@@ -515,7 +526,7 @@ SWIG_TypeCheck(const char *c, swig_type_info *ty) {
515
526
  return 0;
516
527
  }
517
528
 
518
- /*
529
+ /*
519
530
  Identical to SWIG_TypeCheck, except strcmp is replaced with a pointer comparison
520
531
  */
521
532
  SWIGRUNTIME swig_cast_info *
@@ -550,7 +561,7 @@ SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) {
550
561
  return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory);
551
562
  }
552
563
 
553
- /*
564
+ /*
554
565
  Dynamic pointer casting. Down an inheritance hierarchy
555
566
  */
556
567
  SWIGRUNTIME swig_type_info *
@@ -594,7 +605,7 @@ SWIG_TypePrettyName(const swig_type_info *type) {
594
605
  return type->name;
595
606
  }
596
607
 
597
- /*
608
+ /*
598
609
  Set the clientdata field for a type
599
610
  */
600
611
  SWIGRUNTIME void
@@ -602,14 +613,14 @@ SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
602
613
  swig_cast_info *cast = ti->cast;
603
614
  /* if (ti->clientdata == clientdata) return; */
604
615
  ti->clientdata = clientdata;
605
-
616
+
606
617
  while (cast) {
607
618
  if (!cast->converter) {
608
619
  swig_type_info *tc = cast->type;
609
620
  if (!tc->clientdata) {
610
621
  SWIG_TypeClientData(tc, clientdata);
611
622
  }
612
- }
623
+ }
613
624
  cast = cast->next;
614
625
  }
615
626
  }
@@ -618,18 +629,18 @@ SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) {
618
629
  SWIG_TypeClientData(ti, clientdata);
619
630
  ti->owndata = 1;
620
631
  }
621
-
632
+
622
633
  /*
623
634
  Search for a swig_type_info structure only by mangled name
624
635
  Search is a O(log #types)
625
-
626
- We start searching at module start, and finish searching when start == end.
636
+
637
+ We start searching at module start, and finish searching when start == end.
627
638
  Note: if start == end at the beginning of the function, we go all the way around
628
639
  the circular list.
629
640
  */
630
641
  SWIGRUNTIME swig_type_info *
631
- SWIG_MangledTypeQueryModule(swig_module_info *start,
632
- swig_module_info *end,
642
+ SWIG_MangledTypeQueryModule(swig_module_info *start,
643
+ swig_module_info *end,
633
644
  const char *name) {
634
645
  swig_module_info *iter = start;
635
646
  do {
@@ -638,11 +649,11 @@ SWIG_MangledTypeQueryModule(swig_module_info *start,
638
649
  register size_t r = iter->size - 1;
639
650
  do {
640
651
  /* since l+r >= 0, we can (>> 1) instead (/ 2) */
641
- register size_t i = (l + r) >> 1;
652
+ register size_t i = (l + r) >> 1;
642
653
  const char *iname = iter->types[i]->name;
643
654
  if (iname) {
644
655
  register int compare = strcmp(name, iname);
645
- if (compare == 0) {
656
+ if (compare == 0) {
646
657
  return iter->types[i];
647
658
  } else if (compare < 0) {
648
659
  if (i) {
@@ -667,14 +678,14 @@ SWIG_MangledTypeQueryModule(swig_module_info *start,
667
678
  Search for a swig_type_info structure for either a mangled name or a human readable name.
668
679
  It first searches the mangled names of the types, which is a O(log #types)
669
680
  If a type is not found it then searches the human readable names, which is O(#types).
670
-
671
- We start searching at module start, and finish searching when start == end.
681
+
682
+ We start searching at module start, and finish searching when start == end.
672
683
  Note: if start == end at the beginning of the function, we go all the way around
673
684
  the circular list.
674
685
  */
675
686
  SWIGRUNTIME swig_type_info *
676
- SWIG_TypeQueryModule(swig_module_info *start,
677
- swig_module_info *end,
687
+ SWIG_TypeQueryModule(swig_module_info *start,
688
+ swig_module_info *end,
678
689
  const char *name) {
679
690
  /* STEP 1: Search the name field using binary search */
680
691
  swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name);
@@ -693,12 +704,12 @@ SWIG_TypeQueryModule(swig_module_info *start,
693
704
  iter = iter->next;
694
705
  } while (iter != end);
695
706
  }
696
-
707
+
697
708
  /* neither found a match */
698
709
  return 0;
699
710
  }
700
711
 
701
- /*
712
+ /*
702
713
  Pack binary data into a string
703
714
  */
704
715
  SWIGRUNTIME char *
@@ -714,7 +725,7 @@ SWIG_PackData(char *c, void *ptr, size_t sz) {
714
725
  return c;
715
726
  }
716
727
 
717
- /*
728
+ /*
718
729
  Unpack binary data from a string
719
730
  */
720
731
  SWIGRUNTIME const char *
@@ -728,21 +739,21 @@ SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
728
739
  uu = ((d - '0') << 4);
729
740
  else if ((d >= 'a') && (d <= 'f'))
730
741
  uu = ((d - ('a'-10)) << 4);
731
- else
742
+ else
732
743
  return (char *) 0;
733
744
  d = *(c++);
734
745
  if ((d >= '0') && (d <= '9'))
735
746
  uu |= (d - '0');
736
747
  else if ((d >= 'a') && (d <= 'f'))
737
748
  uu |= (d - ('a'-10));
738
- else
749
+ else
739
750
  return (char *) 0;
740
751
  *u = uu;
741
752
  }
742
753
  return c;
743
754
  }
744
755
 
745
- /*
756
+ /*
746
757
  Pack 'void *' into a string buffer.
747
758
  */
748
759
  SWIGRUNTIME char *
@@ -802,18 +813,18 @@ SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
802
813
  #endif
803
814
 
804
815
  /* Errors in SWIG */
805
- #define SWIG_UnknownError -1
806
- #define SWIG_IOError -2
807
- #define SWIG_RuntimeError -3
808
- #define SWIG_IndexError -4
809
- #define SWIG_TypeError -5
810
- #define SWIG_DivisionByZero -6
811
- #define SWIG_OverflowError -7
812
- #define SWIG_SyntaxError -8
813
- #define SWIG_ValueError -9
816
+ #define SWIG_UnknownError -1
817
+ #define SWIG_IOError -2
818
+ #define SWIG_RuntimeError -3
819
+ #define SWIG_IndexError -4
820
+ #define SWIG_TypeError -5
821
+ #define SWIG_DivisionByZero -6
822
+ #define SWIG_OverflowError -7
823
+ #define SWIG_SyntaxError -8
824
+ #define SWIG_ValueError -9
814
825
  #define SWIG_SystemError -10
815
826
  #define SWIG_AttributeError -11
816
- #define SWIG_MemoryError -12
827
+ #define SWIG_MemoryError -12
817
828
  #define SWIG_NullReferenceError -13
818
829
 
819
830
 
@@ -1363,7 +1374,7 @@ SWIG_Ruby_AppendOutput(VALUE target, VALUE o) {
1363
1374
 
1364
1375
  /* Runtime API */
1365
1376
 
1366
- #define SWIG_GetModule(clientdata) SWIG_Ruby_GetModule(clientdata)
1377
+ #define SWIG_GetModule(clientdata) SWIG_Ruby_GetModule()
1367
1378
  #define SWIG_SetModule(clientdata, pointer) SWIG_Ruby_SetModule(pointer)
1368
1379
 
1369
1380
 
@@ -1699,7 +1710,7 @@ SWIG_Ruby_ConvertPacked(VALUE obj, void *ptr, int sz, swig_type_info *ty) {
1699
1710
  }
1700
1711
 
1701
1712
  SWIGRUNTIME swig_module_info *
1702
- SWIG_Ruby_GetModule(void *SWIGUNUSEDPARM(clientdata))
1713
+ SWIG_Ruby_GetModule(void)
1703
1714
  {
1704
1715
  VALUE pointer;
1705
1716
  swig_module_info *ret = 0;
@@ -1739,7 +1750,7 @@ SWIG_Ruby_SetModule(swig_module_info *pointer)
1739
1750
  SWIGINTERN
1740
1751
  int SWIG_Ruby_isCallable( VALUE proc )
1741
1752
  {
1742
- if ( rb_respond_to( proc, swig_call_id ) )
1753
+ if ( rb_respond_to( proc, swig_call_id ) == Qtrue )
1743
1754
  return 1;
1744
1755
  return 0;
1745
1756
  }
@@ -1752,7 +1763,7 @@ int SWIG_Ruby_isCallable( VALUE proc )
1752
1763
  SWIGINTERN
1753
1764
  int SWIG_Ruby_arity( VALUE proc, int minimal )
1754
1765
  {
1755
- if ( rb_respond_to( proc, swig_arity_id ) )
1766
+ if ( rb_respond_to( proc, swig_arity_id ) == Qtrue )
1756
1767
  {
1757
1768
  VALUE num = rb_funcall( proc, swig_arity_id, 0 );
1758
1769
  int arity = NUM2INT(num);
@@ -1801,7 +1812,7 @@ static VALUE mUndns;
1801
1812
  #define SWIG_RUBY_THREAD_END_BLOCK
1802
1813
 
1803
1814
 
1804
- #define SWIGVERSION 0x020012
1815
+ #define SWIGVERSION 0x020007
1805
1816
  #define SWIG_VERSION SWIGVERSION
1806
1817
 
1807
1818
 
@@ -1887,7 +1898,7 @@ SWIG_ruby_failed(void)
1887
1898
  }
1888
1899
 
1889
1900
 
1890
- /*@SWIG:/usr/share/swig2.0/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
1901
+ /*@SWIG:/usr/local/Cellar/swig/2.0.7/share/swig/2.0.7/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
1891
1902
  SWIGINTERN VALUE SWIG_AUX_NUM2LONG(VALUE *args)
1892
1903
  {
1893
1904
  VALUE obj = args[0];
@@ -1993,7 +2004,11 @@ SWIGINTERN int
1993
2004
  SWIG_AsCharPtrAndSize(VALUE obj, char** cptr, size_t* psize, int *alloc)
1994
2005
  {
1995
2006
  if (TYPE(obj) == T_STRING) {
2007
+ #if defined(StringValuePtr)
1996
2008
  char *cstr = StringValuePtr(obj);
2009
+ #else
2010
+ char *cstr = STR2CSTR(obj);
2011
+ #endif
1997
2012
  size_t size = RSTRING_LEN(obj) + 1;
1998
2013
  if (cptr) {
1999
2014
  if (alloc) {
@@ -2169,6 +2184,24 @@ fail:
2169
2184
  }
2170
2185
 
2171
2186
 
2187
+ SWIGINTERN VALUE
2188
+ _wrap_Ruleset_In_Use_get(VALUE self) {
2189
+ VALUE _val;
2190
+
2191
+ _val = SWIG_FromCharPtr(Ruleset_In_Use);
2192
+ return _val;
2193
+ }
2194
+
2195
+
2196
+ SWIGINTERN VALUE
2197
+ _wrap_Origins_In_Use_get(VALUE self) {
2198
+ VALUE _val;
2199
+
2200
+ _val = SWIG_FromCharPtr(Origins_In_Use);
2201
+ return _val;
2202
+ }
2203
+
2204
+
2172
2205
  SWIGINTERN VALUE
2173
2206
  _wrap_get_loc(int argc, VALUE *argv, VALUE self) {
2174
2207
  int arg1 ;
@@ -2708,18 +2741,18 @@ static swig_cast_info *swig_cast_initial[] = {
2708
2741
 
2709
2742
  /* -----------------------------------------------------------------------------
2710
2743
  * Type initialization:
2711
- * This problem is tough by the requirement that no dynamic
2712
- * memory is used. Also, since swig_type_info structures store pointers to
2744
+ * This problem is tough by the requirement that no dynamic
2745
+ * memory is used. Also, since swig_type_info structures store pointers to
2713
2746
  * swig_cast_info structures and swig_cast_info structures store pointers back
2714
- * to swig_type_info structures, we need some lookup code at initialization.
2715
- * The idea is that swig generates all the structures that are needed.
2716
- * The runtime then collects these partially filled structures.
2717
- * The SWIG_InitializeModule function takes these initial arrays out of
2747
+ * to swig_type_info structures, we need some lookup code at initialization.
2748
+ * The idea is that swig generates all the structures that are needed.
2749
+ * The runtime then collects these partially filled structures.
2750
+ * The SWIG_InitializeModule function takes these initial arrays out of
2718
2751
  * swig_module, and does all the lookup, filling in the swig_module.types
2719
2752
  * array with the correct data and linking the correct swig_cast_info
2720
2753
  * structures together.
2721
2754
  *
2722
- * The generated swig_type_info structures are assigned staticly to an initial
2755
+ * The generated swig_type_info structures are assigned staticly to an initial
2723
2756
  * array. We just loop through that array, and handle each type individually.
2724
2757
  * First we lookup if this type has been already loaded, and if so, use the
2725
2758
  * loaded structure instead of the generated one. Then we have to fill in the
@@ -2729,17 +2762,17 @@ static swig_cast_info *swig_cast_initial[] = {
2729
2762
  * a column is one of the swig_cast_info structures for that type.
2730
2763
  * The cast_initial array is actually an array of arrays, because each row has
2731
2764
  * a variable number of columns. So to actually build the cast linked list,
2732
- * we find the array of casts associated with the type, and loop through it
2765
+ * we find the array of casts associated with the type, and loop through it
2733
2766
  * adding the casts to the list. The one last trick we need to do is making
2734
2767
  * sure the type pointer in the swig_cast_info struct is correct.
2735
2768
  *
2736
- * First off, we lookup the cast->type name to see if it is already loaded.
2769
+ * First off, we lookup the cast->type name to see if it is already loaded.
2737
2770
  * There are three cases to handle:
2738
2771
  * 1) If the cast->type has already been loaded AND the type we are adding
2739
2772
  * casting info to has not been loaded (it is in this module), THEN we
2740
2773
  * replace the cast->type pointer with the type pointer that has already
2741
2774
  * been loaded.
2742
- * 2) If BOTH types (the one we are adding casting info to, and the
2775
+ * 2) If BOTH types (the one we are adding casting info to, and the
2743
2776
  * cast->type) are loaded, THEN the cast info has already been loaded by
2744
2777
  * the previous module so we just ignore it.
2745
2778
  * 3) Finally, if cast->type has not already been loaded, then we add that
@@ -2765,6 +2798,8 @@ SWIG_InitializeModule(void *clientdata) {
2765
2798
  swig_module_info *module_head, *iter;
2766
2799
  int found, init;
2767
2800
 
2801
+ clientdata = clientdata;
2802
+
2768
2803
  /* check to see if the circular list has been setup, if not, set it up */
2769
2804
  if (swig_module.next==0) {
2770
2805
  /* Initialize the swig_module */
@@ -2802,7 +2837,7 @@ SWIG_InitializeModule(void *clientdata) {
2802
2837
  module_head->next = &swig_module;
2803
2838
  }
2804
2839
 
2805
- /* When multiple interpreters are used, a module could have already been initialized in
2840
+ /* When multiple interpeters are used, a module could have already been initialized in
2806
2841
  a different interpreter, but not yet have a pointer in this interpreter.
2807
2842
  In this case, we do not want to continue adding types... everything should be
2808
2843
  set up already */
@@ -2816,7 +2851,7 @@ SWIG_InitializeModule(void *clientdata) {
2816
2851
  swig_type_info *type = 0;
2817
2852
  swig_type_info *ret;
2818
2853
  swig_cast_info *cast;
2819
-
2854
+
2820
2855
  #ifdef SWIGRUNTIME_DEBUG
2821
2856
  printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
2822
2857
  #endif
@@ -2843,7 +2878,7 @@ SWIG_InitializeModule(void *clientdata) {
2843
2878
  /* Insert casting types */
2844
2879
  cast = swig_module.cast_initial[i];
2845
2880
  while (cast->type) {
2846
-
2881
+
2847
2882
  /* Don't need to add information already in the list */
2848
2883
  ret = 0;
2849
2884
  #ifdef SWIGRUNTIME_DEBUG
@@ -2965,6 +3000,8 @@ SWIGEXPORT void Init_undns(void) {
2965
3000
  rb_define_singleton_method(mUndns, "want_conventions_debug=", _wrap_want_conventions_debug_set, 1);
2966
3001
  rb_define_singleton_method(mUndns, "ruleset_path", _wrap_ruleset_path_get, 0);
2967
3002
  rb_define_singleton_method(mUndns, "ruleset_path=", _wrap_ruleset_path_set, 1);
3003
+ rb_define_singleton_method(mUndns, "Ruleset_In_Use", _wrap_Ruleset_In_Use_get, 0);
3004
+ rb_define_singleton_method(mUndns, "Origins_In_Use", _wrap_Origins_In_Use_get, 0);
2968
3005
  rb_define_module_function(mUndns, "get_loc", _wrap_get_loc, -1);
2969
3006
  rb_define_module_function(mUndns, "get_role", _wrap_get_role, -1);
2970
3007
  rb_define_module_function(mUndns, "get_asn_bydns", _wrap_get_asn_bydns, -1);