ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/hopm/trunk/src/config-parser.c
Revision: 9479
Committed: Sat Jul 4 19:04:06 2020 UTC (6 years ago) by michael
Content type: text/x-csrc
File size: 83313 byte(s)
Log Message:
- Rebuild parser files

File Contents

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

Properties

Name Value
svn:eol-style native
svn:keywords Id