ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/hopm/trunk/src/config-parser.c
(Generate patch)

Comparing hopm/trunk/src/config-parser.c (file contents):
Revision 5429 by michael, Wed Jan 28 13:53:00 2015 UTC vs.
Revision 8101 by michael, Sun Apr 2 10:13:09 2017 UTC

# Line 72 | Line 72
72  
73   int yylex(void);
74  
75 < int yydebug=0;
76 < void *tmp;        /* Variable to temporarily hold nodes before insertion to list */
75 > static void *tmp;  /* Variable to temporarily hold nodes before insertion to list */
76  
77  
78 < #line 80 "config-parser.c" /* yacc.c:339  */
78 > #line 79 "config-parser.c" /* yacc.c:339  */
79  
80   # ifndef YY_NULLPTR
81   #  if defined __cplusplus && 201103L <= __cplusplus
# Line 111 | Line 110 | extern int yydebug;
110   # define YYTOKENTYPE
111    enum yytokentype
112    {
113 <    AWAY = 258,
114 <    BAN_UNKNOWN = 259,
115 <    BLACKLIST = 260,
116 <    BYTES = 261,
117 <    KBYTES = 262,
118 <    MBYTES = 263,
119 <    CHANNEL = 264,
120 <    CONNREGEX = 265,
121 <    DNS_FDLIMIT = 266,
122 <    DNSBL_FROM = 267,
123 <    DNSBL_TO = 268,
124 <    EXEMPT = 269,
125 <    FD = 270,
126 <    INVITE = 271,
127 <    IRC = 272,
128 <    KLINE = 273,
129 <    KEY = 274,
130 <    MASK = 275,
131 <    MAX_READ = 276,
132 <    MODE = 277,
133 <    NAME = 278,
134 <    NEGCACHE = 279,
135 <    NEGCACHE_REBUILD = 280,
136 <    NICK = 281,
137 <    NICKSERV = 282,
138 <    NOTICE = 283,
139 <    OPER = 284,
140 <    OPM = 285,
141 <    OPTIONS = 286,
142 <    PASSWORD = 287,
143 <    PERFORM = 288,
144 <    PIDFILE = 289,
145 <    PORT = 290,
146 <    PROTOCOL = 291,
147 <    READTIMEOUT = 292,
148 <    REALNAME = 293,
149 <    REPLY = 294,
150 <    SCANLOG = 295,
151 <    SCANNER = 296,
152 <    SECONDS = 297,
153 <    MINUTES = 298,
154 <    HOURS = 299,
155 <    DAYS = 300,
156 <    WEEKS = 301,
157 <    MONTHS = 302,
158 <    YEARS = 303,
159 <    SENDMAIL = 304,
160 <    SERVER = 305,
161 <    TARGET_IP = 306,
162 <    TARGET_PORT = 307,
163 <    TARGET_STRING = 308,
164 <    TIMEOUT = 309,
165 <    TYPE = 310,
166 <    USERNAME = 311,
167 <    USER = 312,
168 <    VHOST = 313,
169 <    NUMBER = 314,
170 <    STRING = 315,
171 <    PROTOCOLTYPE = 316
113 >    ADDRESS_FAMILY = 258,
114 >    AWAY = 259,
115 >    BAN_UNKNOWN = 260,
116 >    BLACKLIST = 261,
117 >    BYTES = 262,
118 >    KBYTES = 263,
119 >    MBYTES = 264,
120 >    CHANNEL = 265,
121 >    COMMAND_INTERVAL = 266,
122 >    COMMAND_QUEUE_SIZE = 267,
123 >    COMMAND_TIMEOUT = 268,
124 >    CONNREGEX = 269,
125 >    DNS_FDLIMIT = 270,
126 >    DNS_TIMEOUT = 271,
127 >    DNSBL_FROM = 272,
128 >    DNSBL_TO = 273,
129 >    EXEMPT = 274,
130 >    FD = 275,
131 >    INVITE = 276,
132 >    IPV4 = 277,
133 >    IPV6 = 278,
134 >    IRC = 279,
135 >    KLINE = 280,
136 >    KEY = 281,
137 >    MASK = 282,
138 >    MAX_READ = 283,
139 >    MODE = 284,
140 >    NAME = 285,
141 >    NEGCACHE = 286,
142 >    NEGCACHE_REBUILD = 287,
143 >    NICK = 288,
144 >    NICKSERV = 289,
145 >    NOTICE = 290,
146 >    OPER = 291,
147 >    OPM = 292,
148 >    OPTIONS = 293,
149 >    PASSWORD = 294,
150 >    PERFORM = 295,
151 >    PIDFILE = 296,
152 >    PORT = 297,
153 >    PROTOCOL = 298,
154 >    READTIMEOUT = 299,
155 >    REALNAME = 300,
156 >    RECONNECTINTERVAL = 301,
157 >    REPLY = 302,
158 >    SCANLOG = 303,
159 >    SCANNER = 304,
160 >    SECONDS = 305,
161 >    MINUTES = 306,
162 >    HOURS = 307,
163 >    DAYS = 308,
164 >    WEEKS = 309,
165 >    MONTHS = 310,
166 >    YEARS = 311,
167 >    SENDMAIL = 312,
168 >    SERVER = 313,
169 >    TARGET_IP = 314,
170 >    TARGET_PORT = 315,
171 >    TARGET_STRING = 316,
172 >    TIMEOUT = 317,
173 >    TYPE = 318,
174 >    USERNAME = 319,
175 >    USER = 320,
176 >    VHOST = 321,
177 >    NUMBER = 322,
178 >    STRING = 323,
179 >    PROTOCOLTYPE = 324
180    };
181   #endif
182   /* Tokens.  */
183 < #define AWAY 258
184 < #define BAN_UNKNOWN 259
185 < #define BLACKLIST 260
186 < #define BYTES 261
187 < #define KBYTES 262
188 < #define MBYTES 263
189 < #define CHANNEL 264
190 < #define CONNREGEX 265
191 < #define DNS_FDLIMIT 266
192 < #define DNSBL_FROM 267
193 < #define DNSBL_TO 268
194 < #define EXEMPT 269
195 < #define FD 270
196 < #define INVITE 271
197 < #define IRC 272
198 < #define KLINE 273
199 < #define KEY 274
200 < #define MASK 275
201 < #define MAX_READ 276
202 < #define MODE 277
203 < #define NAME 278
204 < #define NEGCACHE 279
205 < #define NEGCACHE_REBUILD 280
206 < #define NICK 281
207 < #define NICKSERV 282
208 < #define NOTICE 283
209 < #define OPER 284
210 < #define OPM 285
211 < #define OPTIONS 286
212 < #define PASSWORD 287
213 < #define PERFORM 288
214 < #define PIDFILE 289
215 < #define PORT 290
216 < #define PROTOCOL 291
217 < #define READTIMEOUT 292
218 < #define REALNAME 293
219 < #define REPLY 294
220 < #define SCANLOG 295
221 < #define SCANNER 296
222 < #define SECONDS 297
223 < #define MINUTES 298
224 < #define HOURS 299
225 < #define DAYS 300
226 < #define WEEKS 301
227 < #define MONTHS 302
228 < #define YEARS 303
229 < #define SENDMAIL 304
230 < #define SERVER 305
231 < #define TARGET_IP 306
232 < #define TARGET_PORT 307
233 < #define TARGET_STRING 308
234 < #define TIMEOUT 309
235 < #define TYPE 310
236 < #define USERNAME 311
237 < #define USER 312
238 < #define VHOST 313
239 < #define NUMBER 314
240 < #define STRING 315
241 < #define PROTOCOLTYPE 316
183 > #define ADDRESS_FAMILY 258
184 > #define AWAY 259
185 > #define BAN_UNKNOWN 260
186 > #define BLACKLIST 261
187 > #define BYTES 262
188 > #define KBYTES 263
189 > #define MBYTES 264
190 > #define CHANNEL 265
191 > #define COMMAND_INTERVAL 266
192 > #define COMMAND_QUEUE_SIZE 267
193 > #define COMMAND_TIMEOUT 268
194 > #define CONNREGEX 269
195 > #define DNS_FDLIMIT 270
196 > #define DNS_TIMEOUT 271
197 > #define DNSBL_FROM 272
198 > #define DNSBL_TO 273
199 > #define EXEMPT 274
200 > #define FD 275
201 > #define INVITE 276
202 > #define IPV4 277
203 > #define IPV6 278
204 > #define IRC 279
205 > #define KLINE 280
206 > #define KEY 281
207 > #define MASK 282
208 > #define MAX_READ 283
209 > #define MODE 284
210 > #define NAME 285
211 > #define NEGCACHE 286
212 > #define NEGCACHE_REBUILD 287
213 > #define NICK 288
214 > #define NICKSERV 289
215 > #define NOTICE 290
216 > #define OPER 291
217 > #define OPM 292
218 > #define OPTIONS 293
219 > #define PASSWORD 294
220 > #define PERFORM 295
221 > #define PIDFILE 296
222 > #define PORT 297
223 > #define PROTOCOL 298
224 > #define READTIMEOUT 299
225 > #define REALNAME 300
226 > #define RECONNECTINTERVAL 301
227 > #define REPLY 302
228 > #define SCANLOG 303
229 > #define SCANNER 304
230 > #define SECONDS 305
231 > #define MINUTES 306
232 > #define HOURS 307
233 > #define DAYS 308
234 > #define WEEKS 309
235 > #define MONTHS 310
236 > #define YEARS 311
237 > #define SENDMAIL 312
238 > #define SERVER 313
239 > #define TARGET_IP 314
240 > #define TARGET_PORT 315
241 > #define TARGET_STRING 316
242 > #define TIMEOUT 317
243 > #define TYPE 318
244 > #define USERNAME 319
245 > #define USER 320
246 > #define VHOST 321
247 > #define NUMBER 322
248 > #define STRING 323
249 > #define PROTOCOLTYPE 324
250  
251   /* Value type.  */
252   #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
253  
254   union YYSTYPE
255   {
256 < #line 85 "config-parser.y" /* yacc.c:355  */
256 > #line 92 "config-parser.y" /* yacc.c:355  */
257  
258 <        int number;
259 <        char *string;
258 >  int number;
259 >  char *string;
260  
261 < #line 247 "config-parser.c" /* yacc.c:355  */
261 > #line 262 "config-parser.c" /* yacc.c:355  */
262   };
263  
264   typedef union YYSTYPE YYSTYPE;
# Line 260 | Line 275 | int yyparse (void);
275  
276   /* Copy the second part of user declarations.  */
277  
278 < #line 264 "config-parser.c" /* yacc.c:358  */
278 > #line 279 "config-parser.c" /* yacc.c:358  */
279  
280   #ifdef short
281   # undef short
# Line 502 | Line 517 | union yyalloc
517   /* YYFINAL -- State number of the termination state.  */
518   #define YYFINAL  2
519   /* YYLAST -- Last index in YYTABLE.  */
520 < #define YYLAST   314
520 > #define YYLAST   346
521  
522   /* YYNTOKENS -- Number of terminals.  */
523 < #define YYNTOKENS  67
523 > #define YYNTOKENS  76
524   /* YYNNTS -- Number of nonterminals.  */
525 < #define YYNNTS  81
525 > #define YYNNTS  90
526   /* YYNRULES -- Number of rules.  */
527 < #define YYNRULES  153
527 > #define YYNRULES  170
528   /* YYNSTATES -- Number of states.  */
529 < #define YYNSTATES  334
529 > #define YYNSTATES  370
530  
531   /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
532     by yylex, with out-of-bounds checking.  */
533   #define YYUNDEFTOK  2
534 < #define YYMAXUTOK   316
534 > #define YYMAXUTOK   324
535  
536   #define YYTRANSLATE(YYX)                                                \
537    ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
# Line 529 | Line 544 | static const yytype_uint8 yytranslate[]
544         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
545         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
546         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
547 +       2,     2,     2,     2,    75,     2,     2,     2,     2,     2,
548 +       2,     2,     2,     2,     2,     2,     2,     2,    74,    72,
549 +       2,    73,     2,     2,     2,     2,     2,     2,     2,     2,
550         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
533       2,     2,     2,     2,     2,     2,     2,     2,    66,    64,
534       2,    65,     2,     2,     2,     2,     2,     2,     2,     2,
551         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
552         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
553         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
554         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
555 <       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
540 <       2,     2,     2,    62,     2,    63,     2,     2,     2,     2,
555 >       2,     2,     2,    70,     2,    71,     2,     2,     2,     2,
556         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
557         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
558         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
# Line 556 | Line 571 | static const yytype_uint8 yytranslate[]
571        25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
572        35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
573        45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
574 <      55,    56,    57,    58,    59,    60,    61
574 >      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
575 >      65,    66,    67,    68,    69
576   };
577  
578   #if YYDEBUG
579    /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
580   static const yytype_uint16 yyrline[] =
581   {
582 <       0,   100,   100,   101,   104,   105,   106,   107,   108,   109,
583 <     111,   111,   112,   113,   114,   115,   116,   117,   118,   119,
584 <     122,   122,   123,   124,   125,   126,   131,   133,   134,   136,
585 <     137,   138,   139,   140,   141,   143,   148,   153,   159,   164,
586 <     172,   174,   175,   177,   178,   179,   180,   181,   182,   183,
587 <     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
588 <     194,   196,   202,   208,   214,   220,   226,   232,   238,   246,
589 <     254,   259,   264,   270,   276,   282,   288,   298,   298,   315,
590 <     316,   318,   319,   320,   322,   330,   338,   349,   349,   365,
591 <     366,   368,   369,   370,   372,   382,   395,   395,   440,   441,
592 <     443,   444,   445,   446,   447,   448,   449,   450,   451,   452,
593 <     454,   461,   468,   475,   491,   497,   503,   509,   515,   534,
594 <     536,   537,   539,   540,   541,   542,   543,   545,   551,   557,
595 <     566,   566,   585,   586,   588,   589,   590,   591,   592,   593,
596 <     595,   602,   609,   620,   626,   628,   629,   631,   649,   651,
597 <     652,   654,   655,   657
582 >       0,   107,   107,   108,   111,   112,   113,   114,   115,   116,
583 >     118,   118,   119,   120,   121,   122,   123,   124,   125,   126,
584 >     129,   129,   130,   131,   132,   133,   138,   140,   141,   143,
585 >     144,   145,   146,   147,   148,   149,   150,   151,   152,   154,
586 >     159,   164,   170,   175,   180,   186,   191,   196,   203,   205,
587 >     206,   208,   209,   210,   211,   212,   213,   214,   215,   216,
588 >     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
589 >     228,   234,   240,   246,   252,   258,   264,   270,   278,   286,
590 >     291,   296,   301,   307,   313,   319,   325,   334,   334,   350,
591 >     351,   353,   354,   355,   357,   365,   373,   384,   384,   399,
592 >     400,   402,   403,   404,   406,   416,   429,   429,   472,   473,
593 >     475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
594 >     486,   494,   502,   510,   526,   533,   540,   547,   554,   572,
595 >     574,   575,   577,   578,   579,   580,   581,   583,   589,   595,
596 >     604,   604,   623,   624,   626,   627,   628,   629,   630,   631,
597 >     632,   634,   643,   642,   650,   650,   651,   656,   663,   671,
598 >     683,   690,   692,   693,   695,   711,   713,   714,   716,   717,
599 >     719
600   };
601   #endif
602  
# Line 587 | Line 605 | static const yytype_uint16 yyrline[] =
605     First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
606   static const char *const yytname[] =
607   {
608 <  "$end", "error", "$undefined", "AWAY", "BAN_UNKNOWN", "BLACKLIST",
609 <  "BYTES", "KBYTES", "MBYTES", "CHANNEL", "CONNREGEX", "DNS_FDLIMIT",
610 <  "DNSBL_FROM", "DNSBL_TO", "EXEMPT", "FD", "INVITE", "IRC", "KLINE",
611 <  "KEY", "MASK", "MAX_READ", "MODE", "NAME", "NEGCACHE",
612 <  "NEGCACHE_REBUILD", "NICK", "NICKSERV", "NOTICE", "OPER", "OPM",
613 <  "OPTIONS", "PASSWORD", "PERFORM", "PIDFILE", "PORT", "PROTOCOL",
614 <  "READTIMEOUT", "REALNAME", "REPLY", "SCANLOG", "SCANNER", "SECONDS",
615 <  "MINUTES", "HOURS", "DAYS", "WEEKS", "MONTHS", "YEARS", "SENDMAIL",
616 <  "SERVER", "TARGET_IP", "TARGET_PORT", "TARGET_STRING", "TIMEOUT", "TYPE",
617 <  "USERNAME", "USER", "VHOST", "NUMBER", "STRING", "PROTOCOLTYPE", "'{'",
618 <  "'}'", "';'", "'='", "':'", "$accept", "config", "config_items",
619 <  "timespec_", "timespec", "sizespec_", "sizespec", "options_entry",
620 <  "options_items", "options_item", "options_negcache",
621 <  "options_negcache_rebuild", "options_pidfile", "options_dns_fdlimit",
622 <  "options_scanlog", "irc_entry", "irc_items", "irc_item", "irc_away",
623 <  "irc_kline", "irc_mode", "irc_nick", "irc_nickserv", "irc_oper",
624 <  "irc_password", "irc_perform", "irc_notice", "irc_port",
625 <  "irc_readtimeout", "irc_realname", "irc_server", "irc_username",
626 <  "irc_vhost", "irc_connregex", "channel_entry", "$@1", "channel_items",
627 <  "channel_item", "channel_name", "channel_key", "channel_invite",
628 <  "user_entry", "$@2", "user_items", "user_item", "user_mask",
629 <  "user_scanner", "scanner_entry", "$@3", "scanner_items", "scanner_item",
630 <  "scanner_name", "scanner_vhost", "scanner_target_ip",
631 <  "scanner_target_string", "scanner_fd", "scanner_target_port",
632 <  "scanner_timeout", "scanner_max_read", "scanner_protocol", "opm_entry",
633 <  "opm_items", "opm_item", "opm_dnsbl_from", "opm_dnsbl_to",
634 <  "opm_sendmail", "opm_blacklist_entry", "$@4", "blacklist_items",
635 <  "blacklist_item", "blacklist_name", "blacklist_kline", "blacklist_type",
608 >  "$end", "error", "$undefined", "ADDRESS_FAMILY", "AWAY", "BAN_UNKNOWN",
609 >  "BLACKLIST", "BYTES", "KBYTES", "MBYTES", "CHANNEL", "COMMAND_INTERVAL",
610 >  "COMMAND_QUEUE_SIZE", "COMMAND_TIMEOUT", "CONNREGEX", "DNS_FDLIMIT",
611 >  "DNS_TIMEOUT", "DNSBL_FROM", "DNSBL_TO", "EXEMPT", "FD", "INVITE",
612 >  "IPV4", "IPV6", "IRC", "KLINE", "KEY", "MASK", "MAX_READ", "MODE",
613 >  "NAME", "NEGCACHE", "NEGCACHE_REBUILD", "NICK", "NICKSERV", "NOTICE",
614 >  "OPER", "OPM", "OPTIONS", "PASSWORD", "PERFORM", "PIDFILE", "PORT",
615 >  "PROTOCOL", "READTIMEOUT", "REALNAME", "RECONNECTINTERVAL", "REPLY",
616 >  "SCANLOG", "SCANNER", "SECONDS", "MINUTES", "HOURS", "DAYS", "WEEKS",
617 >  "MONTHS", "YEARS", "SENDMAIL", "SERVER", "TARGET_IP", "TARGET_PORT",
618 >  "TARGET_STRING", "TIMEOUT", "TYPE", "USERNAME", "USER", "VHOST",
619 >  "NUMBER", "STRING", "PROTOCOLTYPE", "'{'", "'}'", "';'", "'='", "':'",
620 >  "','", "$accept", "config", "config_items", "timespec_", "timespec",
621 >  "sizespec_", "sizespec", "options_entry", "options_items",
622 >  "options_item", "options_negcache", "options_negcache_rebuild",
623 >  "options_pidfile", "options_dns_fdlimit", "options_dns_timeout",
624 >  "options_scanlog", "options_command_queue_size",
625 >  "options_command_interval", "options_command_timeout", "irc_entry",
626 >  "irc_items", "irc_item", "irc_away", "irc_kline", "irc_mode", "irc_nick",
627 >  "irc_nickserv", "irc_oper", "irc_password", "irc_perform", "irc_notice",
628 >  "irc_port", "irc_readtimeout", "irc_reconnectinterval", "irc_realname",
629 >  "irc_server", "irc_username", "irc_vhost", "irc_connregex",
630 >  "channel_entry", "$@1", "channel_items", "channel_item", "channel_name",
631 >  "channel_key", "channel_invite", "user_entry", "$@2", "user_items",
632 >  "user_item", "user_mask", "user_scanner", "scanner_entry", "$@3",
633 >  "scanner_items", "scanner_item", "scanner_name", "scanner_vhost",
634 >  "scanner_target_ip", "scanner_target_string", "scanner_fd",
635 >  "scanner_target_port", "scanner_timeout", "scanner_max_read",
636 >  "scanner_protocol", "opm_entry", "opm_items", "opm_item",
637 >  "opm_dnsbl_from", "opm_dnsbl_to", "opm_sendmail", "opm_blacklist_entry",
638 >  "$@4", "blacklist_items", "blacklist_item", "blacklist_name",
639 >  "blacklist_address_family", "$@5", "blacklist_address_family_items",
640 >  "blacklist_address_family_item", "blacklist_kline", "blacklist_type",
641    "blacklist_ban_unknown", "blacklist_reply", "blacklist_reply_items",
642    "blacklist_reply_item", "exempt_entry", "exempt_items", "exempt_item",
643    "exempt_mask", YY_NULLPTR
# Line 632 | Line 655 | static const yytype_uint16 yytoknum[] =
655       285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
656       295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
657       305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
658 <     315,   316,   123,   125,    59,    61,    58
658 >     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
659 >     123,   125,    59,    61,    58,    44
660   };
661   # endif
662  
663 < #define YYPACT_NINF -245
663 > #define YYPACT_NINF -294
664  
665   #define yypact_value_is_default(Yystate) \
666 <  (!!((Yystate) == (-245)))
666 >  (!!((Yystate) == (-294)))
667  
668 < #define YYTABLE_NINF -131
668 > #define YYTABLE_NINF -141
669  
670   #define yytable_value_is_error(Yytable_value) \
671    0
# Line 650 | Line 674 | static const yytype_uint16 yytoknum[] =
674       STATE-NUM.  */
675   static const yytype_int16 yypact[] =
676   {
677 <    -245,   142,  -245,   -55,   -48,   -43,   -26,  -245,  -245,  -245,
678 <    -245,   -18,  -245,     2,  -245,  -245,    73,    97,    89,   153,
679 <     -21,    -9,  -245,    -8,     3,  -245,  -245,  -245,    -1,    13,
680 <      14,    15,    23,    24,    30,    31,    34,    38,    39,    40,
681 <      44,    47,    51,    53,     0,  -245,  -245,  -245,  -245,  -245,
682 <    -245,  -245,  -245,  -245,  -245,  -245,  -245,  -245,  -245,  -245,
683 <    -245,  -245,  -245,    76,  -245,    57,    62,    71,    12,  -245,
684 <    -245,  -245,  -245,  -245,   105,  -245,    75,    78,    79,    80,
685 <      81,    20,  -245,  -245,  -245,  -245,  -245,  -245,    10,   116,
686 <      88,    77,  -245,    90,    91,    98,   100,   101,   102,   103,
687 <     106,   111,   115,   117,   120,   121,   122,   124,   125,    93,
688 <    -245,   118,   126,   128,   129,   127,  -245,   130,   131,   120,
689 <     120,   141,   149,   146,  -245,  -245,   147,   148,    45,  -245,
690 <    -245,  -245,  -245,   150,   151,   154,   155,   156,   157,   158,
691 <     159,   160,    19,  -245,  -245,  -245,  -245,  -245,  -245,  -245,
692 <    -245,  -245,  -245,   162,  -245,   163,   164,   165,   166,   167,
693 <     168,   169,   170,   171,   172,   173,   152,   174,   175,   176,
694 <     177,   178,  -245,    68,   179,   180,   181,  -245,   110,   182,
695 <     183,   184,   185,   186,  -245,   191,   192,   189,  -245,   195,
696 <     196,   197,   198,   200,   199,   201,   120,   202,   203,  -245,
697 <    -245,  -245,  -245,  -245,  -245,  -245,  -245,  -245,  -245,  -245,
698 <    -245,  -245,   120,   120,   120,   120,   120,   120,   120,  -245,
699 <    -245,  -245,  -245,  -245,  -245,  -245,   204,   205,   206,   -11,
700 <    -245,  -245,  -245,  -245,  -245,  -245,  -245,  -245,   207,   208,
701 <     209,   194,   210,    58,  -245,  -245,  -245,  -245,  -245,  -245,
702 <    -245,  -245,  -245,  -245,  -245,   212,   213,  -245,   214,    61,
703 <     215,   216,   217,   218,   220,   221,   222,   223,  -245,  -245,
704 <    -245,  -245,  -245,  -245,  -245,  -245,   228,   229,   230,   227,
705 <    -245,   233,   234,   235,   237,   238,   236,  -245,  -245,  -245,
706 <    -245,   196,   196,   196,  -245,  -245,  -245,  -245,   240,  -245,
707 <    -245,  -245,  -245,  -245,   239,   241,   242,  -245,   243,   244,
708 <     245,   232,   -57,  -245,   246,  -245,  -245,  -245,  -245,   247,
709 <    -245,  -245,  -245,  -245,  -245,  -245,   252,   249,  -245,  -245,
710 <    -245,   250,  -245,  -245
677 >    -294,   138,  -294,   -63,   -54,   -52,   -38,  -294,  -294,  -294,
678 >    -294,   -24,  -294,    14,  -294,  -294,    23,    95,    37,   181,
679 >       9,    13,  -294,    -3,     4,  -294,  -294,  -294,    12,    18,
680 >      19,    20,    24,    31,    33,    35,    42,    44,    48,    49,
681 >      53,    59,    60,    63,    70,     0,  -294,  -294,  -294,  -294,
682 >    -294,  -294,  -294,  -294,  -294,  -294,  -294,  -294,  -294,  -294,
683 >    -294,  -294,  -294,  -294,  -294,    77,  -294,    73,    78,    82,
684 >       5,  -294,  -294,  -294,  -294,  -294,   150,  -294,    85,    87,
685 >      90,    92,    93,    97,    98,    99,   100,    36,  -294,  -294,
686 >    -294,  -294,  -294,  -294,  -294,  -294,  -294,  -294,   115,   124,
687 >     109,    96,  -294,   110,   111,   112,   113,   120,   121,   127,
688 >     137,   140,   141,    83,   139,   142,   139,   143,   146,   149,
689 >     147,  -294,   151,   152,   155,   156,   153,  -294,   157,   139,
690 >     159,   139,   161,   139,   139,   139,   169,   170,   167,  -294,
691 >    -294,   145,   168,    29,  -294,  -294,  -294,  -294,   171,   172,
692 >     173,   174,   175,   176,   177,   178,   179,    52,  -294,  -294,
693 >    -294,  -294,  -294,  -294,  -294,  -294,  -294,  -294,   182,  -294,
694 >     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
695 >     193,   148,   194,   195,   196,   197,   198,   199,  -294,   -18,
696 >     200,   201,   202,  -294,   144,   203,   204,   205,   206,   207,
697 >     208,   209,   210,   211,  -294,   216,   217,   214,  -294,   220,
698 >     221,   222,   223,   225,   224,   226,   139,   227,   228,  -294,
699 >    -294,  -294,  -294,  -294,  -294,  -294,  -294,  -294,  -294,  -294,
700 >    -294,  -294,   139,   139,   139,   139,   139,   139,   139,  -294,
701 >    -294,  -294,  -294,  -294,  -294,  -294,  -294,   180,   229,   230,
702 >      39,  -294,  -294,  -294,  -294,  -294,  -294,  -294,  -294,  -294,
703 >     231,   232,   233,   219,   234,    56,  -294,  -294,  -294,  -294,
704 >    -294,  -294,  -294,  -294,  -294,  -294,  -294,  -294,  -294,  -294,
705 >    -294,  -294,   236,   237,  -294,   238,    81,   239,   240,   166,
706 >     241,   242,   243,   244,   245,  -294,  -294,  -294,  -294,  -294,
707 >    -294,  -294,  -294,   250,   251,   252,   249,  -294,   253,   255,
708 >     256,   257,   260,   261,   258,  -294,  -294,  -294,  -294,   221,
709 >     221,   221,  -294,  -294,  -294,  -294,   264,  -294,  -294,  -294,
710 >    -294,  -294,   262,   263,   265,  -294,    51,   266,   267,   268,
711 >     259,   -58,  -294,   269,  -294,  -294,  -294,  -294,   270,  -294,
712 >    -294,  -294,  -294,  -294,    26,  -294,  -294,  -294,  -294,   275,
713 >     272,  -294,  -294,  -294,  -294,    51,   273,  -294,  -294,  -294
714   };
715  
716    /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
# Line 691 | Line 718 | static const yytype_int16 yypact[] =
718       means the default is an error.  */
719   static const yytype_uint8 yydefact[] =
720   {
721 <       2,    87,     1,     0,     0,     0,     0,     3,     5,     4,
721 >       2,    97,     1,     0,     0,     0,     0,     3,     5,     4,
722         7,     0,     8,     0,     6,     9,     0,     0,     0,     0,
723 <       0,     0,   152,     0,     0,   150,   151,    60,     0,     0,
723 >       0,     0,   169,     0,     0,   167,   168,    69,     0,     0,
724 >       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
725 >       0,     0,     0,     0,     0,     0,    50,    51,    53,    56,
726 >      54,    55,    57,    58,    66,    67,    59,    60,    61,    62,
727 >      63,    64,    65,    52,    68,     0,   136,     0,     0,     0,
728 >       0,   131,   132,   133,   134,   135,     0,    38,     0,     0,
729 >       0,     0,     0,     0,     0,     0,     0,     0,    28,    29,
730 >      30,    31,    32,    33,    34,    35,    36,    37,     0,     0,
731 >       0,     0,   166,     0,     0,     0,     0,     0,     0,     0,
732         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
733 <       0,     0,     0,     0,     0,    42,    43,    45,    48,    46,
734 <      47,    49,    50,    57,    58,    51,    52,    53,    54,    55,
735 <      56,    44,    59,     0,   126,     0,     0,     0,     0,   121,
736 <     122,   123,   124,   125,     0,    34,     0,     0,     0,     0,
737 <       0,     0,    28,    29,    30,    31,    32,    33,     0,     0,
703 <       0,     0,   149,     0,     0,     0,     0,     0,     0,     0,
733 >       0,    49,     0,     0,     0,     0,     0,   130,     0,     0,
734 >       0,     0,     0,     0,     0,     0,     0,     0,     0,    27,
735 >     103,     0,     0,     0,   100,   101,   102,   119,     0,     0,
736 >       0,     0,     0,     0,     0,     0,     0,     0,   109,   110,
737 >     111,   113,   115,   112,   114,   117,   118,   116,     0,   165,
738         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
739 <      41,     0,     0,     0,     0,     0,   120,     0,     0,     0,
740 <       0,     0,     0,     0,    27,    93,     0,     0,     0,    90,
741 <      91,    92,   109,     0,     0,     0,     0,     0,     0,     0,
742 <       0,     0,     0,    99,   100,   101,   103,   105,   102,   104,
743 <     107,   108,   106,     0,   148,     0,     0,     0,     0,     0,
744 <       0,     0,     0,     0,     0,     0,    10,     0,     0,     0,
745 <       0,     0,    40,     0,     0,     0,     0,   119,     0,     0,
746 <       0,     0,     0,     0,    26,     0,     0,     0,    89,     0,
747 <       0,     0,     0,     0,     0,     0,     0,     0,     0,    98,
748 <     153,    61,    76,    62,    63,    64,    65,    69,    66,    67,
749 <      68,    70,    10,    10,    10,    10,    10,    10,    10,    12,
750 <      11,    71,    72,    73,    74,    75,     0,     0,     0,     0,
751 <      80,    81,    82,    83,   127,   128,   129,   139,     0,     0,
752 <       0,     0,     0,     0,   133,   134,   136,   135,   137,   138,
753 <      38,    35,    36,    37,    39,     0,     0,    88,     0,    20,
754 <       0,     0,     0,     0,     0,     0,     0,     0,    97,    13,
755 <      14,    15,    16,    17,    18,    19,     0,     0,     0,     0,
756 <      79,     0,     0,     0,     0,     0,     0,   132,    94,    95,
757 <     114,    20,    20,    20,    22,    21,   117,   110,     0,   112,
724 <     115,   113,   116,   111,     0,     0,     0,    78,     0,     0,
725 <       0,     0,     0,   146,     0,   131,    23,    24,    25,     0,
726 <      86,    85,    84,   143,   141,   140,     0,     0,   145,   142,
727 <     118,     0,   144,   147
739 >       0,    10,     0,     0,     0,     0,     0,     0,    48,     0,
740 >       0,     0,     0,   129,     0,     0,     0,     0,     0,     0,
741 >       0,     0,     0,     0,    26,     0,     0,     0,    99,     0,
742 >       0,     0,     0,     0,     0,     0,     0,     0,     0,   108,
743 >     170,    70,    86,    71,    72,    73,    74,    78,    75,    76,
744 >      77,    79,    10,    10,    10,    10,    10,    10,    10,    12,
745 >      11,    80,    82,    81,    83,    84,    85,     0,     0,     0,
746 >       0,    90,    91,    92,    93,   137,   138,   139,   150,   152,
747 >       0,     0,     0,     0,     0,     0,   143,   144,   145,   147,
748 >     146,   148,   149,    46,    45,    47,    42,    43,    39,    40,
749 >      41,    44,     0,     0,    98,     0,    20,     0,     0,     0,
750 >       0,     0,     0,     0,     0,   107,    13,    14,    15,    16,
751 >      17,    18,    19,     0,     0,     0,     0,    89,     0,     0,
752 >       0,     0,     0,     0,     0,   142,   104,   105,   124,    20,
753 >      20,    20,    22,    21,   127,   120,     0,   122,   125,   123,
754 >     126,   121,     0,     0,     0,    88,     0,     0,     0,     0,
755 >       0,     0,   163,     0,   141,    23,    24,    25,     0,    96,
756 >      95,    94,   156,   157,     0,   155,   160,   158,   151,     0,
757 >       0,   162,   159,   128,   153,     0,     0,   161,   154,   164
758   };
759  
760    /* YYPGOTO[NTERM-NUM].  */
761   static const yytype_int16 yypgoto[] =
762   {
763 <    -245,  -245,  -245,   -10,  -104,  -244,    27,  -245,  -245,   133,
764 <    -245,  -245,  -245,  -245,  -245,  -245,  -245,   219,  -245,  -245,
765 <    -245,  -245,  -245,  -245,  -245,  -245,  -245,  -245,  -245,  -245,
766 <    -245,  -245,  -245,  -245,  -245,  -245,  -245,    35,  -245,  -245,
767 <    -245,  -245,  -245,  -245,   137,  -245,  -245,  -245,  -245,  -245,
768 <     139,  -245,  -245,  -245,  -245,  -245,  -245,  -245,  -245,  -245,
769 <    -245,  -245,   225,  -245,  -245,  -245,  -245,  -245,  -245,   -25,
770 <    -245,  -245,  -245,  -245,  -245,  -245,   -46,  -245,  -245,   277,
771 <    -245
763 >    -294,  -294,  -294,    -2,  -114,  -293,     6,  -294,  -294,   212,
764 >    -294,  -294,  -294,  -294,  -294,  -294,  -294,  -294,  -294,  -294,
765 >    -294,   278,  -294,  -294,  -294,  -294,  -294,  -294,  -294,  -294,
766 >    -294,  -294,  -294,  -294,  -294,  -294,  -294,  -294,  -294,  -294,
767 >    -294,  -294,    -8,  -294,  -294,  -294,  -294,  -294,  -294,   154,
768 >    -294,  -294,  -294,  -294,  -294,    86,  -294,  -294,  -294,  -294,
769 >    -294,  -294,  -294,  -294,  -294,  -294,  -294,   276,  -294,  -294,
770 >    -294,  -294,  -294,  -294,    68,  -294,  -294,  -294,  -294,   -69,
771 >    -294,  -294,  -294,  -294,  -294,   -43,  -294,  -294,   277,  -294
772   };
773  
774    /* YYDEFGOTO[NTERM-NUM].  */
775   static const yytype_int16 yydefgoto[] =
776   {
777 <      -1,     1,     7,   219,   220,   294,   295,     8,    81,    82,
778 <      83,    84,    85,    86,    87,     9,    44,    45,    46,    47,
779 <      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
780 <      58,    59,    60,    61,    62,    63,   229,   230,   231,   232,
781 <     233,    10,    11,   128,   129,   130,   131,    12,    13,   142,
782 <     143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
783 <      14,    68,    69,    70,    71,    72,    73,    74,   243,   244,
784 <     245,   246,   247,   248,   249,   312,   313,    15,    24,    25,
785 <      26
777 >      -1,     1,     7,   239,   240,   322,   323,     8,    87,    88,
778 >      89,    90,    91,    92,    93,    94,    95,    96,    97,     9,
779 >      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
780 >      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
781 >      65,   250,   251,   252,   253,   254,    10,    11,   143,   144,
782 >     145,   146,    12,    13,   157,   158,   159,   160,   161,   162,
783 >     163,   164,   165,   166,   167,    14,    70,    71,    72,    73,
784 >      74,    75,    76,   265,   266,   267,   268,   308,   354,   355,
785 >     269,   270,   271,   272,   341,   342,    15,    24,    25,    26
786   };
787  
788    /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
# Line 760 | Line 790 | static const yytype_int16 yydefgoto[] =
790       number is the opposite.  If YYTABLE_NINF, syntax error.  */
791   static const yytype_int16 yytable[] =
792   {
793 <     167,    27,   311,    28,    22,   226,   327,    16,   227,   -77,
794 <      29,   125,   228,    64,    17,   180,   181,  -130,    30,    18,
795 <     132,    75,    31,    23,    65,    66,    32,    33,    34,    35,
796 <     126,    76,    36,    37,   133,    38,    19,    39,    40,    20,
797 <     134,    88,   135,    21,    77,    78,   125,   316,   317,   318,
798 <      41,   127,   279,    89,    79,   136,    42,    90,    43,   237,
799 <      80,    67,   238,   109,    93,   126,    91,   291,   292,   293,
800 <     137,   138,   139,   140,    22,   115,   239,   141,    94,    95,
801 <      96,   240,   198,   123,   226,   111,   127,   227,    97,    98,
802 <      64,   228,   266,    23,  -130,    99,   100,   241,    27,   101,
803 <      28,    65,    66,   102,   103,   104,   -77,    29,   187,   105,
804 <     117,   237,   106,   242,   238,    30,   107,   132,   108,    31,
805 <     259,   286,   112,    32,    33,    34,    35,   113,   239,    36,
806 <      37,   133,    38,   240,    39,    40,   114,   134,    67,   135,
807 <     118,   154,     2,   119,   120,   121,   122,    41,   153,   241,
808 <     155,   156,   136,    42,    75,    43,     3,   172,   157,     4,
809 <     158,   159,   160,   161,    76,   242,   162,   137,   138,   139,
810 <     140,   163,     5,     6,   141,   164,   165,    77,    78,   166,
811 <     173,   168,   169,   -96,   170,   171,   174,    79,   175,   176,
812 <     179,   177,   178,    80,   212,   213,   214,   215,   216,   217,
813 <     218,   182,   269,   270,   271,   272,   273,   274,   275,   183,
814 <     184,   166,   185,   186,   124,   189,   190,   260,   287,   191,
815 <     192,   193,   194,   195,   196,   197,   200,   201,   202,   203,
816 <     204,   205,   206,   207,   208,   209,   210,   211,   221,   222,
817 <     223,   224,   225,   234,   235,   236,   250,   251,   252,   253,
818 <     254,   255,   256,   257,   258,   259,   284,   261,   264,   262,
819 <     263,   265,   267,   110,   280,   188,   328,   268,     0,   276,
820 <     277,   278,   281,   282,   283,   285,   288,   289,   290,   296,
821 <     297,   199,   299,   298,   300,   301,   302,   303,   304,   305,
822 <     306,   307,   308,   116,   309,   310,   311,   326,   314,   319,
823 <     315,    92,     0,   320,     0,   321,   322,   323,   324,   325,
824 <     329,   330,   331,   332,   333
793 >     182,    27,   184,   247,    28,    22,    66,    16,   248,   340,
794 >     -87,  -140,   249,   360,    29,   195,    17,   197,    18,   199,
795 >     200,   201,    67,    68,    22,    30,   345,   346,   347,    31,
796 >     140,    23,    19,    32,    33,    34,    35,    77,    66,    36,
797 >      37,    20,    38,  -140,    39,    40,    41,    78,    79,    80,
798 >      23,    81,    82,   147,    67,    68,   141,   258,    42,   259,
799 >     247,   260,    69,    21,    43,   248,    44,    83,    84,   249,
800 >     100,   120,   148,   352,   353,   101,   126,    85,   142,    98,
801 >     149,   261,   150,    99,    86,   103,   262,   122,   319,   320,
802 >     321,   104,   105,   106,    69,   151,    27,   107,   364,    28,
803 >     207,   365,   293,   263,   108,   -87,   109,   138,   110,    29,
804 >     306,   152,   153,   154,   155,   111,   140,   112,   156,   264,
805 >      30,   113,   114,   218,    31,   147,   115,   314,    32,    33,
806 >      34,    35,   116,   117,    36,    37,   118,    38,     2,    39,
807 >      40,    41,   141,   119,   148,   258,   123,   259,   286,   260,
808 >     180,   124,   149,    42,   150,   125,   128,     3,   129,    43,
809 >     130,    44,     4,   131,   142,   132,   133,   151,   169,   261,
810 >     134,   135,   136,   137,   262,     5,     6,   168,   170,   171,
811 >     172,   173,    77,   152,   153,   154,   155,  -106,   174,   175,
812 >     156,   263,    78,    79,    80,   176,    81,    82,   232,   233,
813 >     234,   235,   236,   237,   238,   177,   181,   264,   178,   179,
814 >     183,   185,    83,    84,   186,   181,   287,   187,   205,   188,
815 >     190,   189,    85,   191,   192,   193,   196,   194,   198,    86,
816 >     296,   297,   298,   299,   300,   301,   302,   202,   203,   204,
817 >     326,   206,   307,   219,   209,   210,   211,   212,   213,   214,
818 >     215,   216,   217,   303,   220,   221,   222,   223,   224,   225,
819 >     226,   227,   228,   229,   230,   231,   241,   242,   243,   244,
820 >     245,   246,   255,   256,   257,   273,   274,   275,   276,   277,
821 >     278,   279,   280,   281,   282,   283,   284,   285,   286,   312,
822 >     288,   291,   289,   290,   292,   294,   368,   208,   361,   139,
823 >     295,   102,   304,   305,   309,   310,   311,   313,   316,   317,
824 >     318,   324,   325,   327,   328,   329,   330,   331,   332,   333,
825 >     334,   335,   337,   121,   338,   339,   336,   340,     0,   343,
826 >     344,   348,   359,   315,   349,   350,     0,   351,   356,   357,
827 >     358,   362,   363,   366,   367,   369,   127
828   };
829  
830   static const yytype_int16 yycheck[] =
831   {
832 <     104,     1,    59,     3,     1,    16,    63,    62,    19,     9,
833 <      10,     1,    23,     1,    62,   119,   120,     5,    18,    62,
834 <       1,     1,    22,    20,    12,    13,    26,    27,    28,    29,
835 <      20,    11,    32,    33,    15,    35,    62,    37,    38,    57,
836 <      21,    62,    23,    41,    24,    25,     1,   291,   292,   293,
837 <      50,    41,    63,    62,    34,    36,    56,    65,    58,     1,
838 <      40,    49,     4,    63,    65,    20,    63,     6,     7,     8,
839 <      51,    52,    53,    54,     1,    63,    18,    58,    65,    65,
840 <      65,    23,    63,    63,    16,     9,    41,    19,    65,    65,
841 <       1,    23,   196,    20,     5,    65,    65,    39,     1,    65,
842 <       3,    12,    13,    65,    65,    65,     9,    10,    63,    65,
843 <       5,     1,    65,    55,     4,    18,    65,     1,    65,    22,
844 <      59,    63,    65,    26,    27,    28,    29,    65,    18,    32,
845 <      33,    15,    35,    23,    37,    38,    65,    21,    49,    23,
846 <      65,    64,     0,    65,    65,    65,    65,    50,    60,    39,
847 <      60,    60,    36,    56,     1,    58,    14,    64,    60,    17,
848 <      60,    60,    60,    60,    11,    55,    60,    51,    52,    53,
849 <      54,    60,    30,    31,    58,    60,    59,    24,    25,    59,
850 <      62,    60,    60,    41,    60,    60,    60,    34,    60,    60,
851 <      59,    64,    62,    40,    42,    43,    44,    45,    46,    47,
852 <      48,    60,   212,   213,   214,   215,   216,   217,   218,    60,
853 <      64,    59,    65,    65,    81,    65,    65,   190,   243,    65,
854 <      65,    65,    65,    65,    65,    65,    64,    64,    64,    64,
855 <      64,    64,    64,    64,    64,    64,    64,    64,    64,    64,
856 <      64,    64,    64,    64,    64,    64,    64,    64,    64,    64,
857 <      64,    60,    60,    64,    59,    59,    62,    60,    59,    61,
858 <      60,    60,    60,    44,   229,   128,   312,    64,    -1,    65,
859 <      65,    65,    65,    65,    65,    65,    64,    64,    64,    64,
860 <      64,   142,    64,    66,    64,    64,    64,    64,    60,    60,
861 <      60,    64,    59,    68,    60,    60,    59,    65,    60,    59,
862 <      64,    24,    -1,    64,    -1,    64,    64,    64,    64,    64,
863 <      64,    64,    60,    64,    64
832 >     114,     1,   116,    21,     4,     1,     1,    70,    26,    67,
833 >      10,     6,    30,    71,    14,   129,    70,   131,    70,   133,
834 >     134,   135,    17,    18,     1,    25,   319,   320,   321,    29,
835 >       1,    27,    70,    33,    34,    35,    36,     1,     1,    39,
836 >      40,    65,    42,     6,    44,    45,    46,    11,    12,    13,
837 >      27,    15,    16,     1,    17,    18,    27,     1,    58,     3,
838 >      21,     5,    57,    49,    64,    26,    66,    31,    32,    30,
839 >      73,    71,    20,    22,    23,    71,    71,    41,    49,    70,
840 >      28,    25,    30,    70,    48,    73,    30,    10,     7,     8,
841 >       9,    73,    73,    73,    57,    43,     1,    73,    72,     4,
842 >      71,    75,   216,    47,    73,    10,    73,    71,    73,    14,
843 >      71,    59,    60,    61,    62,    73,     1,    73,    66,    63,
844 >      25,    73,    73,    71,    29,     1,    73,    71,    33,    34,
845 >      35,    36,    73,    73,    39,    40,    73,    42,     0,    44,
846 >      45,    46,    27,    73,    20,     1,    73,     3,    67,     5,
847 >      67,    73,    28,    58,    30,    73,     6,    19,    73,    64,
848 >      73,    66,    24,    73,    49,    73,    73,    43,    72,    25,
849 >      73,    73,    73,    73,    30,    37,    38,    68,    68,    68,
850 >      68,    68,     1,    59,    60,    61,    62,    49,    68,    68,
851 >      66,    47,    11,    12,    13,    68,    15,    16,    50,    51,
852 >      52,    53,    54,    55,    56,    68,    67,    63,    68,    68,
853 >      68,    68,    31,    32,    68,    67,   210,    68,    73,    72,
854 >      68,    70,    41,    68,    68,    72,    67,    70,    67,    48,
855 >     232,   233,   234,   235,   236,   237,   238,    68,    68,    72,
856 >      74,    73,   250,   157,    73,    73,    73,    73,    73,    73,
857 >      73,    73,    73,    73,    72,    72,    72,    72,    72,    72,
858 >      72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
859 >      72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
860 >      72,    72,    72,    72,    68,    68,    72,    67,    67,    70,
861 >      68,    67,    69,    68,    68,    68,   365,   143,   341,    87,
862 >      72,    24,    73,    73,    73,    73,    73,    73,    72,    72,
863 >      72,    72,    72,    72,    72,    72,    72,    72,    68,    68,
864 >      68,    72,    67,    45,    68,    68,    73,    67,    -1,    68,
865 >      72,    67,    73,   265,    72,    72,    -1,    72,    72,    72,
866 >      72,    72,    72,    68,    72,    72,    70
867   };
868  
869    /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
870       symbol of state STATE-NUM.  */
871   static const yytype_uint8 yystos[] =
872   {
873 <       0,    68,     0,    14,    17,    30,    31,    69,    74,    82,
874 <     108,   109,   114,   115,   127,   144,    62,    62,    62,    62,
875 <      57,    41,     1,    20,   145,   146,   147,     1,     3,    10,
876 <      18,    22,    26,    27,    28,    29,    32,    33,    35,    37,
877 <      38,    50,    56,    58,    83,    84,    85,    86,    87,    88,
878 <      89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
879 <      99,   100,   101,   102,     1,    12,    13,    49,   128,   129,
880 <     130,   131,   132,   133,   134,     1,    11,    24,    25,    34,
881 <      40,    75,    76,    77,    78,    79,    80,    81,    62,    62,
882 <      65,    63,   146,    65,    65,    65,    65,    65,    65,    65,
883 <      65,    65,    65,    65,    65,    65,    65,    65,    65,    63,
884 <      84,     9,    65,    65,    65,    63,   129,     5,    65,    65,
885 <      65,    65,    65,    63,    76,     1,    20,    41,   110,   111,
886 <     112,   113,     1,    15,    21,    23,    36,    51,    52,    53,
887 <      54,    58,   116,   117,   118,   119,   120,   121,   122,   123,
888 <     124,   125,   126,    60,    64,    60,    60,    60,    60,    60,
889 <      60,    60,    60,    60,    60,    59,    59,    71,    60,    60,
890 <      60,    60,    64,    62,    60,    60,    60,    64,    62,    59,
891 <      71,    71,    60,    60,    64,    65,    65,    63,   111,    65,
892 <      65,    65,    65,    65,    65,    65,    65,    65,    63,   117,
893 <      64,    64,    64,    64,    64,    64,    64,    64,    64,    64,
894 <      64,    64,    42,    43,    44,    45,    46,    47,    48,    70,
895 <      71,    64,    64,    64,    64,    64,    16,    19,    23,   103,
896 <     104,   105,   106,   107,    64,    64,    64,     1,     4,    18,
897 <      23,    39,    55,   135,   136,   137,   138,   139,   140,   141,
898 <      64,    64,    64,    64,    64,    60,    60,    64,    59,    59,
899 <      73,    60,    61,    60,    59,    60,    71,    60,    64,    70,
900 <      70,    70,    70,    70,    70,    70,    65,    65,    65,    63,
901 <     104,    65,    65,    65,    62,    65,    63,   136,    64,    64,
902 <      64,     6,     7,     8,    72,    73,    64,    64,    66,    64,
903 <      64,    64,    64,    64,    60,    60,    60,    64,    59,    60,
904 <      60,    59,   142,   143,    60,    64,    72,    72,    72,    59,
905 <      64,    64,    64,    64,    64,    64,    65,    63,   143,    64,
906 <      64,    60,    64,    64
873 >       0,    77,     0,    19,    24,    37,    38,    78,    83,    95,
874 >     122,   123,   128,   129,   141,   162,    70,    70,    70,    70,
875 >      65,    49,     1,    27,   163,   164,   165,     1,     4,    14,
876 >      25,    29,    33,    34,    35,    36,    39,    40,    42,    44,
877 >      45,    46,    58,    64,    66,    96,    97,    98,    99,   100,
878 >     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
879 >     111,   112,   113,   114,   115,   116,     1,    17,    18,    57,
880 >     142,   143,   144,   145,   146,   147,   148,     1,    11,    12,
881 >      13,    15,    16,    31,    32,    41,    48,    84,    85,    86,
882 >      87,    88,    89,    90,    91,    92,    93,    94,    70,    70,
883 >      73,    71,   164,    73,    73,    73,    73,    73,    73,    73,
884 >      73,    73,    73,    73,    73,    73,    73,    73,    73,    73,
885 >      71,    97,    10,    73,    73,    73,    71,   143,     6,    73,
886 >      73,    73,    73,    73,    73,    73,    73,    73,    71,    85,
887 >       1,    27,    49,   124,   125,   126,   127,     1,    20,    28,
888 >      30,    43,    59,    60,    61,    62,    66,   130,   131,   132,
889 >     133,   134,   135,   136,   137,   138,   139,   140,    68,    72,
890 >      68,    68,    68,    68,    68,    68,    68,    68,    68,    68,
891 >      67,    67,    80,    68,    80,    68,    68,    68,    72,    70,
892 >      68,    68,    68,    72,    70,    80,    67,    80,    67,    80,
893 >      80,    80,    68,    68,    72,    73,    73,    71,   125,    73,
894 >      73,    73,    73,    73,    73,    73,    73,    73,    71,   131,
895 >      72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
896 >      72,    72,    50,    51,    52,    53,    54,    55,    56,    79,
897 >      80,    72,    72,    72,    72,    72,    72,    21,    26,    30,
898 >     117,   118,   119,   120,   121,    72,    72,    72,     1,     3,
899 >       5,    25,    30,    47,    63,   149,   150,   151,   152,   156,
900 >     157,   158,   159,    72,    72,    72,    72,    72,    72,    72,
901 >      72,    72,    68,    68,    72,    67,    67,    82,    68,    69,
902 >      68,    67,    68,    80,    68,    72,    79,    79,    79,    79,
903 >      79,    79,    79,    73,    73,    73,    71,   118,   153,    73,
904 >      73,    73,    70,    73,    71,   150,    72,    72,    72,     7,
905 >       8,     9,    81,    82,    72,    72,    74,    72,    72,    72,
906 >      72,    72,    68,    68,    68,    72,    73,    67,    68,    68,
907 >      67,   160,   161,    68,    72,    81,    81,    81,    67,    72,
908 >      72,    72,    22,    23,   154,   155,    72,    72,    72,    73,
909 >      71,   161,    72,    72,    72,    75,    68,    72,   155,    72
910   };
911  
912    /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
913   static const yytype_uint8 yyr1[] =
914   {
915 <       0,    67,    68,    68,    69,    69,    69,    69,    69,    69,
916 <      70,    70,    71,    71,    71,    71,    71,    71,    71,    71,
917 <      72,    72,    73,    73,    73,    73,    74,    75,    75,    76,
918 <      76,    76,    76,    76,    76,    77,    78,    79,    80,    81,
919 <      82,    83,    83,    84,    84,    84,    84,    84,    84,    84,
920 <      84,    84,    84,    84,    84,    84,    84,    84,    84,    84,
921 <      84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
922 <      94,    95,    96,    97,    98,    99,   100,   102,   101,   103,
923 <     103,   104,   104,   104,   105,   106,   107,   109,   108,   110,
924 <     110,   111,   111,   111,   112,   113,   115,   114,   116,   116,
925 <     117,   117,   117,   117,   117,   117,   117,   117,   117,   117,
926 <     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
927 <     128,   128,   129,   129,   129,   129,   129,   130,   131,   132,
928 <     134,   133,   135,   135,   136,   136,   136,   136,   136,   136,
929 <     137,   138,   139,   140,   141,   142,   142,   143,   144,   145,
930 <     145,   146,   146,   147
915 >       0,    76,    77,    77,    78,    78,    78,    78,    78,    78,
916 >      79,    79,    80,    80,    80,    80,    80,    80,    80,    80,
917 >      81,    81,    82,    82,    82,    82,    83,    84,    84,    85,
918 >      85,    85,    85,    85,    85,    85,    85,    85,    85,    86,
919 >      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
920 >      96,    97,    97,    97,    97,    97,    97,    97,    97,    97,
921 >      97,    97,    97,    97,    97,    97,    97,    97,    97,    97,
922 >      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
923 >     108,   109,   110,   111,   112,   113,   114,   116,   115,   117,
924 >     117,   118,   118,   118,   119,   120,   121,   123,   122,   124,
925 >     124,   125,   125,   125,   126,   127,   129,   128,   130,   130,
926 >     131,   131,   131,   131,   131,   131,   131,   131,   131,   131,
927 >     132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
928 >     142,   142,   143,   143,   143,   143,   143,   144,   145,   146,
929 >     148,   147,   149,   149,   150,   150,   150,   150,   150,   150,
930 >     150,   151,   153,   152,   154,   154,   155,   155,   156,   157,
931 >     158,   159,   160,   160,   161,   162,   163,   163,   164,   164,
932 >     165
933   };
934  
935    /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
# Line 897 | Line 938 | static const yytype_uint8 yyr2[] =
938         0,     2,     0,     2,     1,     1,     1,     1,     1,     1,
939         0,     1,     2,     3,     3,     3,     3,     3,     3,     3,
940         0,     1,     2,     3,     3,     3,     5,     2,     1,     1,
941 <       1,     1,     1,     1,     1,     4,     4,     4,     4,     4,
942 <       5,     2,     1,     1,     1,     1,     1,     1,     1,     1,
941 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     4,
942 >       4,     4,     4,     4,     4,     4,     4,     4,     5,     2,
943 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
944         1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
945 <       1,     4,     4,     4,     4,     4,     4,     4,     4,     4,
945 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
946         4,     4,     4,     4,     4,     4,     4,     0,     6,     2,
947         1,     1,     1,     1,     4,     4,     4,     0,     6,     2,
948         1,     1,     1,     1,     4,     4,     0,     6,     2,     1,
# Line 908 | Line 950 | static const yytype_uint8 yyr2[] =
950         4,     4,     4,     4,     4,     4,     4,     4,     6,     5,
951         2,     1,     1,     1,     1,     1,     1,     4,     4,     4,
952         0,     6,     2,     1,     1,     1,     1,     1,     1,     1,
953 <       4,     4,     4,     4,     5,     2,     1,     4,     5,     2,
954 <       1,     1,     1,     4
953 >       1,     4,     0,     5,     3,     1,     1,     1,     4,     4,
954 >       4,     5,     2,     1,     4,     5,     2,     1,     1,     1,
955 >       4
956   };
957  
958  
# Line 1586 | Line 1629 | yyreduce:
1629    switch (yyn)
1630      {
1631          case 10:
1632 < #line 111 "config-parser.y" /* yacc.c:1646  */
1632 > #line 118 "config-parser.y" /* yacc.c:1646  */
1633      { (yyval.number) = 0; }
1634 < #line 1592 "config-parser.c" /* yacc.c:1646  */
1634 > #line 1635 "config-parser.c" /* yacc.c:1646  */
1635      break;
1636  
1637    case 12:
1638 < #line 112 "config-parser.y" /* yacc.c:1646  */
1638 > #line 119 "config-parser.y" /* yacc.c:1646  */
1639      { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
1640 < #line 1598 "config-parser.c" /* yacc.c:1646  */
1640 > #line 1641 "config-parser.c" /* yacc.c:1646  */
1641      break;
1642  
1643    case 13:
1644 < #line 113 "config-parser.y" /* yacc.c:1646  */
1644 > #line 120 "config-parser.y" /* yacc.c:1646  */
1645      { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
1646 < #line 1604 "config-parser.c" /* yacc.c:1646  */
1646 > #line 1647 "config-parser.c" /* yacc.c:1646  */
1647      break;
1648  
1649    case 14:
1650 < #line 114 "config-parser.y" /* yacc.c:1646  */
1650 > #line 121 "config-parser.y" /* yacc.c:1646  */
1651      { (yyval.number) = (yyvsp[-2].number) * 60 + (yyvsp[0].number); }
1652 < #line 1610 "config-parser.c" /* yacc.c:1646  */
1652 > #line 1653 "config-parser.c" /* yacc.c:1646  */
1653      break;
1654  
1655    case 15:
1656 < #line 115 "config-parser.y" /* yacc.c:1646  */
1656 > #line 122 "config-parser.y" /* yacc.c:1646  */
1657      { (yyval.number) = (yyvsp[-2].number) * 60 * 60 + (yyvsp[0].number); }
1658 < #line 1616 "config-parser.c" /* yacc.c:1646  */
1658 > #line 1659 "config-parser.c" /* yacc.c:1646  */
1659      break;
1660  
1661    case 16:
1662 < #line 116 "config-parser.y" /* yacc.c:1646  */
1662 > #line 123 "config-parser.y" /* yacc.c:1646  */
1663      { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 + (yyvsp[0].number); }
1664 < #line 1622 "config-parser.c" /* yacc.c:1646  */
1664 > #line 1665 "config-parser.c" /* yacc.c:1646  */
1665      break;
1666  
1667    case 17:
1668 < #line 117 "config-parser.y" /* yacc.c:1646  */
1668 > #line 124 "config-parser.y" /* yacc.c:1646  */
1669      { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 + (yyvsp[0].number); }
1670 < #line 1628 "config-parser.c" /* yacc.c:1646  */
1670 > #line 1671 "config-parser.c" /* yacc.c:1646  */
1671      break;
1672  
1673    case 18:
1674 < #line 118 "config-parser.y" /* yacc.c:1646  */
1674 > #line 125 "config-parser.y" /* yacc.c:1646  */
1675      { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 * 4 + (yyvsp[0].number); }
1676 < #line 1634 "config-parser.c" /* yacc.c:1646  */
1676 > #line 1677 "config-parser.c" /* yacc.c:1646  */
1677      break;
1678  
1679    case 19:
1680 < #line 119 "config-parser.y" /* yacc.c:1646  */
1680 > #line 126 "config-parser.y" /* yacc.c:1646  */
1681      { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 365 + (yyvsp[0].number); }
1682 < #line 1640 "config-parser.c" /* yacc.c:1646  */
1682 > #line 1683 "config-parser.c" /* yacc.c:1646  */
1683      break;
1684  
1685    case 20:
1686 < #line 122 "config-parser.y" /* yacc.c:1646  */
1686 > #line 129 "config-parser.y" /* yacc.c:1646  */
1687      { (yyval.number) = 0; }
1688 < #line 1646 "config-parser.c" /* yacc.c:1646  */
1688 > #line 1689 "config-parser.c" /* yacc.c:1646  */
1689      break;
1690  
1691    case 22:
1692 < #line 123 "config-parser.y" /* yacc.c:1646  */
1692 > #line 130 "config-parser.y" /* yacc.c:1646  */
1693      { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
1694 < #line 1652 "config-parser.c" /* yacc.c:1646  */
1694 > #line 1695 "config-parser.c" /* yacc.c:1646  */
1695      break;
1696  
1697    case 23:
1698 < #line 124 "config-parser.y" /* yacc.c:1646  */
1698 > #line 131 "config-parser.y" /* yacc.c:1646  */
1699      { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
1700 < #line 1658 "config-parser.c" /* yacc.c:1646  */
1700 > #line 1701 "config-parser.c" /* yacc.c:1646  */
1701      break;
1702  
1703    case 24:
1704 < #line 125 "config-parser.y" /* yacc.c:1646  */
1704 > #line 132 "config-parser.y" /* yacc.c:1646  */
1705      { (yyval.number) = (yyvsp[-2].number) * 1024 + (yyvsp[0].number); }
1706 < #line 1664 "config-parser.c" /* yacc.c:1646  */
1706 > #line 1707 "config-parser.c" /* yacc.c:1646  */
1707      break;
1708  
1709    case 25:
1710 < #line 126 "config-parser.y" /* yacc.c:1646  */
1710 > #line 133 "config-parser.y" /* yacc.c:1646  */
1711      { (yyval.number) = (yyvsp[-2].number) * 1024 * 1024 + (yyvsp[0].number); }
1712 < #line 1670 "config-parser.c" /* yacc.c:1646  */
1712 > #line 1713 "config-parser.c" /* yacc.c:1646  */
1713      break;
1714  
1715 <  case 35:
1716 < #line 144 "config-parser.y" /* yacc.c:1646  */
1715 >  case 39:
1716 > #line 155 "config-parser.y" /* yacc.c:1646  */
1717      {
1718 <   OptionsItem->negcache = (yyvsp[-1].number);
1718 >  OptionsItem->negcache = (yyvsp[-1].number);
1719   }
1720 < #line 1678 "config-parser.c" /* yacc.c:1646  */
1720 > #line 1721 "config-parser.c" /* yacc.c:1646  */
1721      break;
1722  
1723 <  case 36:
1724 < #line 149 "config-parser.y" /* yacc.c:1646  */
1723 >  case 40:
1724 > #line 160 "config-parser.y" /* yacc.c:1646  */
1725      {
1726 <   OptionsItem->negcache_rebuild = (yyvsp[-1].number);
1726 >  OptionsItem->negcache_rebuild = (yyvsp[-1].number);
1727   }
1728 < #line 1686 "config-parser.c" /* yacc.c:1646  */
1728 > #line 1729 "config-parser.c" /* yacc.c:1646  */
1729      break;
1730  
1731 <  case 37:
1732 < #line 154 "config-parser.y" /* yacc.c:1646  */
1731 >  case 41:
1732 > #line 165 "config-parser.y" /* yacc.c:1646  */
1733      {
1734 <   xfree(OptionsItem->pidfile);
1735 <   OptionsItem->pidfile = xstrdup((yyvsp[-1].string));
1734 >  xfree(OptionsItem->pidfile);
1735 >  OptionsItem->pidfile = xstrdup((yyvsp[-1].string));
1736   }
1737 < #line 1695 "config-parser.c" /* yacc.c:1646  */
1737 > #line 1738 "config-parser.c" /* yacc.c:1646  */
1738      break;
1739  
1740 <  case 38:
1741 < #line 160 "config-parser.y" /* yacc.c:1646  */
1740 >  case 42:
1741 > #line 171 "config-parser.y" /* yacc.c:1646  */
1742      {
1743 <   OptionsItem->dns_fdlimit = (yyvsp[-1].number);
1743 >  OptionsItem->dns_fdlimit = (yyvsp[-1].number);
1744   }
1745 < #line 1703 "config-parser.c" /* yacc.c:1646  */
1745 > #line 1746 "config-parser.c" /* yacc.c:1646  */
1746      break;
1747  
1748 <  case 39:
1749 < #line 165 "config-parser.y" /* yacc.c:1646  */
1748 >  case 43:
1749 > #line 176 "config-parser.y" /* yacc.c:1646  */
1750 >    {
1751 >  OptionsItem->dns_timeout = (yyvsp[-1].number);
1752 > }
1753 > #line 1754 "config-parser.c" /* yacc.c:1646  */
1754 >    break;
1755 >
1756 >  case 44:
1757 > #line 181 "config-parser.y" /* yacc.c:1646  */
1758      {
1759 <   xfree(OptionsItem->scanlog);
1760 <   OptionsItem->scanlog = xstrdup((yyvsp[-1].string));
1759 >  xfree(OptionsItem->scanlog);
1760 >  OptionsItem->scanlog = xstrdup((yyvsp[-1].string));
1761   }
1762 < #line 1712 "config-parser.c" /* yacc.c:1646  */
1762 > #line 1763 "config-parser.c" /* yacc.c:1646  */
1763      break;
1764  
1765 <  case 61:
1765 >  case 45:
1766 > #line 187 "config-parser.y" /* yacc.c:1646  */
1767 >    {
1768 >  OptionsItem->command_queue_size = (yyvsp[-1].number);
1769 > }
1770 > #line 1771 "config-parser.c" /* yacc.c:1646  */
1771 >    break;
1772 >
1773 >  case 46:
1774 > #line 192 "config-parser.y" /* yacc.c:1646  */
1775 >    {
1776 >  OptionsItem->command_interval = (yyvsp[-1].number);
1777 > }
1778 > #line 1779 "config-parser.c" /* yacc.c:1646  */
1779 >    break;
1780 >
1781 >  case 47:
1782   #line 197 "config-parser.y" /* yacc.c:1646  */
1783      {
1784 <   xfree(IRCItem->away);
1718 <   IRCItem->away = xstrdup((yyvsp[-1].string));
1784 >  OptionsItem->command_timeout = (yyvsp[-1].number);
1785   }
1786 < #line 1721 "config-parser.c" /* yacc.c:1646  */
1786 > #line 1787 "config-parser.c" /* yacc.c:1646  */
1787      break;
1788  
1789 <  case 62:
1790 < #line 203 "config-parser.y" /* yacc.c:1646  */
1789 >  case 70:
1790 > #line 229 "config-parser.y" /* yacc.c:1646  */
1791      {
1792 <   xfree(IRCItem->kline);
1793 <   IRCItem->kline = xstrdup((yyvsp[-1].string));
1792 >  xfree(IRCItem->away);
1793 >  IRCItem->away = xstrdup((yyvsp[-1].string));
1794   }
1795 < #line 1730 "config-parser.c" /* yacc.c:1646  */
1795 > #line 1796 "config-parser.c" /* yacc.c:1646  */
1796      break;
1797  
1798 <  case 63:
1799 < #line 209 "config-parser.y" /* yacc.c:1646  */
1798 >  case 71:
1799 > #line 235 "config-parser.y" /* yacc.c:1646  */
1800      {
1801 <   xfree(IRCItem->mode);
1802 <   IRCItem->mode = xstrdup((yyvsp[-1].string));
1801 >  xfree(IRCItem->kline);
1802 >  IRCItem->kline = xstrdup((yyvsp[-1].string));
1803   }
1804 < #line 1739 "config-parser.c" /* yacc.c:1646  */
1804 > #line 1805 "config-parser.c" /* yacc.c:1646  */
1805      break;
1806  
1807 <  case 64:
1808 < #line 215 "config-parser.y" /* yacc.c:1646  */
1807 >  case 72:
1808 > #line 241 "config-parser.y" /* yacc.c:1646  */
1809      {
1810 <   xfree(IRCItem->nick);
1811 <   IRCItem->nick = xstrdup((yyvsp[-1].string));
1810 >  xfree(IRCItem->mode);
1811 >  IRCItem->mode = xstrdup((yyvsp[-1].string));
1812   }
1813 < #line 1748 "config-parser.c" /* yacc.c:1646  */
1813 > #line 1814 "config-parser.c" /* yacc.c:1646  */
1814      break;
1815  
1816 <  case 65:
1817 < #line 221 "config-parser.y" /* yacc.c:1646  */
1816 >  case 73:
1817 > #line 247 "config-parser.y" /* yacc.c:1646  */
1818      {
1819 <   xfree(IRCItem->nickserv);
1820 <   IRCItem->nickserv = xstrdup((yyvsp[-1].string));
1819 >  xfree(IRCItem->nick);
1820 >  IRCItem->nick = xstrdup((yyvsp[-1].string));
1821   }
1822 < #line 1757 "config-parser.c" /* yacc.c:1646  */
1822 > #line 1823 "config-parser.c" /* yacc.c:1646  */
1823      break;
1824  
1825 <  case 66:
1826 < #line 227 "config-parser.y" /* yacc.c:1646  */
1825 >  case 74:
1826 > #line 253 "config-parser.y" /* yacc.c:1646  */
1827      {
1828 <   xfree(IRCItem->oper);
1829 <   IRCItem->oper = xstrdup((yyvsp[-1].string));
1828 >  xfree(IRCItem->nickserv);
1829 >  IRCItem->nickserv = xstrdup((yyvsp[-1].string));
1830   }
1831 < #line 1766 "config-parser.c" /* yacc.c:1646  */
1831 > #line 1832 "config-parser.c" /* yacc.c:1646  */
1832      break;
1833  
1834 <  case 67:
1835 < #line 233 "config-parser.y" /* yacc.c:1646  */
1834 >  case 75:
1835 > #line 259 "config-parser.y" /* yacc.c:1646  */
1836      {
1837 <   xfree(IRCItem->password);
1838 <   IRCItem->password = xstrdup((yyvsp[-1].string));
1837 >  xfree(IRCItem->oper);
1838 >  IRCItem->oper = xstrdup((yyvsp[-1].string));
1839   }
1840 < #line 1775 "config-parser.c" /* yacc.c:1646  */
1840 > #line 1841 "config-parser.c" /* yacc.c:1646  */
1841      break;
1842  
1843 <  case 68:
1844 < #line 239 "config-parser.y" /* yacc.c:1646  */
1843 >  case 76:
1844 > #line 265 "config-parser.y" /* yacc.c:1646  */
1845      {
1846 <   node_t *node;
1847 <   node = node_create(xstrdup((yyvsp[-1].string)));
1846 >  xfree(IRCItem->password);
1847 >  IRCItem->password = xstrdup((yyvsp[-1].string));
1848 > }
1849 > #line 1850 "config-parser.c" /* yacc.c:1646  */
1850 >    break;
1851  
1852 <   list_add(IRCItem->performs, node);
1852 >  case 77:
1853 > #line 271 "config-parser.y" /* yacc.c:1646  */
1854 >    {
1855 >  node_t *node;
1856 >
1857 >  node = node_create(xstrdup((yyvsp[-1].string)));
1858 >  list_add(IRCItem->performs, node);
1859   }
1860 < #line 1786 "config-parser.c" /* yacc.c:1646  */
1860 > #line 1861 "config-parser.c" /* yacc.c:1646  */
1861      break;
1862  
1863 <  case 69:
1864 < #line 247 "config-parser.y" /* yacc.c:1646  */
1863 >  case 78:
1864 > #line 279 "config-parser.y" /* yacc.c:1646  */
1865      {
1866 <   node_t *node;
1792 <   node = node_create(xstrdup((yyvsp[-1].string)));
1866 >  node_t *node;
1867  
1868 <   list_add(IRCItem->notices, node);
1868 >  node = node_create(xstrdup((yyvsp[-1].string)));
1869 >  list_add(IRCItem->notices, node);
1870   }
1871 < #line 1797 "config-parser.c" /* yacc.c:1646  */
1871 > #line 1872 "config-parser.c" /* yacc.c:1646  */
1872      break;
1873  
1874 <  case 70:
1875 < #line 255 "config-parser.y" /* yacc.c:1646  */
1874 >  case 79:
1875 > #line 287 "config-parser.y" /* yacc.c:1646  */
1876      {
1877 <   IRCItem->port = (yyvsp[-1].number);
1877 >  IRCItem->port = (yyvsp[-1].number);
1878   }
1879 < #line 1805 "config-parser.c" /* yacc.c:1646  */
1879 > #line 1880 "config-parser.c" /* yacc.c:1646  */
1880      break;
1881  
1882 <  case 71:
1883 < #line 260 "config-parser.y" /* yacc.c:1646  */
1882 >  case 80:
1883 > #line 292 "config-parser.y" /* yacc.c:1646  */
1884      {
1885 <   IRCItem->readtimeout = (yyvsp[-1].number);
1885 >  IRCItem->readtimeout = (yyvsp[-1].number);
1886   }
1887 < #line 1813 "config-parser.c" /* yacc.c:1646  */
1887 > #line 1888 "config-parser.c" /* yacc.c:1646  */
1888      break;
1889  
1890 <  case 72:
1891 < #line 265 "config-parser.y" /* yacc.c:1646  */
1890 >  case 81:
1891 > #line 297 "config-parser.y" /* yacc.c:1646  */
1892      {
1893 <   xfree(IRCItem->realname);
1819 <   IRCItem->realname = xstrdup((yyvsp[-1].string));
1893 >  IRCItem->reconnectinterval = (yyvsp[-1].number);
1894   }
1895 < #line 1822 "config-parser.c" /* yacc.c:1646  */
1895 > #line 1896 "config-parser.c" /* yacc.c:1646  */
1896      break;
1897  
1898 <  case 73:
1899 < #line 271 "config-parser.y" /* yacc.c:1646  */
1898 >  case 82:
1899 > #line 302 "config-parser.y" /* yacc.c:1646  */
1900      {
1901 <   xfree(IRCItem->server);
1902 <   IRCItem->server = xstrdup((yyvsp[-1].string));
1901 >  xfree(IRCItem->realname);
1902 >  IRCItem->realname = xstrdup((yyvsp[-1].string));
1903   }
1904 < #line 1831 "config-parser.c" /* yacc.c:1646  */
1904 > #line 1905 "config-parser.c" /* yacc.c:1646  */
1905      break;
1906  
1907 <  case 74:
1908 < #line 277 "config-parser.y" /* yacc.c:1646  */
1907 >  case 83:
1908 > #line 308 "config-parser.y" /* yacc.c:1646  */
1909      {
1910 <   xfree(IRCItem->username);
1911 <   IRCItem->username = xstrdup((yyvsp[-1].string));
1910 >  xfree(IRCItem->server);
1911 >  IRCItem->server = xstrdup((yyvsp[-1].string));
1912   }
1913 < #line 1840 "config-parser.c" /* yacc.c:1646  */
1913 > #line 1914 "config-parser.c" /* yacc.c:1646  */
1914      break;
1915  
1916 <  case 75:
1917 < #line 283 "config-parser.y" /* yacc.c:1646  */
1916 >  case 84:
1917 > #line 314 "config-parser.y" /* yacc.c:1646  */
1918      {
1919 <   xfree(IRCItem->vhost);
1920 <   IRCItem->vhost = xstrdup((yyvsp[-1].string));
1919 >  xfree(IRCItem->username);
1920 >  IRCItem->username = xstrdup((yyvsp[-1].string));
1921   }
1922 < #line 1849 "config-parser.c" /* yacc.c:1646  */
1922 > #line 1923 "config-parser.c" /* yacc.c:1646  */
1923      break;
1924  
1925 <  case 76:
1926 < #line 289 "config-parser.y" /* yacc.c:1646  */
1925 >  case 85:
1926 > #line 320 "config-parser.y" /* yacc.c:1646  */
1927      {
1928 <   xfree(IRCItem->connregex);
1929 <   IRCItem->connregex = xstrdup((yyvsp[-1].string));
1928 >  xfree(IRCItem->vhost);
1929 >  IRCItem->vhost = xstrdup((yyvsp[-1].string));
1930   }
1931 < #line 1858 "config-parser.c" /* yacc.c:1646  */
1931 > #line 1932 "config-parser.c" /* yacc.c:1646  */
1932      break;
1933  
1934 <  case 77:
1935 < #line 298 "config-parser.y" /* yacc.c:1646  */
1934 >  case 86:
1935 > #line 326 "config-parser.y" /* yacc.c:1646  */
1936      {
1937 <   node_t *node;
1938 <   struct ChannelConf *item;
1937 >  xfree(IRCItem->connregex);
1938 >  IRCItem->connregex = xstrdup((yyvsp[-1].string));
1939 > }
1940 > #line 1941 "config-parser.c" /* yacc.c:1646  */
1941 >    break;
1942  
1943 <   item = xcalloc(sizeof *item);
1943 >  case 87:
1944 > #line 334 "config-parser.y" /* yacc.c:1646  */
1945 >    {
1946 >  node_t *node;
1947 >  struct ChannelConf *item;
1948  
1949 <   item->name = xstrdup("");
1950 <   item->key = xstrdup("");
1951 <   item->invite = xstrdup("");
1949 >  item = xcalloc(sizeof(*item));
1950 >  item->name = xstrdup("");
1951 >  item->key = xstrdup("");
1952 >  item->invite = xstrdup("");
1953  
1954 <   node = node_create(item);
1873 <   list_add(IRCItem->channels, node);
1954 >  node = node_create(item);
1955  
1956 <   tmp = item;
1956 >  list_add(IRCItem->channels, node);
1957 >  tmp = item;
1958   }
1959 < #line 1878 "config-parser.c" /* yacc.c:1646  */
1959 > #line 1960 "config-parser.c" /* yacc.c:1646  */
1960      break;
1961  
1962 <  case 84:
1963 < #line 323 "config-parser.y" /* yacc.c:1646  */
1962 >  case 94:
1963 > #line 358 "config-parser.y" /* yacc.c:1646  */
1964      {
1965 <   struct ChannelConf *item = tmp;
1965 >  struct ChannelConf *item = tmp;
1966  
1967 <   xfree(item->name);
1968 <   item->name = xstrdup((yyvsp[-1].string));
1967 >  xfree(item->name);
1968 >  item->name = xstrdup((yyvsp[-1].string));
1969   }
1970 < #line 1889 "config-parser.c" /* yacc.c:1646  */
1970 > #line 1971 "config-parser.c" /* yacc.c:1646  */
1971      break;
1972  
1973 <  case 85:
1974 < #line 331 "config-parser.y" /* yacc.c:1646  */
1973 >  case 95:
1974 > #line 366 "config-parser.y" /* yacc.c:1646  */
1975      {
1976 <   struct ChannelConf *item = tmp;
1976 >  struct ChannelConf *item = tmp;
1977  
1978 <   xfree(item->key);
1979 <   item->key = xstrdup((yyvsp[-1].string));
1978 >  xfree(item->key);
1979 >  item->key = xstrdup((yyvsp[-1].string));
1980   }
1981 < #line 1900 "config-parser.c" /* yacc.c:1646  */
1981 > #line 1982 "config-parser.c" /* yacc.c:1646  */
1982      break;
1983  
1984 <  case 86:
1985 < #line 339 "config-parser.y" /* yacc.c:1646  */
1984 >  case 96:
1985 > #line 374 "config-parser.y" /* yacc.c:1646  */
1986      {
1987 <   struct ChannelConf *item = tmp;
1987 >  struct ChannelConf *item = tmp;
1988  
1989 <   xfree(item->invite);
1990 <   item->invite = xstrdup((yyvsp[-1].string));
1989 >  xfree(item->invite);
1990 >  item->invite = xstrdup((yyvsp[-1].string));
1991   }
1992 < #line 1911 "config-parser.c" /* yacc.c:1646  */
1992 > #line 1993 "config-parser.c" /* yacc.c:1646  */
1993      break;
1994  
1995 <  case 87:
1996 < #line 349 "config-parser.y" /* yacc.c:1646  */
1995 >  case 97:
1996 > #line 384 "config-parser.y" /* yacc.c:1646  */
1997      {
1998 <   node_t *node;
1999 <   struct UserConf *item;
1998 >  node_t *node;
1999 >  struct UserConf *item;
2000  
2001 <   item = xcalloc(sizeof *item);
2001 >  item = xcalloc(sizeof(*item));
2002 >  item->masks = list_create();
2003 >  item->scanners = list_create();
2004  
2005 <   item->masks = list_create();
1922 <   item->scanners = list_create();
2005 >  node = node_create(item);
2006  
2007 <   node = node_create(item);
2008 <   list_add(UserItemList, node);
1926 <
1927 <   tmp = item;
2007 >  list_add(UserItemList, node);
2008 >  tmp = item;
2009   }
2010 < #line 1930 "config-parser.c" /* yacc.c:1646  */
2010 > #line 2011 "config-parser.c" /* yacc.c:1646  */
2011      break;
2012  
2013 <  case 94:
2014 < #line 373 "config-parser.y" /* yacc.c:1646  */
2013 >  case 104:
2014 > #line 407 "config-parser.y" /* yacc.c:1646  */
2015      {
2016 <   struct UserConf *item = tmp;
2017 <   node_t *node;
2016 >  struct UserConf *item = tmp;
2017 >  node_t *node;
2018  
2019 <   node = node_create(xstrdup((yyvsp[-1].string)));
2019 >  node = node_create(xstrdup((yyvsp[-1].string)));
2020  
2021 <   list_add(item->masks, node);
2021 >  list_add(item->masks, node);
2022   }
2023 < #line 1943 "config-parser.c" /* yacc.c:1646  */
2023 > #line 2024 "config-parser.c" /* yacc.c:1646  */
2024      break;
2025  
2026 <  case 95:
2027 < #line 383 "config-parser.y" /* yacc.c:1646  */
2026 >  case 105:
2027 > #line 417 "config-parser.y" /* yacc.c:1646  */
2028      {
2029 <   struct UserConf *item = tmp;
2030 <   node_t *node;
2029 >  struct UserConf *item = tmp;
2030 >  node_t *node;
2031  
2032 <   node = node_create(xstrdup((yyvsp[-1].string)));
2032 >  node = node_create(xstrdup((yyvsp[-1].string)));
2033  
2034 <   list_add(item->scanners, node);
2034 >  list_add(item->scanners, node);
2035   }
2036 < #line 1956 "config-parser.c" /* yacc.c:1646  */
2036 > #line 2037 "config-parser.c" /* yacc.c:1646  */
2037      break;
2038  
2039 <  case 96:
2040 < #line 395 "config-parser.y" /* yacc.c:1646  */
2039 >  case 106:
2040 > #line 429 "config-parser.y" /* yacc.c:1646  */
2041      {
2042 <   node_t *node;
2043 <   struct ScannerConf *item, *olditem;
2042 >  node_t *node;
2043 >  struct ScannerConf *item, *olditem;
2044  
2045 <   item = xcalloc(sizeof *item);
2045 >  item = xcalloc(sizeof(*item));
2046  
2047 <   /* Setup ScannerConf defaults */
2048 <   item->name = xstrdup("undefined");
2047 >  /* Setup ScannerConf defaults */
2048 >  item->name = xstrdup("undefined");
2049  
2050 <        if(LIST_SIZE(ScannerItemList) > 0)
2051 <        {
2052 <           olditem = ScannerItemList->tail->data;
2050 >  if (LIST_SIZE(ScannerItemList) > 0)
2051 >  {
2052 >    olditem = ScannerItemList->tail->data;
2053  
2054 <                item->vhost = xstrdup(olditem->vhost);
2055 <                item->fd = olditem->fd;
2056 <                item->target_ip = xstrdup(olditem->target_ip);
2057 <                item->target_port = olditem->target_port;
2058 <                item->timeout = olditem->timeout;
2059 <                item->max_read = olditem->max_read;
2054 >    item->vhost = xstrdup(olditem->vhost);
2055 >    item->fd = olditem->fd;
2056 >    item->target_ip = xstrdup(olditem->target_ip);
2057 >    item->target_port = olditem->target_port;
2058 >    item->timeout = olditem->timeout;
2059 >    item->max_read = olditem->max_read;
2060 >    item->target_string = olditem->target_string;
2061 >    item->target_string_created = 0;
2062 >  }
2063 >  else
2064 >  {
2065 >    item->vhost = xstrdup("0.0.0.0");
2066 >    item->fd = 512;
2067 >    item->target_ip = xstrdup("127.0.0.1");
2068 >    item->target_port = 6667;
2069 >    item->timeout = 30;
2070 >    item->max_read = 4096;
2071 >    item->target_string = list_create();
2072 >    item->target_string_created = 1;
2073 >  }
2074  
2075 <                item->target_string = olditem->target_string;
1981 <                item->target_string_created = 0;
1982 <        }
1983 <        else
1984 <        {
1985 <           item->vhost = xstrdup("0.0.0.0");
1986 <      item->fd = 512;
1987 <      item->target_ip = xstrdup("127.0.0.1");
1988 <      item->target_port = 6667;
1989 <      item->timeout = 30;
1990 <      item->max_read = 4096;
1991 <                
1992 <                item->target_string = list_create();
1993 <                item->target_string_created = 1;
1994 <        }
1995 <        
1996 <   item->protocols = list_create();
2075 >  item->protocols = list_create();
2076  
2077 <   node = node_create(item);
2077 >  node = node_create(item);
2078  
2079 <   list_add(ScannerItemList, node);
2080 <   tmp = item;
2079 >  list_add(ScannerItemList, node);
2080 >  tmp = item;
2081   }
2082 < #line 2004 "config-parser.c" /* yacc.c:1646  */
2082 > #line 2083 "config-parser.c" /* yacc.c:1646  */
2083      break;
2084  
2085 <  case 110:
2086 < #line 455 "config-parser.y" /* yacc.c:1646  */
2085 >  case 120:
2086 > #line 487 "config-parser.y" /* yacc.c:1646  */
2087      {
2088 <   struct ScannerConf *item = tmp;
2089 <   xfree(item->name);
2090 <   item->name = xstrdup((yyvsp[-1].string));
2088 >  struct ScannerConf *item = tmp;
2089 >
2090 >  xfree(item->name);
2091 >  item->name = xstrdup((yyvsp[-1].string));
2092   }
2093 < #line 2014 "config-parser.c" /* yacc.c:1646  */
2093 > #line 2094 "config-parser.c" /* yacc.c:1646  */
2094      break;
2095  
2096 <  case 111:
2097 < #line 462 "config-parser.y" /* yacc.c:1646  */
2096 >  case 121:
2097 > #line 495 "config-parser.y" /* yacc.c:1646  */
2098      {
2099 <   struct ScannerConf *item = tmp;
2100 <   xfree(item->vhost);
2101 <   item->vhost = xstrdup((yyvsp[-1].string));
2099 >  struct ScannerConf *item = tmp;
2100 >
2101 >  xfree(item->vhost);
2102 >  item->vhost = xstrdup((yyvsp[-1].string));
2103   }
2104 < #line 2024 "config-parser.c" /* yacc.c:1646  */
2104 > #line 2105 "config-parser.c" /* yacc.c:1646  */
2105      break;
2106  
2107 <  case 112:
2108 < #line 469 "config-parser.y" /* yacc.c:1646  */
2107 >  case 122:
2108 > #line 503 "config-parser.y" /* yacc.c:1646  */
2109      {
2110 <   struct ScannerConf *item = tmp;
2111 <   xfree(item->target_ip);
2112 <   item->target_ip = xstrdup((yyvsp[-1].string));
2110 >  struct ScannerConf *item = tmp;
2111 >
2112 >  xfree(item->target_ip);
2113 >  item->target_ip = xstrdup((yyvsp[-1].string));
2114   }
2115 < #line 2034 "config-parser.c" /* yacc.c:1646  */
2115 > #line 2116 "config-parser.c" /* yacc.c:1646  */
2116      break;
2117  
2118 <  case 113:
2119 < #line 476 "config-parser.y" /* yacc.c:1646  */
2118 >  case 123:
2119 > #line 511 "config-parser.y" /* yacc.c:1646  */
2120      {
2121 <   struct ScannerConf *item = tmp;
2121 >  struct ScannerConf *item = tmp;
2122 >  node_t *node;
2123  
2124 <   node_t *node;
2042 <   node = node_create((yyvsp[-1].string));
2124 >  node = node_create(xstrdup((yyvsp[-1].string)));
2125  
2126 <        if(item->target_string_created == 0)
2127 <        {
2128 <           item->target_string = list_create();
2129 <                item->target_string_created = 1;
2130 <        }
2126 >  if (item->target_string_created == 0)
2127 >  {
2128 >    item->target_string = list_create();
2129 >    item->target_string_created = 1;
2130 >  }
2131  
2132 <   list_add(item->target_string, node);
2132 >  list_add(item->target_string, node);
2133   }
2134 < #line 2053 "config-parser.c" /* yacc.c:1646  */
2134 > #line 2135 "config-parser.c" /* yacc.c:1646  */
2135      break;
2136  
2137 <  case 114:
2138 < #line 492 "config-parser.y" /* yacc.c:1646  */
2137 >  case 124:
2138 > #line 527 "config-parser.y" /* yacc.c:1646  */
2139      {
2140 <   struct ScannerConf *item = tmp;
2141 <   item->fd = (yyvsp[-1].number);
2140 >  struct ScannerConf *item = tmp;
2141 >
2142 >  item->fd = (yyvsp[-1].number);
2143   }
2144 < #line 2062 "config-parser.c" /* yacc.c:1646  */
2144 > #line 2145 "config-parser.c" /* yacc.c:1646  */
2145      break;
2146  
2147 <  case 115:
2148 < #line 498 "config-parser.y" /* yacc.c:1646  */
2147 >  case 125:
2148 > #line 534 "config-parser.y" /* yacc.c:1646  */
2149      {
2150 <   struct ScannerConf *item = tmp;
2151 <   item->target_port = (yyvsp[-1].number);
2150 >  struct ScannerConf *item = tmp;
2151 >
2152 >  item->target_port = (yyvsp[-1].number);
2153   }
2154 < #line 2071 "config-parser.c" /* yacc.c:1646  */
2154 > #line 2155 "config-parser.c" /* yacc.c:1646  */
2155      break;
2156  
2157 <  case 116:
2158 < #line 504 "config-parser.y" /* yacc.c:1646  */
2157 >  case 126:
2158 > #line 541 "config-parser.y" /* yacc.c:1646  */
2159      {
2160 <   struct ScannerConf *item = tmp;
2161 <   item->timeout = (yyvsp[-1].number);
2160 >  struct ScannerConf *item = tmp;
2161 >
2162 >  item->timeout = (yyvsp[-1].number);
2163   }
2164 < #line 2080 "config-parser.c" /* yacc.c:1646  */
2164 > #line 2165 "config-parser.c" /* yacc.c:1646  */
2165      break;
2166  
2167 <  case 117:
2168 < #line 510 "config-parser.y" /* yacc.c:1646  */
2167 >  case 127:
2168 > #line 548 "config-parser.y" /* yacc.c:1646  */
2169      {
2170 <   struct ScannerConf *item = tmp;
2171 <   item->max_read = (yyvsp[-1].number);
2170 >  struct ScannerConf *item = tmp;
2171 >
2172 >  item->max_read = (yyvsp[-1].number);
2173   }
2174 < #line 2089 "config-parser.c" /* yacc.c:1646  */
2174 > #line 2175 "config-parser.c" /* yacc.c:1646  */
2175      break;
2176  
2177 <  case 118:
2178 < #line 516 "config-parser.y" /* yacc.c:1646  */
2177 >  case 128:
2178 > #line 555 "config-parser.y" /* yacc.c:1646  */
2179      {
2180 <   struct ProtocolConf *item;
2181 <   struct ScannerConf  *item2;
2180 >  struct ProtocolConf *item;
2181 >  struct ScannerConf *item2;
2182 >  node_t *node;
2183  
2184 <   node_t *node;
2185 <
2186 <   item = xcalloc(sizeof *item);
2100 <   item->type = (yyvsp[-3].number);
2101 <   item->port = (yyvsp[-1].number);
2184 >  item = xcalloc(sizeof(*item));
2185 >  item->type = (yyvsp[-3].number);
2186 >  item->port = (yyvsp[-1].number);
2187  
2188 <   item2 = tmp;
2188 >  item2 = tmp;
2189  
2190 <   node = node_create(item);
2191 <   list_add(item2->protocols, node);
2190 >  node = node_create(item);
2191 >  list_add(item2->protocols, node);
2192   }
2193 < #line 2109 "config-parser.c" /* yacc.c:1646  */
2193 > #line 2194 "config-parser.c" /* yacc.c:1646  */
2194      break;
2195  
2196 <  case 127:
2197 < #line 546 "config-parser.y" /* yacc.c:1646  */
2196 >  case 137:
2197 > #line 584 "config-parser.y" /* yacc.c:1646  */
2198      {
2199 <   xfree(OpmItem->dnsbl_from);
2200 <   OpmItem->dnsbl_from = xstrdup((yyvsp[-1].string));
2199 >  xfree(OpmItem->dnsbl_from);
2200 >  OpmItem->dnsbl_from = xstrdup((yyvsp[-1].string));
2201   }
2202 < #line 2118 "config-parser.c" /* yacc.c:1646  */
2202 > #line 2203 "config-parser.c" /* yacc.c:1646  */
2203      break;
2204  
2205 <  case 128:
2206 < #line 552 "config-parser.y" /* yacc.c:1646  */
2205 >  case 138:
2206 > #line 590 "config-parser.y" /* yacc.c:1646  */
2207      {
2208 <   xfree(OpmItem->dnsbl_to);
2209 <   OpmItem->dnsbl_to = xstrdup((yyvsp[-1].string));
2208 >  xfree(OpmItem->dnsbl_to);
2209 >  OpmItem->dnsbl_to = xstrdup((yyvsp[-1].string));
2210   }
2211 < #line 2127 "config-parser.c" /* yacc.c:1646  */
2211 > #line 2212 "config-parser.c" /* yacc.c:1646  */
2212      break;
2213  
2214 <  case 129:
2215 < #line 558 "config-parser.y" /* yacc.c:1646  */
2214 >  case 139:
2215 > #line 596 "config-parser.y" /* yacc.c:1646  */
2216      {
2217 <   xfree(OpmItem->sendmail);
2218 <   OpmItem->sendmail = xstrdup((yyvsp[-1].string));
2217 >  xfree(OpmItem->sendmail);
2218 >  OpmItem->sendmail = xstrdup((yyvsp[-1].string));
2219   }
2220 < #line 2136 "config-parser.c" /* yacc.c:1646  */
2220 > #line 2221 "config-parser.c" /* yacc.c:1646  */
2221      break;
2222  
2223 <  case 130:
2224 < #line 566 "config-parser.y" /* yacc.c:1646  */
2223 >  case 140:
2224 > #line 604 "config-parser.y" /* yacc.c:1646  */
2225      {
2226 <   node_t *node;
2227 <   struct BlacklistConf *item;
2226 >  node_t *node;
2227 >  struct BlacklistConf *item;
2228 >
2229 >  item = xcalloc(sizeof(*item));
2230 >  item->name = xstrdup("");
2231 >  item->kline = xstrdup("");
2232 >  item->ipv4 = 1;
2233 >  item->ban_unknown = 0;
2234 >  item->type = A_BITMASK;
2235 >  item->reply = list_create();
2236  
2237 <   item = xcalloc(sizeof *item);
2237 >  node = node_create(item);
2238 >  list_add(OpmItem->blacklists, node);
2239  
2240 <   item->name = xstrdup("");
2241 <   item->kline = xstrdup("");
2242 <   item->ban_unknown = 0;
2243 <   item->type = A_BITMASK;
2150 <   item->reply = list_create();
2240 >  tmp = item;
2241 > }
2242 > #line 2243 "config-parser.c" /* yacc.c:1646  */
2243 >    break;
2244  
2245 <   node = node_create(item);
2246 <   list_add(OpmItem->blacklists, node);
2245 >  case 151:
2246 > #line 635 "config-parser.y" /* yacc.c:1646  */
2247 >    {
2248 >  struct BlacklistConf *item = tmp;
2249  
2250 <   tmp = item;
2250 >  xfree(item->name);
2251 >  item->name = xstrdup((yyvsp[-1].string));
2252   }
2253 < #line 2158 "config-parser.c" /* yacc.c:1646  */
2253 > #line 2254 "config-parser.c" /* yacc.c:1646  */
2254      break;
2255  
2256 <  case 140:
2257 < #line 595 "config-parser.y" /* yacc.c:1646  */
2256 >  case 152:
2257 > #line 643 "config-parser.y" /* yacc.c:1646  */
2258      {
2259 <   struct BlacklistConf *item = tmp;
2259 >  struct BlacklistConf *item = tmp;
2260  
2261 <   xfree(item->name);
2262 <   item->name = xstrdup((yyvsp[-1].string));
2261 >  item->ipv4 = 0;
2262 >  item->ipv6 = 0;
2263   }
2264 < #line 2169 "config-parser.c" /* yacc.c:1646  */
2264 > #line 2265 "config-parser.c" /* yacc.c:1646  */
2265      break;
2266  
2267 <  case 141:
2268 < #line 602 "config-parser.y" /* yacc.c:1646  */
2267 >  case 156:
2268 > #line 652 "config-parser.y" /* yacc.c:1646  */
2269      {
2270 <   struct BlacklistConf *item = tmp;
2270 >  struct BlacklistConf *item = tmp;
2271  
2272 <   xfree(item->kline);
2177 <   item->kline = xstrdup((yyvsp[-1].string));
2272 >  item->ipv4 = 1;
2273   }
2274 < #line 2180 "config-parser.c" /* yacc.c:1646  */
2274 > #line 2275 "config-parser.c" /* yacc.c:1646  */
2275      break;
2276  
2277 <  case 142:
2278 < #line 609 "config-parser.y" /* yacc.c:1646  */
2277 >  case 157:
2278 > #line 657 "config-parser.y" /* yacc.c:1646  */
2279      {
2280 <   struct BlacklistConf *item = tmp;
2281 <  
2282 <   if(strcmp("A record bitmask", (yyvsp[-1].string)) == 0)
2188 <      item->type = A_BITMASK;
2189 <   else if(strcmp("A record reply", (yyvsp[-1].string)) == 0)
2190 <      item->type = A_REPLY;
2191 <   else
2192 <      yyerror("Unknown blacklist type defined");
2280 >  struct BlacklistConf *item = tmp;
2281 >
2282 >  item->ipv6 = 1;
2283   }
2284 < #line 2195 "config-parser.c" /* yacc.c:1646  */
2284 > #line 2285 "config-parser.c" /* yacc.c:1646  */
2285      break;
2286  
2287 <  case 143:
2288 < #line 620 "config-parser.y" /* yacc.c:1646  */
2287 >  case 158:
2288 > #line 664 "config-parser.y" /* yacc.c:1646  */
2289      {
2290 <   struct BlacklistConf *item = tmp;
2290 >  struct BlacklistConf *item = tmp;
2291  
2292 <   item->ban_unknown = (yyvsp[-1].number);
2292 >  xfree(item->kline);
2293 >  item->kline = xstrdup((yyvsp[-1].string));
2294   }
2295 < #line 2205 "config-parser.c" /* yacc.c:1646  */
2295 > #line 2296 "config-parser.c" /* yacc.c:1646  */
2296      break;
2297  
2298 <  case 147:
2299 < #line 632 "config-parser.y" /* yacc.c:1646  */
2298 >  case 159:
2299 > #line 672 "config-parser.y" /* yacc.c:1646  */
2300      {
2301 <   struct BlacklistReplyConf *item;
2211 <   struct BlacklistConf *blacklist = tmp;
2212 <   node_t *node;
2301 >  struct BlacklistConf *item = tmp;
2302  
2303 <   item = xcalloc(sizeof *item);
2303 >  if (strcmp("A record bitmask", (yyvsp[-1].string)) == 0)
2304 >    item->type = A_BITMASK;
2305 >  else if (strcmp("A record reply", (yyvsp[-1].string)) == 0)
2306 >    item->type = A_REPLY;
2307 >  else
2308 >    yyerror("Unknown blacklist type defined");
2309 > }
2310 > #line 2311 "config-parser.c" /* yacc.c:1646  */
2311 >    break;
2312 >
2313 >  case 160:
2314 > #line 684 "config-parser.y" /* yacc.c:1646  */
2315 >    {
2316 >  struct BlacklistConf *item = tmp;
2317 >
2318 >  item->ban_unknown = (yyvsp[-1].number);
2319 > }
2320 > #line 2321 "config-parser.c" /* yacc.c:1646  */
2321 >    break;
2322 >
2323 >  case 164:
2324 > #line 696 "config-parser.y" /* yacc.c:1646  */
2325 >    {
2326 >  struct BlacklistReplyConf *item;
2327 >  struct BlacklistConf *blacklist = tmp;
2328 >  node_t *node;
2329  
2330 <   item->number = (yyvsp[-3].number);
2331 <   item->type = xstrdup((yyvsp[-1].string));
2330 >  item = xcalloc(sizeof(*item));
2331 >  item->number = (yyvsp[-3].number);
2332 >  item->type = xstrdup((yyvsp[-1].string));
2333  
2334 <   node = node_create(item);
2335 <   list_add(blacklist->reply, node);
2334 >  node = node_create(item);
2335 >  list_add(blacklist->reply, node);
2336   }
2337 < #line 2223 "config-parser.c" /* yacc.c:1646  */
2337 > #line 2338 "config-parser.c" /* yacc.c:1646  */
2338      break;
2339  
2340 <  case 153:
2341 < #line 658 "config-parser.y" /* yacc.c:1646  */
2340 >  case 170:
2341 > #line 720 "config-parser.y" /* yacc.c:1646  */
2342      {
2343 <   node_t *node;
2344 <   node = node_create(xstrdup((yyvsp[-1].string)));
2343 >  node_t *node;
2344 >  node = node_create(xstrdup((yyvsp[-1].string)));
2345  
2346 <   list_add(ExemptItem->masks, node);
2346 >  list_add(ExemptItem->masks, node);
2347   }
2348 < #line 2234 "config-parser.c" /* yacc.c:1646  */
2348 > #line 2349 "config-parser.c" /* yacc.c:1646  */
2349      break;
2350  
2351  
2352 < #line 2238 "config-parser.c" /* yacc.c:1646  */
2352 > #line 2353 "config-parser.c" /* yacc.c:1646  */
2353        default: break;
2354      }
2355    /* User semantic actions sometimes alter yychar, and that requires
# Line 2462 | Line 2577 | yyreturn:
2577   #endif
2578    return yyresult;
2579   }
2580 < #line 665 "config-parser.y" /* yacc.c:1906  */
2580 > #line 727 "config-parser.y" /* yacc.c:1906  */
2581  

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)