ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/hopm/trunk/src/config-parser.c
Revision: 5052
Committed: Mon Dec 22 11:56:03 2014 UTC (10 years, 8 months ago) by michael
Content type: text/x-csrc
File size: 71899 byte(s)
Log Message:
- Initial import of bopm 3.1.3

File Contents

# User Rev Content
1 michael 5052 /* A Bison parser, made by GNU Bison 2.3. */
2    
3     /* Skeleton implementation for Bison's Yacc-like parsers in C
4    
5     Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
6     Free Software Foundation, Inc.
7    
8     This program is free software; you can redistribute it and/or modify
9     it under the terms of the GNU General Public License as published by
10     the Free Software Foundation; either version 2, or (at your option)
11     any later version.
12    
13     This program is distributed in the hope that it will be useful,
14     but WITHOUT ANY WARRANTY; without even the implied warranty of
15     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16     GNU General Public License for more details.
17    
18     You should have received a copy of the GNU General Public License
19     along with this program; if not, write to the Free Software
20     Foundation, Inc., 51 Franklin Street, Fifth Floor,
21     Boston, MA 02110-1301, USA. */
22    
23     /* As a special exception, you may create a larger work that contains
24     part or all of the Bison parser skeleton and distribute that work
25     under terms of your choice, so long as that work isn't itself a
26     parser generator using the skeleton or a modified version thereof
27     as a parser skeleton. Alternatively, if you modify or redistribute
28     the parser skeleton itself, you may (at your option) remove this
29     special exception, which will cause the skeleton and the resulting
30     Bison output files to be licensed under the GNU General Public
31     License without this special exception.
32    
33     This special exception was added by the Free Software Foundation in
34     version 2.2 of Bison. */
35    
36     /* C LALR(1) parser skeleton written by Richard Stallman, by
37     simplifying the original so-called "semantic" parser. */
38    
39     /* All symbols defined below should begin with yy or YY, to avoid
40     infringing on user name space. This should be done even for local
41     variables, as they might otherwise be expanded by user macros.
42     There are some unavoidable exceptions within include files to
43     define necessary library symbols; they are noted "INFRINGES ON
44     USER NAME SPACE" below. */
45    
46     /* Identify Bison output. */
47     #define YYBISON 1
48    
49     /* Bison version. */
50     #define YYBISON_VERSION "2.3"
51    
52     /* Skeleton name. */
53     #define YYSKELETON_NAME "yacc.c"
54    
55     /* Pure parsers. */
56     #define YYPURE 0
57    
58     /* Using locations. */
59     #define YYLSP_NEEDED 0
60    
61    
62    
63     /* Tokens. */
64     #ifndef YYTOKENTYPE
65     # define YYTOKENTYPE
66     /* Put the tokens into the symbol table, so that GDB and other debuggers
67     know about them. */
68     enum yytokentype {
69     AWAY = 258,
70     BAN_UNKNOWN = 259,
71     BLACKLIST = 260,
72     CHANNEL = 261,
73     CONNREGEX = 262,
74     DNS_FDLIMIT = 263,
75     DNSBL_FROM = 264,
76     DNSBL_TO = 265,
77     EXEMPT = 266,
78     FD = 267,
79     INVITE = 268,
80     IRC = 269,
81     KLINE = 270,
82     KEY = 271,
83     MASK = 272,
84     MAX_READ = 273,
85     MODE = 274,
86     NAME = 275,
87     NEGCACHE = 276,
88     NICK = 277,
89     NICKSERV = 278,
90     OPER = 279,
91     OPM = 280,
92     OPTIONS = 281,
93     PASSWORD = 282,
94     PERFORM = 283,
95     PIDFILE = 284,
96     PORT = 285,
97     PROTOCOL = 286,
98     PROTOCOLTYPE = 287,
99     REALNAME = 288,
100     REPLY = 289,
101     SCANLOG = 290,
102     SCANNER = 291,
103     SENDMAIL = 292,
104     SERVER = 293,
105     TARGET_IP = 294,
106     TARGET_PORT = 295,
107     TARGET_STRING = 296,
108     TIMEOUT = 297,
109     TYPE = 298,
110     USERNAME = 299,
111     USER = 300,
112     VHOST = 301,
113     NUMBER = 302,
114     STRING = 303
115     };
116     #endif
117     /* Tokens. */
118     #define AWAY 258
119     #define BAN_UNKNOWN 259
120     #define BLACKLIST 260
121     #define CHANNEL 261
122     #define CONNREGEX 262
123     #define DNS_FDLIMIT 263
124     #define DNSBL_FROM 264
125     #define DNSBL_TO 265
126     #define EXEMPT 266
127     #define FD 267
128     #define INVITE 268
129     #define IRC 269
130     #define KLINE 270
131     #define KEY 271
132     #define MASK 272
133     #define MAX_READ 273
134     #define MODE 274
135     #define NAME 275
136     #define NEGCACHE 276
137     #define NICK 277
138     #define NICKSERV 278
139     #define OPER 279
140     #define OPM 280
141     #define OPTIONS 281
142     #define PASSWORD 282
143     #define PERFORM 283
144     #define PIDFILE 284
145     #define PORT 285
146     #define PROTOCOL 286
147     #define PROTOCOLTYPE 287
148     #define REALNAME 288
149     #define REPLY 289
150     #define SCANLOG 290
151     #define SCANNER 291
152     #define SENDMAIL 292
153     #define SERVER 293
154     #define TARGET_IP 294
155     #define TARGET_PORT 295
156     #define TARGET_STRING 296
157     #define TIMEOUT 297
158     #define TYPE 298
159     #define USERNAME 299
160     #define USER 300
161     #define VHOST 301
162     #define NUMBER 302
163     #define STRING 303
164    
165    
166    
167    
168     /* Copy the first part of user declarations. */
169     #line 25 "config-parser.y"
170    
171     #include <stdio.h>
172     #include <string.h>
173     #include "malloc.h"
174     #include "config.h"
175    
176     int yydebug=0;
177     void *tmp; /* Variable to temporarily hold nodes before insertion to list */
178    
179    
180    
181     /* Enabling traces. */
182     #ifndef YYDEBUG
183     # define YYDEBUG 0
184     #endif
185    
186     /* Enabling verbose error messages. */
187     #ifdef YYERROR_VERBOSE
188     # undef YYERROR_VERBOSE
189     # define YYERROR_VERBOSE 1
190     #else
191     # define YYERROR_VERBOSE 0
192     #endif
193    
194     /* Enabling the token table. */
195     #ifndef YYTOKEN_TABLE
196     # define YYTOKEN_TABLE 0
197     #endif
198    
199     #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
200     typedef union YYSTYPE
201     #line 82 "config-parser.y"
202     {
203     int number;
204     char *string;
205     }
206     /* Line 193 of yacc.c. */
207     #line 208 "config-parser.c"
208     YYSTYPE;
209     # define yystype YYSTYPE /* obsolescent; will be withdrawn */
210     # define YYSTYPE_IS_DECLARED 1
211     # define YYSTYPE_IS_TRIVIAL 1
212     #endif
213    
214    
215    
216     /* Copy the second part of user declarations. */
217    
218    
219     /* Line 216 of yacc.c. */
220     #line 221 "config-parser.c"
221    
222     #ifdef short
223     # undef short
224     #endif
225    
226     #ifdef YYTYPE_UINT8
227     typedef YYTYPE_UINT8 yytype_uint8;
228     #else
229     typedef unsigned char yytype_uint8;
230     #endif
231    
232     #ifdef YYTYPE_INT8
233     typedef YYTYPE_INT8 yytype_int8;
234     #elif (defined __STDC__ || defined __C99__FUNC__ \
235     || defined __cplusplus || defined _MSC_VER)
236     typedef signed char yytype_int8;
237     #else
238     typedef short int yytype_int8;
239     #endif
240    
241     #ifdef YYTYPE_UINT16
242     typedef YYTYPE_UINT16 yytype_uint16;
243     #else
244     typedef unsigned short int yytype_uint16;
245     #endif
246    
247     #ifdef YYTYPE_INT16
248     typedef YYTYPE_INT16 yytype_int16;
249     #else
250     typedef short int yytype_int16;
251     #endif
252    
253     #ifndef YYSIZE_T
254     # ifdef __SIZE_TYPE__
255     # define YYSIZE_T __SIZE_TYPE__
256     # elif defined size_t
257     # define YYSIZE_T size_t
258     # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
259     || defined __cplusplus || defined _MSC_VER)
260     # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
261     # define YYSIZE_T size_t
262     # else
263     # define YYSIZE_T unsigned int
264     # endif
265     #endif
266    
267     #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
268    
269     #ifndef YY_
270     # if YYENABLE_NLS
271     # if ENABLE_NLS
272     # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
273     # define YY_(msgid) dgettext ("bison-runtime", msgid)
274     # endif
275     # endif
276     # ifndef YY_
277     # define YY_(msgid) msgid
278     # endif
279     #endif
280    
281     /* Suppress unused-variable warnings by "using" E. */
282     #if ! defined lint || defined __GNUC__
283     # define YYUSE(e) ((void) (e))
284     #else
285     # define YYUSE(e) /* empty */
286     #endif
287    
288     /* Identity function, used to suppress warnings about constant conditions. */
289     #ifndef lint
290     # define YYID(n) (n)
291     #else
292     #if (defined __STDC__ || defined __C99__FUNC__ \
293     || defined __cplusplus || defined _MSC_VER)
294     static int
295     YYID (int i)
296     #else
297     static int
298     YYID (i)
299     int i;
300     #endif
301     {
302     return i;
303     }
304     #endif
305    
306     #if ! defined yyoverflow || YYERROR_VERBOSE
307    
308     /* The parser invokes alloca or malloc; define the necessary symbols. */
309    
310     # ifdef YYSTACK_USE_ALLOCA
311     # if YYSTACK_USE_ALLOCA
312     # ifdef __GNUC__
313     # define YYSTACK_ALLOC __builtin_alloca
314     # elif defined __BUILTIN_VA_ARG_INCR
315     # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
316     # elif defined _AIX
317     # define YYSTACK_ALLOC __alloca
318     # elif defined _MSC_VER
319     # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
320     # define alloca _alloca
321     # else
322     # define YYSTACK_ALLOC alloca
323     # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
324     || defined __cplusplus || defined _MSC_VER)
325     # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
326     # ifndef _STDLIB_H
327     # define _STDLIB_H 1
328     # endif
329     # endif
330     # endif
331     # endif
332     # endif
333    
334     # ifdef YYSTACK_ALLOC
335     /* Pacify GCC's `empty if-body' warning. */
336     # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
337     # ifndef YYSTACK_ALLOC_MAXIMUM
338     /* The OS might guarantee only one guard page at the bottom of the stack,
339     and a page size can be as small as 4096 bytes. So we cannot safely
340     invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
341     to allow for a few compiler-allocated temporary stack slots. */
342     # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
343     # endif
344     # else
345     # define YYSTACK_ALLOC YYMALLOC
346     # define YYSTACK_FREE YYFREE
347     # ifndef YYSTACK_ALLOC_MAXIMUM
348     # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
349     # endif
350     # if (defined __cplusplus && ! defined _STDLIB_H \
351     && ! ((defined YYMALLOC || defined malloc) \
352     && (defined YYFREE || defined free)))
353     # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
354     # ifndef _STDLIB_H
355     # define _STDLIB_H 1
356     # endif
357     # endif
358     # ifndef YYMALLOC
359     # define YYMALLOC malloc
360     # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
361     || defined __cplusplus || defined _MSC_VER)
362     void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
363     # endif
364     # endif
365     # ifndef YYFREE
366     # define YYFREE free
367     # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
368     || defined __cplusplus || defined _MSC_VER)
369     void free (void *); /* INFRINGES ON USER NAME SPACE */
370     # endif
371     # endif
372     # endif
373     #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
374    
375    
376     #if (! defined yyoverflow \
377     && (! defined __cplusplus \
378     || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
379    
380     /* A type that is properly aligned for any stack member. */
381     union yyalloc
382     {
383     yytype_int16 yyss;
384     YYSTYPE yyvs;
385     };
386    
387     /* The size of the maximum gap between one aligned stack and the next. */
388     # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
389    
390     /* The size of an array large to enough to hold all stacks, each with
391     N elements. */
392     # define YYSTACK_BYTES(N) \
393     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
394     + YYSTACK_GAP_MAXIMUM)
395    
396     /* Copy COUNT objects from FROM to TO. The source and destination do
397     not overlap. */
398     # ifndef YYCOPY
399     # if defined __GNUC__ && 1 < __GNUC__
400     # define YYCOPY(To, From, Count) \
401     __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
402     # else
403     # define YYCOPY(To, From, Count) \
404     do \
405     { \
406     YYSIZE_T yyi; \
407     for (yyi = 0; yyi < (Count); yyi++) \
408     (To)[yyi] = (From)[yyi]; \
409     } \
410     while (YYID (0))
411     # endif
412     # endif
413    
414     /* Relocate STACK from its old location to the new one. The
415     local variables YYSIZE and YYSTACKSIZE give the old and new number of
416     elements in the stack, and YYPTR gives the new location of the
417     stack. Advance YYPTR to a properly aligned location for the next
418     stack. */
419     # define YYSTACK_RELOCATE(Stack) \
420     do \
421     { \
422     YYSIZE_T yynewbytes; \
423     YYCOPY (&yyptr->Stack, Stack, yysize); \
424     Stack = &yyptr->Stack; \
425     yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
426     yyptr += yynewbytes / sizeof (*yyptr); \
427     } \
428     while (YYID (0))
429    
430     #endif
431    
432     /* YYFINAL -- State number of the termination state. */
433     #define YYFINAL 2
434     /* YYLAST -- Last index in YYTABLE. */
435     #define YYLAST 281
436    
437     /* YYNTOKENS -- Number of terminals. */
438     #define YYNTOKENS 54
439     /* YYNNTS -- Number of nonterminals. */
440     #define YYNNTS 74
441     /* YYNRULES -- Number of rules. */
442     #define YYNRULES 136
443     /* YYNRULES -- Number of states. */
444     #define YYNSTATES 293
445    
446     /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
447     #define YYUNDEFTOK 2
448     #define YYMAXUTOK 303
449    
450     #define YYTRANSLATE(YYX) \
451     ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
452    
453     /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
454     static const yytype_uint8 yytranslate[] =
455     {
456     0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
457     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
458     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
459     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
460     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
461     2, 2, 2, 2, 2, 2, 2, 2, 53, 51,
462     2, 52, 2, 2, 2, 2, 2, 2, 2, 2,
463     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
464     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
465     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
466     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
467     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
468     2, 2, 2, 49, 2, 50, 2, 2, 2, 2,
469     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
470     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
471     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
472     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
473     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
474     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
475     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
476     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
477     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
478     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
479     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
480     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
481     2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
482     5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
483     15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
484     25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
485     35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
486     45, 46, 47, 48
487     };
488    
489     #if YYDEBUG
490     /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
491     YYRHS. */
492     static const yytype_uint16 yyprhs[] =
493     {
494     0, 0, 3, 4, 7, 9, 11, 13, 15, 17,
495     19, 25, 26, 29, 31, 33, 35, 37, 39, 41,
496     46, 51, 56, 61, 67, 70, 72, 74, 76, 78,
497     80, 82, 84, 86, 88, 90, 92, 94, 96, 98,
498     100, 102, 104, 109, 114, 119, 124, 129, 134, 139,
499     144, 149, 154, 159, 164, 169, 174, 175, 182, 185,
500     187, 189, 191, 193, 198, 203, 208, 209, 216, 219,
501     221, 223, 225, 227, 232, 237, 238, 245, 248, 250,
502     252, 254, 256, 258, 260, 262, 264, 266, 268, 270,
503     275, 280, 285, 290, 295, 300, 305, 310, 317, 323,
504     324, 327, 329, 331, 333, 335, 337, 339, 344, 349,
505     354, 355, 362, 363, 366, 368, 370, 372, 374, 376,
506     378, 380, 385, 390, 395, 400, 406, 407, 410, 412,
507     417, 423, 424, 427, 429, 431, 433
508     };
509    
510     /* YYRHS -- A `-1'-separated list of the rules' RHS. */
511     static const yytype_int8 yyrhs[] =
512     {
513     55, 0, -1, -1, 55, 56, -1, 64, -1, 57,
514     -1, 107, -1, 88, -1, 94, -1, 124, -1, 26,
515     49, 58, 50, 51, -1, -1, 58, 59, -1, 59,
516     -1, 60, -1, 61, -1, 62, -1, 63, -1, 1,
517     -1, 21, 52, 47, 51, -1, 29, 52, 48, 51,
518     -1, 8, 52, 47, 51, -1, 35, 52, 48, 51,
519     -1, 14, 49, 65, 50, 51, -1, 65, 66, -1,
520     66, -1, 67, -1, 80, -1, 68, -1, 70, -1,
521     71, -1, 69, -1, 72, -1, 73, -1, 75, -1,
522     76, -1, 77, -1, 78, -1, 79, -1, 74, -1,
523     81, -1, 1, -1, 3, 52, 48, 51, -1, 15,
524     52, 48, 51, -1, 19, 52, 48, 51, -1, 22,
525     52, 48, 51, -1, 23, 52, 48, 51, -1, 24,
526     52, 48, 51, -1, 27, 52, 48, 51, -1, 28,
527     52, 48, 51, -1, 30, 52, 47, 51, -1, 33,
528     52, 48, 51, -1, 38, 52, 48, 51, -1, 44,
529     52, 48, 51, -1, 46, 52, 48, 51, -1, 7,
530     52, 48, 51, -1, -1, 82, 6, 49, 83, 50,
531     51, -1, 83, 84, -1, 84, -1, 85, -1, 86,
532     -1, 87, -1, 20, 52, 48, 51, -1, 16, 52,
533     48, 51, -1, 13, 52, 48, 51, -1, -1, 89,
534     45, 49, 90, 50, 51, -1, 90, 91, -1, 91,
535     -1, 92, -1, 93, -1, 1, -1, 17, 52, 48,
536     51, -1, 36, 52, 48, 51, -1, -1, 95, 36,
537     49, 96, 50, 51, -1, 96, 97, -1, 97, -1,
538     98, -1, 99, -1, 102, -1, 100, -1, 103, -1,
539     101, -1, 106, -1, 104, -1, 105, -1, 1, -1,
540     20, 52, 48, 51, -1, 46, 52, 48, 51, -1,
541     39, 52, 48, 51, -1, 41, 52, 48, 51, -1,
542     12, 52, 47, 51, -1, 40, 52, 47, 51, -1,
543     42, 52, 47, 51, -1, 18, 52, 47, 51, -1,
544     31, 52, 32, 53, 47, 51, -1, 25, 49, 108,
545     50, 51, -1, -1, 108, 109, -1, 109, -1, 110,
546     -1, 111, -1, 112, -1, 113, -1, 1, -1, 9,
547     52, 48, 51, -1, 10, 52, 48, 51, -1, 37,
548     52, 48, 51, -1, -1, 114, 5, 49, 115, 50,
549     51, -1, -1, 115, 116, -1, 116, -1, 117, -1,
550     119, -1, 118, -1, 120, -1, 121, -1, 1, -1,
551     20, 52, 48, 51, -1, 15, 52, 48, 51, -1,
552     43, 52, 48, 51, -1, 4, 52, 47, 51, -1,
553     34, 49, 122, 50, 51, -1, -1, 122, 123, -1,
554     123, -1, 47, 52, 48, 51, -1, 11, 49, 125,
555     50, 51, -1, -1, 125, 126, -1, 126, -1, 127,
556     -1, 1, -1, 17, 52, 48, 51, -1
557     };
558    
559     /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
560     static const yytype_uint16 yyrline[] =
561     {
562     0, 93, 93, 94, 97, 98, 99, 100, 101, 102,
563     107, 109, 110, 111, 113, 114, 115, 116, 117, 119,
564     124, 130, 135, 143, 145, 146, 148, 149, 150, 151,
565     152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
566     162, 163, 165, 171, 177, 183, 189, 195, 201, 207,
567     215, 220, 226, 232, 238, 244, 254, 254, 271, 272,
568     274, 275, 276, 278, 286, 294, 305, 305, 321, 322,
569     324, 325, 326, 328, 338, 351, 351, 396, 397, 399,
570     400, 401, 402, 403, 404, 405, 406, 407, 408, 410,
571     417, 424, 431, 447, 453, 459, 465, 471, 490, 492,
572     493, 494, 496, 497, 498, 499, 500, 502, 508, 514,
573     523, 523, 542, 543, 544, 546, 547, 548, 549, 550,
574     551, 553, 560, 567, 578, 584, 586, 587, 588, 590,
575     608, 610, 611, 612, 614, 615, 617
576     };
577     #endif
578    
579     #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
580     /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
581     First, the terminals, then, starting at YYNTOKENS, nonterminals. */
582     static const char *const yytname[] =
583     {
584     "$end", "error", "$undefined", "AWAY", "BAN_UNKNOWN", "BLACKLIST",
585     "CHANNEL", "CONNREGEX", "DNS_FDLIMIT", "DNSBL_FROM", "DNSBL_TO",
586     "EXEMPT", "FD", "INVITE", "IRC", "KLINE", "KEY", "MASK", "MAX_READ",
587     "MODE", "NAME", "NEGCACHE", "NICK", "NICKSERV", "OPER", "OPM", "OPTIONS",
588     "PASSWORD", "PERFORM", "PIDFILE", "PORT", "PROTOCOL", "PROTOCOLTYPE",
589     "REALNAME", "REPLY", "SCANLOG", "SCANNER", "SENDMAIL", "SERVER",
590     "TARGET_IP", "TARGET_PORT", "TARGET_STRING", "TIMEOUT", "TYPE",
591     "USERNAME", "USER", "VHOST", "NUMBER", "STRING", "'{'", "'}'", "';'",
592     "'='", "':'", "$accept", "config", "config_items", "options_entry",
593     "options_items", "options_item", "options_negcache", "options_pidfile",
594     "options_dns_fdlimit", "options_scanlog", "irc_entry", "irc_items",
595     "irc_item", "irc_away", "irc_kline", "irc_mode", "irc_nick",
596     "irc_nickserv", "irc_oper", "irc_password", "irc_perform", "irc_port",
597     "irc_realname", "irc_server", "irc_username", "irc_vhost",
598     "irc_connregex", "channel_entry", "@1", "channel_items", "channel_item",
599     "channel_name", "channel_key", "channel_invite", "user_entry", "@2",
600     "user_items", "user_item", "user_mask", "user_scanner", "scanner_entry",
601     "@3", "scanner_items", "scanner_item", "scanner_name", "scanner_vhost",
602     "scanner_target_ip", "scanner_target_string", "scanner_fd",
603     "scanner_target_port", "scanner_timeout", "scanner_max_read",
604     "scanner_protocol", "opm_entry", "opm_items", "opm_item",
605     "opm_dnsbl_from", "opm_dnsbl_to", "opm_sendmail", "opm_blacklist_entry",
606     "@4", "blacklist_items", "blacklist_item", "blacklist_name",
607     "blacklist_kline", "blacklist_type", "blacklist_ban_unknown",
608     "blacklist_reply", "blacklist_reply_items", "blacklist_reply_item",
609     "exempt_entry", "exempt_items", "exempt_item", "exempt_mask", 0
610     };
611     #endif
612    
613     # ifdef YYPRINT
614     /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
615     token YYLEX-NUM. */
616     static const yytype_uint16 yytoknum[] =
617     {
618     0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
619     265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
620     275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
621     285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
622     295, 296, 297, 298, 299, 300, 301, 302, 303, 123,
623     125, 59, 61, 58
624     };
625     # endif
626    
627     /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
628     static const yytype_uint8 yyr1[] =
629     {
630     0, 54, 55, 55, 56, 56, 56, 56, 56, 56,
631     57, 58, 58, 58, 59, 59, 59, 59, 59, 60,
632     61, 62, 63, 64, 65, 65, 66, 66, 66, 66,
633     66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
634     66, 66, 67, 68, 69, 70, 71, 72, 73, 74,
635     75, 76, 77, 78, 79, 80, 82, 81, 83, 83,
636     84, 84, 84, 85, 86, 87, 89, 88, 90, 90,
637     91, 91, 91, 92, 93, 95, 94, 96, 96, 97,
638     97, 97, 97, 97, 97, 97, 97, 97, 97, 98,
639     99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
640     108, 108, 109, 109, 109, 109, 109, 110, 111, 112,
641     114, 113, 115, 115, 115, 116, 116, 116, 116, 116,
642     116, 117, 118, 119, 120, 121, 122, 122, 122, 123,
643     124, 125, 125, 125, 126, 126, 127
644     };
645    
646     /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
647     static const yytype_uint8 yyr2[] =
648     {
649     0, 2, 0, 2, 1, 1, 1, 1, 1, 1,
650     5, 0, 2, 1, 1, 1, 1, 1, 1, 4,
651     4, 4, 4, 5, 2, 1, 1, 1, 1, 1,
652     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
653     1, 1, 4, 4, 4, 4, 4, 4, 4, 4,
654     4, 4, 4, 4, 4, 4, 0, 6, 2, 1,
655     1, 1, 1, 4, 4, 4, 0, 6, 2, 1,
656     1, 1, 1, 4, 4, 0, 6, 2, 1, 1,
657     1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
658     4, 4, 4, 4, 4, 4, 4, 6, 5, 0,
659     2, 1, 1, 1, 1, 1, 1, 4, 4, 4,
660     0, 6, 0, 2, 1, 1, 1, 1, 1, 1,
661     1, 4, 4, 4, 4, 5, 0, 2, 1, 4,
662     5, 0, 2, 1, 1, 1, 4
663     };
664    
665     /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
666     STATE-NUM when YYTABLE doesn't specify something else to do. Zero
667     means the default is an error. */
668     static const yytype_uint8 yydefact[] =
669     {
670     2, 66, 1, 0, 0, 0, 0, 3, 5, 4,
671     7, 0, 8, 0, 6, 9, 0, 0, 0, 0,
672     0, 0, 135, 0, 0, 133, 134, 41, 0, 0,
673     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
674     0, 0, 0, 25, 26, 28, 31, 29, 30, 32,
675     33, 39, 34, 35, 36, 37, 38, 27, 40, 0,
676     106, 0, 0, 0, 0, 101, 102, 103, 104, 105,
677     0, 18, 0, 0, 0, 0, 0, 13, 14, 15,
678     16, 17, 0, 0, 0, 0, 132, 0, 0, 0,
679     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
680     0, 0, 24, 0, 0, 0, 0, 0, 100, 0,
681     0, 0, 0, 0, 0, 12, 72, 0, 0, 0,
682     69, 70, 71, 88, 0, 0, 0, 0, 0, 0,
683     0, 0, 0, 0, 78, 79, 80, 82, 84, 81,
684     83, 86, 87, 85, 0, 130, 0, 0, 0, 0,
685     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
686     23, 0, 0, 0, 0, 98, 0, 0, 0, 0,
687     0, 10, 0, 0, 0, 68, 0, 0, 0, 0,
688     0, 0, 0, 0, 0, 0, 77, 136, 42, 55,
689     43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
690     53, 54, 0, 0, 0, 0, 59, 60, 61, 62,
691     107, 108, 109, 120, 0, 0, 0, 0, 0, 0,
692     114, 115, 117, 116, 118, 119, 21, 19, 20, 22,
693     0, 0, 67, 0, 0, 0, 0, 0, 0, 0,
694     0, 0, 76, 0, 0, 0, 0, 58, 0, 0,
695     0, 126, 0, 0, 113, 73, 74, 93, 96, 89,
696     0, 91, 94, 92, 95, 90, 0, 0, 0, 57,
697     0, 0, 0, 0, 0, 128, 0, 111, 0, 65,
698     64, 63, 124, 122, 121, 0, 0, 127, 123, 97,
699     0, 125, 129
700     };
701    
702     /* YYDEFGOTO[NTERM-NUM]. */
703     static const yytype_int16 yydefgoto[] =
704     {
705     -1, 1, 7, 8, 76, 77, 78, 79, 80, 81,
706     9, 42, 43, 44, 45, 46, 47, 48, 49, 50,
707     51, 52, 53, 54, 55, 56, 57, 58, 59, 205,
708     206, 207, 208, 209, 10, 11, 119, 120, 121, 122,
709     12, 13, 133, 134, 135, 136, 137, 138, 139, 140,
710     141, 142, 143, 14, 64, 65, 66, 67, 68, 69,
711     70, 219, 220, 221, 222, 223, 224, 225, 274, 275,
712     15, 24, 25, 26
713     };
714    
715     /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
716     STATE-NUM. */
717     #define YYPACT_NINF -91
718     static const yytype_int16 yypact[] =
719     {
720     -91, 132, -91, -40, -39, -34, -30, -91, -91, -91,
721     -91, -14, -91, -3, -91, -91, 24, 107, 2, 59,
722     -7, -5, -91, -17, 29, -91, -91, -91, -4, 9,
723     11, 19, 30, 35, 38, 43, 44, 51, 53, 55,
724     63, 66, -1, -91, -91, -91, -91, -91, -91, -91,
725     -91, -91, -91, -91, -91, -91, -91, -91, -91, 69,
726     -91, 68, 71, 72, 67, -91, -91, -91, -91, -91,
727     86, -91, 76, 81, 87, 89, 77, -91, -91, -91,
728     -91, -91, 80, 124, 54, 60, -91, 73, 90, 99,
729     100, 101, 102, 104, 106, 108, 112, 113, 114, 119,
730     121, 109, -91, 52, 123, 125, 126, 127, -91, 70,
731     128, 129, 131, 133, 134, -91, -91, 120, 130, 23,
732     -91, -91, -91, -91, 135, 136, 137, 138, 139, 140,
733     141, 142, 143, 16, -91, -91, -91, -91, -91, -91,
734     -91, -91, -91, -91, 145, -91, 146, 147, 148, 149,
735     150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
736     -91, 0, 160, 161, 162, -91, 49, 163, 164, 165,
737     166, -91, 170, 171, 169, -91, 174, 175, 176, 191,
738     177, 179, 180, 182, 183, 181, -91, -91, -91, -91,
739     -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
740     -91, -91, 178, 184, 185, -12, -91, -91, -91, -91,
741     -91, -91, -91, -91, 186, 187, 188, 192, 190, 50,
742     -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
743     193, 194, -91, 195, 196, 197, 198, 199, 201, 202,
744     203, 204, -91, 208, 209, 210, 211, -91, 212, 213,
745     215, 217, 218, 214, -91, -91, -91, -91, -91, -91,
746     220, -91, -91, -91, -91, -91, 219, 221, 222, -91,
747     223, 224, 225, 216, 39, -91, 226, -91, 227, -91,
748     -91, -91, -91, -91, -91, 231, 229, -91, -91, -91,
749     230, -91, -91
750     };
751    
752     /* YYPGOTO[NTERM-NUM]. */
753     static const yytype_int16 yypgoto[] =
754     {
755     -91, -91, -91, -91, -91, 110, -91, -91, -91, -91,
756     -91, -91, 207, -91, -91, -91, -91, -91, -91, -91,
757     -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
758     -28, -91, -91, -91, -91, -91, -91, 61, -91, -91,
759     -91, -91, -91, 94, -91, -91, -91, -91, -91, -91,
760     -91, -91, -91, -91, -91, 205, -91, -91, -91, -91,
761     -91, -91, -36, -91, -91, -91, -91, -91, -91, -90,
762     -91, -91, 236, -91
763     };
764    
765     /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
766     positive, shift that token. If negative, reduce the rule which
767     number is the opposite. If zero, do what YYDEFACT says.
768     If YYTABLE_NINF, syntax error. */
769     #define YYTABLE_NINF -132
770     static const yytype_int16 yytable[] =
771     {
772     27, 202, 28, 60, 203, -56, 29, -99, 204, 16,
773     17, 61, 62, 202, 30, 18, 203, 123, 31, 19,
774     204, 32, 33, 34, 116, 22, 35, 36, 124, 37,
775     22, 20, 38, 21, 125, 84, 126, 39, 246, 63,
776     117, 23, 82, 40, 83, 41, 23, 127, 87, 101,
777     213, 213, -99, 214, 214, 128, 129, 130, 131, 118,
778     71, 88, 132, 89, 215, 215, 185, 72, 60, 216,
779     216, 90, -110, 174, -131, 103, 61, 62, 71, 85,
780     73, 116, 91, 217, 217, 72, 273, 92, 74, 286,
781     93, 109, 218, 218, 75, 94, 95, 117, 73, -112,
782     253, 161, 144, 96, 63, 97, 74, 98, 27, -11,
783     28, 145, 75, -56, 29, 99, 118, 107, 100, 166,
784     104, 146, 30, 105, 106, 123, 31, 114, 110, 32,
785     33, 34, 2, 111, 35, 36, 124, 37, 147, 112,
786     38, 113, 125, 3, 126, 39, 4, 148, 149, 150,
787     151, 40, 152, 41, 153, 127, 154, 5, 6, 155,
788     160, 156, 157, 128, 129, 130, 131, 158, -75, 159,
789     132, 162, 172, 163, 164, 167, 168, 247, 165, 169,
790     175, 170, 173, 254, 287, 171, 115, 176, 177, 178,
791     179, 180, 181, 182, 183, 184, 187, 188, 189, 190,
792     191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
793     201, 210, 211, 212, 226, 227, 228, 229, 230, 231,
794     232, 233, 234, 236, 235, 237, 238, 186, 239, 240,
795     243, 241, 242, 0, 0, 0, 244, 245, 248, 249,
796     250, 251, 252, 0, 255, 256, 257, 258, 259, 102,
797     261, 260, 262, 263, 264, 265, 266, 267, 268, 270,
798     86, 271, 269, 272, 273, 277, 276, 278, 285, 108,
799     279, 0, 280, 281, 282, 283, 284, 288, 289, 290,
800     291, 292
801     };
802    
803     static const yytype_int16 yycheck[] =
804     {
805     1, 13, 3, 1, 16, 6, 7, 5, 20, 49,
806     49, 9, 10, 13, 15, 49, 16, 1, 19, 49,
807     20, 22, 23, 24, 1, 1, 27, 28, 12, 30,
808     1, 45, 33, 36, 18, 52, 20, 38, 50, 37,
809     17, 17, 49, 44, 49, 46, 17, 31, 52, 50,
810     1, 1, 50, 4, 4, 39, 40, 41, 42, 36,
811     1, 52, 46, 52, 15, 15, 50, 8, 1, 20,
812     20, 52, 5, 50, 50, 6, 9, 10, 1, 50,
813     21, 1, 52, 34, 34, 8, 47, 52, 29, 50,
814     52, 5, 43, 43, 35, 52, 52, 17, 21, 50,
815     50, 49, 48, 52, 37, 52, 29, 52, 1, 50,
816     3, 51, 35, 6, 7, 52, 36, 50, 52, 49,
817     52, 48, 15, 52, 52, 1, 19, 50, 52, 22,
818     23, 24, 0, 52, 27, 28, 12, 30, 48, 52,
819     33, 52, 18, 11, 20, 38, 14, 48, 48, 48,
820     48, 44, 48, 46, 48, 31, 48, 25, 26, 47,
821     51, 48, 48, 39, 40, 41, 42, 48, 36, 48,
822     46, 48, 52, 48, 48, 47, 47, 205, 51, 48,
823     119, 48, 52, 219, 274, 51, 76, 52, 52, 52,
824     52, 52, 52, 52, 52, 52, 51, 51, 51, 51,
825     51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
826     51, 51, 51, 51, 51, 51, 51, 51, 48, 48,
827     51, 47, 47, 32, 48, 48, 47, 133, 48, 47,
828     52, 48, 51, -1, -1, -1, 52, 52, 52, 52,
829     52, 49, 52, -1, 51, 51, 51, 51, 51, 42,
830     51, 53, 51, 51, 51, 51, 48, 48, 48, 47,
831     24, 48, 51, 48, 47, 51, 48, 47, 52, 64,
832     51, -1, 51, 51, 51, 51, 51, 51, 51, 48,
833     51, 51
834     };
835    
836     /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
837     symbol of state STATE-NUM. */
838     static const yytype_uint8 yystos[] =
839     {
840     0, 55, 0, 11, 14, 25, 26, 56, 57, 64,
841     88, 89, 94, 95, 107, 124, 49, 49, 49, 49,
842     45, 36, 1, 17, 125, 126, 127, 1, 3, 7,
843     15, 19, 22, 23, 24, 27, 28, 30, 33, 38,
844     44, 46, 65, 66, 67, 68, 69, 70, 71, 72,
845     73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
846     1, 9, 10, 37, 108, 109, 110, 111, 112, 113,
847     114, 1, 8, 21, 29, 35, 58, 59, 60, 61,
848     62, 63, 49, 49, 52, 50, 126, 52, 52, 52,
849     52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
850     52, 50, 66, 6, 52, 52, 52, 50, 109, 5,
851     52, 52, 52, 52, 50, 59, 1, 17, 36, 90,
852     91, 92, 93, 1, 12, 18, 20, 31, 39, 40,
853     41, 42, 46, 96, 97, 98, 99, 100, 101, 102,
854     103, 104, 105, 106, 48, 51, 48, 48, 48, 48,
855     48, 48, 48, 48, 48, 47, 48, 48, 48, 48,
856     51, 49, 48, 48, 48, 51, 49, 47, 47, 48,
857     48, 51, 52, 52, 50, 91, 52, 52, 52, 52,
858     52, 52, 52, 52, 52, 50, 97, 51, 51, 51,
859     51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
860     51, 51, 13, 16, 20, 83, 84, 85, 86, 87,
861     51, 51, 51, 1, 4, 15, 20, 34, 43, 115,
862     116, 117, 118, 119, 120, 121, 51, 51, 51, 51,
863     48, 48, 51, 47, 47, 48, 32, 48, 47, 48,
864     47, 48, 51, 52, 52, 52, 50, 84, 52, 52,
865     52, 49, 52, 50, 116, 51, 51, 51, 51, 51,
866     53, 51, 51, 51, 51, 51, 48, 48, 48, 51,
867     47, 48, 48, 47, 122, 123, 48, 51, 47, 51,
868     51, 51, 51, 51, 51, 52, 50, 123, 51, 51,
869     48, 51, 51
870     };
871    
872     #define yyerrok (yyerrstatus = 0)
873     #define yyclearin (yychar = YYEMPTY)
874     #define YYEMPTY (-2)
875     #define YYEOF 0
876    
877     #define YYACCEPT goto yyacceptlab
878     #define YYABORT goto yyabortlab
879     #define YYERROR goto yyerrorlab
880    
881    
882     /* Like YYERROR except do call yyerror. This remains here temporarily
883     to ease the transition to the new meaning of YYERROR, for GCC.
884     Once GCC version 2 has supplanted version 1, this can go. */
885    
886     #define YYFAIL goto yyerrlab
887    
888     #define YYRECOVERING() (!!yyerrstatus)
889    
890     #define YYBACKUP(Token, Value) \
891     do \
892     if (yychar == YYEMPTY && yylen == 1) \
893     { \
894     yychar = (Token); \
895     yylval = (Value); \
896     yytoken = YYTRANSLATE (yychar); \
897     YYPOPSTACK (1); \
898     goto yybackup; \
899     } \
900     else \
901     { \
902     yyerror (YY_("syntax error: cannot back up")); \
903     YYERROR; \
904     } \
905     while (YYID (0))
906    
907    
908     #define YYTERROR 1
909     #define YYERRCODE 256
910    
911    
912     /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
913     If N is 0, then set CURRENT to the empty location which ends
914     the previous symbol: RHS[0] (always defined). */
915    
916     #define YYRHSLOC(Rhs, K) ((Rhs)[K])
917     #ifndef YYLLOC_DEFAULT
918     # define YYLLOC_DEFAULT(Current, Rhs, N) \
919     do \
920     if (YYID (N)) \
921     { \
922     (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
923     (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
924     (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
925     (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
926     } \
927     else \
928     { \
929     (Current).first_line = (Current).last_line = \
930     YYRHSLOC (Rhs, 0).last_line; \
931     (Current).first_column = (Current).last_column = \
932     YYRHSLOC (Rhs, 0).last_column; \
933     } \
934     while (YYID (0))
935     #endif
936    
937    
938     /* YY_LOCATION_PRINT -- Print the location on the stream.
939     This macro was not mandated originally: define only if we know
940     we won't break user code: when these are the locations we know. */
941    
942     #ifndef YY_LOCATION_PRINT
943     # if YYLTYPE_IS_TRIVIAL
944     # define YY_LOCATION_PRINT(File, Loc) \
945     fprintf (File, "%d.%d-%d.%d", \
946     (Loc).first_line, (Loc).first_column, \
947     (Loc).last_line, (Loc).last_column)
948     # else
949     # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
950     # endif
951     #endif
952    
953    
954     /* YYLEX -- calling `yylex' with the right arguments. */
955    
956     #ifdef YYLEX_PARAM
957     # define YYLEX yylex (YYLEX_PARAM)
958     #else
959     # define YYLEX yylex ()
960     #endif
961    
962     /* Enable debugging if requested. */
963     #if YYDEBUG
964    
965     # ifndef YYFPRINTF
966     # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
967     # define YYFPRINTF fprintf
968     # endif
969    
970     # define YYDPRINTF(Args) \
971     do { \
972     if (yydebug) \
973     YYFPRINTF Args; \
974     } while (YYID (0))
975    
976     # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
977     do { \
978     if (yydebug) \
979     { \
980     YYFPRINTF (stderr, "%s ", Title); \
981     yy_symbol_print (stderr, \
982     Type, Value); \
983     YYFPRINTF (stderr, "\n"); \
984     } \
985     } while (YYID (0))
986    
987    
988     /*--------------------------------.
989     | Print this symbol on YYOUTPUT. |
990     `--------------------------------*/
991    
992     /*ARGSUSED*/
993     #if (defined __STDC__ || defined __C99__FUNC__ \
994     || defined __cplusplus || defined _MSC_VER)
995     static void
996     yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
997     #else
998     static void
999     yy_symbol_value_print (yyoutput, yytype, yyvaluep)
1000     FILE *yyoutput;
1001     int yytype;
1002     YYSTYPE const * const yyvaluep;
1003     #endif
1004     {
1005     if (!yyvaluep)
1006     return;
1007     # ifdef YYPRINT
1008     if (yytype < YYNTOKENS)
1009     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1010     # else
1011     YYUSE (yyoutput);
1012     # endif
1013     switch (yytype)
1014     {
1015     default:
1016     break;
1017     }
1018     }
1019    
1020    
1021     /*--------------------------------.
1022     | Print this symbol on YYOUTPUT. |
1023     `--------------------------------*/
1024    
1025     #if (defined __STDC__ || defined __C99__FUNC__ \
1026     || defined __cplusplus || defined _MSC_VER)
1027     static void
1028     yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1029     #else
1030     static void
1031     yy_symbol_print (yyoutput, yytype, yyvaluep)
1032     FILE *yyoutput;
1033     int yytype;
1034     YYSTYPE const * const yyvaluep;
1035     #endif
1036     {
1037     if (yytype < YYNTOKENS)
1038     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1039     else
1040     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1041    
1042     yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1043     YYFPRINTF (yyoutput, ")");
1044     }
1045    
1046     /*------------------------------------------------------------------.
1047     | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1048     | TOP (included). |
1049     `------------------------------------------------------------------*/
1050    
1051     #if (defined __STDC__ || defined __C99__FUNC__ \
1052     || defined __cplusplus || defined _MSC_VER)
1053     static void
1054     yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
1055     #else
1056     static void
1057     yy_stack_print (bottom, top)
1058     yytype_int16 *bottom;
1059     yytype_int16 *top;
1060     #endif
1061     {
1062     YYFPRINTF (stderr, "Stack now");
1063     for (; bottom <= top; ++bottom)
1064     YYFPRINTF (stderr, " %d", *bottom);
1065     YYFPRINTF (stderr, "\n");
1066     }
1067    
1068     # define YY_STACK_PRINT(Bottom, Top) \
1069     do { \
1070     if (yydebug) \
1071     yy_stack_print ((Bottom), (Top)); \
1072     } while (YYID (0))
1073    
1074    
1075     /*------------------------------------------------.
1076     | Report that the YYRULE is going to be reduced. |
1077     `------------------------------------------------*/
1078    
1079     #if (defined __STDC__ || defined __C99__FUNC__ \
1080     || defined __cplusplus || defined _MSC_VER)
1081     static void
1082     yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
1083     #else
1084     static void
1085     yy_reduce_print (yyvsp, yyrule)
1086     YYSTYPE *yyvsp;
1087     int yyrule;
1088     #endif
1089     {
1090     int yynrhs = yyr2[yyrule];
1091     int yyi;
1092     unsigned long int yylno = yyrline[yyrule];
1093     YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1094     yyrule - 1, yylno);
1095     /* The symbols being reduced. */
1096     for (yyi = 0; yyi < yynrhs; yyi++)
1097     {
1098     fprintf (stderr, " $%d = ", yyi + 1);
1099     yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
1100     &(yyvsp[(yyi + 1) - (yynrhs)])
1101     );
1102     fprintf (stderr, "\n");
1103     }
1104     }
1105    
1106     # define YY_REDUCE_PRINT(Rule) \
1107     do { \
1108     if (yydebug) \
1109     yy_reduce_print (yyvsp, Rule); \
1110     } while (YYID (0))
1111    
1112     /* Nonzero means print parse trace. It is left uninitialized so that
1113     multiple parsers can coexist. */
1114     int yydebug;
1115     #else /* !YYDEBUG */
1116     # define YYDPRINTF(Args)
1117     # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1118     # define YY_STACK_PRINT(Bottom, Top)
1119     # define YY_REDUCE_PRINT(Rule)
1120     #endif /* !YYDEBUG */
1121    
1122    
1123     /* YYINITDEPTH -- initial size of the parser's stacks. */
1124     #ifndef YYINITDEPTH
1125     # define YYINITDEPTH 200
1126     #endif
1127    
1128     /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1129     if the built-in stack extension method is used).
1130    
1131     Do not make this value too large; the results are undefined if
1132     YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1133     evaluated with infinite-precision integer arithmetic. */
1134    
1135     #ifndef YYMAXDEPTH
1136     # define YYMAXDEPTH 10000
1137     #endif
1138    
1139    
1140    
1141     #if YYERROR_VERBOSE
1142    
1143     # ifndef yystrlen
1144     # if defined __GLIBC__ && defined _STRING_H
1145     # define yystrlen strlen
1146     # else
1147     /* Return the length of YYSTR. */
1148     #if (defined __STDC__ || defined __C99__FUNC__ \
1149     || defined __cplusplus || defined _MSC_VER)
1150     static YYSIZE_T
1151     yystrlen (const char *yystr)
1152     #else
1153     static YYSIZE_T
1154     yystrlen (yystr)
1155     const char *yystr;
1156     #endif
1157     {
1158     YYSIZE_T yylen;
1159     for (yylen = 0; yystr[yylen]; yylen++)
1160     continue;
1161     return yylen;
1162     }
1163     # endif
1164     # endif
1165    
1166     # ifndef yystpcpy
1167     # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1168     # define yystpcpy stpcpy
1169     # else
1170     /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1171     YYDEST. */
1172     #if (defined __STDC__ || defined __C99__FUNC__ \
1173     || defined __cplusplus || defined _MSC_VER)
1174     static char *
1175     yystpcpy (char *yydest, const char *yysrc)
1176     #else
1177     static char *
1178     yystpcpy (yydest, yysrc)
1179     char *yydest;
1180     const char *yysrc;
1181     #endif
1182     {
1183     char *yyd = yydest;
1184     const char *yys = yysrc;
1185    
1186     while ((*yyd++ = *yys++) != '\0')
1187     continue;
1188    
1189     return yyd - 1;
1190     }
1191     # endif
1192     # endif
1193    
1194     # ifndef yytnamerr
1195     /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1196     quotes and backslashes, so that it's suitable for yyerror. The
1197     heuristic is that double-quoting is unnecessary unless the string
1198     contains an apostrophe, a comma, or backslash (other than
1199     backslash-backslash). YYSTR is taken from yytname. If YYRES is
1200     null, do not copy; instead, return the length of what the result
1201     would have been. */
1202     static YYSIZE_T
1203     yytnamerr (char *yyres, const char *yystr)
1204     {
1205     if (*yystr == '"')
1206     {
1207     YYSIZE_T yyn = 0;
1208     char const *yyp = yystr;
1209    
1210     for (;;)
1211     switch (*++yyp)
1212     {
1213     case '\'':
1214     case ',':
1215     goto do_not_strip_quotes;
1216    
1217     case '\\':
1218     if (*++yyp != '\\')
1219     goto do_not_strip_quotes;
1220     /* Fall through. */
1221     default:
1222     if (yyres)
1223     yyres[yyn] = *yyp;
1224     yyn++;
1225     break;
1226    
1227     case '"':
1228     if (yyres)
1229     yyres[yyn] = '\0';
1230     return yyn;
1231     }
1232     do_not_strip_quotes: ;
1233     }
1234    
1235     if (! yyres)
1236     return yystrlen (yystr);
1237    
1238     return yystpcpy (yyres, yystr) - yyres;
1239     }
1240     # endif
1241    
1242     /* Copy into YYRESULT an error message about the unexpected token
1243     YYCHAR while in state YYSTATE. Return the number of bytes copied,
1244     including the terminating null byte. If YYRESULT is null, do not
1245     copy anything; just return the number of bytes that would be
1246     copied. As a special case, return 0 if an ordinary "syntax error"
1247     message will do. Return YYSIZE_MAXIMUM if overflow occurs during
1248     size calculation. */
1249     static YYSIZE_T
1250     yysyntax_error (char *yyresult, int yystate, int yychar)
1251     {
1252     int yyn = yypact[yystate];
1253    
1254     if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1255     return 0;
1256     else
1257     {
1258     int yytype = YYTRANSLATE (yychar);
1259     YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1260     YYSIZE_T yysize = yysize0;
1261     YYSIZE_T yysize1;
1262     int yysize_overflow = 0;
1263     enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1264     char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1265     int yyx;
1266    
1267     # if 0
1268     /* This is so xgettext sees the translatable formats that are
1269     constructed on the fly. */
1270     YY_("syntax error, unexpected %s");
1271     YY_("syntax error, unexpected %s, expecting %s");
1272     YY_("syntax error, unexpected %s, expecting %s or %s");
1273     YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1274     YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1275     # endif
1276     char *yyfmt;
1277     char const *yyf;
1278     static char const yyunexpected[] = "syntax error, unexpected %s";
1279     static char const yyexpecting[] = ", expecting %s";
1280     static char const yyor[] = " or %s";
1281     char yyformat[sizeof yyunexpected
1282     + sizeof yyexpecting - 1
1283     + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1284     * (sizeof yyor - 1))];
1285     char const *yyprefix = yyexpecting;
1286    
1287     /* Start YYX at -YYN if negative to avoid negative indexes in
1288     YYCHECK. */
1289     int yyxbegin = yyn < 0 ? -yyn : 0;
1290    
1291     /* Stay within bounds of both yycheck and yytname. */
1292     int yychecklim = YYLAST - yyn + 1;
1293     int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1294     int yycount = 1;
1295    
1296     yyarg[0] = yytname[yytype];
1297     yyfmt = yystpcpy (yyformat, yyunexpected);
1298    
1299     for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1300     if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1301     {
1302     if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1303     {
1304     yycount = 1;
1305     yysize = yysize0;
1306     yyformat[sizeof yyunexpected - 1] = '\0';
1307     break;
1308     }
1309     yyarg[yycount++] = yytname[yyx];
1310     yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1311     yysize_overflow |= (yysize1 < yysize);
1312     yysize = yysize1;
1313     yyfmt = yystpcpy (yyfmt, yyprefix);
1314     yyprefix = yyor;
1315     }
1316    
1317     yyf = YY_(yyformat);
1318     yysize1 = yysize + yystrlen (yyf);
1319     yysize_overflow |= (yysize1 < yysize);
1320     yysize = yysize1;
1321    
1322     if (yysize_overflow)
1323     return YYSIZE_MAXIMUM;
1324    
1325     if (yyresult)
1326     {
1327     /* Avoid sprintf, as that infringes on the user's name space.
1328     Don't have undefined behavior even if the translation
1329     produced a string with the wrong number of "%s"s. */
1330     char *yyp = yyresult;
1331     int yyi = 0;
1332     while ((*yyp = *yyf) != '\0')
1333     {
1334     if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1335     {
1336     yyp += yytnamerr (yyp, yyarg[yyi++]);
1337     yyf += 2;
1338     }
1339     else
1340     {
1341     yyp++;
1342     yyf++;
1343     }
1344     }
1345     }
1346     return yysize;
1347     }
1348     }
1349     #endif /* YYERROR_VERBOSE */
1350    
1351    
1352     /*-----------------------------------------------.
1353     | Release the memory associated to this symbol. |
1354     `-----------------------------------------------*/
1355    
1356     /*ARGSUSED*/
1357     #if (defined __STDC__ || defined __C99__FUNC__ \
1358     || defined __cplusplus || defined _MSC_VER)
1359     static void
1360     yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1361     #else
1362     static void
1363     yydestruct (yymsg, yytype, yyvaluep)
1364     const char *yymsg;
1365     int yytype;
1366     YYSTYPE *yyvaluep;
1367     #endif
1368     {
1369     YYUSE (yyvaluep);
1370    
1371     if (!yymsg)
1372     yymsg = "Deleting";
1373     YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1374    
1375     switch (yytype)
1376     {
1377    
1378     default:
1379     break;
1380     }
1381     }
1382    
1383    
1384     /* Prevent warnings from -Wmissing-prototypes. */
1385    
1386     #ifdef YYPARSE_PARAM
1387     #if defined __STDC__ || defined __cplusplus
1388     int yyparse (void *YYPARSE_PARAM);
1389     #else
1390     int yyparse ();
1391     #endif
1392     #else /* ! YYPARSE_PARAM */
1393     #if defined __STDC__ || defined __cplusplus
1394     int yyparse (void);
1395     #else
1396     int yyparse ();
1397     #endif
1398     #endif /* ! YYPARSE_PARAM */
1399    
1400    
1401    
1402     /* The look-ahead symbol. */
1403     int yychar;
1404    
1405     /* The semantic value of the look-ahead symbol. */
1406     YYSTYPE yylval;
1407    
1408     /* Number of syntax errors so far. */
1409     int yynerrs;
1410    
1411    
1412    
1413     /*----------.
1414     | yyparse. |
1415     `----------*/
1416    
1417     #ifdef YYPARSE_PARAM
1418     #if (defined __STDC__ || defined __C99__FUNC__ \
1419     || defined __cplusplus || defined _MSC_VER)
1420     int
1421     yyparse (void *YYPARSE_PARAM)
1422     #else
1423     int
1424     yyparse (YYPARSE_PARAM)
1425     void *YYPARSE_PARAM;
1426     #endif
1427     #else /* ! YYPARSE_PARAM */
1428     #if (defined __STDC__ || defined __C99__FUNC__ \
1429     || defined __cplusplus || defined _MSC_VER)
1430     int
1431     yyparse (void)
1432     #else
1433     int
1434     yyparse ()
1435    
1436     #endif
1437     #endif
1438     {
1439    
1440     int yystate;
1441     int yyn;
1442     int yyresult;
1443     /* Number of tokens to shift before error messages enabled. */
1444     int yyerrstatus;
1445     /* Look-ahead token as an internal (translated) token number. */
1446     int yytoken = 0;
1447     #if YYERROR_VERBOSE
1448     /* Buffer for error messages, and its allocated size. */
1449     char yymsgbuf[128];
1450     char *yymsg = yymsgbuf;
1451     YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1452     #endif
1453    
1454     /* Three stacks and their tools:
1455     `yyss': related to states,
1456     `yyvs': related to semantic values,
1457     `yyls': related to locations.
1458    
1459     Refer to the stacks thru separate pointers, to allow yyoverflow
1460     to reallocate them elsewhere. */
1461    
1462     /* The state stack. */
1463     yytype_int16 yyssa[YYINITDEPTH];
1464     yytype_int16 *yyss = yyssa;
1465     yytype_int16 *yyssp;
1466    
1467     /* The semantic value stack. */
1468     YYSTYPE yyvsa[YYINITDEPTH];
1469     YYSTYPE *yyvs = yyvsa;
1470     YYSTYPE *yyvsp;
1471    
1472    
1473    
1474     #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
1475    
1476     YYSIZE_T yystacksize = YYINITDEPTH;
1477    
1478     /* The variables used to return semantic value and location from the
1479     action routines. */
1480     YYSTYPE yyval;
1481    
1482    
1483     /* The number of symbols on the RHS of the reduced rule.
1484     Keep to zero when no symbol should be popped. */
1485     int yylen = 0;
1486    
1487     YYDPRINTF ((stderr, "Starting parse\n"));
1488    
1489     yystate = 0;
1490     yyerrstatus = 0;
1491     yynerrs = 0;
1492     yychar = YYEMPTY; /* Cause a token to be read. */
1493    
1494     /* Initialize stack pointers.
1495     Waste one element of value and location stack
1496     so that they stay on the same level as the state stack.
1497     The wasted elements are never initialized. */
1498    
1499     yyssp = yyss;
1500     yyvsp = yyvs;
1501    
1502     goto yysetstate;
1503    
1504     /*------------------------------------------------------------.
1505     | yynewstate -- Push a new state, which is found in yystate. |
1506     `------------------------------------------------------------*/
1507     yynewstate:
1508     /* In all cases, when you get here, the value and location stacks
1509     have just been pushed. So pushing a state here evens the stacks. */
1510     yyssp++;
1511    
1512     yysetstate:
1513     *yyssp = yystate;
1514    
1515     if (yyss + yystacksize - 1 <= yyssp)
1516     {
1517     /* Get the current used size of the three stacks, in elements. */
1518     YYSIZE_T yysize = yyssp - yyss + 1;
1519    
1520     #ifdef yyoverflow
1521     {
1522     /* Give user a chance to reallocate the stack. Use copies of
1523     these so that the &'s don't force the real ones into
1524     memory. */
1525     YYSTYPE *yyvs1 = yyvs;
1526     yytype_int16 *yyss1 = yyss;
1527    
1528    
1529     /* Each stack pointer address is followed by the size of the
1530     data in use in that stack, in bytes. This used to be a
1531     conditional around just the two extra args, but that might
1532     be undefined if yyoverflow is a macro. */
1533     yyoverflow (YY_("memory exhausted"),
1534     &yyss1, yysize * sizeof (*yyssp),
1535     &yyvs1, yysize * sizeof (*yyvsp),
1536    
1537     &yystacksize);
1538    
1539     yyss = yyss1;
1540     yyvs = yyvs1;
1541     }
1542     #else /* no yyoverflow */
1543     # ifndef YYSTACK_RELOCATE
1544     goto yyexhaustedlab;
1545     # else
1546     /* Extend the stack our own way. */
1547     if (YYMAXDEPTH <= yystacksize)
1548     goto yyexhaustedlab;
1549     yystacksize *= 2;
1550     if (YYMAXDEPTH < yystacksize)
1551     yystacksize = YYMAXDEPTH;
1552    
1553     {
1554     yytype_int16 *yyss1 = yyss;
1555     union yyalloc *yyptr =
1556     (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1557     if (! yyptr)
1558     goto yyexhaustedlab;
1559     YYSTACK_RELOCATE (yyss);
1560     YYSTACK_RELOCATE (yyvs);
1561    
1562     # undef YYSTACK_RELOCATE
1563     if (yyss1 != yyssa)
1564     YYSTACK_FREE (yyss1);
1565     }
1566     # endif
1567     #endif /* no yyoverflow */
1568    
1569     yyssp = yyss + yysize - 1;
1570     yyvsp = yyvs + yysize - 1;
1571    
1572    
1573     YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1574     (unsigned long int) yystacksize));
1575    
1576     if (yyss + yystacksize - 1 <= yyssp)
1577     YYABORT;
1578     }
1579    
1580     YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1581    
1582     goto yybackup;
1583    
1584     /*-----------.
1585     | yybackup. |
1586     `-----------*/
1587     yybackup:
1588    
1589     /* Do appropriate processing given the current state. Read a
1590     look-ahead token if we need one and don't already have one. */
1591    
1592     /* First try to decide what to do without reference to look-ahead token. */
1593     yyn = yypact[yystate];
1594     if (yyn == YYPACT_NINF)
1595     goto yydefault;
1596    
1597     /* Not known => get a look-ahead token if don't already have one. */
1598    
1599     /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
1600     if (yychar == YYEMPTY)
1601     {
1602     YYDPRINTF ((stderr, "Reading a token: "));
1603     yychar = YYLEX;
1604     }
1605    
1606     if (yychar <= YYEOF)
1607     {
1608     yychar = yytoken = YYEOF;
1609     YYDPRINTF ((stderr, "Now at end of input.\n"));
1610     }
1611     else
1612     {
1613     yytoken = YYTRANSLATE (yychar);
1614     YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1615     }
1616    
1617     /* If the proper action on seeing token YYTOKEN is to reduce or to
1618     detect an error, take that action. */
1619     yyn += yytoken;
1620     if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1621     goto yydefault;
1622     yyn = yytable[yyn];
1623     if (yyn <= 0)
1624     {
1625     if (yyn == 0 || yyn == YYTABLE_NINF)
1626     goto yyerrlab;
1627     yyn = -yyn;
1628     goto yyreduce;
1629     }
1630    
1631     if (yyn == YYFINAL)
1632     YYACCEPT;
1633    
1634     /* Count tokens shifted since error; after three, turn off error
1635     status. */
1636     if (yyerrstatus)
1637     yyerrstatus--;
1638    
1639     /* Shift the look-ahead token. */
1640     YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1641    
1642     /* Discard the shifted token unless it is eof. */
1643     if (yychar != YYEOF)
1644     yychar = YYEMPTY;
1645    
1646     yystate = yyn;
1647     *++yyvsp = yylval;
1648    
1649     goto yynewstate;
1650    
1651    
1652     /*-----------------------------------------------------------.
1653     | yydefault -- do the default action for the current state. |
1654     `-----------------------------------------------------------*/
1655     yydefault:
1656     yyn = yydefact[yystate];
1657     if (yyn == 0)
1658     goto yyerrlab;
1659     goto yyreduce;
1660    
1661    
1662     /*-----------------------------.
1663     | yyreduce -- Do a reduction. |
1664     `-----------------------------*/
1665     yyreduce:
1666     /* yyn is the number of a rule to reduce with. */
1667     yylen = yyr2[yyn];
1668    
1669     /* If YYLEN is nonzero, implement the default value of the action:
1670     `$$ = $1'.
1671    
1672     Otherwise, the following line sets YYVAL to garbage.
1673     This behavior is undocumented and Bison
1674     users should not rely upon it. Assigning to YYVAL
1675     unconditionally makes the parser a bit smaller, and it avoids a
1676     GCC warning that YYVAL may be used uninitialized. */
1677     yyval = yyvsp[1-yylen];
1678    
1679    
1680     YY_REDUCE_PRINT (yyn);
1681     switch (yyn)
1682     {
1683     case 19:
1684     #line 120 "config-parser.y"
1685     {
1686     OptionsItem->negcache = (yyvsp[(3) - (4)].number);
1687     }
1688     break;
1689    
1690     case 20:
1691     #line 125 "config-parser.y"
1692     {
1693     MyFree(OptionsItem->pidfile);
1694     OptionsItem->pidfile = DupString((yyvsp[(3) - (4)].string));
1695     }
1696     break;
1697    
1698     case 21:
1699     #line 131 "config-parser.y"
1700     {
1701     OptionsItem->dns_fdlimit = (yyvsp[(3) - (4)].number);
1702     }
1703     break;
1704    
1705     case 22:
1706     #line 136 "config-parser.y"
1707     {
1708     MyFree(OptionsItem->scanlog);
1709     OptionsItem->scanlog = DupString((yyvsp[(3) - (4)].string));
1710     }
1711     break;
1712    
1713     case 42:
1714     #line 166 "config-parser.y"
1715     {
1716     MyFree(IRCItem->away);
1717     IRCItem->away = DupString((yyvsp[(3) - (4)].string));
1718     }
1719     break;
1720    
1721     case 43:
1722     #line 172 "config-parser.y"
1723     {
1724     MyFree(IRCItem->kline);
1725     IRCItem->kline = DupString((yyvsp[(3) - (4)].string));
1726     }
1727     break;
1728    
1729     case 44:
1730     #line 178 "config-parser.y"
1731     {
1732     MyFree(IRCItem->mode);
1733     IRCItem->mode = DupString((yyvsp[(3) - (4)].string));
1734     }
1735     break;
1736    
1737     case 45:
1738     #line 184 "config-parser.y"
1739     {
1740     MyFree(IRCItem->nick);
1741     IRCItem->nick = DupString((yyvsp[(3) - (4)].string));
1742     }
1743     break;
1744    
1745     case 46:
1746     #line 190 "config-parser.y"
1747     {
1748     MyFree(IRCItem->nickserv);
1749     IRCItem->nickserv = DupString((yyvsp[(3) - (4)].string));
1750     }
1751     break;
1752    
1753     case 47:
1754     #line 196 "config-parser.y"
1755     {
1756     MyFree(IRCItem->oper);
1757     IRCItem->oper = DupString((yyvsp[(3) - (4)].string));
1758     }
1759     break;
1760    
1761     case 48:
1762     #line 202 "config-parser.y"
1763     {
1764     MyFree(IRCItem->password);
1765     IRCItem->password = DupString((yyvsp[(3) - (4)].string));
1766     }
1767     break;
1768    
1769     case 49:
1770     #line 208 "config-parser.y"
1771     {
1772     node_t *node;
1773     node = node_create(DupString((yyvsp[(3) - (4)].string)));
1774    
1775     list_add(IRCItem->performs, node);
1776     }
1777     break;
1778    
1779     case 50:
1780     #line 216 "config-parser.y"
1781     {
1782     IRCItem->port = (yyvsp[(3) - (4)].number);
1783     }
1784     break;
1785    
1786     case 51:
1787     #line 221 "config-parser.y"
1788     {
1789     MyFree(IRCItem->realname);
1790     IRCItem->realname = DupString((yyvsp[(3) - (4)].string));
1791     }
1792     break;
1793    
1794     case 52:
1795     #line 227 "config-parser.y"
1796     {
1797     MyFree(IRCItem->server);
1798     IRCItem->server = DupString((yyvsp[(3) - (4)].string));
1799     }
1800     break;
1801    
1802     case 53:
1803     #line 233 "config-parser.y"
1804     {
1805     MyFree(IRCItem->username);
1806     IRCItem->username = DupString((yyvsp[(3) - (4)].string));
1807     }
1808     break;
1809    
1810     case 54:
1811     #line 239 "config-parser.y"
1812     {
1813     MyFree(IRCItem->vhost);
1814     IRCItem->vhost = DupString((yyvsp[(3) - (4)].string));
1815     }
1816     break;
1817    
1818     case 55:
1819     #line 245 "config-parser.y"
1820     {
1821     MyFree(IRCItem->connregex);
1822     IRCItem->connregex = DupString((yyvsp[(3) - (4)].string));
1823     }
1824     break;
1825    
1826     case 56:
1827     #line 254 "config-parser.y"
1828     {
1829     node_t *node;
1830     struct ChannelConf *item;
1831    
1832     item = MyMalloc(sizeof *item);
1833    
1834     item->name = DupString("");
1835     item->key = DupString("");
1836     item->invite = DupString("");
1837    
1838     node = node_create(item);
1839     list_add(IRCItem->channels, node);
1840    
1841     tmp = (void *) item;
1842     }
1843     break;
1844    
1845     case 63:
1846     #line 279 "config-parser.y"
1847     {
1848     struct ChannelConf *item = tmp;
1849    
1850     MyFree(item->name);
1851     item->name = DupString((yyvsp[(3) - (4)].string));
1852     }
1853     break;
1854    
1855     case 64:
1856     #line 287 "config-parser.y"
1857     {
1858     struct ChannelConf *item = tmp;
1859    
1860     MyFree(item->key);
1861     item->key = DupString((yyvsp[(3) - (4)].string));
1862     }
1863     break;
1864    
1865     case 65:
1866     #line 295 "config-parser.y"
1867     {
1868     struct ChannelConf *item = tmp;
1869    
1870     MyFree(item->invite);
1871     item->invite = DupString((yyvsp[(3) - (4)].string));
1872     }
1873     break;
1874    
1875     case 66:
1876     #line 305 "config-parser.y"
1877     {
1878     node_t *node;
1879     struct UserConf *item;
1880    
1881     item = MyMalloc(sizeof *item);
1882    
1883     item->masks = list_create();
1884     item->scanners = list_create();
1885    
1886     node = node_create(item);
1887     list_add(UserItemList, node);
1888    
1889     tmp = (void *) item;
1890     }
1891     break;
1892    
1893     case 73:
1894     #line 329 "config-parser.y"
1895     {
1896     struct UserConf *item = (struct UserConf *) tmp;
1897    
1898     node_t *node;
1899     node = node_create((void *) DupString((yyvsp[(3) - (4)].string)));
1900    
1901     list_add(item->masks, node);
1902     }
1903     break;
1904    
1905     case 74:
1906     #line 339 "config-parser.y"
1907     {
1908     struct UserConf *item = (struct UserConf *) tmp;
1909    
1910     node_t *node;
1911     node = node_create((void *) DupString((yyvsp[(3) - (4)].string)));
1912    
1913     list_add(item->scanners, node);
1914     }
1915     break;
1916    
1917     case 75:
1918     #line 351 "config-parser.y"
1919     {
1920     node_t *node;
1921     struct ScannerConf *item, *olditem;
1922    
1923     item = MyMalloc(sizeof *item);
1924    
1925     /* Setup ScannerConf defaults */
1926     item->name = DupString("undefined");
1927    
1928     if(LIST_SIZE(ScannerItemList) > 0)
1929     {
1930     olditem = ScannerItemList->tail->data;
1931    
1932     item->vhost = DupString(olditem->vhost);
1933     item->fd = olditem->fd;
1934     item->target_ip = DupString(olditem->target_ip);
1935     item->target_port = olditem->target_port;
1936     item->timeout = olditem->timeout;
1937     item->max_read = olditem->max_read;
1938    
1939     item->target_string = olditem->target_string;
1940     item->target_string_created = 0;
1941     }
1942     else
1943     {
1944     item->vhost = DupString("0.0.0.0");
1945     item->fd = 512;
1946     item->target_ip = DupString("127.0.0.1");
1947     item->target_port = 6667;
1948     item->timeout = 30;
1949     item->max_read = 4096;
1950    
1951     item->target_string = list_create();
1952     item->target_string_created = 1;
1953     }
1954    
1955     item->protocols = list_create();
1956    
1957     node = node_create(item);
1958    
1959     list_add(ScannerItemList, node);
1960     tmp = (void *) item;
1961     }
1962     break;
1963    
1964     case 89:
1965     #line 411 "config-parser.y"
1966     {
1967     struct ScannerConf *item = (struct ScannerConf *) tmp;
1968     MyFree(item->name);
1969     item->name = DupString((yyvsp[(3) - (4)].string));
1970     }
1971     break;
1972    
1973     case 90:
1974     #line 418 "config-parser.y"
1975     {
1976     struct ScannerConf *item = (struct ScannerConf *) tmp;
1977     MyFree(item->vhost);
1978     item->vhost = DupString((yyvsp[(3) - (4)].string));
1979     }
1980     break;
1981    
1982     case 91:
1983     #line 425 "config-parser.y"
1984     {
1985     struct ScannerConf *item = (struct ScannerConf *) tmp;
1986     MyFree(item->target_ip);
1987     item->target_ip = DupString((yyvsp[(3) - (4)].string));
1988     }
1989     break;
1990    
1991     case 92:
1992     #line 432 "config-parser.y"
1993     {
1994     struct ScannerConf *item = (struct ScannerConf *) tmp;
1995    
1996     node_t *node;
1997     node = node_create((yyvsp[(3) - (4)].string));
1998    
1999     if(item->target_string_created == 0)
2000     {
2001     item->target_string = list_create();
2002     item->target_string_created = 1;
2003     }
2004    
2005     list_add(item->target_string, node);
2006     }
2007     break;
2008    
2009     case 93:
2010     #line 448 "config-parser.y"
2011     {
2012     struct ScannerConf *item = (struct ScannerConf *) tmp;
2013     item->fd = (yyvsp[(3) - (4)].number);
2014     }
2015     break;
2016    
2017     case 94:
2018     #line 454 "config-parser.y"
2019     {
2020     struct ScannerConf *item = (struct ScannerConf *) tmp;
2021     item->target_port = (yyvsp[(3) - (4)].number);
2022     }
2023     break;
2024    
2025     case 95:
2026     #line 460 "config-parser.y"
2027     {
2028     struct ScannerConf *item = (struct ScannerConf *) tmp;
2029     item->timeout = (yyvsp[(3) - (4)].number);
2030     }
2031     break;
2032    
2033     case 96:
2034     #line 466 "config-parser.y"
2035     {
2036     struct ScannerConf *item = (struct ScannerConf *) tmp;
2037     item->max_read = (yyvsp[(3) - (4)].number);
2038     }
2039     break;
2040    
2041     case 97:
2042     #line 472 "config-parser.y"
2043     {
2044     struct ProtocolConf *item;
2045     struct ScannerConf *item2;
2046    
2047     node_t *node;
2048    
2049     item = MyMalloc(sizeof *item);
2050     item->type = (yyvsp[(3) - (6)].number);
2051     item->port = (yyvsp[(5) - (6)].number);
2052    
2053     item2 = (struct ScannerConf *) tmp;
2054    
2055     node = node_create(item);
2056     list_add(item2->protocols, node);
2057     }
2058     break;
2059    
2060     case 107:
2061     #line 503 "config-parser.y"
2062     {
2063     MyFree(OpmItem->dnsbl_from);
2064     OpmItem->dnsbl_from = DupString((yyvsp[(3) - (4)].string));
2065     }
2066     break;
2067    
2068     case 108:
2069     #line 509 "config-parser.y"
2070     {
2071     MyFree(OpmItem->dnsbl_to);
2072     OpmItem->dnsbl_to = DupString((yyvsp[(3) - (4)].string));
2073     }
2074     break;
2075    
2076     case 109:
2077     #line 515 "config-parser.y"
2078     {
2079     MyFree(OpmItem->sendmail);
2080     OpmItem->sendmail = DupString((yyvsp[(3) - (4)].string));
2081     }
2082     break;
2083    
2084     case 110:
2085     #line 523 "config-parser.y"
2086     {
2087     node_t *node;
2088     struct BlacklistConf *item;
2089    
2090     item = MyMalloc(sizeof *item);
2091    
2092     item->name = DupString("");
2093     item->kline = DupString("");
2094     item->ban_unknown = 0;
2095     item->type = A_BITMASK;
2096     item->reply = list_create();
2097    
2098     node = node_create(item);
2099     list_add(OpmItem->blacklists, node);
2100    
2101     tmp = (void *) item;
2102     }
2103     break;
2104    
2105     case 121:
2106     #line 553 "config-parser.y"
2107     {
2108     struct BlacklistConf *item = tmp;
2109    
2110     MyFree(item->name);
2111     item->name = DupString((yyvsp[(3) - (4)].string));
2112     }
2113     break;
2114    
2115     case 122:
2116     #line 560 "config-parser.y"
2117     {
2118     struct BlacklistConf *item = tmp;
2119    
2120     MyFree(item->kline);
2121     item->kline = DupString((yyvsp[(3) - (4)].string));
2122     }
2123     break;
2124    
2125     case 123:
2126     #line 567 "config-parser.y"
2127     {
2128     struct BlacklistConf *item = tmp;
2129    
2130     if(strcmp("A record bitmask", (yyvsp[(3) - (4)].string)) == 0)
2131     item->type = A_BITMASK;
2132     else if(strcmp("A record reply", (yyvsp[(3) - (4)].string)) == 0)
2133     item->type = A_REPLY;
2134     else
2135     yyerror("Unknown blacklist type defined");
2136     }
2137     break;
2138    
2139     case 124:
2140     #line 578 "config-parser.y"
2141     {
2142     struct BlacklistConf *item = tmp;
2143    
2144     item->ban_unknown = (yyvsp[(3) - (4)].number);
2145     }
2146     break;
2147    
2148     case 129:
2149     #line 591 "config-parser.y"
2150     {
2151     struct BlacklistReplyConf *item;
2152     struct BlacklistConf *blacklist = tmp;
2153     node_t *node;
2154    
2155     item = MyMalloc(sizeof *item);
2156    
2157     item->number = (yyvsp[(1) - (4)].number);
2158     item->type = DupString((yyvsp[(3) - (4)].string));
2159    
2160     node = node_create(item);
2161     list_add(blacklist->reply, node);
2162     }
2163     break;
2164    
2165     case 136:
2166     #line 618 "config-parser.y"
2167     {
2168     node_t *node;
2169     node = node_create(DupString((yyvsp[(3) - (4)].string)));
2170    
2171     list_add(ExemptItem->masks, node);
2172     }
2173     break;
2174    
2175    
2176     /* Line 1267 of yacc.c. */
2177     #line 2178 "config-parser.c"
2178     default: break;
2179     }
2180     YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
2181    
2182     YYPOPSTACK (yylen);
2183     yylen = 0;
2184     YY_STACK_PRINT (yyss, yyssp);
2185    
2186     *++yyvsp = yyval;
2187    
2188    
2189     /* Now `shift' the result of the reduction. Determine what state
2190     that goes to, based on the state we popped back to and the rule
2191     number reduced by. */
2192    
2193     yyn = yyr1[yyn];
2194    
2195     yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2196     if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2197     yystate = yytable[yystate];
2198     else
2199     yystate = yydefgoto[yyn - YYNTOKENS];
2200    
2201     goto yynewstate;
2202    
2203    
2204     /*------------------------------------.
2205     | yyerrlab -- here on detecting error |
2206     `------------------------------------*/
2207     yyerrlab:
2208     /* If not already recovering from an error, report this error. */
2209     if (!yyerrstatus)
2210     {
2211     ++yynerrs;
2212     #if ! YYERROR_VERBOSE
2213     yyerror (YY_("syntax error"));
2214     #else
2215     {
2216     YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
2217     if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
2218     {
2219     YYSIZE_T yyalloc = 2 * yysize;
2220     if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
2221     yyalloc = YYSTACK_ALLOC_MAXIMUM;
2222     if (yymsg != yymsgbuf)
2223     YYSTACK_FREE (yymsg);
2224     yymsg = (char *) YYSTACK_ALLOC (yyalloc);
2225     if (yymsg)
2226     yymsg_alloc = yyalloc;
2227     else
2228     {
2229     yymsg = yymsgbuf;
2230     yymsg_alloc = sizeof yymsgbuf;
2231     }
2232     }
2233    
2234     if (0 < yysize && yysize <= yymsg_alloc)
2235     {
2236     (void) yysyntax_error (yymsg, yystate, yychar);
2237     yyerror (yymsg);
2238     }
2239     else
2240     {
2241     yyerror (YY_("syntax error"));
2242     if (yysize != 0)
2243     goto yyexhaustedlab;
2244     }
2245     }
2246     #endif
2247     }
2248    
2249    
2250    
2251     if (yyerrstatus == 3)
2252     {
2253     /* If just tried and failed to reuse look-ahead token after an
2254     error, discard it. */
2255    
2256     if (yychar <= YYEOF)
2257     {
2258     /* Return failure if at end of input. */
2259     if (yychar == YYEOF)
2260     YYABORT;
2261     }
2262     else
2263     {
2264     yydestruct ("Error: discarding",
2265     yytoken, &yylval);
2266     yychar = YYEMPTY;
2267     }
2268     }
2269    
2270     /* Else will try to reuse look-ahead token after shifting the error
2271     token. */
2272     goto yyerrlab1;
2273    
2274    
2275     /*---------------------------------------------------.
2276     | yyerrorlab -- error raised explicitly by YYERROR. |
2277     `---------------------------------------------------*/
2278     yyerrorlab:
2279    
2280     /* Pacify compilers like GCC when the user code never invokes
2281     YYERROR and the label yyerrorlab therefore never appears in user
2282     code. */
2283     if (/*CONSTCOND*/ 0)
2284     goto yyerrorlab;
2285    
2286     /* Do not reclaim the symbols of the rule which action triggered
2287     this YYERROR. */
2288     YYPOPSTACK (yylen);
2289     yylen = 0;
2290     YY_STACK_PRINT (yyss, yyssp);
2291     yystate = *yyssp;
2292     goto yyerrlab1;
2293    
2294    
2295     /*-------------------------------------------------------------.
2296     | yyerrlab1 -- common code for both syntax error and YYERROR. |
2297     `-------------------------------------------------------------*/
2298     yyerrlab1:
2299     yyerrstatus = 3; /* Each real token shifted decrements this. */
2300    
2301     for (;;)
2302     {
2303     yyn = yypact[yystate];
2304     if (yyn != YYPACT_NINF)
2305     {
2306     yyn += YYTERROR;
2307     if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2308     {
2309     yyn = yytable[yyn];
2310     if (0 < yyn)
2311     break;
2312     }
2313     }
2314    
2315     /* Pop the current state because it cannot handle the error token. */
2316     if (yyssp == yyss)
2317     YYABORT;
2318    
2319    
2320     yydestruct ("Error: popping",
2321     yystos[yystate], yyvsp);
2322     YYPOPSTACK (1);
2323     yystate = *yyssp;
2324     YY_STACK_PRINT (yyss, yyssp);
2325     }
2326    
2327     if (yyn == YYFINAL)
2328     YYACCEPT;
2329    
2330     *++yyvsp = yylval;
2331    
2332    
2333     /* Shift the error token. */
2334     YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
2335    
2336     yystate = yyn;
2337     goto yynewstate;
2338    
2339    
2340     /*-------------------------------------.
2341     | yyacceptlab -- YYACCEPT comes here. |
2342     `-------------------------------------*/
2343     yyacceptlab:
2344     yyresult = 0;
2345     goto yyreturn;
2346    
2347     /*-----------------------------------.
2348     | yyabortlab -- YYABORT comes here. |
2349     `-----------------------------------*/
2350     yyabortlab:
2351     yyresult = 1;
2352     goto yyreturn;
2353    
2354     #ifndef yyoverflow
2355     /*-------------------------------------------------.
2356     | yyexhaustedlab -- memory exhaustion comes here. |
2357     `-------------------------------------------------*/
2358     yyexhaustedlab:
2359     yyerror (YY_("memory exhausted"));
2360     yyresult = 2;
2361     /* Fall through. */
2362     #endif
2363    
2364     yyreturn:
2365     if (yychar != YYEOF && yychar != YYEMPTY)
2366     yydestruct ("Cleanup: discarding lookahead",
2367     yytoken, &yylval);
2368     /* Do not reclaim the symbols of the rule which action triggered
2369     this YYABORT or YYACCEPT. */
2370     YYPOPSTACK (yylen);
2371     YY_STACK_PRINT (yyss, yyssp);
2372     while (yyssp != yyss)
2373     {
2374     yydestruct ("Cleanup: popping",
2375     yystos[*yyssp], yyvsp);
2376     YYPOPSTACK (1);
2377     }
2378     #ifndef yyoverflow
2379     if (yyss != yyssa)
2380     YYSTACK_FREE (yyss);
2381     #endif
2382     #if YYERROR_VERBOSE
2383     if (yymsg != yymsgbuf)
2384     YYSTACK_FREE (yymsg);
2385     #endif
2386     /* Make sure YYID is used. */
2387     return YYID (yyresult);
2388     }
2389    
2390    
2391     #line 625 "config-parser.y"
2392    
2393