- Move malloc.c to memory.c
authormichael <michael@82007160-df01-0410-b94d-b575c5fd34c7>
Wed, 7 Jan 2015 20:45:06 +0000 (20:45 +0000)
committermichael <michael@82007160-df01-0410-b94d-b575c5fd34c7>
Wed, 7 Jan 2015 20:45:06 +0000 (20:45 +0000)
git-svn-id: svn://svn.ircd-hybrid.org/svnroot/hopm/trunk@5333 82007160-df01-0410-b94d-b575c5fd34c7

19 files changed:
configure
src/Makefile.am
src/Makefile.in
src/config-parser.c
src/config-parser.h
src/config-parser.y
src/config.c
src/dnsbl.c
src/firedns.c
src/irc.c
src/list.c
src/main.c
src/malloc.c [deleted file]
src/malloc.h [deleted file]
src/memory.c [new file with mode: 0644]
src/memory.h [new file with mode: 0644]
src/negcache.c
src/opercmd.c
src/scan.c

index 6e3c636d5fea8da32f48157cdf79e16ab57bf11b..fc301d20d76e46d67c2e235203e4591d55b6eae4 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.ac Id: configure.ac 4980 2014-12-05 14:30:16Z michael .
+# From configure.ac Id: configure.ac 5314 2015-01-06 13:27:34Z michael .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.69 for hopm TRUNK.
 #
index b2492dc2cde2b2a5d6a6ecb924ad2e09246c917e..4f49da6c5ad65ba19e2f15e8df38a0a9de05cb63 100644 (file)
@@ -23,8 +23,8 @@ hopm_SOURCES = compat.c        \
                log.h           \
                main.c          \
                main.h          \
-               malloc.c        \
-               malloc.h        \
+               memory.c        \
+               memory.h        \
                match.c         \
                match.h         \
                misc.c          \
index 9794ed77b9ffe6072eb4f4c92c118bd91720cc70..565f68e56c27a43070f3fa2579f715cbc3350ac6 100644 (file)
@@ -97,7 +97,7 @@ PROGRAMS = $(bin_PROGRAMS)
 am_hopm_OBJECTS = compat.$(OBJEXT) config.$(OBJEXT) \
        config-parser.$(OBJEXT) config-lexer.$(OBJEXT) dnsbl.$(OBJEXT) \
        firedns.$(OBJEXT) irc.$(OBJEXT) list.$(OBJEXT) log.$(OBJEXT) \
-       main.$(OBJEXT) malloc.$(OBJEXT) match.$(OBJEXT) misc.$(OBJEXT) \
+       main.$(OBJEXT) memory.$(OBJEXT) match.$(OBJEXT) misc.$(OBJEXT) \
        negcache.$(OBJEXT) opercmd.$(OBJEXT) scan.$(OBJEXT) \
        stats.$(OBJEXT)
 hopm_OBJECTS = $(am_hopm_OBJECTS)
@@ -371,8 +371,8 @@ hopm_SOURCES = compat.c        \
                log.h           \
                main.c          \
                main.h          \
-               malloc.c        \
-               malloc.h        \
+               memory.c        \
+               memory.h        \
                match.c         \
                match.h         \
                misc.c          \
@@ -512,8 +512,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/malloc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/match.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memory.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/negcache.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opercmd.Po@am__quote@
index 78b57f78e3f08470aa570223755b331c5ce8c223..ea928be785d50fe8d5e651e033c7a8fa70d4431e 100644 (file)
@@ -66,7 +66,8 @@
 
 #include <stdio.h>
 #include <string.h>
-#include "malloc.h"
+
+#include "memory.h"
 #include "config.h"
 
 int yylex(void);
@@ -75,7 +76,7 @@ int yydebug=0;
 void *tmp;        /* Variable to temporarily hold nodes before insertion to list */
 
 
-#line 79 "config-parser.c" /* yacc.c:339  */
+#line 80 "config-parser.c" /* yacc.c:339  */
 
 # ifndef YY_NULLPTR
 #  if defined __cplusplus && 201103L <= __cplusplus
@@ -132,41 +133,42 @@ extern int yydebug;
     MODE = 277,
     NAME = 278,
     NEGCACHE = 279,
-    NICK = 280,
-    NICKSERV = 281,
-    OPER = 282,
-    OPM = 283,
-    OPTIONS = 284,
-    PASSWORD = 285,
-    PERFORM = 286,
-    PIDFILE = 287,
-    PORT = 288,
-    PROTOCOL = 289,
-    READTIMEOUT = 290,
-    REALNAME = 291,
-    REPLY = 292,
-    SCANLOG = 293,
-    SCANNER = 294,
-    SECONDS = 295,
-    MINUTES = 296,
-    HOURS = 297,
-    DAYS = 298,
-    WEEKS = 299,
-    MONTHS = 300,
-    YEARS = 301,
-    SENDMAIL = 302,
-    SERVER = 303,
-    TARGET_IP = 304,
-    TARGET_PORT = 305,
-    TARGET_STRING = 306,
-    TIMEOUT = 307,
-    TYPE = 308,
-    USERNAME = 309,
-    USER = 310,
-    VHOST = 311,
-    NUMBER = 312,
-    STRING = 313,
-    PROTOCOLTYPE = 314
+    NEGCACHE_REBUILD = 280,
+    NICK = 281,
+    NICKSERV = 282,
+    OPER = 283,
+    OPM = 284,
+    OPTIONS = 285,
+    PASSWORD = 286,
+    PERFORM = 287,
+    PIDFILE = 288,
+    PORT = 289,
+    PROTOCOL = 290,
+    READTIMEOUT = 291,
+    REALNAME = 292,
+    REPLY = 293,
+    SCANLOG = 294,
+    SCANNER = 295,
+    SECONDS = 296,
+    MINUTES = 297,
+    HOURS = 298,
+    DAYS = 299,
+    WEEKS = 300,
+    MONTHS = 301,
+    YEARS = 302,
+    SENDMAIL = 303,
+    SERVER = 304,
+    TARGET_IP = 305,
+    TARGET_PORT = 306,
+    TARGET_STRING = 307,
+    TIMEOUT = 308,
+    TYPE = 309,
+    USERNAME = 310,
+    USER = 311,
+    VHOST = 312,
+    NUMBER = 313,
+    STRING = 314,
+    PROTOCOLTYPE = 315
   };
 #endif
 /* Tokens.  */
@@ -192,53 +194,54 @@ extern int yydebug;
 #define MODE 277
 #define NAME 278
 #define NEGCACHE 279
-#define NICK 280
-#define NICKSERV 281
-#define OPER 282
-#define OPM 283
-#define OPTIONS 284
-#define PASSWORD 285
-#define PERFORM 286
-#define PIDFILE 287
-#define PORT 288
-#define PROTOCOL 289
-#define READTIMEOUT 290
-#define REALNAME 291
-#define REPLY 292
-#define SCANLOG 293
-#define SCANNER 294
-#define SECONDS 295
-#define MINUTES 296
-#define HOURS 297
-#define DAYS 298
-#define WEEKS 299
-#define MONTHS 300
-#define YEARS 301
-#define SENDMAIL 302
-#define SERVER 303
-#define TARGET_IP 304
-#define TARGET_PORT 305
-#define TARGET_STRING 306
-#define TIMEOUT 307
-#define TYPE 308
-#define USERNAME 309
-#define USER 310
-#define VHOST 311
-#define NUMBER 312
-#define STRING 313
-#define PROTOCOLTYPE 314
+#define NEGCACHE_REBUILD 280
+#define NICK 281
+#define NICKSERV 282
+#define OPER 283
+#define OPM 284
+#define OPTIONS 285
+#define PASSWORD 286
+#define PERFORM 287
+#define PIDFILE 288
+#define PORT 289
+#define PROTOCOL 290
+#define READTIMEOUT 291
+#define REALNAME 292
+#define REPLY 293
+#define SCANLOG 294
+#define SCANNER 295
+#define SECONDS 296
+#define MINUTES 297
+#define HOURS 298
+#define DAYS 299
+#define WEEKS 300
+#define MONTHS 301
+#define YEARS 302
+#define SENDMAIL 303
+#define SERVER 304
+#define TARGET_IP 305
+#define TARGET_PORT 306
+#define TARGET_STRING 307
+#define TIMEOUT 308
+#define TYPE 309
+#define USERNAME 310
+#define USER 311
+#define VHOST 312
+#define NUMBER 313
+#define STRING 314
+#define PROTOCOLTYPE 315
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE YYSTYPE;
 union YYSTYPE
 {
-#line 86 "config-parser.y" /* yacc.c:355  */
+#line 88 "config-parser.y" /* yacc.c:355  */
 
         int number;
         char *string;
 
-#line 242 "config-parser.c" /* yacc.c:355  */
+#line 245 "config-parser.c" /* yacc.c:355  */
 };
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
@@ -253,7 +256,7 @@ int yyparse (void);
 
 /* Copy the second part of user declarations.  */
 
-#line 257 "config-parser.c" /* yacc.c:358  */
+#line 260 "config-parser.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -495,21 +498,21 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   306
+#define YYLAST   311
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  65
+#define YYNTOKENS  66
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  79
+#define YYNNTS  80
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  149
+#define YYNRULES  151
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  324
+#define YYNSTATES  329
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   314
+#define YYMAXUTOK   315
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -523,14 +526,14 @@ static const yytype_uint8 yytranslate[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    64,    62,
-       2,    63,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    65,    63,
+       2,    64,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,    60,     2,    61,     2,     2,     2,     2,
+       2,     2,     2,    61,     2,    62,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -549,28 +552,29 @@ static const yytype_uint8 yytranslate[] =
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59
+      55,    56,    57,    58,    59,    60
 };
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   101,   101,   102,   105,   106,   107,   108,   109,   110,
-     112,   112,   113,   114,   115,   116,   117,   118,   119,   120,
-     123,   123,   124,   125,   126,   127,   132,   134,   135,   137,
-     138,   139,   140,   141,   143,   148,   154,   159,   167,   169,
-     170,   172,   173,   174,   175,   176,   177,   178,   179,   180,
-     181,   182,   183,   184,   185,   186,   187,   188,   190,   196,
-     202,   208,   214,   220,   226,   232,   240,   245,   250,   256,
-     262,   268,   274,   284,   284,   301,   302,   304,   305,   306,
-     308,   316,   324,   335,   335,   351,   352,   354,   355,   356,
-     358,   368,   381,   381,   426,   427,   429,   430,   431,   432,
-     433,   434,   435,   436,   437,   438,   440,   447,   454,   461,
-     477,   483,   489,   495,   501,   520,   522,   523,   525,   526,
-     527,   528,   529,   531,   537,   543,   552,   552,   571,   572,
-     574,   575,   576,   577,   578,   579,   581,   588,   595,   606,
-     612,   614,   615,   617,   635,   637,   638,   640,   641,   643
+       0,   103,   103,   104,   107,   108,   109,   110,   111,   112,
+     114,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     125,   125,   126,   127,   128,   129,   134,   136,   137,   139,
+     140,   141,   142,   143,   144,   146,   151,   156,   162,   167,
+     175,   177,   178,   180,   181,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
+     198,   204,   210,   216,   222,   228,   234,   240,   248,   253,
+     258,   264,   270,   276,   282,   292,   292,   309,   310,   312,
+     313,   314,   316,   324,   332,   343,   343,   359,   360,   362,
+     363,   364,   366,   376,   389,   389,   434,   435,   437,   438,
+     439,   440,   441,   442,   443,   444,   445,   446,   448,   455,
+     462,   469,   485,   491,   497,   503,   509,   528,   530,   531,
+     533,   534,   535,   536,   537,   539,   545,   551,   560,   560,
+     579,   580,   582,   583,   584,   585,   586,   587,   589,   596,
+     603,   614,   620,   622,   623,   625,   643,   645,   646,   648,
+     649,   651
 };
 #endif
 
@@ -582,18 +586,18 @@ static const char *const yytname[] =
   "$end", "error", "$undefined", "AWAY", "BAN_UNKNOWN", "BLACKLIST",
   "BYTES", "KBYTES", "MBYTES", "CHANNEL", "CONNREGEX", "DNS_FDLIMIT",
   "DNSBL_FROM", "DNSBL_TO", "EXEMPT", "FD", "INVITE", "IRC", "KLINE",
-  "KEY", "MASK", "MAX_READ", "MODE", "NAME", "NEGCACHE", "NICK",
-  "NICKSERV", "OPER", "OPM", "OPTIONS", "PASSWORD", "PERFORM", "PIDFILE",
-  "PORT", "PROTOCOL", "READTIMEOUT", "REALNAME", "REPLY", "SCANLOG",
-  "SCANNER", "SECONDS", "MINUTES", "HOURS", "DAYS", "WEEKS", "MONTHS",
-  "YEARS", "SENDMAIL", "SERVER", "TARGET_IP", "TARGET_PORT",
-  "TARGET_STRING", "TIMEOUT", "TYPE", "USERNAME", "USER", "VHOST",
-  "NUMBER", "STRING", "PROTOCOLTYPE", "'{'", "'}'", "';'", "'='", "':'",
-  "$accept", "config", "config_items", "timespec_", "timespec",
+  "KEY", "MASK", "MAX_READ", "MODE", "NAME", "NEGCACHE",
+  "NEGCACHE_REBUILD", "NICK", "NICKSERV", "OPER", "OPM", "OPTIONS",
+  "PASSWORD", "PERFORM", "PIDFILE", "PORT", "PROTOCOL", "READTIMEOUT",
+  "REALNAME", "REPLY", "SCANLOG", "SCANNER", "SECONDS", "MINUTES", "HOURS",
+  "DAYS", "WEEKS", "MONTHS", "YEARS", "SENDMAIL", "SERVER", "TARGET_IP",
+  "TARGET_PORT", "TARGET_STRING", "TIMEOUT", "TYPE", "USERNAME", "USER",
+  "VHOST", "NUMBER", "STRING", "PROTOCOLTYPE", "'{'", "'}'", "';'", "'='",
+  "':'", "$accept", "config", "config_items", "timespec_", "timespec",
   "sizespec_", "sizespec", "options_entry", "options_items",
-  "options_item", "options_negcache", "options_pidfile",
-  "options_dns_fdlimit", "options_scanlog", "irc_entry", "irc_items",
-  "irc_item", "irc_away", "irc_kline", "irc_mode", "irc_nick",
+  "options_item", "options_negcache", "options_negcache_rebuild",
+  "options_pidfile", "options_dns_fdlimit", "options_scanlog", "irc_entry",
+  "irc_items", "irc_item", "irc_away", "irc_kline", "irc_mode", "irc_nick",
   "irc_nickserv", "irc_oper", "irc_password", "irc_perform", "irc_port",
   "irc_readtimeout", "irc_realname", "irc_server", "irc_username",
   "irc_vhost", "irc_connregex", "channel_entry", "$@1", "channel_items",
@@ -623,16 +627,16 @@ static const yytype_uint16 yytoknum[] =
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
-     123,   125,    59,    61,    58
+     315,   123,   125,    59,    61,    58
 };
 # endif
 
-#define YYPACT_NINF -149
+#define YYPACT_NINF -125
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-149)))
+  (!!((Yystate) == (-125)))
 
-#define YYTABLE_NINF -127
+#define YYTABLE_NINF -129
 
 #define yytable_value_is_error(Yytable_value) \
   0
@@ -641,39 +645,39 @@ static const yytype_uint16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    -149,   122,  -149,   -53,   -52,   -46,   -44,  -149,  -149,  -149,
-    -149,   -50,  -149,   -22,  -149,  -149,    43,    73,   113,   130,
-     -41,   -32,  -149,   -34,     3,  -149,  -149,  -149,   -31,   -26,
-     -24,   -18,   -17,   -14,   -13,   -11,     4,     9,    14,    21,
-      22,    25,    33,     0,  -149,  -149,  -149,  -149,  -149,  -149,
-    -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,
-    -149,    57,  -149,    39,    47,    49,    46,  -149,  -149,  -149,
-    -149,  -149,   108,  -149,    53,    65,    75,    77,    54,  -149,
-    -149,  -149,  -149,  -149,   104,    96,    86,    87,  -149,    95,
-      97,    99,   100,   101,   106,   107,   109,   111,   114,   131,
-     129,   134,   135,   136,   127,  -149,   137,   138,   140,   141,
-     139,  -149,   142,   143,   131,   145,   146,   144,  -149,  -149,
-     128,   132,    40,  -149,  -149,  -149,  -149,   148,   149,   150,
-     151,   152,   153,   154,   155,   156,    19,  -149,  -149,  -149,
-    -149,  -149,  -149,  -149,  -149,  -149,  -149,   158,  -149,   159,
-     160,   161,   162,   163,   164,   165,   166,   167,   168,   133,
-     169,   170,   171,   172,   173,  -149,   147,   174,   175,   176,
-    -149,   119,   177,   178,   179,   180,  -149,   185,   186,   183,
-    -149,   189,   190,   191,   192,   194,   193,   195,   131,   196,
-     197,  -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,
-    -149,  -149,  -149,   131,   131,   131,   131,   131,   131,   131,
-    -149,  -149,  -149,  -149,  -149,  -149,  -149,   198,   199,   200,
-      71,  -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,   201,
-     202,   203,   188,   204,    20,  -149,  -149,  -149,  -149,  -149,
-    -149,  -149,  -149,  -149,  -149,   206,   207,  -149,   208,     5,
-     209,   210,   211,   212,   214,   215,   216,   217,  -149,  -149,
-    -149,  -149,  -149,  -149,  -149,  -149,   222,   223,   224,   221,
-    -149,   227,   228,   229,   231,   232,   230,  -149,  -149,  -149,
-    -149,   190,   190,   190,  -149,  -149,  -149,  -149,   234,  -149,
-    -149,  -149,  -149,  -149,   233,   235,   236,  -149,   237,   238,
-     239,   226,   -55,  -149,   240,  -149,  -149,  -149,  -149,   241,
-    -149,  -149,  -149,  -149,  -149,  -149,   246,   243,  -149,  -149,
-    -149,   244,  -149,  -149
+    -125,   127,  -125,   -53,   -49,   -47,   -38,  -125,  -125,  -125,
+    -125,   -27,  -125,     7,  -125,  -125,    34,    83,    77,   136,
+     -23,   -21,  -125,   -14,     1,  -125,  -125,  -125,   -13,    -3,
+       2,     8,     9,    13,    24,    30,    42,    44,    48,    57,
+      64,    65,    67,     0,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,    74,  -125,    70,    71,    75,    12,  -125,  -125,  -125,
+    -125,  -125,    93,  -125,    78,    82,    84,    86,    91,    19,
+    -125,  -125,  -125,  -125,  -125,  -125,    47,   101,    17,    96,
+    -125,   106,   109,   111,   112,   113,   114,   115,   131,   132,
+      87,   108,   133,   137,   138,   139,   140,  -125,   134,   141,
+     142,   143,   144,  -125,   145,   146,   108,   108,   149,   150,
+     147,  -125,  -125,   130,   148,    45,  -125,  -125,  -125,  -125,
+     151,   152,   153,   154,   155,   156,   157,   158,   159,    18,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+     161,  -125,   162,   163,   164,   165,   166,   167,   168,   169,
+     170,   171,   135,   172,   173,   174,   175,   176,  -125,   107,
+     177,   178,   179,  -125,    95,   180,   181,   182,   183,   184,
+    -125,   189,   190,   187,  -125,   193,   194,   195,   196,   198,
+     197,   199,   108,   200,   201,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,   108,   108,   108,
+     108,   108,   108,   108,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,   202,   203,   204,    81,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,   205,   206,   207,   192,   208,    41,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+     210,   211,  -125,   212,    -2,   213,   214,   215,   216,   218,
+     219,   220,   221,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,   226,   227,   228,   225,  -125,   231,   232,   233,   235,
+     236,   234,  -125,  -125,  -125,  -125,   194,   194,   194,  -125,
+    -125,  -125,  -125,   238,  -125,  -125,  -125,  -125,  -125,   237,
+     239,   240,  -125,   241,   242,   243,   230,   -51,  -125,   244,
+    -125,  -125,  -125,  -125,   245,  -125,  -125,  -125,  -125,  -125,
+    -125,   250,   247,  -125,  -125,  -125,   248,  -125,  -125
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -681,65 +685,65 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       2,    83,     1,     0,     0,     0,     0,     3,     5,     4,
+       2,    85,     1,     0,     0,     0,     0,     3,     5,     4,
        7,     0,     8,     0,     6,     9,     0,     0,     0,     0,
-       0,     0,   148,     0,     0,   146,   147,    57,     0,     0,
+       0,     0,   150,     0,     0,   148,   149,    59,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    40,    41,    43,    46,    44,    45,
-      47,    48,    55,    49,    50,    51,    52,    53,    54,    42,
-      56,     0,   122,     0,     0,     0,     0,   117,   118,   119,
-     120,   121,     0,    33,     0,     0,     0,     0,     0,    28,
-      29,    30,    31,    32,     0,     0,     0,     0,   145,     0,
+       0,     0,     0,     0,    42,    43,    45,    48,    46,    47,
+      49,    50,    57,    51,    52,    53,    54,    55,    56,    44,
+      58,     0,   124,     0,     0,     0,     0,   119,   120,   121,
+     122,   123,     0,    34,     0,     0,     0,     0,     0,     0,
+      28,    29,    30,    31,    32,    33,     0,     0,     0,     0,
+     147,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    41,     0,     0,
+       0,     0,     0,   118,     0,     0,     0,     0,     0,     0,
+       0,    27,    91,     0,     0,     0,    88,    89,    90,   107,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    39,     0,     0,     0,     0,
-       0,   116,     0,     0,     0,     0,     0,     0,    27,    89,
-       0,     0,     0,    86,    87,    88,   105,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    95,    96,    97,
-      99,   101,    98,   100,   103,   104,   102,     0,   144,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
-       0,     0,     0,     0,     0,    38,     0,     0,     0,     0,
-     115,     0,     0,     0,     0,     0,    26,     0,     0,     0,
-      85,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    94,   149,    58,    72,    59,    60,    61,    62,    63,
-      64,    65,    66,    10,    10,    10,    10,    10,    10,    10,
-      12,    11,    67,    68,    69,    70,    71,     0,     0,     0,
-       0,    76,    77,    78,    79,   123,   124,   125,   135,     0,
-       0,     0,     0,     0,     0,   129,   130,   132,   131,   133,
-     134,    36,    34,    35,    37,     0,     0,    84,     0,    20,
-       0,     0,     0,     0,     0,     0,     0,     0,    93,    13,
-      14,    15,    16,    17,    18,    19,     0,     0,     0,     0,
-      75,     0,     0,     0,     0,     0,     0,   128,    90,    91,
-     110,    20,    20,    20,    22,    21,   113,   106,     0,   108,
-     111,   109,   112,   107,     0,     0,     0,    74,     0,     0,
-       0,     0,     0,   142,     0,   127,    23,    24,    25,     0,
-      82,    81,    80,   139,   137,   136,     0,     0,   141,   138,
-     114,     0,   140,   143
+      97,    98,    99,   101,   103,   100,   102,   105,   106,   104,
+       0,   146,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    10,     0,     0,     0,     0,     0,    40,     0,
+       0,     0,     0,   117,     0,     0,     0,     0,     0,     0,
+      26,     0,     0,     0,    87,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    96,   151,    60,    74,    61,
+      62,    63,    64,    65,    66,    67,    68,    10,    10,    10,
+      10,    10,    10,    10,    12,    11,    69,    70,    71,    72,
+      73,     0,     0,     0,     0,    78,    79,    80,    81,   125,
+     126,   127,   137,     0,     0,     0,     0,     0,     0,   131,
+     132,   134,   133,   135,   136,    38,    35,    36,    37,    39,
+       0,     0,    86,     0,    20,     0,     0,     0,     0,     0,
+       0,     0,     0,    95,    13,    14,    15,    16,    17,    18,
+      19,     0,     0,     0,     0,    77,     0,     0,     0,     0,
+       0,     0,   130,    92,    93,   112,    20,    20,    20,    22,
+      21,   115,   108,     0,   110,   113,   111,   114,   109,     0,
+       0,     0,    76,     0,     0,     0,     0,     0,   144,     0,
+     129,    23,    24,    25,     0,    84,    83,    82,   141,   139,
+     138,     0,     0,   143,   140,   116,     0,   142,   145
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -149,  -149,  -149,   -23,   -99,  -148,    23,  -149,  -149,   182,
-    -149,  -149,  -149,  -149,  -149,  -149,   213,  -149,  -149,  -149,
-    -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,
-    -149,  -149,  -149,  -149,  -149,   -12,  -149,  -149,  -149,  -149,
-    -149,  -149,    85,  -149,  -149,  -149,  -149,  -149,    74,  -149,
-    -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,  -149,
-     219,  -149,  -149,  -149,  -149,  -149,  -149,   -25,  -149,  -149,
-    -149,  -149,  -149,  -149,   -47,  -149,  -149,   249,  -149
+    -125,  -125,  -125,   -24,  -101,  -124,    25,  -125,  -125,   120,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,   217,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,   -19,  -125,  -125,  -125,
+    -125,  -125,  -125,    88,  -125,  -125,  -125,  -125,  -125,   122,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,   224,  -125,  -125,  -125,  -125,  -125,  -125,    27,  -125,
+    -125,  -125,  -125,  -125,  -125,   -93,  -125,  -125,   254,  -125
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,     7,   210,   211,   284,   285,     8,    78,    79,
-      80,    81,    82,    83,     9,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,   220,   221,   222,   223,   224,    10,
-      11,   122,   123,   124,   125,    12,    13,   136,   137,   138,
-     139,   140,   141,   142,   143,   144,   145,   146,    14,    66,
-      67,    68,    69,    70,    71,    72,   234,   235,   236,   237,
-     238,   239,   240,   302,   303,    15,    24,    25,    26
+      -1,     1,     7,   214,   215,   289,   290,     8,    79,    80,
+      81,    82,    83,    84,    85,     9,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,    58,    59,    60,    61,   224,   225,   226,   227,   228,
+      10,    11,   125,   126,   127,   128,    12,    13,   139,   140,
+     141,   142,   143,   144,   145,   146,   147,   148,   149,    14,
+      66,    67,    68,    69,    70,    71,    72,   238,   239,   240,
+     241,   242,   243,   244,   307,   308,    15,    24,    25,    26
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -747,131 +751,134 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-     160,    27,   301,    28,    22,    20,   317,    16,    17,   -73,
-      29,   281,   282,   283,    18,   173,    19,    21,    30,    84,
-     126,   228,    31,    23,   229,    32,    33,    34,    85,    86,
-      35,    36,    89,    37,   127,    38,    39,    90,   230,    91,
-     128,   119,   129,   231,    22,    92,    93,    62,    40,    94,
-      95,  -126,    96,   130,    41,    73,    42,   232,    63,    64,
-     120,   104,   249,    23,    87,    74,   106,    97,   131,   132,
-     133,   134,    98,   233,    27,   135,    28,    99,    75,   121,
-     190,   276,   -73,    29,   100,   101,    76,   217,   102,   256,
-     218,    30,    77,    65,   219,    31,   103,   126,    32,    33,
-      34,   179,   107,    35,    36,   119,    37,   110,    38,    39,
-     108,   127,   109,   112,    62,   117,   113,   128,  -126,   129,
-     228,    40,     2,   229,   120,    63,    64,    41,   114,    42,
-     130,    73,   269,   306,   307,   308,     3,   230,   115,     4,
-     116,    74,   231,   121,   147,   131,   132,   133,   134,   148,
-       5,     6,   135,   149,    75,   150,   232,   151,   152,   153,
-      65,   -92,    76,   217,   154,   155,   218,   156,    77,   157,
-     219,   158,   233,   203,   204,   205,   206,   207,   208,   209,
-     259,   260,   261,   262,   263,   264,   265,   161,   159,   165,
-     159,   177,   162,   163,   164,   178,   167,   166,   168,   169,
-     172,   170,   171,   174,   175,   250,   176,   180,   270,   277,
-     191,   181,   182,   183,   184,   185,   186,   187,   188,   189,
-     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
-     202,   212,   213,   214,   215,   216,   225,   226,   227,   241,
-     242,   243,   244,   245,   246,   247,   248,   249,   274,   251,
-     254,   252,   253,   255,   257,   318,   105,     0,     0,   258,
-     118,   266,   267,   268,   271,   272,   273,   275,   278,   279,
-     280,   286,   287,    88,   289,   288,   290,   291,   292,   293,
-     294,   295,   296,   297,   298,   111,   299,   300,   301,   316,
-     304,   309,   305,     0,     0,   310,     0,   311,   312,   313,
-     314,   315,   319,   320,   321,   322,   323
+     163,    27,    22,    28,   286,   287,   288,   306,    16,   -75,
+      29,   322,    17,    62,    18,   176,   177,  -128,    30,   129,
+      73,    23,    31,    19,    63,    64,    32,    33,    34,    20,
+      74,    35,    36,   130,    37,    22,    38,    39,    86,   131,
+      87,   132,   232,    75,    76,   233,   122,    21,   122,    40,
+      88,    91,    77,   133,    23,    41,   254,    42,    78,   234,
+      65,    92,   106,    89,   235,   123,    93,   123,   134,   135,
+     136,   137,    94,    95,   112,   138,   150,    96,    62,   236,
+     194,   120,  -128,   108,    27,   124,    28,   124,    97,    63,
+      64,   261,   -75,    29,    98,   237,   232,   221,   114,   233,
+     222,    30,   129,   281,   223,    31,    99,   183,   100,    32,
+      33,    34,   101,   234,    35,    36,   130,    37,   235,    38,
+      39,   102,   131,   221,   132,    65,   222,     2,   103,   104,
+     223,   105,    40,   236,   109,   110,   133,    73,    41,   111,
+      42,     3,   115,   274,     4,   161,   116,    74,   117,   237,
+     118,   134,   135,   136,   137,   119,     5,     6,   138,   151,
+      75,    76,   311,   312,   313,   152,   162,   -94,   153,    77,
+     154,   155,   156,   157,   158,    78,   207,   208,   209,   210,
+     211,   212,   213,   264,   265,   266,   267,   268,   269,   270,
+     159,   160,   164,   162,   181,   169,   165,   166,   167,   121,
+     170,   171,   172,   168,   175,   275,   174,   173,   178,   179,
+     180,   255,   182,   184,   323,   185,   186,   187,   188,   189,
+     190,   191,   192,   193,   196,   197,   198,   199,   200,   201,
+     202,   203,   204,   205,   206,   216,   217,   218,   219,   220,
+     229,   230,   231,   245,   246,   247,   248,   249,   250,   251,
+     252,   253,   254,   279,   256,   259,   257,   258,   260,   262,
+     107,   195,     0,     0,   263,   282,   271,   272,   273,   276,
+     277,   278,   280,   283,   284,   285,   291,   292,    90,   294,
+     293,   295,   296,   297,   298,   299,   300,   301,   302,   303,
+     113,   304,   305,   306,   321,   309,   314,   310,     0,     0,
+     315,     0,   316,   317,   318,   319,   320,   324,   325,   326,
+     327,   328
 };
 
 static const yytype_int16 yycheck[] =
 {
-      99,     1,    57,     3,     1,    55,    61,    60,    60,     9,
-      10,     6,     7,     8,    60,   114,    60,    39,    18,    60,
-       1,     1,    22,    20,     4,    25,    26,    27,    60,    63,
-      30,    31,    63,    33,    15,    35,    36,    63,    18,    63,
-      21,     1,    23,    23,     1,    63,    63,     1,    48,    63,
-      63,     5,    63,    34,    54,     1,    56,    37,    12,    13,
-      20,    61,    57,    20,    61,    11,     9,    63,    49,    50,
-      51,    52,    63,    53,     1,    56,     3,    63,    24,    39,
-      61,    61,     9,    10,    63,    63,    32,    16,    63,   188,
-      19,    18,    38,    47,    23,    22,    63,     1,    25,    26,
-      27,    61,    63,    30,    31,     1,    33,    61,    35,    36,
-      63,    15,    63,     5,     1,    61,    63,    21,     5,    23,
-       1,    48,     0,     4,    20,    12,    13,    54,    63,    56,
-      34,     1,    61,   281,   282,   283,    14,    18,    63,    17,
-      63,    11,    23,    39,    58,    49,    50,    51,    52,    62,
-      28,    29,    56,    58,    24,    58,    37,    58,    58,    58,
-      47,    39,    32,    16,    58,    58,    19,    58,    38,    58,
-      23,    57,    53,    40,    41,    42,    43,    44,    45,    46,
-     203,   204,   205,   206,   207,   208,   209,    58,    57,    62,
-      57,    63,    58,    58,    58,    63,    58,    60,    58,    58,
-      57,    62,    60,    58,    58,   182,    62,   122,   220,   234,
-     136,    63,    63,    63,    63,    63,    63,    63,    63,    63,
-      62,    62,    62,    62,    62,    62,    62,    62,    62,    62,
-      62,    62,    62,    62,    62,    62,    62,    62,    62,    62,
-      62,    62,    62,    58,    58,    62,    57,    57,    60,    58,
-      57,    59,    58,    58,    58,   302,    43,    -1,    -1,    62,
-      78,    63,    63,    63,    63,    63,    63,    63,    62,    62,
-      62,    62,    62,    24,    62,    64,    62,    62,    62,    62,
-      58,    58,    58,    62,    57,    66,    58,    58,    57,    63,
-      58,    57,    62,    -1,    -1,    62,    -1,    62,    62,    62,
-      62,    62,    62,    62,    58,    62,    62
+     101,     1,     1,     3,     6,     7,     8,    58,    61,     9,
+      10,    62,    61,     1,    61,   116,   117,     5,    18,     1,
+       1,    20,    22,    61,    12,    13,    26,    27,    28,    56,
+      11,    31,    32,    15,    34,     1,    36,    37,    61,    21,
+      61,    23,     1,    24,    25,     4,     1,    40,     1,    49,
+      64,    64,    33,    35,    20,    55,    58,    57,    39,    18,
+      48,    64,    62,    62,    23,    20,    64,    20,    50,    51,
+      52,    53,    64,    64,    62,    57,    59,    64,     1,    38,
+      62,    62,     5,     9,     1,    40,     3,    40,    64,    12,
+      13,   192,     9,    10,    64,    54,     1,    16,     5,     4,
+      19,    18,     1,    62,    23,    22,    64,    62,    64,    26,
+      27,    28,    64,    18,    31,    32,    15,    34,    23,    36,
+      37,    64,    21,    16,    23,    48,    19,     0,    64,    64,
+      23,    64,    49,    38,    64,    64,    35,     1,    55,    64,
+      57,    14,    64,    62,    17,    58,    64,    11,    64,    54,
+      64,    50,    51,    52,    53,    64,    29,    30,    57,    63,
+      24,    25,   286,   287,   288,    59,    58,    40,    59,    33,
+      59,    59,    59,    59,    59,    39,    41,    42,    43,    44,
+      45,    46,    47,   207,   208,   209,   210,   211,   212,   213,
+      59,    59,    59,    58,    64,    61,    59,    59,    59,    79,
+      59,    59,    59,    63,    58,   224,    61,    63,    59,    59,
+      63,   186,    64,   125,   307,    64,    64,    64,    64,    64,
+      64,    64,    64,    64,    63,    63,    63,    63,    63,    63,
+      63,    63,    63,    63,    63,    63,    63,    63,    63,    63,
+      63,    63,    63,    63,    63,    63,    63,    63,    59,    59,
+      63,    58,    58,    61,    59,    58,    60,    59,    59,    59,
+      43,   139,    -1,    -1,    63,   238,    64,    64,    64,    64,
+      64,    64,    64,    63,    63,    63,    63,    63,    24,    63,
+      65,    63,    63,    63,    63,    59,    59,    59,    63,    58,
+      66,    59,    59,    58,    64,    59,    58,    63,    -1,    -1,
+      63,    -1,    63,    63,    63,    63,    63,    63,    63,    59,
+      63,    63
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,    66,     0,    14,    17,    28,    29,    67,    72,    79,
-     104,   105,   110,   111,   123,   140,    60,    60,    60,    60,
-      55,    39,     1,    20,   141,   142,   143,     1,     3,    10,
-      18,    22,    25,    26,    27,    30,    31,    33,    35,    36,
-      48,    54,    56,    80,    81,    82,    83,    84,    85,    86,
-      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-      97,    98,     1,    12,    13,    47,   124,   125,   126,   127,
-     128,   129,   130,     1,    11,    24,    32,    38,    73,    74,
-      75,    76,    77,    78,    60,    60,    63,    61,   142,    63,
-      63,    63,    63,    63,    63,    63,    63,    63,    63,    63,
-      63,    63,    63,    63,    61,    81,     9,    63,    63,    63,
-      61,   125,     5,    63,    63,    63,    63,    61,    74,     1,
-      20,    39,   106,   107,   108,   109,     1,    15,    21,    23,
-      34,    49,    50,    51,    52,    56,   112,   113,   114,   115,
-     116,   117,   118,   119,   120,   121,   122,    58,    62,    58,
-      58,    58,    58,    58,    58,    58,    58,    58,    57,    57,
-      69,    58,    58,    58,    58,    62,    60,    58,    58,    58,
-      62,    60,    57,    69,    58,    58,    62,    63,    63,    61,
-     107,    63,    63,    63,    63,    63,    63,    63,    63,    63,
-      61,   113,    62,    62,    62,    62,    62,    62,    62,    62,
-      62,    62,    62,    40,    41,    42,    43,    44,    45,    46,
-      68,    69,    62,    62,    62,    62,    62,    16,    19,    23,
-      99,   100,   101,   102,   103,    62,    62,    62,     1,     4,
-      18,    23,    37,    53,   131,   132,   133,   134,   135,   136,
-     137,    62,    62,    62,    62,    58,    58,    62,    57,    57,
-      71,    58,    59,    58,    57,    58,    69,    58,    62,    68,
-      68,    68,    68,    68,    68,    68,    63,    63,    63,    61,
-     100,    63,    63,    63,    60,    63,    61,   132,    62,    62,
-      62,     6,     7,     8,    70,    71,    62,    62,    64,    62,
-      62,    62,    62,    62,    58,    58,    58,    62,    57,    58,
-      58,    57,   138,   139,    58,    62,    70,    70,    70,    57,
-      62,    62,    62,    62,    62,    62,    63,    61,   139,    62,
-      62,    58,    62,    62
+       0,    67,     0,    14,    17,    29,    30,    68,    73,    81,
+     106,   107,   112,   113,   125,   142,    61,    61,    61,    61,
+      56,    40,     1,    20,   143,   144,   145,     1,     3,    10,
+      18,    22,    26,    27,    28,    31,    32,    34,    36,    37,
+      49,    55,    57,    82,    83,    84,    85,    86,    87,    88,
+      89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
+      99,   100,     1,    12,    13,    48,   126,   127,   128,   129,
+     130,   131,   132,     1,    11,    24,    25,    33,    39,    74,
+      75,    76,    77,    78,    79,    80,    61,    61,    64,    62,
+     144,    64,    64,    64,    64,    64,    64,    64,    64,    64,
+      64,    64,    64,    64,    64,    64,    62,    83,     9,    64,
+      64,    64,    62,   127,     5,    64,    64,    64,    64,    64,
+      62,    75,     1,    20,    40,   108,   109,   110,   111,     1,
+      15,    21,    23,    35,    50,    51,    52,    53,    57,   114,
+     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+      59,    63,    59,    59,    59,    59,    59,    59,    59,    59,
+      59,    58,    58,    70,    59,    59,    59,    59,    63,    61,
+      59,    59,    59,    63,    61,    58,    70,    70,    59,    59,
+      63,    64,    64,    62,   109,    64,    64,    64,    64,    64,
+      64,    64,    64,    64,    62,   115,    63,    63,    63,    63,
+      63,    63,    63,    63,    63,    63,    63,    41,    42,    43,
+      44,    45,    46,    47,    69,    70,    63,    63,    63,    63,
+      63,    16,    19,    23,   101,   102,   103,   104,   105,    63,
+      63,    63,     1,     4,    18,    23,    38,    54,   133,   134,
+     135,   136,   137,   138,   139,    63,    63,    63,    63,    63,
+      59,    59,    63,    58,    58,    72,    59,    60,    59,    58,
+      59,    70,    59,    63,    69,    69,    69,    69,    69,    69,
+      69,    64,    64,    64,    62,   102,    64,    64,    64,    61,
+      64,    62,   134,    63,    63,    63,     6,     7,     8,    71,
+      72,    63,    63,    65,    63,    63,    63,    63,    63,    59,
+      59,    59,    63,    58,    59,    59,    58,   140,   141,    59,
+      63,    71,    71,    71,    58,    63,    63,    63,    63,    63,
+      63,    64,    62,   141,    63,    63,    59,    63,    63
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    65,    66,    66,    67,    67,    67,    67,    67,    67,
-      68,    68,    69,    69,    69,    69,    69,    69,    69,    69,
-      70,    70,    71,    71,    71,    71,    72,    73,    73,    74,
-      74,    74,    74,    74,    75,    76,    77,    78,    79,    80,
-      80,    81,    81,    81,    81,    81,    81,    81,    81,    81,
-      81,    81,    81,    81,    81,    81,    81,    81,    82,    83,
+       0,    66,    67,    67,    68,    68,    68,    68,    68,    68,
+      69,    69,    70,    70,    70,    70,    70,    70,    70,    70,
+      71,    71,    72,    72,    72,    72,    73,    74,    74,    75,
+      75,    75,    75,    75,    75,    76,    77,    78,    79,    80,
+      81,    82,    82,    83,    83,    83,    83,    83,    83,    83,
+      83,    83,    83,    83,    83,    83,    83,    83,    83,    83,
       84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
-      94,    95,    96,    98,    97,    99,    99,   100,   100,   100,
-     101,   102,   103,   105,   104,   106,   106,   107,   107,   107,
-     108,   109,   111,   110,   112,   112,   113,   113,   113,   113,
-     113,   113,   113,   113,   113,   113,   114,   115,   116,   117,
-     118,   119,   120,   121,   122,   123,   124,   124,   125,   125,
-     125,   125,   125,   126,   127,   128,   130,   129,   131,   131,
-     132,   132,   132,   132,   132,   132,   133,   134,   135,   136,
-     137,   138,   138,   139,   140,   141,   141,   142,   142,   143
+      94,    95,    96,    97,    98,   100,    99,   101,   101,   102,
+     102,   102,   103,   104,   105,   107,   106,   108,   108,   109,
+     109,   109,   110,   111,   113,   112,   114,   114,   115,   115,
+     115,   115,   115,   115,   115,   115,   115,   115,   116,   117,
+     118,   119,   120,   121,   122,   123,   124,   125,   126,   126,
+     127,   127,   127,   127,   127,   128,   129,   130,   132,   131,
+     133,   133,   134,   134,   134,   134,   134,   134,   135,   136,
+     137,   138,   139,   140,   140,   141,   142,   143,   143,   144,
+     144,   145
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -880,18 +887,19 @@ static const yytype_uint8 yyr2[] =
        0,     2,     0,     2,     1,     1,     1,     1,     1,     1,
        0,     1,     2,     3,     3,     3,     3,     3,     3,     3,
        0,     1,     2,     3,     3,     3,     5,     2,     1,     1,
-       1,     1,     1,     1,     4,     4,     4,     4,     5,     2,
+       1,     1,     1,     1,     1,     4,     4,     4,     4,     4,
+       5,     2,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     4,     4,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     0,     6,     2,     1,     1,     1,     1,
-       4,     4,     4,     0,     6,     2,     1,     1,     1,     1,
-       4,     4,     0,     6,     2,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     4,     4,     4,     4,
-       4,     4,     4,     4,     6,     5,     2,     1,     1,     1,
-       1,     1,     1,     4,     4,     4,     0,     6,     2,     1,
-       1,     1,     1,     1,     1,     1,     4,     4,     4,     4,
-       5,     2,     1,     4,     5,     2,     1,     1,     1,     4
+       4,     4,     4,     4,     4,     0,     6,     2,     1,     1,
+       1,     1,     4,     4,     4,     0,     6,     2,     1,     1,
+       1,     1,     4,     4,     0,     6,     2,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     4,     4,
+       4,     4,     4,     4,     4,     4,     6,     5,     2,     1,
+       1,     1,     1,     1,     1,     4,     4,     4,     0,     6,
+       2,     1,     1,     1,     1,     1,     1,     1,     4,     4,
+       4,     4,     5,     2,     1,     4,     5,     2,     1,     1,
+       1,     4
 };
 
 
@@ -1568,260 +1576,268 @@ yyreduce:
   switch (yyn)
     {
         case 10:
-#line 112 "config-parser.y" /* yacc.c:1646  */
+#line 114 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = 0; }
-#line 1574 "config-parser.c" /* yacc.c:1646  */
+#line 1582 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 12:
-#line 113 "config-parser.y" /* yacc.c:1646  */
+#line 115 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
-#line 1580 "config-parser.c" /* yacc.c:1646  */
+#line 1588 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 13:
-#line 114 "config-parser.y" /* yacc.c:1646  */
+#line 116 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
-#line 1586 "config-parser.c" /* yacc.c:1646  */
+#line 1594 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 14:
-#line 115 "config-parser.y" /* yacc.c:1646  */
+#line 117 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) * 60 + (yyvsp[0].number); }
-#line 1592 "config-parser.c" /* yacc.c:1646  */
+#line 1600 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 15:
-#line 116 "config-parser.y" /* yacc.c:1646  */
+#line 118 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) * 60 * 60 + (yyvsp[0].number); }
-#line 1598 "config-parser.c" /* yacc.c:1646  */
+#line 1606 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 16:
-#line 117 "config-parser.y" /* yacc.c:1646  */
+#line 119 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 + (yyvsp[0].number); }
-#line 1604 "config-parser.c" /* yacc.c:1646  */
+#line 1612 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 17:
-#line 118 "config-parser.y" /* yacc.c:1646  */
+#line 120 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 + (yyvsp[0].number); }
-#line 1610 "config-parser.c" /* yacc.c:1646  */
+#line 1618 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 18:
-#line 119 "config-parser.y" /* yacc.c:1646  */
+#line 121 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 * 4 + (yyvsp[0].number); }
-#line 1616 "config-parser.c" /* yacc.c:1646  */
+#line 1624 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 19:
-#line 120 "config-parser.y" /* yacc.c:1646  */
+#line 122 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 365 + (yyvsp[0].number); }
-#line 1622 "config-parser.c" /* yacc.c:1646  */
+#line 1630 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 20:
-#line 123 "config-parser.y" /* yacc.c:1646  */
+#line 125 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = 0; }
-#line 1628 "config-parser.c" /* yacc.c:1646  */
+#line 1636 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 22:
-#line 124 "config-parser.y" /* yacc.c:1646  */
+#line 126 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
-#line 1634 "config-parser.c" /* yacc.c:1646  */
+#line 1642 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 23:
-#line 125 "config-parser.y" /* yacc.c:1646  */
+#line 127 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
-#line 1640 "config-parser.c" /* yacc.c:1646  */
+#line 1648 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 24:
-#line 126 "config-parser.y" /* yacc.c:1646  */
+#line 128 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) * 1024 + (yyvsp[0].number); }
-#line 1646 "config-parser.c" /* yacc.c:1646  */
+#line 1654 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 25:
-#line 127 "config-parser.y" /* yacc.c:1646  */
+#line 129 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) * 1024 * 1024 + (yyvsp[0].number); }
-#line 1652 "config-parser.c" /* yacc.c:1646  */
+#line 1660 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 34:
-#line 144 "config-parser.y" /* yacc.c:1646  */
+  case 35:
+#line 147 "config-parser.y" /* yacc.c:1646  */
     {
    OptionsItem->negcache = (yyvsp[-1].number);
 }
-#line 1660 "config-parser.c" /* yacc.c:1646  */
+#line 1668 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 35:
-#line 149 "config-parser.y" /* yacc.c:1646  */
+  case 36:
+#line 152 "config-parser.y" /* yacc.c:1646  */
+    {
+   OptionsItem->negcache_rebuild = (yyvsp[-1].number);
+}
+#line 1676 "config-parser.c" /* yacc.c:1646  */
+    break;
+
+  case 37:
+#line 157 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(OptionsItem->pidfile);
    OptionsItem->pidfile = xstrdup((yyvsp[-1].string));
 }
-#line 1669 "config-parser.c" /* yacc.c:1646  */
+#line 1685 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 36:
-#line 155 "config-parser.y" /* yacc.c:1646  */
+  case 38:
+#line 163 "config-parser.y" /* yacc.c:1646  */
     {
    OptionsItem->dns_fdlimit = (yyvsp[-1].number);
 }
-#line 1677 "config-parser.c" /* yacc.c:1646  */
+#line 1693 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 37:
-#line 160 "config-parser.y" /* yacc.c:1646  */
+  case 39:
+#line 168 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(OptionsItem->scanlog);
    OptionsItem->scanlog = xstrdup((yyvsp[-1].string));
 }
-#line 1686 "config-parser.c" /* yacc.c:1646  */
+#line 1702 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 58:
-#line 191 "config-parser.y" /* yacc.c:1646  */
+  case 60:
+#line 199 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->away);
    IRCItem->away = xstrdup((yyvsp[-1].string));
 }
-#line 1695 "config-parser.c" /* yacc.c:1646  */
+#line 1711 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 59:
-#line 197 "config-parser.y" /* yacc.c:1646  */
+  case 61:
+#line 205 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->kline);
    IRCItem->kline = xstrdup((yyvsp[-1].string));
 }
-#line 1704 "config-parser.c" /* yacc.c:1646  */
+#line 1720 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 60:
-#line 203 "config-parser.y" /* yacc.c:1646  */
+  case 62:
+#line 211 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->mode);
    IRCItem->mode = xstrdup((yyvsp[-1].string));
 }
-#line 1713 "config-parser.c" /* yacc.c:1646  */
+#line 1729 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 61:
-#line 209 "config-parser.y" /* yacc.c:1646  */
+  case 63:
+#line 217 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->nick);
    IRCItem->nick = xstrdup((yyvsp[-1].string));
 }
-#line 1722 "config-parser.c" /* yacc.c:1646  */
+#line 1738 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 62:
-#line 215 "config-parser.y" /* yacc.c:1646  */
+  case 64:
+#line 223 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->nickserv);
    IRCItem->nickserv = xstrdup((yyvsp[-1].string));
 }
-#line 1731 "config-parser.c" /* yacc.c:1646  */
+#line 1747 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 63:
-#line 221 "config-parser.y" /* yacc.c:1646  */
+  case 65:
+#line 229 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->oper);
    IRCItem->oper = xstrdup((yyvsp[-1].string));
 }
-#line 1740 "config-parser.c" /* yacc.c:1646  */
+#line 1756 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 64:
-#line 227 "config-parser.y" /* yacc.c:1646  */
+  case 66:
+#line 235 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->password);
    IRCItem->password = xstrdup((yyvsp[-1].string));
 }
-#line 1749 "config-parser.c" /* yacc.c:1646  */
+#line 1765 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 65:
-#line 233 "config-parser.y" /* yacc.c:1646  */
+  case 67:
+#line 241 "config-parser.y" /* yacc.c:1646  */
     {
    node_t *node;
    node = node_create(xstrdup((yyvsp[-1].string)));
 
    list_add(IRCItem->performs, node);
 }
-#line 1760 "config-parser.c" /* yacc.c:1646  */
+#line 1776 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 66:
-#line 241 "config-parser.y" /* yacc.c:1646  */
+  case 68:
+#line 249 "config-parser.y" /* yacc.c:1646  */
     {
    IRCItem->port = (yyvsp[-1].number);
 }
-#line 1768 "config-parser.c" /* yacc.c:1646  */
+#line 1784 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 67:
-#line 246 "config-parser.y" /* yacc.c:1646  */
+  case 69:
+#line 254 "config-parser.y" /* yacc.c:1646  */
     {
    IRCItem->readtimeout = (yyvsp[-1].number);
 }
-#line 1776 "config-parser.c" /* yacc.c:1646  */
+#line 1792 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 68:
-#line 251 "config-parser.y" /* yacc.c:1646  */
+  case 70:
+#line 259 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->realname);
    IRCItem->realname = xstrdup((yyvsp[-1].string));
 }
-#line 1785 "config-parser.c" /* yacc.c:1646  */
+#line 1801 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 69:
-#line 257 "config-parser.y" /* yacc.c:1646  */
+  case 71:
+#line 265 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->server);
    IRCItem->server = xstrdup((yyvsp[-1].string));
 }
-#line 1794 "config-parser.c" /* yacc.c:1646  */
+#line 1810 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 70:
-#line 263 "config-parser.y" /* yacc.c:1646  */
+  case 72:
+#line 271 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->username);
    IRCItem->username = xstrdup((yyvsp[-1].string));
 }
-#line 1803 "config-parser.c" /* yacc.c:1646  */
+#line 1819 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 71:
-#line 269 "config-parser.y" /* yacc.c:1646  */
+  case 73:
+#line 277 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->vhost);
    IRCItem->vhost = xstrdup((yyvsp[-1].string));
 }
-#line 1812 "config-parser.c" /* yacc.c:1646  */
+#line 1828 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 72:
-#line 275 "config-parser.y" /* yacc.c:1646  */
+  case 74:
+#line 283 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->connregex);
    IRCItem->connregex = xstrdup((yyvsp[-1].string));
 }
-#line 1821 "config-parser.c" /* yacc.c:1646  */
+#line 1837 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 73:
-#line 284 "config-parser.y" /* yacc.c:1646  */
+  case 75:
+#line 292 "config-parser.y" /* yacc.c:1646  */
     {
    node_t *node;
    struct ChannelConf *item;
@@ -1837,44 +1853,44 @@ yyreduce:
 
    tmp = item;
 }
-#line 1841 "config-parser.c" /* yacc.c:1646  */
+#line 1857 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 80:
-#line 309 "config-parser.y" /* yacc.c:1646  */
+  case 82:
+#line 317 "config-parser.y" /* yacc.c:1646  */
     {
    struct ChannelConf *item = tmp;
 
    MyFree(item->name);
    item->name = xstrdup((yyvsp[-1].string));
 }
-#line 1852 "config-parser.c" /* yacc.c:1646  */
+#line 1868 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 81:
-#line 317 "config-parser.y" /* yacc.c:1646  */
+  case 83:
+#line 325 "config-parser.y" /* yacc.c:1646  */
     {
    struct ChannelConf *item = tmp;
 
    MyFree(item->key);
    item->key = xstrdup((yyvsp[-1].string));
 }
-#line 1863 "config-parser.c" /* yacc.c:1646  */
+#line 1879 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 82:
-#line 325 "config-parser.y" /* yacc.c:1646  */
+  case 84:
+#line 333 "config-parser.y" /* yacc.c:1646  */
     {
    struct ChannelConf *item = tmp;
 
    MyFree(item->invite);
    item->invite = xstrdup((yyvsp[-1].string));
 }
-#line 1874 "config-parser.c" /* yacc.c:1646  */
+#line 1890 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 83:
-#line 335 "config-parser.y" /* yacc.c:1646  */
+  case 85:
+#line 343 "config-parser.y" /* yacc.c:1646  */
     {
    node_t *node;
    struct UserConf *item;
@@ -1889,11 +1905,11 @@ yyreduce:
 
    tmp = item; 
 }
-#line 1893 "config-parser.c" /* yacc.c:1646  */
+#line 1909 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 90:
-#line 359 "config-parser.y" /* yacc.c:1646  */
+  case 92:
+#line 367 "config-parser.y" /* yacc.c:1646  */
     {
    struct UserConf *item = tmp;
    node_t *node;
@@ -1902,11 +1918,11 @@ yyreduce:
 
    list_add(item->masks, node);
 }
-#line 1906 "config-parser.c" /* yacc.c:1646  */
+#line 1922 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 91:
-#line 369 "config-parser.y" /* yacc.c:1646  */
+  case 93:
+#line 377 "config-parser.y" /* yacc.c:1646  */
     {
    struct UserConf *item = tmp;
    node_t *node;
@@ -1915,11 +1931,11 @@ yyreduce:
 
    list_add(item->scanners, node);
 }
-#line 1919 "config-parser.c" /* yacc.c:1646  */
+#line 1935 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 92:
-#line 381 "config-parser.y" /* yacc.c:1646  */
+  case 94:
+#line 389 "config-parser.y" /* yacc.c:1646  */
     {
    node_t *node;
    struct ScannerConf *item, *olditem;
@@ -1963,41 +1979,41 @@ yyreduce:
    list_add(ScannerItemList, node);
    tmp = item;
 }
-#line 1967 "config-parser.c" /* yacc.c:1646  */
+#line 1983 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 106:
-#line 441 "config-parser.y" /* yacc.c:1646  */
+  case 108:
+#line 449 "config-parser.y" /* yacc.c:1646  */
     {
    struct ScannerConf *item = tmp;
    MyFree(item->name);
    item->name = xstrdup((yyvsp[-1].string));
 }
-#line 1977 "config-parser.c" /* yacc.c:1646  */
+#line 1993 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 107:
-#line 448 "config-parser.y" /* yacc.c:1646  */
+  case 109:
+#line 456 "config-parser.y" /* yacc.c:1646  */
     {
    struct ScannerConf *item = tmp;
    MyFree(item->vhost);
    item->vhost = xstrdup((yyvsp[-1].string));
 }
-#line 1987 "config-parser.c" /* yacc.c:1646  */
+#line 2003 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 108:
-#line 455 "config-parser.y" /* yacc.c:1646  */
+  case 110:
+#line 463 "config-parser.y" /* yacc.c:1646  */
     {
    struct ScannerConf *item = tmp;
    MyFree(item->target_ip);
    item->target_ip = xstrdup((yyvsp[-1].string));
 }
-#line 1997 "config-parser.c" /* yacc.c:1646  */
+#line 2013 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 109:
-#line 462 "config-parser.y" /* yacc.c:1646  */
+  case 111:
+#line 470 "config-parser.y" /* yacc.c:1646  */
     {
    struct ScannerConf *item = tmp;
 
@@ -2012,47 +2028,47 @@ yyreduce:
 
    list_add(item->target_string, node);
 }
-#line 2016 "config-parser.c" /* yacc.c:1646  */
+#line 2032 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 110:
-#line 478 "config-parser.y" /* yacc.c:1646  */
+  case 112:
+#line 486 "config-parser.y" /* yacc.c:1646  */
     {
    struct ScannerConf *item = tmp;
    item->fd = (yyvsp[-1].number);
 }
-#line 2025 "config-parser.c" /* yacc.c:1646  */
+#line 2041 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 111:
-#line 484 "config-parser.y" /* yacc.c:1646  */
+  case 113:
+#line 492 "config-parser.y" /* yacc.c:1646  */
     {
    struct ScannerConf *item = tmp;
    item->target_port = (yyvsp[-1].number);
 }
-#line 2034 "config-parser.c" /* yacc.c:1646  */
+#line 2050 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 112:
-#line 490 "config-parser.y" /* yacc.c:1646  */
+  case 114:
+#line 498 "config-parser.y" /* yacc.c:1646  */
     {
    struct ScannerConf *item = tmp;
    item->timeout = (yyvsp[-1].number);
 }
-#line 2043 "config-parser.c" /* yacc.c:1646  */
+#line 2059 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 113:
-#line 496 "config-parser.y" /* yacc.c:1646  */
+  case 115:
+#line 504 "config-parser.y" /* yacc.c:1646  */
     {
    struct ScannerConf *item = tmp;
    item->max_read = (yyvsp[-1].number);
 }
-#line 2052 "config-parser.c" /* yacc.c:1646  */
+#line 2068 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 114:
-#line 502 "config-parser.y" /* yacc.c:1646  */
+  case 116:
+#line 510 "config-parser.y" /* yacc.c:1646  */
     {
    struct ProtocolConf *item;
    struct ScannerConf  *item2;
@@ -2068,38 +2084,38 @@ yyreduce:
    node = node_create(item);
    list_add(item2->protocols, node);
 }
-#line 2072 "config-parser.c" /* yacc.c:1646  */
+#line 2088 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 123:
-#line 532 "config-parser.y" /* yacc.c:1646  */
+  case 125:
+#line 540 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(OpmItem->dnsbl_from);
    OpmItem->dnsbl_from = xstrdup((yyvsp[-1].string));
 }
-#line 2081 "config-parser.c" /* yacc.c:1646  */
+#line 2097 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 124:
-#line 538 "config-parser.y" /* yacc.c:1646  */
+  case 126:
+#line 546 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(OpmItem->dnsbl_to);
    OpmItem->dnsbl_to = xstrdup((yyvsp[-1].string));
 }
-#line 2090 "config-parser.c" /* yacc.c:1646  */
+#line 2106 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 125:
-#line 544 "config-parser.y" /* yacc.c:1646  */
+  case 127:
+#line 552 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(OpmItem->sendmail);
    OpmItem->sendmail = xstrdup((yyvsp[-1].string));
 }
-#line 2099 "config-parser.c" /* yacc.c:1646  */
+#line 2115 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 126:
-#line 552 "config-parser.y" /* yacc.c:1646  */
+  case 128:
+#line 560 "config-parser.y" /* yacc.c:1646  */
     {
    node_t *node;
    struct BlacklistConf *item;
@@ -2117,33 +2133,33 @@ yyreduce:
 
    tmp = item;
 }
-#line 2121 "config-parser.c" /* yacc.c:1646  */
+#line 2137 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 136:
-#line 581 "config-parser.y" /* yacc.c:1646  */
+  case 138:
+#line 589 "config-parser.y" /* yacc.c:1646  */
     {
    struct BlacklistConf *item = tmp;
 
    MyFree(item->name);
    item->name = xstrdup((yyvsp[-1].string));
 }
-#line 2132 "config-parser.c" /* yacc.c:1646  */
+#line 2148 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 137:
-#line 588 "config-parser.y" /* yacc.c:1646  */
+  case 139:
+#line 596 "config-parser.y" /* yacc.c:1646  */
     {
    struct BlacklistConf *item = tmp;
 
    MyFree(item->kline);
    item->kline = xstrdup((yyvsp[-1].string));
 }
-#line 2143 "config-parser.c" /* yacc.c:1646  */
+#line 2159 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 138:
-#line 595 "config-parser.y" /* yacc.c:1646  */
+  case 140:
+#line 603 "config-parser.y" /* yacc.c:1646  */
     {
    struct BlacklistConf *item = tmp;
    
@@ -2154,21 +2170,21 @@ yyreduce:
    else
       yyerror("Unknown blacklist type defined");
 }
-#line 2158 "config-parser.c" /* yacc.c:1646  */
+#line 2174 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 139:
-#line 606 "config-parser.y" /* yacc.c:1646  */
+  case 141:
+#line 614 "config-parser.y" /* yacc.c:1646  */
     {
    struct BlacklistConf *item = tmp;
 
    item->ban_unknown = (yyvsp[-1].number);
 }
-#line 2168 "config-parser.c" /* yacc.c:1646  */
+#line 2184 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 143:
-#line 618 "config-parser.y" /* yacc.c:1646  */
+  case 145:
+#line 626 "config-parser.y" /* yacc.c:1646  */
     {
    struct BlacklistReplyConf *item;
    struct BlacklistConf *blacklist = tmp;
@@ -2182,22 +2198,22 @@ yyreduce:
    node = node_create(item);
    list_add(blacklist->reply, node);
 }
-#line 2186 "config-parser.c" /* yacc.c:1646  */
+#line 2202 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 149:
-#line 644 "config-parser.y" /* yacc.c:1646  */
+  case 151:
+#line 652 "config-parser.y" /* yacc.c:1646  */
     {
    node_t *node;
    node = node_create(xstrdup((yyvsp[-1].string)));
 
    list_add(ExemptItem->masks, node);
 }
-#line 2197 "config-parser.c" /* yacc.c:1646  */
+#line 2213 "config-parser.c" /* yacc.c:1646  */
     break;
 
 
-#line 2201 "config-parser.c" /* yacc.c:1646  */
+#line 2217 "config-parser.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -2425,5 +2441,5 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 651 "config-parser.y" /* yacc.c:1906  */
+#line 659 "config-parser.y" /* yacc.c:1906  */
 
index fcdf311d4ad3d7b74bf777098a0a7c099af10790..20eaee2883ffc1c5f5ed478bec6f4f9376aa7236 100644 (file)
@@ -67,41 +67,42 @@ extern int yydebug;
     MODE = 277,
     NAME = 278,
     NEGCACHE = 279,
-    NICK = 280,
-    NICKSERV = 281,
-    OPER = 282,
-    OPM = 283,
-    OPTIONS = 284,
-    PASSWORD = 285,
-    PERFORM = 286,
-    PIDFILE = 287,
-    PORT = 288,
-    PROTOCOL = 289,
-    READTIMEOUT = 290,
-    REALNAME = 291,
-    REPLY = 292,
-    SCANLOG = 293,
-    SCANNER = 294,
-    SECONDS = 295,
-    MINUTES = 296,
-    HOURS = 297,
-    DAYS = 298,
-    WEEKS = 299,
-    MONTHS = 300,
-    YEARS = 301,
-    SENDMAIL = 302,
-    SERVER = 303,
-    TARGET_IP = 304,
-    TARGET_PORT = 305,
-    TARGET_STRING = 306,
-    TIMEOUT = 307,
-    TYPE = 308,
-    USERNAME = 309,
-    USER = 310,
-    VHOST = 311,
-    NUMBER = 312,
-    STRING = 313,
-    PROTOCOLTYPE = 314
+    NEGCACHE_REBUILD = 280,
+    NICK = 281,
+    NICKSERV = 282,
+    OPER = 283,
+    OPM = 284,
+    OPTIONS = 285,
+    PASSWORD = 286,
+    PERFORM = 287,
+    PIDFILE = 288,
+    PORT = 289,
+    PROTOCOL = 290,
+    READTIMEOUT = 291,
+    REALNAME = 292,
+    REPLY = 293,
+    SCANLOG = 294,
+    SCANNER = 295,
+    SECONDS = 296,
+    MINUTES = 297,
+    HOURS = 298,
+    DAYS = 299,
+    WEEKS = 300,
+    MONTHS = 301,
+    YEARS = 302,
+    SENDMAIL = 303,
+    SERVER = 304,
+    TARGET_IP = 305,
+    TARGET_PORT = 306,
+    TARGET_STRING = 307,
+    TIMEOUT = 308,
+    TYPE = 309,
+    USERNAME = 310,
+    USER = 311,
+    VHOST = 312,
+    NUMBER = 313,
+    STRING = 314,
+    PROTOCOLTYPE = 315
   };
 #endif
 /* Tokens.  */
@@ -127,53 +128,54 @@ extern int yydebug;
 #define MODE 277
 #define NAME 278
 #define NEGCACHE 279
-#define NICK 280
-#define NICKSERV 281
-#define OPER 282
-#define OPM 283
-#define OPTIONS 284
-#define PASSWORD 285
-#define PERFORM 286
-#define PIDFILE 287
-#define PORT 288
-#define PROTOCOL 289
-#define READTIMEOUT 290
-#define REALNAME 291
-#define REPLY 292
-#define SCANLOG 293
-#define SCANNER 294
-#define SECONDS 295
-#define MINUTES 296
-#define HOURS 297
-#define DAYS 298
-#define WEEKS 299
-#define MONTHS 300
-#define YEARS 301
-#define SENDMAIL 302
-#define SERVER 303
-#define TARGET_IP 304
-#define TARGET_PORT 305
-#define TARGET_STRING 306
-#define TIMEOUT 307
-#define TYPE 308
-#define USERNAME 309
-#define USER 310
-#define VHOST 311
-#define NUMBER 312
-#define STRING 313
-#define PROTOCOLTYPE 314
+#define NEGCACHE_REBUILD 280
+#define NICK 281
+#define NICKSERV 282
+#define OPER 283
+#define OPM 284
+#define OPTIONS 285
+#define PASSWORD 286
+#define PERFORM 287
+#define PIDFILE 288
+#define PORT 289
+#define PROTOCOL 290
+#define READTIMEOUT 291
+#define REALNAME 292
+#define REPLY 293
+#define SCANLOG 294
+#define SCANNER 295
+#define SECONDS 296
+#define MINUTES 297
+#define HOURS 298
+#define DAYS 299
+#define WEEKS 300
+#define MONTHS 301
+#define YEARS 302
+#define SENDMAIL 303
+#define SERVER 304
+#define TARGET_IP 305
+#define TARGET_PORT 306
+#define TARGET_STRING 307
+#define TIMEOUT 308
+#define TYPE 309
+#define USERNAME 310
+#define USER 311
+#define VHOST 312
+#define NUMBER 313
+#define STRING 314
+#define PROTOCOLTYPE 315
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE YYSTYPE;
 union YYSTYPE
 {
-#line 86 "config-parser.y" /* yacc.c:1909  */
+#line 88 "config-parser.y" /* yacc.c:1909  */
 
         int number;
         char *string;
 
-#line 177 "config-parser.h" /* yacc.c:1909  */
+#line 179 "config-parser.h" /* yacc.c:1909  */
 };
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
index 67c67e513e1a3e6bd255d8e584ff334eb5b0a90d..7c6e9eb6d1b408e3aeaac3d3d3ac9673f9649445 100644 (file)
@@ -25,7 +25,8 @@
 %{
 #include <stdio.h>
 #include <string.h>
-#include "malloc.h"
+
+#include "memory.h"
 #include "config.h"
 
 int yylex(void);
index 423d00aeea2acd96f656e6fc00fe17f9b9c23b65..a2449a934cb607413f9a2d7e1300b68808380763 100644 (file)
@@ -29,7 +29,7 @@
 
 #include "config.h"
 #include "config-parser.h"
-#include "malloc.h"
+#include "memory.h"
 #include "log.h"
 #include "scan.h"
 #include "irc.h"
index 23e7ef72a6593666025223fa82f91c885ce3b884..d7a9e9515790fb53cd61ca309d5c9f9ba6e3de3a 100644 (file)
@@ -39,7 +39,7 @@ along with this program; if not, write to the Free Software
 #include "list.h"
 #include "log.h"
 #include "main.h"
-#include "malloc.h"
+#include "memory.h"
 #include "match.h"
 #include "scan.h"
 #include "irc.h"
index 29266a38476276b08f4255d6b4c279c6219815e6..49ed14912f88acfaf235d65a4a268dcde8a64177 100644 (file)
@@ -37,7 +37,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 #include <fcntl.h>
 
 #include "compat.h"
-#include "malloc.h"
+#include "memory.h"
 #include "firedns.h"
 #include "config.h"
 #include "list.h"
index 11efa71c24b15cf8b63855e2c3d024d2f5add73f..21ced4a635a636038bb672aa3c5a8e7ed2dc9b35 100644 (file)
--- a/src/irc.c
+++ b/src/irc.c
@@ -50,7 +50,7 @@
 #include "match.h"
 #include "compat.h"
 #include "negcache.h"
-#include "malloc.h"
+#include "memory.h"
 #include "main.h"
 
 
index 53a0a41307a39a1279d89a12a277ada13b2b9c7d..f77c281e9fcff5937126b06f91070ed61bbea061 100644 (file)
@@ -21,7 +21,7 @@
  *
  */
 
-#include "malloc.h"
+#include "memory.h"
 #include "list.h"
 
 
index cff06c72deb98ac2e858f5e49ea392efa56e8b60..87a91a927b68148a5f6d9889ebcbfb9b3d13807a 100644 (file)
@@ -45,7 +45,7 @@ along with this program; if not, write to the Free Software
 #include "stats.h"
 #include "negcache.h"
 #include "options.h"
-#include "malloc.h"
+#include "memory.h"
 #include "firedns.h"
 #include "main.h"
 
diff --git a/src/malloc.c b/src/malloc.c
deleted file mode 100644 (file)
index f1c34fe..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (C) 2002  Erik Fears
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to
- *
- *       The Free Software Foundation, Inc.
- *       59 Temple Place - Suite 330
- *       Boston, MA  02111-1307, USA.
- *
- *
- */
-
-#include <malloc.h>
-#include <assert.h>
-#include <string.h>
-#include "malloc.h"
-
-
-/* xcalloc
- *  
- *   A wrapper function for malloc(), for catching memory issues
- *   and error handling.
- *
- * Parameters
- *    bytes: amount in bytes to allocate
- *    
- * Return:
- *    Pointer to allocated memory
- */
-
-void *xcalloc(size_t bytes)
-{
-   void *ret = calloc(1, bytes);
-   assert(ret);
-
-   return ret;
-}
-
-
-
-/*  MyFree
- *
- *  Free memory allocated with xcalloc
- *
- *  Parameters:
- *     var: pointer to memory to free
- *     
- *  Return:
- *     None
- */
-
-void _MyFree(void **var)
-{
-   assert(var != NULL);
-
-   if(*var != NULL)
-      free(*var);
-   *var = NULL;
-}
-
-void *
-xstrdup(const char *s)
-{
-  void *ret = malloc(strlen(s) + 1);
-
-  assert(ret);
-  strcpy(ret, s);
-
-  return ret;
-}
diff --git a/src/malloc.h b/src/malloc.h
deleted file mode 100644 (file)
index c777064..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef MALLOC_H
-#define MALLOC_H
-
-#include <stdlib.h>
-
-#define MyFree(X) _MyFree((void **) &X)
-
-extern void *xcalloc(size_t bytes);
-extern void _MyFree(void **var);
-extern void *xstrdup(const char *);
-
-#endif /* MALLOC_H */
diff --git a/src/memory.c b/src/memory.c
new file mode 100644 (file)
index 0000000..33cee16
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2002  Erik Fears
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to
+ *
+ *       The Free Software Foundation, Inc.
+ *       59 Temple Place - Suite 330
+ *       Boston, MA  02111-1307, USA.
+ *
+ *
+ */
+
+#include <malloc.h>
+#include <assert.h>
+#include <string.h>
+
+#include "memory.h"
+
+
+/* xcalloc
+ *  
+ *   A wrapper function for malloc(), for catching memory issues
+ *   and error handling.
+ *
+ * Parameters
+ *    bytes: amount in bytes to allocate
+ *    
+ * Return:
+ *    Pointer to allocated memory
+ */
+
+void *xcalloc(size_t bytes)
+{
+   void *ret = calloc(1, bytes);
+   assert(ret);
+
+   return ret;
+}
+
+
+
+/*  MyFree
+ *
+ *  Free memory allocated with xcalloc
+ *
+ *  Parameters:
+ *     var: pointer to memory to free
+ *     
+ *  Return:
+ *     None
+ */
+
+void _MyFree(void **var)
+{
+   assert(var != NULL);
+
+   if(*var != NULL)
+      free(*var);
+   *var = NULL;
+}
+
+void *
+xstrdup(const char *s)
+{
+  void *ret = malloc(strlen(s) + 1);
+
+  assert(ret);
+  strcpy(ret, s);
+
+  return ret;
+}
diff --git a/src/memory.h b/src/memory.h
new file mode 100644 (file)
index 0000000..c777064
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef MALLOC_H
+#define MALLOC_H
+
+#include <stdlib.h>
+
+#define MyFree(X) _MyFree((void **) &X)
+
+extern void *xcalloc(size_t bytes);
+extern void _MyFree(void **var);
+extern void *xstrdup(const char *);
+
+#endif /* MALLOC_H */
index ef4e0333b553447226b2dce099f04b827e1e3411..912bbdd17a659ab1b4d564257f7f33ecf4b69c6d 100644 (file)
@@ -52,7 +52,7 @@ along with this program; if not, write to:
 #include "irc.h"
 #include "negcache.h"
 #include "config.h"
-#include "malloc.h"
+#include "memory.h"
 #include "log.h"
 
 
index 4cd7c82d47396b110bed144288682a8f54667c2f..a59d120bf309296aabe511e782ff7c15a57de33e 100644 (file)
@@ -36,7 +36,7 @@ along with this program; if not, write to the Free Software
 #include "opercmd.h"
 #include "scan.h"
 #include "config.h"
-#include "malloc.h"
+#include "memory.h"
 #include "list.h"
 #include "stats.h"
 
index b3d3a5b0704e7627b1f306c5323d0f53f3cdf067..dcef6363bbd410906d5ed79b9b3b1c8dd8968e30 100644 (file)
@@ -47,7 +47,7 @@
 #include "options.h"
 #include "negcache.h"
 #include "main.h"
-#include "malloc.h"
+#include "memory.h"
 #include "match.h"
 #include "scan.h"