4 #define YY_INT_ALIGNED short int
6 /* A lexical scanner generated by flex */
9 #define YY_FLEX_MAJOR_VERSION 2
10 #define YY_FLEX_MINOR_VERSION 6
11 #define YY_FLEX_SUBMINOR_VERSION 1
12 #if YY_FLEX_SUBMINOR_VERSION > 0
16 /* First, we deal with platform-specific or compiler-specific issues. */
18 /* begin standard C headers. */
24 /* end standard C headers. */
26 /* flex integer type definitions */
31 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
33 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
35 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
36 * if you want the limit (max/min) macros for int types.
38 #ifndef __STDC_LIMIT_MACROS
39 #define __STDC_LIMIT_MACROS 1
43 typedef int8_t flex_int8_t;
44 typedef uint8_t flex_uint8_t;
45 typedef int16_t flex_int16_t;
46 typedef uint16_t flex_uint16_t;
47 typedef int32_t flex_int32_t;
48 typedef uint32_t flex_uint32_t;
50 typedef signed char flex_int8_t;
51 typedef short int flex_int16_t;
52 typedef int flex_int32_t;
53 typedef unsigned char flex_uint8_t;
54 typedef unsigned short int flex_uint16_t;
55 typedef unsigned int flex_uint32_t;
57 /* Limits of integral types. */
59 #define INT8_MIN (-128)
62 #define INT16_MIN (-32767-1)
65 #define INT32_MIN (-2147483647-1)
68 #define INT8_MAX (127)
71 #define INT16_MAX (32767)
74 #define INT32_MAX (2147483647)
77 #define UINT8_MAX (255U)
80 #define UINT16_MAX (65535U)
83 #define UINT32_MAX (4294967295U)
88 #endif /* ! FLEXINT_H */
90 /* TODO: this is always defined, so inline it */
93 #if defined(__GNUC__) && __GNUC__ >= 3
94 #define yynoreturn __attribute__((__noreturn__))
99 /* Returned upon end-of-file. */
102 /* Promotes a possibly negative, possibly signed char to an unsigned
103 * integer for use as an array index. If the signed char is negative,
104 * we want to instead treat it as an 8-bit unsigned char, hence the
107 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
109 /* Enter a start condition. This macro really ought to take a parameter,
110 * but we do it the disgusting crufty way forced on us by the ()-less
111 * definition of BEGIN.
113 #define BEGIN (yy_start) = 1 + 2 *
115 /* Translate the current start state into a value that can be later handed
116 * to BEGIN to return to the state. The YYSTATE alias is for lex
119 #define YY_START (((yy_start) - 1) / 2)
120 #define YYSTATE YY_START
122 /* Action number for EOF rule of a given start state. */
123 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
125 /* Special action meaning "start processing a new file". */
126 #define YY_NEW_FILE yyrestart(yyin )
128 #define YY_END_OF_BUFFER_CHAR 0
130 /* Size of default input buffer. */
133 /* On IA-64, the buffer size is 16k, not 8k.
134 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
135 * Ditto for the __ia64__ case accordingly.
137 #define YY_BUF_SIZE 32768
139 #define YY_BUF_SIZE 16384
140 #endif /* __ia64__ */
143 /* The state buf must be large enough to hold one state per character in the main buffer.
145 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
147 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
148 #define YY_TYPEDEF_YY_BUFFER_STATE
149 typedef struct yy_buffer_state *YY_BUFFER_STATE;
152 #ifndef YY_TYPEDEF_YY_SIZE_T
153 #define YY_TYPEDEF_YY_SIZE_T
154 typedef size_t yy_size_t;
159 extern FILE *yyin, *yyout;
161 #define EOB_ACT_CONTINUE_SCAN 0
162 #define EOB_ACT_END_OF_FILE 1
163 #define EOB_ACT_LAST_MATCH 2
165 #define YY_LESS_LINENO(n)
166 #define YY_LINENO_REWIND_TO(ptr)
168 /* Return all but the first "n" matched characters back to the input stream. */
172 /* Undo effects of setting up yytext. */ \
173 int yyless_macro_arg = (n); \
174 YY_LESS_LINENO(yyless_macro_arg);\
175 *yy_cp = (yy_hold_char); \
176 YY_RESTORE_YY_MORE_OFFSET \
177 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
178 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
182 #define unput(c) yyunput( c, (yytext_ptr) )
184 #ifndef YY_STRUCT_YY_BUFFER_STATE
185 #define YY_STRUCT_YY_BUFFER_STATE
186 struct yy_buffer_state
190 char *yy_ch_buf; /* input buffer */
191 char *yy_buf_pos; /* current position in input buffer */
193 /* Size of input buffer in bytes, not including room for EOB
198 /* Number of characters read into yy_ch_buf, not including EOB
203 /* Whether we "own" the buffer - i.e., we know we created it,
204 * and can realloc() it to grow it, and should free() it to
207 int yy_is_our_buffer;
209 /* Whether this is an "interactive" input source; if so, and
210 * if we're using stdio for input, then we want to use getc()
211 * instead of fread(), to make sure we stop fetching input after
214 int yy_is_interactive;
216 /* Whether we're considered to be at the beginning of a line.
217 * If so, '^' rules will be active on the next match, otherwise
222 int yy_bs_lineno; /**< The line count. */
223 int yy_bs_column; /**< The column count. */
225 /* Whether to try to fill the input buffer when we reach the
230 int yy_buffer_status;
232 #define YY_BUFFER_NEW 0
233 #define YY_BUFFER_NORMAL 1
234 /* When an EOF's been seen but there's still some text to process
235 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
236 * shouldn't try reading from the input source any more. We might
237 * still have a bunch of tokens to match, though, because of
238 * possible backing-up.
240 * When we actually see the EOF, we change the status to "new"
241 * (via yyrestart()), so that the user can continue scanning by
242 * just pointing yyin at a new input file.
244 #define YY_BUFFER_EOF_PENDING 2
247 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
249 /* Stack of input buffers. */
250 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
251 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
252 static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
254 /* We provide macros for accessing buffer states in case in the
255 * future we want to put the buffer states in a more general
258 * Returns the top of the stack, or NULL.
260 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
261 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
264 /* Same as previous macro, but useful when we know that the buffer stack is not
265 * NULL or when we need an lvalue. For internal use only.
267 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
269 /* yy_hold_char holds the character lost when yytext is formed. */
270 static char yy_hold_char;
271 static int yy_n_chars; /* number of characters read into yy_ch_buf */
274 /* Points to current character in buffer. */
275 static char *yy_c_buf_p = NULL;
276 static int yy_init = 0; /* whether we need to initialize */
277 static int yy_start = 0; /* start state number */
279 /* Flag which is used to allow yywrap()'s to do buffer switches
280 * instead of setting up a fresh yyin. A bit of a hack ...
282 static int yy_did_buffer_switch_on_eof;
284 void yyrestart (FILE *input_file );
285 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer );
286 YY_BUFFER_STATE yy_create_buffer (FILE *file,int size );
287 void yy_delete_buffer (YY_BUFFER_STATE b );
288 void yy_flush_buffer (YY_BUFFER_STATE b );
289 void yypush_buffer_state (YY_BUFFER_STATE new_buffer );
290 void yypop_buffer_state (void );
292 static void yyensure_buffer_stack (void );
293 static void yy_load_buffer_state (void );
294 static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file );
296 #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
298 YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size );
299 YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str );
300 YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len );
302 void *yyalloc (yy_size_t );
303 void *yyrealloc (void *,yy_size_t );
304 void yyfree (void * );
306 #define yy_new_buffer yy_create_buffer
308 #define yy_set_interactive(is_interactive) \
310 if ( ! YY_CURRENT_BUFFER ){ \
311 yyensure_buffer_stack (); \
312 YY_CURRENT_BUFFER_LVALUE = \
313 yy_create_buffer(yyin,YY_BUF_SIZE ); \
315 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
318 #define yy_set_bol(at_bol) \
320 if ( ! YY_CURRENT_BUFFER ){\
321 yyensure_buffer_stack (); \
322 YY_CURRENT_BUFFER_LVALUE = \
323 yy_create_buffer(yyin,YY_BUF_SIZE ); \
325 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
328 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
330 /* Begin user sect3 */
332 #define yywrap() (/*CONSTCOND*/1)
333 #define YY_SKIP_YYWRAP
335 typedef unsigned char YY_CHAR;
337 FILE *yyin = NULL, *yyout = NULL;
339 typedef int yy_state_type;
349 #define yytext_ptr yytext
351 static yy_state_type yy_get_previous_state (void );
352 static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
353 static int yy_get_next_buffer (void );
354 static void yynoreturn yy_fatal_error (yyconst char* msg );
356 /* Done after the current pattern has been matched and before the
357 * corresponding action - sets up yytext.
359 #define YY_DO_BEFORE_ACTION \
360 (yytext_ptr) = yy_bp; \
361 yyleng = (int) (yy_cp - yy_bp); \
362 (yy_hold_char) = *yy_cp; \
364 (yy_c_buf_p) = yy_cp;
366 #define YY_NUM_RULES 110
367 #define YY_END_OF_BUFFER 111
368 /* This struct is not used in this scanner,
369 but its presence is necessary. */
372 flex_int32_t yy_verify;
375 static yyconst flex_int16_t yy_accept[575] =
377 0, 0, 111, 106, 101, 102, 93, 107, 104, 87,
378 94, 91, 92, 97, 108, 106, 106, 106, 106, 106,
379 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
380 106, 106, 106, 106, 106, 106, 106, 95, 106, 101,
381 102, 104, 0, 0, 105, 0, 104, 104, 103, 99,
382 97, 0, 100, 106, 106, 106, 106, 19, 106, 106,
383 106, 106, 106, 106, 106, 106, 106, 106, 37, 106,
384 106, 106, 106, 32, 106, 106, 106, 106, 106, 106,
385 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
386 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
388 106, 0, 0, 0, 98, 97, 100, 106, 106, 106,
389 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
390 106, 106, 31, 63, 106, 106, 106, 106, 106, 106,
391 106, 106, 106, 106, 71, 106, 106, 106, 106, 106,
392 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
393 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
394 106, 106, 106, 106, 0, 0, 98, 97, 106, 106,
395 106, 67, 106, 106, 64, 68, 106, 106, 106, 35,
396 36, 106, 106, 106, 106, 40, 42, 106, 51, 106,
397 106, 60, 70, 106, 72, 106, 73, 106, 106, 106,
399 106, 106, 106, 106, 30, 106, 85, 106, 106, 106,
400 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
401 106, 75, 76, 106, 62, 106, 0, 98, 97, 106,
402 65, 106, 106, 106, 106, 106, 59, 106, 66, 106,
403 96, 106, 38, 106, 106, 106, 106, 106, 106, 106,
404 106, 106, 106, 106, 106, 41, 106, 106, 49, 106,
405 106, 106, 106, 106, 106, 88, 106, 106, 106, 106,
406 106, 106, 106, 86, 98, 97, 106, 106, 106, 106,
407 106, 69, 106, 106, 106, 106, 106, 106, 70, 77,
408 78, 79, 80, 81, 82, 83, 84, 106, 106, 106,
410 106, 61, 106, 106, 106, 1, 106, 106, 106, 106,
411 106, 39, 90, 89, 106, 74, 106, 106, 106, 106,
412 98, 97, 106, 106, 106, 106, 106, 106, 106, 106,
413 50, 106, 21, 26, 106, 106, 106, 10, 106, 106,
414 106, 106, 106, 52, 106, 106, 106, 106, 106, 45,
415 62, 98, 97, 106, 9, 67, 106, 106, 106, 106,
416 106, 106, 106, 106, 106, 106, 106, 106, 47, 106,
417 106, 106, 106, 106, 48, 106, 46, 106, 98, 106,
418 106, 106, 106, 106, 106, 106, 106, 106, 106, 12,
419 106, 106, 106, 106, 106, 106, 44, 11, 106, 106,
421 106, 106, 106, 106, 98, 106, 106, 106, 106, 106,
422 33, 106, 106, 106, 106, 106, 106, 106, 106, 106,
423 106, 106, 106, 8, 106, 106, 106, 106, 106, 106,
424 106, 106, 106, 106, 106, 43, 34, 106, 106, 106,
425 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
426 106, 20, 106, 106, 106, 106, 53, 106, 106, 106,
427 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
428 56, 106, 106, 106, 106, 106, 54, 106, 106, 106,
429 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
430 57, 106, 106, 15, 106, 106, 106, 106, 17, 7,
432 106, 106, 106, 106, 106, 106, 106, 23, 106, 106,
433 106, 106, 106, 106, 106, 106, 106, 106, 106, 4,
434 106, 106, 106, 22, 106, 106, 106, 106, 106, 13,
435 106, 106, 106, 106, 5, 6, 106, 106, 106, 106,
436 106, 106, 16, 106, 106, 106, 106, 106, 106, 3,
437 25, 106, 18, 106, 106, 106, 27, 106, 55, 106,
438 24, 14, 58, 106, 106, 106, 106, 28, 106, 106,
442 static yyconst YY_CHAR yy_ec[256] =
444 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
445 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
446 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
447 1, 2, 4, 5, 6, 7, 8, 9, 8, 10,
448 11, 8, 8, 8, 12, 8, 8, 13, 14, 15,
449 16, 17, 18, 19, 20, 21, 21, 8, 8, 8,
450 8, 8, 8, 8, 22, 22, 22, 22, 22, 22,
451 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
452 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
453 8, 23, 8, 8, 24, 8, 25, 26, 27, 28,
455 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
456 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
457 49, 50, 8, 51, 8, 8, 1, 1, 1, 1,
458 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
459 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
460 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
461 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
462 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
463 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
464 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
466 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
467 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
468 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
469 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
470 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
474 static yyconst YY_CHAR yy_meta[52] =
476 1, 2, 3, 1, 2, 1, 1, 1, 1, 1,
477 1, 1, 4, 4, 4, 4, 4, 4, 4, 4,
478 4, 1, 2, 1, 1, 1, 1, 1, 1, 1,
479 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
480 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
484 static yyconst flex_uint16_t yy_base[581] =
486 0, 0, 789, 0, 50, 790, 0, 49, 55, 0,
487 0, 0, 0, 67, 59, 755, 19, 49, 34, 56,
488 754, 29, 39, 59, 757, 30, 71, 70, 739, 759,
489 738, 76, 74, 743, 65, 752, 82, 0, 0, 111,
490 790, 777, 73, 97, 790, 134, 123, 776, 790, 170,
491 179, 109, 119, 740, 93, 733, 94, 0, 94, 747,
492 749, 731, 98, 744, 726, 741, 728, 740, 0, 729,
493 738, 722, 729, 0, 726, 113, 721, 735, 719, 727,
494 716, 711, 120, 721, 727, 119, 722, 716, 133, 118,
495 708, 713, 723, 710, 706, 708, 718, 719, 703, 702,
497 710, 163, 0, 196, 214, 223, 157, 715, 699, 701,
498 707, 702, 710, 692, 697, 697, 688, 705, 701, 701,
499 687, 695, 0, 688, 699, 699, 684, 698, 682, 682,
500 684, 680, 680, 692, 0, 680, 672, 671, 135, 680,
501 676, 669, 677, 684, 664, 676, 678, 676, 659, 674,
502 657, 655, 688, 655, 656, 140, 657, 660, 659, 652,
503 653, 649, 653, 646, 0, 232, 250, 259, 653, 644,
504 640, 646, 652, 652, 0, 0, 644, 651, 642, 0,
505 0, 649, 637, 636, 632, 0, 0, 649, 0, 633,
506 629, 0, 644, 636, 0, 646, 0, 637, 175, 642,
508 656, 625, 639, 628, 0, 635, 0, 636, 629, 617,
509 618, 626, 629, 629, 614, 613, 616, 608, 610, 612,
510 621, 637, 0, 615, 614, 617, 276, 287, 296, 600,
511 0, 632, 601, 604, 629, 602, 0, 601, 0, 599,
512 594, 592, 0, 606, 606, 597, 305, 601, 588, 586,
513 589, 599, 597, 593, 596, 0, 580, 581, 0, 589,
514 594, 582, 580, 589, 575, 0, 572, 586, 583, 567,
515 570, 572, 572, 0, 313, 322, 581, 578, 574, 575,
516 564, 0, 566, 565, 590, 572, 588, 570, 0, 0,
517 0, 0, 0, 0, 0, 0, 0, 569, 570, 584,
519 555, 0, 566, 565, 548, 579, 561, 545, 559, 541,
520 539, 0, 0, 0, 542, 0, 555, 556, 544, 550,
521 331, 340, 551, 551, 532, 565, 531, 546, 537, 128,
522 561, 542, 559, 0, 531, 540, 526, 0, 538, 537,
523 535, 552, 514, 550, 528, 522, 516, 522, 527, 0,
524 0, 349, 544, 543, 0, 0, 251, 521, 526, 523,
525 506, 511, 145, 521, 255, 510, 509, 517, 0, 503,
526 516, 513, 253, 500, 0, 529, 0, 507, 358, 353,
527 497, 495, 493, 492, 497, 491, 521, 487, 489, 0,
528 497, 499, 489, 489, 480, 482, 0, 0, 496, 481,
530 479, 482, 495, 483, 0, 482, 468, 473, 476, 485,
531 0, 501, 468, 479, 351, 477, 470, 466, 478, 467,
532 476, 471, 460, 0, 463, 472, 462, 457, 469, 464,
533 453, 466, 449, 451, 460, 0, 0, 458, 95, 454,
534 452, 459, 439, 451, 458, 442, 471, 437, 439, 443,
535 448, 0, 449, 450, 434, 435, 462, 428, 436, 443,
536 427, 425, 456, 440, 433, 420, 420, 424, 437, 421,
537 448, 430, 415, 419, 417, 443, 0, 411, 413, 423,
538 422, 414, 416, 257, 404, 404, 406, 433, 406, 401,
539 0, 399, 403, 0, 396, 401, 396, 405, 0, 0,
541 394, 396, 396, 400, 407, 392, 386, 417, 396, 390,
542 395, 393, 380, 411, 392, 394, 391, 377, 387, 0,
543 375, 372, 373, 0, 380, 356, 371, 354, 366, 0,
544 366, 359, 361, 354, 0, 0, 360, 356, 338, 350,
545 345, 346, 0, 347, 343, 264, 261, 257, 265, 0,
546 0, 254, 0, 245, 251, 248, 0, 220, 0, 211,
547 0, 0, 0, 178, 178, 167, 172, 0, 161, 171,
548 132, 0, 0, 790, 398, 402, 406, 410, 173, 166
551 static yyconst flex_int16_t yy_def[581] =
553 574, 1, 574, 575, 574, 574, 575, 576, 577, 575,
554 575, 575, 575, 575, 574, 575, 575, 575, 575, 575,
555 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
556 575, 575, 575, 575, 575, 575, 575, 575, 575, 574,
557 574, 578, 574, 576, 574, 576, 577, 578, 574, 575,
558 14, 574, 574, 575, 575, 575, 575, 575, 575, 575,
559 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
560 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
561 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
562 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
564 575, 574, 579, 576, 575, 14, 574, 575, 575, 575,
565 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
566 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
567 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
568 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
569 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
570 575, 575, 575, 575, 580, 104, 575, 14, 575, 575,
571 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
572 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
573 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
575 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
576 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
577 575, 575, 575, 575, 575, 575, 576, 575, 14, 575,
578 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
579 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
580 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
581 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
582 575, 575, 575, 575, 575, 14, 575, 575, 575, 575,
583 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
584 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
586 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
587 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
588 575, 14, 575, 575, 575, 575, 575, 575, 575, 575,
589 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
590 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
591 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
592 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
593 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
594 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
595 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
597 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
598 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
599 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
600 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
601 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
602 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
603 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
604 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
605 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
606 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
608 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
609 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
610 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
611 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
612 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
613 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
614 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
615 575, 575, 575, 0, 574, 574, 574, 574, 574, 574
618 static yyconst flex_uint16_t yy_nxt[842] =
620 4, 5, 6, 7, 8, 9, 10, 4, 11, 12,
621 13, 4, 14, 14, 14, 14, 14, 14, 14, 14,
622 14, 4, 15, 16, 17, 4, 18, 19, 20, 21,
623 22, 23, 24, 4, 25, 26, 27, 28, 29, 30,
624 31, 32, 33, 34, 35, 36, 37, 4, 4, 4,
625 38, 40, 41, 45, 55, 42, 48, 49, 60, 48,
626 52, 53, 61, 56, 70, 72, 62, 73, 78, 79,
627 71, 46, 43, 57, 52, 53, 58, 48, 50, 51,
628 51, 51, 51, 51, 51, 51, 51, 51, 74, 75,
629 59, 63, 64, 65, 66, 80, 76, 67, 82, 81,
631 88, 45, 90, 68, 89, 91, 100, 97, 83, 98,
632 52, 53, 40, 41, 84, 92, 42, 93, 94, 46,
633 107, 109, 95, 101, 48, 49, 114, 48, 110, 112,
634 119, 139, 115, 43, 574, 102, 44, 113, 460, 131,
635 120, 43, 132, 461, 151, 48, 103, 103, 103, 103,
636 103, 103, 103, 103, 103, 574, 143, 147, 107, 152,
637 144, 153, 198, 140, 102, 44, 148, 361, 216, 44,
638 388, 362, 217, 149, 389, 150, 165, 199, 218, 43,
639 573, 104, 105, 105, 105, 105, 105, 105, 105, 105,
640 105, 106, 106, 106, 106, 106, 106, 106, 106, 106,
642 45, 572, 571, 250, 570, 569, 568, 567, 166, 166,
643 166, 166, 166, 166, 166, 166, 166, 166, 46, 251,
644 166, 166, 166, 166, 166, 166, 167, 167, 167, 167,
645 167, 167, 167, 167, 167, 168, 168, 168, 168, 168,
646 168, 168, 168, 168, 227, 227, 227, 227, 227, 227,
647 227, 227, 227, 227, 566, 565, 227, 227, 227, 227,
648 227, 227, 228, 228, 228, 228, 228, 228, 228, 228,
649 228, 229, 229, 229, 229, 229, 229, 229, 229, 229,
650 45, 381, 391, 400, 504, 564, 563, 392, 562, 561,
651 393, 560, 559, 558, 557, 382, 505, 401, 46, 275,
653 275, 275, 275, 275, 275, 275, 275, 275, 276, 276,
654 276, 276, 276, 276, 276, 276, 276, 290, 291, 292,
655 293, 294, 295, 296, 297, 321, 321, 321, 321, 321,
656 321, 321, 321, 321, 322, 322, 322, 322, 322, 322,
657 322, 322, 322, 352, 352, 352, 352, 352, 352, 352,
658 352, 352, 353, 353, 353, 353, 353, 353, 353, 353,
659 353, 379, 379, 379, 379, 379, 379, 379, 379, 379,
660 405, 405, 405, 405, 405, 405, 405, 405, 405, 406,
661 438, 556, 555, 554, 553, 552, 551, 550, 549, 548,
662 547, 546, 545, 439, 544, 407, 543, 408, 39, 542,
664 541, 39, 44, 44, 540, 44, 47, 47, 47, 47,
665 48, 48, 48, 48, 539, 538, 537, 536, 535, 534,
666 533, 532, 531, 530, 529, 528, 527, 526, 525, 524,
667 523, 522, 521, 520, 519, 518, 517, 516, 515, 514,
668 513, 512, 511, 510, 509, 508, 507, 506, 503, 502,
669 501, 500, 499, 498, 497, 496, 495, 494, 493, 492,
670 491, 490, 489, 488, 487, 486, 485, 484, 483, 482,
671 481, 480, 479, 478, 477, 476, 475, 474, 473, 472,
672 471, 470, 469, 468, 467, 466, 465, 464, 463, 462,
673 459, 458, 457, 456, 455, 454, 453, 452, 451, 450,
675 449, 448, 447, 446, 445, 444, 443, 442, 441, 440,
676 437, 436, 435, 434, 433, 432, 431, 430, 429, 428,
677 427, 426, 425, 424, 423, 422, 421, 420, 419, 418,
678 417, 416, 415, 414, 413, 412, 411, 410, 409, 404,
679 403, 402, 399, 398, 397, 396, 395, 394, 390, 387,
680 386, 385, 384, 383, 380, 50, 378, 377, 376, 375,
681 374, 373, 356, 372, 371, 370, 369, 368, 367, 366,
682 365, 364, 363, 360, 359, 358, 357, 356, 355, 354,
683 351, 350, 349, 348, 347, 346, 345, 344, 343, 342,
684 341, 340, 339, 338, 337, 336, 335, 334, 333, 332,
686 331, 330, 329, 328, 327, 326, 325, 324, 323, 320,
687 319, 318, 317, 316, 315, 314, 313, 312, 311, 310,
688 309, 308, 307, 306, 305, 304, 303, 302, 301, 300,
689 299, 298, 289, 288, 287, 286, 285, 284, 283, 282,
690 281, 280, 279, 278, 277, 274, 273, 272, 271, 270,
691 269, 268, 267, 266, 265, 264, 263, 262, 261, 260,
692 259, 258, 257, 256, 255, 239, 254, 253, 252, 249,
693 248, 247, 246, 245, 244, 243, 242, 241, 240, 239,
694 238, 237, 236, 235, 234, 233, 232, 231, 230, 226,
695 225, 224, 223, 222, 221, 220, 219, 215, 214, 213,
697 212, 211, 210, 209, 208, 207, 206, 205, 204, 203,
698 202, 201, 200, 197, 196, 195, 194, 193, 192, 191,
699 190, 189, 188, 187, 186, 185, 184, 183, 182, 181,
700 180, 179, 178, 177, 176, 175, 174, 173, 172, 171,
701 170, 169, 164, 163, 162, 161, 160, 159, 158, 157,
702 156, 155, 154, 146, 145, 142, 141, 138, 137, 136,
703 135, 134, 133, 130, 129, 128, 127, 126, 125, 124,
704 123, 122, 121, 118, 117, 116, 111, 108, 49, 49,
705 99, 96, 87, 86, 85, 77, 69, 54, 574, 3,
706 574, 574, 574, 574, 574, 574, 574, 574, 574, 574,
708 574, 574, 574, 574, 574, 574, 574, 574, 574, 574,
709 574, 574, 574, 574, 574, 574, 574, 574, 574, 574,
710 574, 574, 574, 574, 574, 574, 574, 574, 574, 574,
711 574, 574, 574, 574, 574, 574, 574, 574, 574, 574,
715 static yyconst flex_int16_t yy_chk[842] =
717 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
718 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
719 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
720 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
721 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
722 1, 5, 5, 8, 17, 5, 9, 9, 19, 9,
723 15, 15, 19, 17, 22, 23, 19, 23, 26, 26,
724 22, 8, 5, 18, 43, 43, 18, 9, 14, 14,
725 14, 14, 14, 14, 14, 14, 14, 14, 24, 24,
726 18, 20, 20, 20, 20, 27, 24, 20, 28, 27,
728 32, 44, 33, 20, 32, 33, 37, 35, 28, 35,
729 52, 52, 40, 40, 28, 33, 40, 33, 33, 44,
730 53, 55, 33, 37, 47, 47, 59, 47, 55, 57,
731 63, 83, 59, 40, 46, 46, 46, 57, 439, 76,
732 63, 53, 76, 439, 90, 47, 46, 46, 46, 46,
733 46, 46, 46, 46, 46, 46, 86, 89, 107, 90,
734 86, 90, 139, 83, 102, 102, 89, 330, 156, 580,
735 363, 330, 156, 89, 363, 89, 579, 139, 156, 107,
736 571, 46, 50, 50, 50, 50, 50, 50, 50, 50,
737 50, 51, 51, 51, 51, 51, 51, 51, 51, 51,
739 104, 570, 569, 199, 567, 566, 565, 564, 104, 104,
740 104, 104, 104, 104, 104, 104, 104, 104, 104, 199,
741 104, 104, 104, 104, 104, 104, 105, 105, 105, 105,
742 105, 105, 105, 105, 105, 106, 106, 106, 106, 106,
743 106, 106, 106, 106, 166, 166, 166, 166, 166, 166,
744 166, 166, 166, 166, 560, 558, 166, 166, 166, 166,
745 166, 166, 167, 167, 167, 167, 167, 167, 167, 167,
746 167, 168, 168, 168, 168, 168, 168, 168, 168, 168,
747 227, 357, 365, 373, 484, 556, 555, 365, 554, 552,
748 365, 549, 548, 547, 546, 357, 484, 373, 227, 228,
750 228, 228, 228, 228, 228, 228, 228, 228, 229, 229,
751 229, 229, 229, 229, 229, 229, 229, 247, 247, 247,
752 247, 247, 247, 247, 247, 275, 275, 275, 275, 275,
753 275, 275, 275, 275, 276, 276, 276, 276, 276, 276,
754 276, 276, 276, 321, 321, 321, 321, 321, 321, 321,
755 321, 321, 322, 322, 322, 322, 322, 322, 322, 322,
756 322, 352, 352, 352, 352, 352, 352, 352, 352, 352,
757 379, 379, 379, 379, 379, 379, 379, 379, 379, 380,
758 415, 545, 544, 542, 541, 540, 539, 538, 537, 534,
759 533, 532, 531, 415, 529, 380, 528, 380, 575, 527,
761 526, 575, 576, 576, 525, 576, 577, 577, 577, 577,
762 578, 578, 578, 578, 523, 522, 521, 519, 518, 517,
763 516, 515, 514, 513, 512, 511, 510, 509, 508, 507,
764 506, 505, 504, 503, 502, 501, 498, 497, 496, 495,
765 493, 492, 490, 489, 488, 487, 486, 485, 483, 482,
766 481, 480, 479, 478, 476, 475, 474, 473, 472, 471,
767 470, 469, 468, 467, 466, 465, 464, 463, 462, 461,
768 460, 459, 458, 457, 456, 455, 454, 453, 451, 450,
769 449, 448, 447, 446, 445, 444, 443, 442, 441, 440,
770 438, 435, 434, 433, 432, 431, 430, 429, 428, 427,
772 426, 425, 423, 422, 421, 420, 419, 418, 417, 416,
773 414, 413, 412, 410, 409, 408, 407, 406, 404, 403,
774 402, 401, 400, 399, 396, 395, 394, 393, 392, 391,
775 389, 388, 387, 386, 385, 384, 383, 382, 381, 378,
776 376, 374, 372, 371, 370, 368, 367, 366, 364, 362,
777 361, 360, 359, 358, 354, 353, 349, 348, 347, 346,
778 345, 344, 343, 342, 341, 340, 339, 337, 336, 335,
779 333, 332, 331, 329, 328, 327, 326, 325, 324, 323,
780 320, 319, 318, 317, 315, 311, 310, 309, 308, 307,
781 306, 305, 304, 303, 301, 300, 299, 298, 288, 287,
783 286, 285, 284, 283, 281, 280, 279, 278, 277, 273,
784 272, 271, 270, 269, 268, 267, 265, 264, 263, 262,
785 261, 260, 258, 257, 255, 254, 253, 252, 251, 250,
786 249, 248, 246, 245, 244, 242, 241, 240, 238, 236,
787 235, 234, 233, 232, 230, 226, 225, 224, 222, 221,
788 220, 219, 218, 217, 216, 215, 214, 213, 212, 211,
789 210, 209, 208, 206, 204, 203, 202, 201, 200, 198,
790 196, 194, 193, 191, 190, 188, 185, 184, 183, 182,
791 179, 178, 177, 174, 173, 172, 171, 170, 169, 164,
792 163, 162, 161, 160, 159, 158, 157, 155, 154, 153,
794 152, 151, 150, 149, 148, 147, 146, 145, 144, 143,
795 142, 141, 140, 138, 137, 136, 134, 133, 132, 131,
796 130, 129, 128, 127, 126, 125, 124, 122, 121, 120,
797 119, 118, 117, 116, 115, 114, 113, 112, 111, 110,
798 109, 108, 101, 100, 99, 98, 97, 96, 95, 94,
799 93, 92, 91, 88, 87, 85, 84, 82, 81, 80,
800 79, 78, 77, 75, 73, 72, 71, 70, 68, 67,
801 66, 65, 64, 62, 61, 60, 56, 54, 48, 42,
802 36, 34, 31, 30, 29, 25, 21, 16, 3, 574,
803 574, 574, 574, 574, 574, 574, 574, 574, 574, 574,
805 574, 574, 574, 574, 574, 574, 574, 574, 574, 574,
806 574, 574, 574, 574, 574, 574, 574, 574, 574, 574,
807 574, 574, 574, 574, 574, 574, 574, 574, 574, 574,
808 574, 574, 574, 574, 574, 574, 574, 574, 574, 574,
812 static yy_state_type yy_last_accepting_state;
813 static char *yy_last_accepting_cpos;
815 extern int yy_flex_debug;
816 int yy_flex_debug = 0;
818 /* The intent behind this definition is that it'll catch
819 * any uses of REJECT which flex missed.
821 #define REJECT reject_used_but_not_detected
822 #define yymore() yymore_used_but_not_detected
823 #define YY_MORE_ADJ 0
824 #define YY_RESTORE_YY_MORE_OFFSET
828 * Copyright (C)1996-1997,1999 Ian Jackson
830 * This is free software; you can redistribute it and/or modify it
831 * under the terms of the GNU General Public License as published by
832 * the Free Software Foundation; either version 2 of the License, or
833 * (at your option) any later version.
835 * This program is distributed in the hope that it will be useful, but
836 * WITHOUT ANY WARRANTY; without even the implied warranty of
837 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
838 * General Public License for more details.
840 * You should have received a copy of the GNU General Public License
841 * along with userv; if not, write to the Free Software
842 * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
862 #include <sys/types.h>
863 #include <sys/stat.h>
876 typedef int directive_fnt(int dtoken);
877 static directive_fnt df_reject, df_execute, df_executefrompath;
878 static directive_fnt df_executefromdirectory, df_executebuiltin;
879 static directive_fnt df_errorstostderr, df_errorstosyslog, df_errorstofile;
880 static directive_fnt dfg_fdwant, dfg_setflag;
881 static directive_fnt df_reset, df_cd, df_userrcfile, df_include;
882 static directive_fnt df_includelookup, df_includedirectory;
883 static directive_fnt df_message, df_error, df_quit, df_eof;
884 static directive_fnt df_if, df_catchquit, df_errorspush;
885 static directive_fnt dfi_includeuserrcfile, dfi_includeclientconfig;
886 /* directive functions return:
887 * 0 for success having scanned up to and including end of line but not beyond,
888 * or tokv_error or tokv_quit.
889 * They expect to parse the whitespace before their parameters (if any).
892 typedef int parmcondition_fnt(int ctoken, char *const *parmvalues, int *rtrue);
893 static parmcondition_fnt pcf_glob, pcf_range, pcf_grep;
894 /* all conditional functions return tokv_error for failure or 0 for success
895 * at parsing and testing, in which case *rtrue is set to 0 or 1.
896 * On success they have scanned up to and including the condition's
897 * terminating newline; the pcf_... functions expect to parse the whitespace
898 * between the parameter name and the condition's arguments.
899 * Otherwise they return tokv_error.
900 * The parameter-based conditionals take a list of parameter values
901 * as obtained from the parameter functions and pa_parameter,
902 * and do _not_ free it.
905 typedef int parameter_fnt(int ptoken, char ***rvalues);
906 static parameter_fnt pf_service;
907 static parameter_fnt pf_callinguser, pf_serviceuser;
908 static parameter_fnt pf_callinggroup, pf_servicegroup;
909 static parameter_fnt pf_callingusershell, pf_serviceusershell;
910 /* Parameter functions return tokv_error or 0 for success at parsing
911 * and determining the value, in which case *rvalues is made to be
912 * a mallocd null-terminated array of pointers to mallocd strings.
913 * freeparm can be used to free such an array.
916 typedef int builtinserviceparse_fnt(char ***rnewargs);
917 static builtinserviceparse_fnt bispa_none, bispa_parameter;
918 /* These parse the arguments to a builtin service, including the
919 * newline at the end of the line. *rnewargs will initially be
920 * null, indicating that no arguments are to be set; the function
921 * may store a mallocd array of mallocd strings in it,
922 * containing the arguments it wishes to have set (null-pointer
926 static int yylex(void);
927 /* Returns a token (which may be an eof or error exception) */
929 static directive_fnt *lr_dir;
930 static parmcondition_fnt *lr_parmcond;
931 static builtinserviceparse_fnt *lr_bispa;
932 static builtinserviceexec_fnt *lr_bisexec;
933 static parameter_fnt *lr_parameter;
934 static int lr_loglevel, lr_logfacility, lr_min, lr_max, *lr_flag;
935 static int lr_flagval, lr_controlend;
936 static int lr_fdwant_readwrite; /* -1=never, 0=opt, 1=always */
938 /* Forward declarations of things used in lexer and parser */
940 struct parser_state {
941 int lineno, reportlineno, notedreferer, isinternal;
942 const char *filename;
943 struct stat filestab;
944 YY_BUFFER_STATE ybuf;
945 struct parser_state *upstate;
948 static struct parser_state *cstate;
950 struct error_handling {
951 int handling; /* One of the error handling modes tokt_ehandlemode */
952 int logfacility, loglevel;
953 int filekeep; /* File is in use by higher-level errors-push, leave it open */
958 static struct error_handling eh = { tokv_word_errorstostderr, 0,0,0,0,0 };
960 static int dequote(char *inplace);
961 static void countnewlines(void);
969 #ifndef YY_NO_UNISTD_H
970 /* Special case for "unistd.h", since it is non-ANSI. We include it way
971 * down here because we want the user's section 1 to have been scanned first.
972 * The user has a chance to override it with an option.
977 #ifndef YY_EXTRA_TYPE
978 #define YY_EXTRA_TYPE void *
981 static int yy_init_globals (void );
983 /* Accessor methods to globals.
984 These are made visible to non-reentrant scanners for convenience. */
986 int yylex_destroy (void );
988 int yyget_debug (void );
990 void yyset_debug (int debug_flag );
992 YY_EXTRA_TYPE yyget_extra (void );
994 void yyset_extra (YY_EXTRA_TYPE user_defined );
996 FILE *yyget_in (void );
998 void yyset_in (FILE * _in_str );
1000 FILE *yyget_out (void );
1002 void yyset_out (FILE * _out_str );
1004 int yyget_leng (void );
1006 char *yyget_text (void );
1008 int yyget_lineno (void );
1010 void yyset_lineno (int _line_number );
1012 /* Macros after this point can all be overridden by user definitions in
1016 #ifndef YY_SKIP_YYWRAP
1018 extern "C" int yywrap (void );
1020 extern int yywrap (void );
1026 static void yyunput (int c,char *buf_ptr );
1031 static void yy_flex_strncpy (char *,yyconst char *,int );
1034 #ifdef YY_NEED_STRLEN
1035 static int yy_flex_strlen (yyconst char * );
1041 static int yyinput (void );
1043 static int input (void );
1048 /* Amount of stuff to slurp up with each read. */
1049 #ifndef YY_READ_BUF_SIZE
1051 /* On IA-64, the buffer size is 16k, not 8k */
1052 #define YY_READ_BUF_SIZE 16384
1054 #define YY_READ_BUF_SIZE 8192
1055 #endif /* __ia64__ */
1058 /* Copy whatever the last rule matched to the standard output. */
1060 /* This used to be an fputs(), but since the string might contain NUL's,
1061 * we now use fwrite().
1063 #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
1066 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1067 * is returned in "result".
1070 #define YY_INPUT(buf,result,max_size) \
1071 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1075 for ( n = 0; n < max_size && \
1076 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1077 buf[n] = (char) c; \
1079 buf[n++] = (char) c; \
1080 if ( c == EOF && ferror( yyin ) ) \
1081 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1087 while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
1089 if( errno != EINTR) \
1091 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1102 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1103 * we don't want an extra ';' after the "return" because that will cause
1104 * some compilers to complain about unreachable statements.
1107 #define yyterminate() return YY_NULL
1110 /* Number of entries by which start-condition stack grows. */
1111 #ifndef YY_START_STACK_INCR
1112 #define YY_START_STACK_INCR 25
1115 /* Report a fatal error. */
1116 #ifndef YY_FATAL_ERROR
1117 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1120 /* end tables serialization structures and prototypes */
1122 /* Default declaration of generated scanner - a define so the user can
1123 * easily add parameters.
1126 #define YY_DECL_IS_OURS 1
1128 extern int yylex (void);
1130 #define YY_DECL int yylex (void)
1131 #endif /* !YY_DECL */
1133 /* Code executed at the beginning of each rule, after yytext and yyleng
1136 #ifndef YY_USER_ACTION
1137 #define YY_USER_ACTION
1140 /* Code executed at the end of each rule. */
1142 #define YY_BREAK /*LINTED*/break;
1145 #define YY_RULE_SETUP \
1148 /** The main scanner function which does all the work.
1152 yy_state_type yy_current_state;
1153 char *yy_cp, *yy_bp;
1165 (yy_start) = 1; /* first start state */
1173 if ( ! YY_CURRENT_BUFFER ) {
1174 yyensure_buffer_stack ();
1175 YY_CURRENT_BUFFER_LVALUE =
1176 yy_create_buffer(yyin,YY_BUF_SIZE );
1179 yy_load_buffer_state( );
1186 #line 1187 "<stdout>"
1188 while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
1190 yy_cp = (yy_c_buf_p);
1192 /* Support of yytext. */
1193 *yy_cp = (yy_hold_char);
1195 /* yy_bp points to the position in yy_ch_buf of the start of
1200 yy_current_state = (yy_start);
1204 YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
1205 if ( yy_accept[yy_current_state] )
1207 (yy_last_accepting_state) = yy_current_state;
1208 (yy_last_accepting_cpos) = yy_cp;
1210 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1212 yy_current_state = (int) yy_def[yy_current_state];
1213 if ( yy_current_state >= 575 )
1214 yy_c = yy_meta[(unsigned int) yy_c];
1216 yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
1219 while ( yy_base[yy_current_state] != 790 );
1222 yy_act = yy_accept[yy_current_state];
1224 { /* have to back up */
1225 yy_cp = (yy_last_accepting_cpos);
1226 yy_current_state = (yy_last_accepting_state);
1227 yy_act = yy_accept[yy_current_state];
1230 YY_DO_BEFORE_ACTION;
1232 do_action: /* This label is used only to access EOF actions. */
1235 { /* beginning of action switch */
1236 case 0: /* must back up */
1237 /* undo the effects of YY_DO_BEFORE_ACTION */
1238 *yy_cp = (yy_hold_char);
1239 yy_cp = (yy_last_accepting_cpos);
1240 yy_current_state = (yy_last_accepting_state);
1241 goto yy_find_action;
1246 { lr_dir= df_reject; return tokv_word_reject; }
1251 { lr_dir= df_executefromdirectory; return tokv_word_executefromdirectory; }
1256 { lr_dir= df_executefrompath; return tokv_word_executefrompath; }
1261 { lr_dir= df_executebuiltin; return tokv_word_executebuiltin; }
1266 { lr_dir= df_errorstostderr; return tokv_word_errorstostderr; }
1271 { lr_dir= df_errorstosyslog; return tokv_word_errorstosyslog; }
1276 { lr_dir= df_errorstofile; return tokv_word_errorstofile; }
1281 { lr_dir= dfg_fdwant; lr_fdwant_readwrite=1; return tokv_word_requirefd; }
1286 { lr_dir= dfg_fdwant; lr_fdwant_readwrite=0; return tokv_word_allowfd; }
1291 { lr_dir= dfg_fdwant; lr_fdwant_readwrite=0; return tokv_word_nullfd; }
1296 { lr_dir= dfg_fdwant; lr_fdwant_readwrite=-1; return tokv_word_rejectfd; }
1301 { lr_dir= dfg_fdwant; lr_fdwant_readwrite=-1; return tokv_word_ignorefd; }
1306 { lr_dir= dfg_setflag; lr_flag= &setenvironment; lr_flagval= 1; return tokv_word_setenvironment; }
1311 { lr_dir= dfg_setflag; lr_flag= &setenvironment; lr_flagval= 0; return tokv_word_nosetenvironment; }
1316 { lr_dir= dfg_setflag; lr_flag= &suppressargs; lr_flagval= 1; return tokv_word_suppressargs; }
1321 { lr_dir= dfg_setflag; lr_flag= &suppressargs; lr_flagval= 0; return tokv_word_nosuppressargs; }
1326 { lr_dir= dfg_setflag; lr_flag= &disconnecthup; lr_flagval= 1; return tokv_word_disconnecthup; }
1331 { lr_dir= dfg_setflag; lr_flag= &disconnecthup; lr_flagval= 0; return tokv_word_nodisconnecthup; }
1336 { lr_dir= df_cd; return tokv_word_cd; }
1341 { lr_dir= df_userrcfile; return tokv_word_userrcfile; }
1346 { lr_dir= df_include; return tokv_word_include; }
1351 { lr_dir= df_include; return tokv_word_includeifexist; }
1356 { lr_dir= df_includelookup; return tokv_word_includelookup; }
1361 { lr_dir= df_includelookup; return tokv_word_includelookupall; }
1366 { lr_dir= df_includedirectory; return tokv_word_includedirectory; }
1371 { lr_dir= df_message; return tokv_word_message; }
1376 { lr_dir= df_include; return tokv_word_includesysconfig; }
1381 { lr_dir= dfi_includeuserrcfile; return tokv_word_includeuserrcfile; }
1386 { lr_dir= dfi_includeclientconfig; return tokv_word_includeclientconfig; }
1391 { lr_dir= df_quit; return tokv_word_quit; }
1396 { lr_dir= df_eof; return tokv_word_eof; }
1401 { lr_dir= df_if; return tokv_word_if; }
1406 { lr_dir= df_catchquit; return tokv_word_catchquit; }
1411 { lr_dir= df_errorspush; return tokv_word_errorspush; }
1416 { lr_controlend= tokv_word_if; return tokv_word_elif; }
1421 { lr_controlend= tokv_word_if; return tokv_word_else; }
1426 { lr_controlend= tokv_word_if; return tokv_word_fi; }
1431 { lr_controlend= tokv_word_catchquit; return tokv_word_hctac; }
1436 { lr_controlend= tokv_word_errorspush; return tokv_word_srorre; }
1441 { lr_parmcond= pcf_glob; return tokv_word_glob; }
1446 { lr_parmcond= pcf_range; return tokv_word_range; }
1451 { lr_parmcond= pcf_grep; return tokv_word_grep; }
1456 { lr_bispa= bispa_none; lr_bisexec= bisexec_environment; return tokv_word_environment; }
1461 { lr_bispa= bispa_parameter; lr_bisexec= bisexec_parameter; return tokv_word_parameter; }
1466 { lr_bispa= bispa_none; lr_bisexec= bisexec_version; return tokv_word_version; }
1471 { lr_bispa= bispa_none; lr_bisexec= bisexec_toplevel; return tokv_word_toplevel; }
1476 { lr_bispa= bispa_none; lr_bisexec= bisexec_override; return tokv_word_override; }
1481 { lr_bispa= bispa_none; lr_bisexec= bisexec_shutdown; return tokv_word_shutdown; }
1486 { lr_bispa= bispa_none; lr_bisexec= bisexec_reset; lr_dir= df_reset; return tokv_word_reset; }
1491 { lr_bispa= bispa_none; lr_bisexec= bisexec_execute; lr_dir= df_execute; return tokv_word_execute; }
1496 { lr_bispa= bispa_none; lr_bisexec= bisexec_help; return tokv_word_help; }
1501 { lr_parameter= pf_service; return tokv_word_service; }
1506 { lr_parameter= pf_callinguser; return tokv_word_callinguser; }
1511 { lr_parameter= pf_callinggroup; return tokv_word_callinggroup; }
1516 { lr_parameter= pf_callingusershell; return tokv_word_callingusershell; }
1521 { lr_parameter= pf_serviceuser; return tokv_word_serviceuser; }
1526 { lr_parameter= pf_servicegroup; return tokv_word_servicegroup; }
1531 { lr_parameter= pf_serviceusershell; return tokv_word_serviceusershell; }
1536 { lr_loglevel= LOG_DEBUG; return tokv_syslog_debug; }
1541 { lr_loglevel= LOG_INFO; return tokv_syslog_info; }
1546 { lr_loglevel= LOG_NOTICE; return tokv_syslog_notice; }
1551 { lr_loglevel= LOG_WARNING; return tokv_syslog_warning; }
1556 { lr_loglevel= LOG_ERR; return tokv_syslog_err; }
1561 { lr_loglevel= LOG_CRIT; return tokv_syslog_crit; }
1566 { lr_loglevel= LOG_ALERT; return tokv_syslog_alert; }
1571 { lr_loglevel= LOG_EMERG; return tokv_syslog_emerg; }
1576 { lr_logfacility= LOG_AUTHPRIV; return tokv_syslog_authpriv; }
1581 { lr_logfacility= LOG_CRON; return tokv_syslog_cron; }
1586 { lr_logfacility= LOG_DAEMON; return tokv_syslog_daemon; }
1591 { lr_logfacility= LOG_KERN; return tokv_syslog_kern; }
1596 { lr_logfacility= LOG_LPR; return tokv_syslog_lpr; }
1601 { lr_logfacility= LOG_MAIL; return tokv_syslog_mail; }
1606 { lr_logfacility= LOG_NEWS; return tokv_syslog_news; }
1611 { lr_logfacility= LOG_SYSLOG; return tokv_syslog_syslog; }
1616 { lr_logfacility= LOG_USER; return tokv_syslog_user; }
1621 { lr_logfacility= LOG_UUCP; return tokv_syslog_uucp; }
1626 { lr_logfacility= LOG_LOCAL0; return tokv_syslog_local0; }
1631 { lr_logfacility= LOG_LOCAL1; return tokv_syslog_local1; }
1636 { lr_logfacility= LOG_LOCAL2; return tokv_syslog_local2; }
1641 { lr_logfacility= LOG_LOCAL3; return tokv_syslog_local3; }
1646 { lr_logfacility= LOG_LOCAL4; return tokv_syslog_local4; }
1651 { lr_logfacility= LOG_LOCAL5; return tokv_syslog_local5; }
1656 { lr_logfacility= LOG_LOCAL6; return tokv_syslog_local6; }
1661 { lr_logfacility= LOG_LOCAL7; return tokv_syslog_local7; }
1666 { return tokv_word_read; }
1671 { return tokv_word_write; }
1676 { return tokv_dollar; }
1681 { lr_max= lr_min= 0; return tokv_word_stdin; }
1686 { lr_max= lr_min= 1; return tokv_word_stdout; }
1691 { lr_max= lr_min= 2; return tokv_word_stderr; }
1696 { return tokv_openparen; }
1701 { return tokv_closeparen; }
1706 { return tokv_not; }
1711 { return tokv_and; }
1721 { lr_dir= df_error; lr_loglevel= LOG_ERR; return tokv_word_error; }
1728 lr_min=lr_max= (int)strtoul(yytext,&ep,10);
1730 return tokv_ordinal;
1738 lr_min= (int)strtoul(yytext,&ep,10);
1739 assert(*ep == HYPHEN);
1741 lr_max= (int)strtoul(ep,&ep,10);
1743 if (lr_max < lr_min)
1744 return parseerrprint("fd range has min > max");
1745 return tokv_fdrange;
1753 lr_min= (int)strtoul(yytext,&ep,10);
1754 assert(*ep == HYPHEN);
1757 return tokv_fdstoend;
1761 /* rule 100 can match eol */
1764 countnewlines(); return tokv_lwsp;
1772 /* rule 102 can match eol */
1775 cstate->lineno++; return tokv_newline;
1778 /* rule 103 can match eol */
1781 cstate->lineno++; return tokv_newline;
1786 return parseerrprint("missing newline at eof after comment");
1789 /* rule 105 can match eol */
1794 return dequote(yytext);
1800 return tokv_barestring;
1802 case YY_STATE_EOF(INITIAL):
1809 return parseerrprint("misquoted or unterminated string");
1814 return parseerrprint("unexpected backslash");
1819 abort(); /* expect lex warning "rule cannot be matched" */
1826 #line 1827 "<stdout>"
1828 case YY_END_OF_BUFFER:
1830 /* Amount of text matched not including the EOB char. */
1831 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
1833 /* Undo the effects of YY_DO_BEFORE_ACTION. */
1834 *yy_cp = (yy_hold_char);
1835 YY_RESTORE_YY_MORE_OFFSET
1837 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
1839 /* We're scanning a new file or input source. It's
1840 * possible that this happened because the user
1841 * just pointed yyin at a new source and called
1842 * yylex(). If so, then we have to assure
1843 * consistency between YY_CURRENT_BUFFER and our
1844 * globals. Here is the right place to do so, because
1845 * this is the first action (other than possibly a
1846 * back-up) that will match for the new input source.
1848 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1849 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
1850 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
1853 /* Note that here we test for yy_c_buf_p "<=" to the position
1854 * of the first EOB in the buffer, since yy_c_buf_p will
1855 * already have been incremented past the NUL character
1856 * (since all states make transitions on EOB to the
1857 * end-of-buffer state). Contrast this with the test
1860 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
1861 { /* This was really a NUL. */
1862 yy_state_type yy_next_state;
1864 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
1866 yy_current_state = yy_get_previous_state( );
1868 /* Okay, we're now positioned to make the NUL
1869 * transition. We couldn't have
1870 * yy_get_previous_state() go ahead and do it
1871 * for us because it doesn't know how to deal
1872 * with the possibility of jamming (and we don't
1873 * want to build jamming into it because then it
1874 * will run more slowly).
1877 yy_next_state = yy_try_NUL_trans( yy_current_state );
1879 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1881 if ( yy_next_state )
1883 /* Consume the NUL. */
1884 yy_cp = ++(yy_c_buf_p);
1885 yy_current_state = yy_next_state;
1891 yy_cp = (yy_c_buf_p);
1892 goto yy_find_action;
1896 else switch ( yy_get_next_buffer( ) )
1898 case EOB_ACT_END_OF_FILE:
1900 (yy_did_buffer_switch_on_eof) = 0;
1904 /* Note: because we've taken care in
1905 * yy_get_next_buffer() to have set up
1906 * yytext, we can now set up
1907 * yy_c_buf_p so that if some total
1908 * hoser (like flex itself) wants to
1909 * call the scanner after we return the
1910 * YY_NULL, it'll still work - another
1911 * YY_NULL will get returned.
1913 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
1915 yy_act = YY_STATE_EOF(YY_START);
1921 if ( ! (yy_did_buffer_switch_on_eof) )
1927 case EOB_ACT_CONTINUE_SCAN:
1929 (yytext_ptr) + yy_amount_of_matched_text;
1931 yy_current_state = yy_get_previous_state( );
1933 yy_cp = (yy_c_buf_p);
1934 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1937 case EOB_ACT_LAST_MATCH:
1939 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
1941 yy_current_state = yy_get_previous_state( );
1943 yy_cp = (yy_c_buf_p);
1944 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1945 goto yy_find_action;
1952 "fatal flex scanner internal error--no action found" );
1953 } /* end of action switch */
1954 } /* end of scanning one token */
1955 } /* end of user's declarations */
1956 } /* end of yylex */
1958 /* yy_get_next_buffer - try to read in a new buffer
1960 * Returns a code representing an action:
1961 * EOB_ACT_LAST_MATCH -
1962 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1963 * EOB_ACT_END_OF_FILE - end of file
1965 static int yy_get_next_buffer (void)
1967 char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
1968 char *source = (yytext_ptr);
1969 int number_to_move, i;
1972 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
1974 "fatal flex scanner internal error--end of buffer missed" );
1976 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
1977 { /* Don't try to fill the buffer, so this is an EOF. */
1978 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
1980 /* We matched a single character, the EOB, so
1981 * treat this as a final EOF.
1983 return EOB_ACT_END_OF_FILE;
1988 /* We matched some text prior to the EOB, first
1991 return EOB_ACT_LAST_MATCH;
1995 /* Try to read more data. */
1997 /* First move last chars to start of buffer. */
1998 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
2000 for ( i = 0; i < number_to_move; ++i )
2001 *(dest++) = *(source++);
2003 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2004 /* don't do the read, it's not guaranteed to return an EOF,
2007 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
2012 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
2014 while ( num_to_read <= 0 )
2015 { /* Not enough room in the buffer - grow it. */
2017 /* just a shorter name for the current buffer */
2018 YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
2020 int yy_c_buf_p_offset =
2021 (int) ((yy_c_buf_p) - b->yy_ch_buf);
2023 if ( b->yy_is_our_buffer )
2025 int new_size = b->yy_buf_size * 2;
2027 if ( new_size <= 0 )
2028 b->yy_buf_size += b->yy_buf_size / 8;
2030 b->yy_buf_size *= 2;
2032 b->yy_ch_buf = (char *)
2033 /* Include room in for 2 EOB chars. */
2034 yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
2037 /* Can't grow it, we don't own it. */
2038 b->yy_ch_buf = NULL;
2040 if ( ! b->yy_ch_buf )
2042 "fatal error - scanner input buffer overflow" );
2044 (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
2046 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
2051 if ( num_to_read > YY_READ_BUF_SIZE )
2052 num_to_read = YY_READ_BUF_SIZE;
2054 /* Read in more data. */
2055 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
2056 (yy_n_chars), num_to_read );
2058 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2061 if ( (yy_n_chars) == 0 )
2063 if ( number_to_move == YY_MORE_ADJ )
2065 ret_val = EOB_ACT_END_OF_FILE;
2071 ret_val = EOB_ACT_LAST_MATCH;
2072 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
2073 YY_BUFFER_EOF_PENDING;
2078 ret_val = EOB_ACT_CONTINUE_SCAN;
2080 if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
2081 /* Extend the array by 50%, plus the number we really need. */
2082 int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
2083 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
2084 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2085 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
2088 (yy_n_chars) += number_to_move;
2089 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
2090 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
2092 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
2097 /* yy_get_previous_state - get the state just before the EOB char was reached */
2099 static yy_state_type yy_get_previous_state (void)
2101 yy_state_type yy_current_state;
2104 yy_current_state = (yy_start);
2106 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
2108 YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2109 if ( yy_accept[yy_current_state] )
2111 (yy_last_accepting_state) = yy_current_state;
2112 (yy_last_accepting_cpos) = yy_cp;
2114 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2116 yy_current_state = (int) yy_def[yy_current_state];
2117 if ( yy_current_state >= 575 )
2118 yy_c = yy_meta[(unsigned int) yy_c];
2120 yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
2123 return yy_current_state;
2126 /* yy_try_NUL_trans - try to make a transition on the NUL character
2129 * next_state = yy_try_NUL_trans( current_state );
2131 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
2134 char *yy_cp = (yy_c_buf_p);
2137 if ( yy_accept[yy_current_state] )
2139 (yy_last_accepting_state) = yy_current_state;
2140 (yy_last_accepting_cpos) = yy_cp;
2142 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2144 yy_current_state = (int) yy_def[yy_current_state];
2145 if ( yy_current_state >= 575 )
2146 yy_c = yy_meta[(unsigned int) yy_c];
2148 yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
2149 yy_is_jam = (yy_current_state == 574);
2151 return yy_is_jam ? 0 : yy_current_state;
2156 static void yyunput (int c, char * yy_bp )
2160 yy_cp = (yy_c_buf_p);
2162 /* undo effects of setting up yytext */
2163 *yy_cp = (yy_hold_char);
2165 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2166 { /* need to shift things up to make room */
2167 /* +2 for EOB chars. */
2168 int number_to_move = (yy_n_chars) + 2;
2169 char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
2170 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
2172 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
2174 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2175 *--dest = *--source;
2177 yy_cp += (int) (dest - source);
2178 yy_bp += (int) (dest - source);
2179 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
2180 (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
2182 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2183 YY_FATAL_ERROR( "flex scanner push-back overflow" );
2186 *--yy_cp = (char) c;
2188 (yytext_ptr) = yy_bp;
2189 (yy_hold_char) = *yy_cp;
2190 (yy_c_buf_p) = yy_cp;
2197 static int yyinput (void)
2199 static int input (void)
2205 *(yy_c_buf_p) = (yy_hold_char);
2207 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
2209 /* yy_c_buf_p now points to the character we want to return.
2210 * If this occurs *before* the EOB characters, then it's a
2211 * valid NUL; if not, then we've hit the end of the buffer.
2213 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
2214 /* This was really a NUL. */
2215 *(yy_c_buf_p) = '\0';
2218 { /* need more input */
2219 int offset = (yy_c_buf_p) - (yytext_ptr);
2222 switch ( yy_get_next_buffer( ) )
2224 case EOB_ACT_LAST_MATCH:
2225 /* This happens because yy_g_n_b()
2226 * sees that we've accumulated a
2227 * token and flags that we need to
2228 * try matching the token before
2229 * proceeding. But for input(),
2230 * there's no matching to consider.
2231 * So convert the EOB_ACT_LAST_MATCH
2232 * to EOB_ACT_END_OF_FILE.
2235 /* Reset buffer status. */
2240 case EOB_ACT_END_OF_FILE:
2245 if ( ! (yy_did_buffer_switch_on_eof) )
2254 case EOB_ACT_CONTINUE_SCAN:
2255 (yy_c_buf_p) = (yytext_ptr) + offset;
2261 c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
2262 *(yy_c_buf_p) = '\0'; /* preserve yytext */
2263 (yy_hold_char) = *++(yy_c_buf_p);
2267 #endif /* ifndef YY_NO_INPUT */
2269 /** Immediately switch to a different input stream.
2270 * @param input_file A readable stream.
2272 * @note This function does not reset the start condition to @c INITIAL .
2274 void yyrestart (FILE * input_file )
2277 if ( ! YY_CURRENT_BUFFER ){
2278 yyensure_buffer_stack ();
2279 YY_CURRENT_BUFFER_LVALUE =
2280 yy_create_buffer(yyin,YY_BUF_SIZE );
2283 yy_init_buffer(YY_CURRENT_BUFFER,input_file );
2284 yy_load_buffer_state( );
2287 /** Switch to a different input buffer.
2288 * @param new_buffer The new input buffer.
2291 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer )
2294 /* TODO. We should be able to replace this entire function body
2296 * yypop_buffer_state();
2297 * yypush_buffer_state(new_buffer);
2299 yyensure_buffer_stack ();
2300 if ( YY_CURRENT_BUFFER == new_buffer )
2303 if ( YY_CURRENT_BUFFER )
2305 /* Flush out information for old buffer. */
2306 *(yy_c_buf_p) = (yy_hold_char);
2307 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
2308 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2311 YY_CURRENT_BUFFER_LVALUE = new_buffer;
2312 yy_load_buffer_state( );
2314 /* We don't actually know whether we did this switch during
2315 * EOF (yywrap()) processing, but the only time this flag
2316 * is looked at is after yywrap() is called, so it's safe
2317 * to go ahead and always set it.
2319 (yy_did_buffer_switch_on_eof) = 1;
2322 static void yy_load_buffer_state (void)
2324 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2325 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
2326 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
2327 (yy_hold_char) = *(yy_c_buf_p);
2330 /** Allocate and initialize an input buffer state.
2331 * @param file A readable stream.
2332 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2334 * @return the allocated buffer state.
2336 YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
2340 b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
2342 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2344 b->yy_buf_size = (yy_size_t)size;
2346 /* yy_ch_buf has to be 2 characters longer than the size given because
2347 * we need to put in 2 end-of-buffer characters.
2349 b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 );
2350 if ( ! b->yy_ch_buf )
2351 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2353 b->yy_is_our_buffer = 1;
2355 yy_init_buffer(b,file );
2360 /** Destroy the buffer.
2361 * @param b a buffer created with yy_create_buffer()
2364 void yy_delete_buffer (YY_BUFFER_STATE b )
2370 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
2371 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
2373 if ( b->yy_is_our_buffer )
2374 yyfree((void *) b->yy_ch_buf );
2376 yyfree((void *) b );
2379 /* Initializes or reinitializes a buffer.
2380 * This function is sometimes called more than once on the same buffer,
2381 * such as during a yyrestart() or at EOF.
2383 static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
2388 yy_flush_buffer(b );
2390 b->yy_input_file = file;
2391 b->yy_fill_buffer = 1;
2393 /* If b is the current buffer, then yy_init_buffer was _probably_
2394 * called from yyrestart() or through yy_get_next_buffer.
2395 * In that case, we don't want to reset the lineno or column.
2397 if (b != YY_CURRENT_BUFFER){
2398 b->yy_bs_lineno = 1;
2399 b->yy_bs_column = 0;
2402 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
2407 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2408 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2411 void yy_flush_buffer (YY_BUFFER_STATE b )
2418 /* We always need two end-of-buffer characters. The first causes
2419 * a transition to the end-of-buffer state. The second causes
2420 * a jam in that state.
2422 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2423 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2425 b->yy_buf_pos = &b->yy_ch_buf[0];
2428 b->yy_buffer_status = YY_BUFFER_NEW;
2430 if ( b == YY_CURRENT_BUFFER )
2431 yy_load_buffer_state( );
2434 /** Pushes the new state onto the stack. The new state becomes
2435 * the current state. This function will allocate the stack
2437 * @param new_buffer The new state.
2440 void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
2442 if (new_buffer == NULL)
2445 yyensure_buffer_stack();
2447 /* This block is copied from yy_switch_to_buffer. */
2448 if ( YY_CURRENT_BUFFER )
2450 /* Flush out information for old buffer. */
2451 *(yy_c_buf_p) = (yy_hold_char);
2452 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
2453 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2456 /* Only push if top exists. Otherwise, replace top. */
2457 if (YY_CURRENT_BUFFER)
2458 (yy_buffer_stack_top)++;
2459 YY_CURRENT_BUFFER_LVALUE = new_buffer;
2461 /* copied from yy_switch_to_buffer. */
2462 yy_load_buffer_state( );
2463 (yy_did_buffer_switch_on_eof) = 1;
2466 /** Removes and deletes the top of the stack, if present.
2467 * The next element becomes the new top.
2470 void yypop_buffer_state (void)
2472 if (!YY_CURRENT_BUFFER)
2475 yy_delete_buffer(YY_CURRENT_BUFFER );
2476 YY_CURRENT_BUFFER_LVALUE = NULL;
2477 if ((yy_buffer_stack_top) > 0)
2478 --(yy_buffer_stack_top);
2480 if (YY_CURRENT_BUFFER) {
2481 yy_load_buffer_state( );
2482 (yy_did_buffer_switch_on_eof) = 1;
2486 /* Allocates the stack if it does not exist.
2487 * Guarantees space for at least one push.
2489 static void yyensure_buffer_stack (void)
2493 if (!(yy_buffer_stack)) {
2495 /* First allocation is just for 2 elements, since we don't know if this
2496 * scanner will even need a stack. We use 2 instead of 1 to avoid an
2497 * immediate realloc on the next call.
2499 num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
2500 (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
2501 (num_to_alloc * sizeof(struct yy_buffer_state*)
2503 if ( ! (yy_buffer_stack) )
2504 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
2506 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
2508 (yy_buffer_stack_max) = num_to_alloc;
2509 (yy_buffer_stack_top) = 0;
2513 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
2515 /* Increase the buffer to prepare for a possible push. */
2516 yy_size_t grow_size = 8 /* arbitrary grow size */;
2518 num_to_alloc = (yy_buffer_stack_max) + grow_size;
2519 (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
2521 num_to_alloc * sizeof(struct yy_buffer_state*)
2523 if ( ! (yy_buffer_stack) )
2524 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
2526 /* zero only the new slots.*/
2527 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
2528 (yy_buffer_stack_max) = num_to_alloc;
2532 /** Setup the input buffer state to scan directly from a user-specified character buffer.
2533 * @param base the character buffer
2534 * @param size the size in bytes of the character buffer
2536 * @return the newly allocated buffer state object.
2538 YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
2543 base[size-2] != YY_END_OF_BUFFER_CHAR ||
2544 base[size-1] != YY_END_OF_BUFFER_CHAR )
2545 /* They forgot to leave room for the EOB's. */
2548 b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
2550 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
2552 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
2553 b->yy_buf_pos = b->yy_ch_buf = base;
2554 b->yy_is_our_buffer = 0;
2555 b->yy_input_file = NULL;
2556 b->yy_n_chars = b->yy_buf_size;
2557 b->yy_is_interactive = 0;
2559 b->yy_fill_buffer = 0;
2560 b->yy_buffer_status = YY_BUFFER_NEW;
2562 yy_switch_to_buffer(b );
2567 /** Setup the input buffer state to scan a string. The next call to yylex() will
2568 * scan from a @e copy of @a str.
2569 * @param yystr a NUL-terminated string to scan
2571 * @return the newly allocated buffer state object.
2572 * @note If you want to scan bytes that may contain NUL values, then use
2573 * yy_scan_bytes() instead.
2575 YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
2578 return yy_scan_bytes(yystr,(int) strlen(yystr) );
2581 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
2582 * scan from a @e copy of @a bytes.
2583 * @param yybytes the byte buffer to scan
2584 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
2586 * @return the newly allocated buffer state object.
2588 YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len )
2595 /* Get memory for full buffer, including space for trailing EOB's. */
2596 n = (yy_size_t) (_yybytes_len + 2);
2597 buf = (char *) yyalloc(n );
2599 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
2601 for ( i = 0; i < _yybytes_len; ++i )
2602 buf[i] = yybytes[i];
2604 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
2606 b = yy_scan_buffer(buf,n );
2608 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
2610 /* It's okay to grow etc. this buffer, and we should throw it
2611 * away when we're done.
2613 b->yy_is_our_buffer = 1;
2618 #ifndef YY_EXIT_FAILURE
2619 #define YY_EXIT_FAILURE 2
2622 static void yynoreturn yy_fatal_error (yyconst char* msg )
2624 (void) fprintf( stderr, "%s\n", msg );
2625 exit( YY_EXIT_FAILURE );
2628 /* Redefine yyless() so it works in section 3 code. */
2634 /* Undo effects of setting up yytext. */ \
2635 int yyless_macro_arg = (n); \
2636 YY_LESS_LINENO(yyless_macro_arg);\
2637 yytext[yyleng] = (yy_hold_char); \
2638 (yy_c_buf_p) = yytext + yyless_macro_arg; \
2639 (yy_hold_char) = *(yy_c_buf_p); \
2640 *(yy_c_buf_p) = '\0'; \
2641 yyleng = yyless_macro_arg; \
2645 /* Accessor methods (get/set functions) to struct members. */
2647 /** Get the current line number.
2650 int yyget_lineno (void)
2656 /** Get the input stream.
2659 FILE *yyget_in (void)
2664 /** Get the output stream.
2667 FILE *yyget_out (void)
2672 /** Get the length of the current token.
2675 int yyget_leng (void)
2680 /** Get the current token.
2684 char *yyget_text (void)
2689 /** Set the current line number.
2690 * @param _line_number line number
2693 void yyset_lineno (int _line_number )
2696 yylineno = _line_number;
2699 /** Set the input stream. This does not discard the current
2701 * @param _in_str A readable stream.
2703 * @see yy_switch_to_buffer
2705 void yyset_in (FILE * _in_str )
2710 void yyset_out (FILE * _out_str )
2715 int yyget_debug (void)
2717 return yy_flex_debug;
2720 void yyset_debug (int _bdebug )
2722 yy_flex_debug = _bdebug ;
2725 static int yy_init_globals (void)
2727 /* Initialization is the same as for the non-reentrant scanner.
2728 * This function is called from yylex_destroy(), so don't allocate here.
2731 (yy_buffer_stack) = NULL;
2732 (yy_buffer_stack_top) = 0;
2733 (yy_buffer_stack_max) = 0;
2734 (yy_c_buf_p) = NULL;
2738 /* Defined in main.c */
2747 /* For future reference: Set errno on error, since we are called by
2753 /* yylex_destroy is for both reentrant and non-reentrant scanners. */
2754 int yylex_destroy (void)
2757 /* Pop the buffer stack, destroying each element. */
2758 while(YY_CURRENT_BUFFER){
2759 yy_delete_buffer(YY_CURRENT_BUFFER );
2760 YY_CURRENT_BUFFER_LVALUE = NULL;
2761 yypop_buffer_state();
2764 /* Destroy the stack itself. */
2765 yyfree((yy_buffer_stack) );
2766 (yy_buffer_stack) = NULL;
2768 /* Reset the globals. This is important in a non-reentrant scanner so the next time
2769 * yylex() is called, initialization will occur. */
2776 * Internal utility routines.
2780 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
2784 for ( i = 0; i < n; ++i )
2789 #ifdef YY_NEED_STRLEN
2790 static int yy_flex_strlen (yyconst char * s )
2793 for ( n = 0; s[n]; ++n )
2800 void *yyalloc (yy_size_t size )
2802 return malloc(size);
2805 void *yyrealloc (void * ptr, yy_size_t size )
2808 /* The cast to (char *) in the following accommodates both
2809 * implementations that use char* generic pointers, and those
2810 * that use void* generic pointers. It works with the latter
2811 * because both ANSI C and C++ allow castless assignment from
2812 * any pointer type to void*, and deal with argument conversions
2813 * as though doing an assignment.
2815 return realloc(ptr, size);
2818 void yyfree (void * ptr )
2820 free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
2823 #define YYTABLES_NAME "yytables"
2829 const char *const builtinservicehelpstrings[]= {
2831 "parameter <parameter>",