Annotation of embedaddon/strongswan/src/libstrongswan/settings/settings_lexer.c, revision 1.1

1.1     ! misho       1: #line 2 "settings/settings_lexer.c"
        !             2: 
        !             3: #line 4 "settings/settings_lexer.c"
        !             4: 
        !             5: #define  YY_INT_ALIGNED short int
        !             6: 
        !             7: /* A lexical scanner generated by flex */
        !             8: 
        !             9: /* %not-for-header */
        !            10: /* %if-c-only */
        !            11: /* %if-not-reentrant */
        !            12: /* %endif */
        !            13: /* %endif */
        !            14: /* %ok-for-header */
        !            15: 
        !            16: #define FLEX_SCANNER
        !            17: #define YY_FLEX_MAJOR_VERSION 2
        !            18: #define YY_FLEX_MINOR_VERSION 6
        !            19: #define YY_FLEX_SUBMINOR_VERSION 4
        !            20: #if YY_FLEX_SUBMINOR_VERSION > 0
        !            21: #define FLEX_BETA
        !            22: #endif
        !            23: 
        !            24: /* %if-c++-only */
        !            25: /* %endif */
        !            26: 
        !            27: /* %if-c-only */
        !            28: #ifdef yy_create_buffer
        !            29: #define settings_parser__create_buffer_ALREADY_DEFINED
        !            30: #else
        !            31: #define yy_create_buffer settings_parser__create_buffer
        !            32: #endif
        !            33: 
        !            34: #ifdef yy_delete_buffer
        !            35: #define settings_parser__delete_buffer_ALREADY_DEFINED
        !            36: #else
        !            37: #define yy_delete_buffer settings_parser__delete_buffer
        !            38: #endif
        !            39: 
        !            40: #ifdef yy_scan_buffer
        !            41: #define settings_parser__scan_buffer_ALREADY_DEFINED
        !            42: #else
        !            43: #define yy_scan_buffer settings_parser__scan_buffer
        !            44: #endif
        !            45: 
        !            46: #ifdef yy_scan_string
        !            47: #define settings_parser__scan_string_ALREADY_DEFINED
        !            48: #else
        !            49: #define yy_scan_string settings_parser__scan_string
        !            50: #endif
        !            51: 
        !            52: #ifdef yy_scan_bytes
        !            53: #define settings_parser__scan_bytes_ALREADY_DEFINED
        !            54: #else
        !            55: #define yy_scan_bytes settings_parser__scan_bytes
        !            56: #endif
        !            57: 
        !            58: #ifdef yy_init_buffer
        !            59: #define settings_parser__init_buffer_ALREADY_DEFINED
        !            60: #else
        !            61: #define yy_init_buffer settings_parser__init_buffer
        !            62: #endif
        !            63: 
        !            64: #ifdef yy_flush_buffer
        !            65: #define settings_parser__flush_buffer_ALREADY_DEFINED
        !            66: #else
        !            67: #define yy_flush_buffer settings_parser__flush_buffer
        !            68: #endif
        !            69: 
        !            70: #ifdef yy_load_buffer_state
        !            71: #define settings_parser__load_buffer_state_ALREADY_DEFINED
        !            72: #else
        !            73: #define yy_load_buffer_state settings_parser__load_buffer_state
        !            74: #endif
        !            75: 
        !            76: #ifdef yy_switch_to_buffer
        !            77: #define settings_parser__switch_to_buffer_ALREADY_DEFINED
        !            78: #else
        !            79: #define yy_switch_to_buffer settings_parser__switch_to_buffer
        !            80: #endif
        !            81: 
        !            82: #ifdef yypush_buffer_state
        !            83: #define settings_parser_push_buffer_state_ALREADY_DEFINED
        !            84: #else
        !            85: #define yypush_buffer_state settings_parser_push_buffer_state
        !            86: #endif
        !            87: 
        !            88: #ifdef yypop_buffer_state
        !            89: #define settings_parser_pop_buffer_state_ALREADY_DEFINED
        !            90: #else
        !            91: #define yypop_buffer_state settings_parser_pop_buffer_state
        !            92: #endif
        !            93: 
        !            94: #ifdef yyensure_buffer_stack
        !            95: #define settings_parser_ensure_buffer_stack_ALREADY_DEFINED
        !            96: #else
        !            97: #define yyensure_buffer_stack settings_parser_ensure_buffer_stack
        !            98: #endif
        !            99: 
        !           100: #ifdef yylex
        !           101: #define settings_parser_lex_ALREADY_DEFINED
        !           102: #else
        !           103: #define yylex settings_parser_lex
        !           104: #endif
        !           105: 
        !           106: #ifdef yyrestart
        !           107: #define settings_parser_restart_ALREADY_DEFINED
        !           108: #else
        !           109: #define yyrestart settings_parser_restart
        !           110: #endif
        !           111: 
        !           112: #ifdef yylex_init
        !           113: #define settings_parser_lex_init_ALREADY_DEFINED
        !           114: #else
        !           115: #define yylex_init settings_parser_lex_init
        !           116: #endif
        !           117: 
        !           118: #ifdef yylex_init_extra
        !           119: #define settings_parser_lex_init_extra_ALREADY_DEFINED
        !           120: #else
        !           121: #define yylex_init_extra settings_parser_lex_init_extra
        !           122: #endif
        !           123: 
        !           124: #ifdef yylex_destroy
        !           125: #define settings_parser_lex_destroy_ALREADY_DEFINED
        !           126: #else
        !           127: #define yylex_destroy settings_parser_lex_destroy
        !           128: #endif
        !           129: 
        !           130: #ifdef yyget_debug
        !           131: #define settings_parser_get_debug_ALREADY_DEFINED
        !           132: #else
        !           133: #define yyget_debug settings_parser_get_debug
        !           134: #endif
        !           135: 
        !           136: #ifdef yyset_debug
        !           137: #define settings_parser_set_debug_ALREADY_DEFINED
        !           138: #else
        !           139: #define yyset_debug settings_parser_set_debug
        !           140: #endif
        !           141: 
        !           142: #ifdef yyget_extra
        !           143: #define settings_parser_get_extra_ALREADY_DEFINED
        !           144: #else
        !           145: #define yyget_extra settings_parser_get_extra
        !           146: #endif
        !           147: 
        !           148: #ifdef yyset_extra
        !           149: #define settings_parser_set_extra_ALREADY_DEFINED
        !           150: #else
        !           151: #define yyset_extra settings_parser_set_extra
        !           152: #endif
        !           153: 
        !           154: #ifdef yyget_in
        !           155: #define settings_parser_get_in_ALREADY_DEFINED
        !           156: #else
        !           157: #define yyget_in settings_parser_get_in
        !           158: #endif
        !           159: 
        !           160: #ifdef yyset_in
        !           161: #define settings_parser_set_in_ALREADY_DEFINED
        !           162: #else
        !           163: #define yyset_in settings_parser_set_in
        !           164: #endif
        !           165: 
        !           166: #ifdef yyget_out
        !           167: #define settings_parser_get_out_ALREADY_DEFINED
        !           168: #else
        !           169: #define yyget_out settings_parser_get_out
        !           170: #endif
        !           171: 
        !           172: #ifdef yyset_out
        !           173: #define settings_parser_set_out_ALREADY_DEFINED
        !           174: #else
        !           175: #define yyset_out settings_parser_set_out
        !           176: #endif
        !           177: 
        !           178: #ifdef yyget_leng
        !           179: #define settings_parser_get_leng_ALREADY_DEFINED
        !           180: #else
        !           181: #define yyget_leng settings_parser_get_leng
        !           182: #endif
        !           183: 
        !           184: #ifdef yyget_text
        !           185: #define settings_parser_get_text_ALREADY_DEFINED
        !           186: #else
        !           187: #define yyget_text settings_parser_get_text
        !           188: #endif
        !           189: 
        !           190: #ifdef yyget_lineno
        !           191: #define settings_parser_get_lineno_ALREADY_DEFINED
        !           192: #else
        !           193: #define yyget_lineno settings_parser_get_lineno
        !           194: #endif
        !           195: 
        !           196: #ifdef yyset_lineno
        !           197: #define settings_parser_set_lineno_ALREADY_DEFINED
        !           198: #else
        !           199: #define yyset_lineno settings_parser_set_lineno
        !           200: #endif
        !           201: 
        !           202: #ifdef yyget_column
        !           203: #define settings_parser_get_column_ALREADY_DEFINED
        !           204: #else
        !           205: #define yyget_column settings_parser_get_column
        !           206: #endif
        !           207: 
        !           208: #ifdef yyset_column
        !           209: #define settings_parser_set_column_ALREADY_DEFINED
        !           210: #else
        !           211: #define yyset_column settings_parser_set_column
        !           212: #endif
        !           213: 
        !           214: #ifdef yywrap
        !           215: #define settings_parser_wrap_ALREADY_DEFINED
        !           216: #else
        !           217: #define yywrap settings_parser_wrap
        !           218: #endif
        !           219: 
        !           220: /* %endif */
        !           221: 
        !           222: #ifdef yyget_lval
        !           223: #define settings_parser_get_lval_ALREADY_DEFINED
        !           224: #else
        !           225: #define yyget_lval settings_parser_get_lval
        !           226: #endif
        !           227: 
        !           228: #ifdef yyset_lval
        !           229: #define settings_parser_set_lval_ALREADY_DEFINED
        !           230: #else
        !           231: #define yyset_lval settings_parser_set_lval
        !           232: #endif
        !           233: 
        !           234: #ifdef yyalloc
        !           235: #define settings_parser_alloc_ALREADY_DEFINED
        !           236: #else
        !           237: #define yyalloc settings_parser_alloc
        !           238: #endif
        !           239: 
        !           240: #ifdef yyrealloc
        !           241: #define settings_parser_realloc_ALREADY_DEFINED
        !           242: #else
        !           243: #define yyrealloc settings_parser_realloc
        !           244: #endif
        !           245: 
        !           246: #ifdef yyfree
        !           247: #define settings_parser_free_ALREADY_DEFINED
        !           248: #else
        !           249: #define yyfree settings_parser_free
        !           250: #endif
        !           251: 
        !           252: /* %if-c-only */
        !           253: 
        !           254: /* %endif */
        !           255: 
        !           256: /* First, we deal with  platform-specific or compiler-specific issues. */
        !           257: 
        !           258: /* begin standard C headers. */
        !           259: /* %if-c-only */
        !           260: #include <stdio.h>
        !           261: #include <string.h>
        !           262: #include <errno.h>
        !           263: #include <stdlib.h>
        !           264: /* %endif */
        !           265: 
        !           266: /* %if-tables-serialization */
        !           267: /* %endif */
        !           268: /* end standard C headers. */
        !           269: 
        !           270: /* %if-c-or-c++ */
        !           271: /* flex integer type definitions */
        !           272: 
        !           273: #ifndef FLEXINT_H
        !           274: #define FLEXINT_H
        !           275: 
        !           276: /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
        !           277: 
        !           278: #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
        !           279: 
        !           280: /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
        !           281:  * if you want the limit (max/min) macros for int types. 
        !           282:  */
        !           283: #ifndef __STDC_LIMIT_MACROS
        !           284: #define __STDC_LIMIT_MACROS 1
        !           285: #endif
        !           286: 
        !           287: #include <inttypes.h>
        !           288: typedef int8_t flex_int8_t;
        !           289: typedef uint8_t flex_uint8_t;
        !           290: typedef int16_t flex_int16_t;
        !           291: typedef uint16_t flex_uint16_t;
        !           292: typedef int32_t flex_int32_t;
        !           293: typedef uint32_t flex_uint32_t;
        !           294: #else
        !           295: typedef signed char flex_int8_t;
        !           296: typedef short int flex_int16_t;
        !           297: typedef int flex_int32_t;
        !           298: typedef unsigned char flex_uint8_t; 
        !           299: typedef unsigned short int flex_uint16_t;
        !           300: typedef unsigned int flex_uint32_t;
        !           301: 
        !           302: /* Limits of integral types. */
        !           303: #ifndef INT8_MIN
        !           304: #define INT8_MIN               (-128)
        !           305: #endif
        !           306: #ifndef INT16_MIN
        !           307: #define INT16_MIN              (-32767-1)
        !           308: #endif
        !           309: #ifndef INT32_MIN
        !           310: #define INT32_MIN              (-2147483647-1)
        !           311: #endif
        !           312: #ifndef INT8_MAX
        !           313: #define INT8_MAX               (127)
        !           314: #endif
        !           315: #ifndef INT16_MAX
        !           316: #define INT16_MAX              (32767)
        !           317: #endif
        !           318: #ifndef INT32_MAX
        !           319: #define INT32_MAX              (2147483647)
        !           320: #endif
        !           321: #ifndef UINT8_MAX
        !           322: #define UINT8_MAX              (255U)
        !           323: #endif
        !           324: #ifndef UINT16_MAX
        !           325: #define UINT16_MAX             (65535U)
        !           326: #endif
        !           327: #ifndef UINT32_MAX
        !           328: #define UINT32_MAX             (4294967295U)
        !           329: #endif
        !           330: 
        !           331: #ifndef SIZE_MAX
        !           332: #define SIZE_MAX               (~(size_t)0)
        !           333: #endif
        !           334: 
        !           335: #endif /* ! C99 */
        !           336: 
        !           337: #endif /* ! FLEXINT_H */
        !           338: 
        !           339: /* %endif */
        !           340: 
        !           341: /* begin standard C++ headers. */
        !           342: /* %if-c++-only */
        !           343: /* %endif */
        !           344: 
        !           345: /* TODO: this is always defined, so inline it */
        !           346: #define yyconst const
        !           347: 
        !           348: #if defined(__GNUC__) && __GNUC__ >= 3
        !           349: #define yynoreturn __attribute__((__noreturn__))
        !           350: #else
        !           351: #define yynoreturn
        !           352: #endif
        !           353: 
        !           354: /* %not-for-header */
        !           355: /* Returned upon end-of-file. */
        !           356: #define YY_NULL 0
        !           357: /* %ok-for-header */
        !           358: 
        !           359: /* %not-for-header */
        !           360: /* Promotes a possibly negative, possibly signed char to an
        !           361:  *   integer in range [0..255] for use as an array index.
        !           362:  */
        !           363: #define YY_SC_TO_UI(c) ((YY_CHAR) (c))
        !           364: /* %ok-for-header */
        !           365: 
        !           366: /* %if-reentrant */
        !           367: 
        !           368: /* An opaque pointer. */
        !           369: #ifndef YY_TYPEDEF_YY_SCANNER_T
        !           370: #define YY_TYPEDEF_YY_SCANNER_T
        !           371: typedef void* yyscan_t;
        !           372: #endif
        !           373: 
        !           374: /* For convenience, these vars (plus the bison vars far below)
        !           375:    are macros in the reentrant scanner. */
        !           376: #define yyin yyg->yyin_r
        !           377: #define yyout yyg->yyout_r
        !           378: #define yyextra yyg->yyextra_r
        !           379: #define yyleng yyg->yyleng_r
        !           380: #define yytext yyg->yytext_r
        !           381: #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
        !           382: #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
        !           383: #define yy_flex_debug yyg->yy_flex_debug_r
        !           384: 
        !           385: /* %endif */
        !           386: 
        !           387: /* %if-not-reentrant */
        !           388: /* %endif */
        !           389: 
        !           390: /* Enter a start condition.  This macro really ought to take a parameter,
        !           391:  * but we do it the disgusting crufty way forced on us by the ()-less
        !           392:  * definition of BEGIN.
        !           393:  */
        !           394: #define BEGIN yyg->yy_start = 1 + 2 *
        !           395: /* Translate the current start state into a value that can be later handed
        !           396:  * to BEGIN to return to the state.  The YYSTATE alias is for lex
        !           397:  * compatibility.
        !           398:  */
        !           399: #define YY_START ((yyg->yy_start - 1) / 2)
        !           400: #define YYSTATE YY_START
        !           401: /* Action number for EOF rule of a given start state. */
        !           402: #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
        !           403: /* Special action meaning "start processing a new file". */
        !           404: #define YY_NEW_FILE yyrestart( yyin , yyscanner )
        !           405: #define YY_END_OF_BUFFER_CHAR 0
        !           406: 
        !           407: /* Size of default input buffer. */
        !           408: #ifndef YY_BUF_SIZE
        !           409: #ifdef __ia64__
        !           410: /* On IA-64, the buffer size is 16k, not 8k.
        !           411:  * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
        !           412:  * Ditto for the __ia64__ case accordingly.
        !           413:  */
        !           414: #define YY_BUF_SIZE 32768
        !           415: #else
        !           416: #define YY_BUF_SIZE 16384
        !           417: #endif /* __ia64__ */
        !           418: #endif
        !           419: 
        !           420: /* The state buf must be large enough to hold one state per character in the main buffer.
        !           421:  */
        !           422: #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
        !           423: 
        !           424: #ifndef YY_TYPEDEF_YY_BUFFER_STATE
        !           425: #define YY_TYPEDEF_YY_BUFFER_STATE
        !           426: typedef struct yy_buffer_state *YY_BUFFER_STATE;
        !           427: #endif
        !           428: 
        !           429: #ifndef YY_TYPEDEF_YY_SIZE_T
        !           430: #define YY_TYPEDEF_YY_SIZE_T
        !           431: typedef size_t yy_size_t;
        !           432: #endif
        !           433: 
        !           434: /* %if-not-reentrant */
        !           435: /* %endif */
        !           436: 
        !           437: /* %if-c-only */
        !           438: /* %if-not-reentrant */
        !           439: /* %endif */
        !           440: /* %endif */
        !           441: 
        !           442: #define EOB_ACT_CONTINUE_SCAN 0
        !           443: #define EOB_ACT_END_OF_FILE 1
        !           444: #define EOB_ACT_LAST_MATCH 2
        !           445:     
        !           446:     /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
        !           447:      *       access to the local variable yy_act. Since yyless() is a macro, it would break
        !           448:      *       existing scanners that call yyless() from OUTSIDE yylex.
        !           449:      *       One obvious solution it to make yy_act a global. I tried that, and saw
        !           450:      *       a 5% performance hit in a non-yylineno scanner, because yy_act is
        !           451:      *       normally declared as a register variable-- so it is not worth it.
        !           452:      */
        !           453:     #define  YY_LESS_LINENO(n) \
        !           454:             do { \
        !           455:                 int yyl;\
        !           456:                 for ( yyl = n; yyl < yyleng; ++yyl )\
        !           457:                     if ( yytext[yyl] == '\n' )\
        !           458:                         --yylineno;\
        !           459:             }while(0)
        !           460:     #define YY_LINENO_REWIND_TO(dst) \
        !           461:             do {\
        !           462:                 const char *p;\
        !           463:                 for ( p = yy_cp-1; p >= (dst); --p)\
        !           464:                     if ( *p == '\n' )\
        !           465:                         --yylineno;\
        !           466:             }while(0)
        !           467:     
        !           468: /* Return all but the first "n" matched characters back to the input stream. */
        !           469: #define yyless(n) \
        !           470:        do \
        !           471:                { \
        !           472:                /* Undo effects of setting up yytext. */ \
        !           473:         int yyless_macro_arg = (n); \
        !           474:         YY_LESS_LINENO(yyless_macro_arg);\
        !           475:                *yy_cp = yyg->yy_hold_char; \
        !           476:                YY_RESTORE_YY_MORE_OFFSET \
        !           477:                yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
        !           478:                YY_DO_BEFORE_ACTION; /* set up yytext again */ \
        !           479:                } \
        !           480:        while ( 0 )
        !           481: #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
        !           482: 
        !           483: #ifndef YY_STRUCT_YY_BUFFER_STATE
        !           484: #define YY_STRUCT_YY_BUFFER_STATE
        !           485: struct yy_buffer_state
        !           486:        {
        !           487: /* %if-c-only */
        !           488:        FILE *yy_input_file;
        !           489: /* %endif */
        !           490: 
        !           491: /* %if-c++-only */
        !           492: /* %endif */
        !           493: 
        !           494:        char *yy_ch_buf;                /* input buffer */
        !           495:        char *yy_buf_pos;               /* current position in input buffer */
        !           496: 
        !           497:        /* Size of input buffer in bytes, not including room for EOB
        !           498:         * characters.
        !           499:         */
        !           500:        int yy_buf_size;
        !           501: 
        !           502:        /* Number of characters read into yy_ch_buf, not including EOB
        !           503:         * characters.
        !           504:         */
        !           505:        int yy_n_chars;
        !           506: 
        !           507:        /* Whether we "own" the buffer - i.e., we know we created it,
        !           508:         * and can realloc() it to grow it, and should free() it to
        !           509:         * delete it.
        !           510:         */
        !           511:        int yy_is_our_buffer;
        !           512: 
        !           513:        /* Whether this is an "interactive" input source; if so, and
        !           514:         * if we're using stdio for input, then we want to use getc()
        !           515:         * instead of fread(), to make sure we stop fetching input after
        !           516:         * each newline.
        !           517:         */
        !           518:        int yy_is_interactive;
        !           519: 
        !           520:        /* Whether we're considered to be at the beginning of a line.
        !           521:         * If so, '^' rules will be active on the next match, otherwise
        !           522:         * not.
        !           523:         */
        !           524:        int yy_at_bol;
        !           525: 
        !           526:     int yy_bs_lineno; /**< The line count. */
        !           527:     int yy_bs_column; /**< The column count. */
        !           528: 
        !           529:        /* Whether to try to fill the input buffer when we reach the
        !           530:         * end of it.
        !           531:         */
        !           532:        int yy_fill_buffer;
        !           533: 
        !           534:        int yy_buffer_status;
        !           535: 
        !           536: #define YY_BUFFER_NEW 0
        !           537: #define YY_BUFFER_NORMAL 1
        !           538:        /* When an EOF's been seen but there's still some text to process
        !           539:         * then we mark the buffer as YY_EOF_PENDING, to indicate that we
        !           540:         * shouldn't try reading from the input source any more.  We might
        !           541:         * still have a bunch of tokens to match, though, because of
        !           542:         * possible backing-up.
        !           543:         *
        !           544:         * When we actually see the EOF, we change the status to "new"
        !           545:         * (via yyrestart()), so that the user can continue scanning by
        !           546:         * just pointing yyin at a new input file.
        !           547:         */
        !           548: #define YY_BUFFER_EOF_PENDING 2
        !           549: 
        !           550:        };
        !           551: #endif /* !YY_STRUCT_YY_BUFFER_STATE */
        !           552: 
        !           553: /* %if-c-only Standard (non-C++) definition */
        !           554: /* %not-for-header */
        !           555: /* %if-not-reentrant */
        !           556: /* %endif */
        !           557: /* %ok-for-header */
        !           558: 
        !           559: /* %endif */
        !           560: 
        !           561: /* We provide macros for accessing buffer states in case in the
        !           562:  * future we want to put the buffer states in a more general
        !           563:  * "scanner state".
        !           564:  *
        !           565:  * Returns the top of the stack, or NULL.
        !           566:  */
        !           567: #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
        !           568:                           ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
        !           569:                           : NULL)
        !           570: /* Same as previous macro, but useful when we know that the buffer stack is not
        !           571:  * NULL or when we need an lvalue. For internal use only.
        !           572:  */
        !           573: #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
        !           574: 
        !           575: /* %if-c-only Standard (non-C++) definition */
        !           576: 
        !           577: /* %if-not-reentrant */
        !           578: /* %not-for-header */
        !           579: /* %ok-for-header */
        !           580: 
        !           581: /* %endif */
        !           582: 
        !           583: void yyrestart ( FILE *input_file , yyscan_t yyscanner );
        !           584: void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
        !           585: YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner );
        !           586: void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
        !           587: void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
        !           588: void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
        !           589: void yypop_buffer_state ( yyscan_t yyscanner );
        !           590: 
        !           591: static void yyensure_buffer_stack ( yyscan_t yyscanner );
        !           592: static void yy_load_buffer_state ( yyscan_t yyscanner );
        !           593: static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner );
        !           594: #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER , yyscanner)
        !           595: 
        !           596: YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner );
        !           597: YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner );
        !           598: YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner );
        !           599: 
        !           600: /* %endif */
        !           601: 
        !           602: void *yyalloc ( yy_size_t , yyscan_t yyscanner );
        !           603: void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner );
        !           604: void yyfree ( void * , yyscan_t yyscanner );
        !           605: 
        !           606: #define yy_new_buffer yy_create_buffer
        !           607: #define yy_set_interactive(is_interactive) \
        !           608:        { \
        !           609:        if ( ! YY_CURRENT_BUFFER ){ \
        !           610:         yyensure_buffer_stack (yyscanner); \
        !           611:                YY_CURRENT_BUFFER_LVALUE =    \
        !           612:             yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \
        !           613:        } \
        !           614:        YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
        !           615:        }
        !           616: #define yy_set_bol(at_bol) \
        !           617:        { \
        !           618:        if ( ! YY_CURRENT_BUFFER ){\
        !           619:         yyensure_buffer_stack (yyscanner); \
        !           620:                YY_CURRENT_BUFFER_LVALUE =    \
        !           621:             yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \
        !           622:        } \
        !           623:        YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
        !           624:        }
        !           625: #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
        !           626: 
        !           627: /* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */
        !           628: /* Begin user sect3 */
        !           629: 
        !           630: #define settings_parser_wrap(yyscanner) (/*CONSTCOND*/1)
        !           631: #define YY_SKIP_YYWRAP
        !           632: 
        !           633: #define FLEX_DEBUG
        !           634: typedef flex_uint8_t YY_CHAR;
        !           635: 
        !           636: typedef int yy_state_type;
        !           637: 
        !           638: #define yytext_ptr yytext_r
        !           639: 
        !           640: /* %% [1.5] DFA */
        !           641: 
        !           642: /* %if-c-only Standard (non-C++) definition */
        !           643: 
        !           644: static yy_state_type yy_get_previous_state ( yyscan_t yyscanner );
        !           645: static yy_state_type yy_try_NUL_trans ( yy_state_type current_state  , yyscan_t yyscanner);
        !           646: static int yy_get_next_buffer ( yyscan_t yyscanner );
        !           647: static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner );
        !           648: 
        !           649: /* %endif */
        !           650: 
        !           651: /* Done after the current pattern has been matched and before the
        !           652:  * corresponding action - sets up yytext.
        !           653:  */
        !           654: #define YY_DO_BEFORE_ACTION \
        !           655:        yyg->yytext_ptr = yy_bp; \
        !           656: /* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\
        !           657:        yyleng = (int) (yy_cp - yy_bp); \
        !           658:        yyg->yy_hold_char = *yy_cp; \
        !           659:        *yy_cp = '\0'; \
        !           660: /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
        !           661:        yyg->yy_c_buf_p = yy_cp;
        !           662: /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
        !           663: #define YY_NUM_RULES 39
        !           664: #define YY_END_OF_BUFFER 40
        !           665: /* This struct is not used in this scanner,
        !           666:    but its presence is necessary. */
        !           667: struct yy_trans_info
        !           668:        {
        !           669:        flex_int32_t yy_verify;
        !           670:        flex_int32_t yy_nxt;
        !           671:        };
        !           672: static const flex_int16_t yy_accept[85] =
        !           673:     {   0,
        !           674:         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        !           675:        40,   12,    2,    3,    2,   11,    1,    7,    6,    8,
        !           676:         9,   12,    4,    5,   17,   14,   15,   14,   18,   13,
        !           677:        16,   23,   20,   21,   19,   22,   29,   25,   24,   26,
        !           678:        27,   38,   30,   31,   32,   12,    2,    2,    1,    1,
        !           679:         3,    0,   12,   17,    0,   14,   14,   13,   13,   15,
        !           680:         0,   23,   20,   29,   28,   38,   37,   36,   37,   33,
        !           681:        34,   35,    1,   12,   17,   13,   12,   12,   12,   12,
        !           682:         0,   10,   10,    0
        !           683:     } ;
        !           684: 
        !           685: static const YY_CHAR yy_ec[256] =
        !           686:     {   0,
        !           687:         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
        !           688:         1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
        !           689:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           690:         1,    5,    1,    6,    7,    1,    1,    1,    1,    1,
        !           691:         1,    1,    1,    8,    1,    9,    1,    1,    1,    1,
        !           692:         1,    1,    1,    1,    1,    1,    1,   10,    1,    1,
        !           693:        11,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           694:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           695:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           696:         1,   12,    1,    1,    1,    1,    1,    1,   13,   14,
        !           697: 
        !           698:        15,    1,    1,    1,   16,    1,    1,   17,    1,   18,
        !           699:         1,    1,    1,   19,    1,   20,   21,    1,    1,    1,
        !           700:         1,    1,   22,    1,   23,    1,    1,    1,    1,    1,
        !           701:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           702:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           703:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           704:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           705:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           706:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           707:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           708: 
        !           709:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           710:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           711:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           712:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           713:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           714:         1,    1,    1,    1,    1
        !           715:     } ;
        !           716: 
        !           717: static const YY_CHAR yy_meta[24] =
        !           718:     {   0,
        !           719:         1,    2,    3,    4,    5,    6,    5,    7,    8,    7,
        !           720:         9,   10,    1,    1,    1,    1,    1,    1,    1,    1,
        !           721:         1,    7,    5
        !           722:     } ;
        !           723: 
        !           724: static const flex_int16_t yy_base[103] =
        !           725:     {   0,
        !           726:         0,    0,   23,    0,   45,   67,   89,  111,   49,   50,
        !           727:       124,    0,  133,  335,   55,  335,   60,  335,  335,  335,
        !           728:       335,  104,  335,  335,  112,  139,  335,   73,  335,   62,
        !           729:       335,    0,   74,  335,  335,  335,    0,  335,  335,  335,
        !           730:         0,    0,  335,  335,  144,    0,    0,   78,    0,   81,
        !           731:       335,  117,  106,  102,    0,    0,   84,    0,   94,  335,
        !           732:       107,    0,   97,    0,  335,    0,  335,  335,  106,  335,
        !           733:       335,  335,    0,   89,   78,    0,   60,   53,   43,   98,
        !           734:       102,  335,  103,  335,  164,  174,  184,  194,  204,  214,
        !           735:       224,  234,  244,  249,  255,  264,  274,  284,  294,  304,
        !           736: 
        !           737:       314,  324
        !           738:     } ;
        !           739: 
        !           740: static const flex_int16_t yy_def[103] =
        !           741:     {   0,
        !           742:        84,    1,   84,    3,   85,   85,   86,   86,   87,   87,
        !           743:        84,   88,   84,   84,   84,   84,   89,   84,   84,   84,
        !           744:        84,   88,   84,   84,   90,   84,   84,   84,   84,   91,
        !           745:        84,   92,   84,   84,   84,   84,   93,   84,   84,   84,
        !           746:        94,   95,   84,   84,   96,   88,   13,   84,   97,   89,
        !           747:        84,   98,   88,   90,   99,   26,   84,  100,   91,   84,
        !           748:       101,   92,   84,   93,   84,   95,   84,   84,   84,   84,
        !           749:        84,   84,   97,   88,   99,  100,   88,   88,   88,   88,
        !           750:       102,   84,  102,    0,   84,   84,   84,   84,   84,   84,
        !           751:        84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
        !           752: 
        !           753:        84,   84
        !           754:     } ;
        !           755: 
        !           756: static const flex_int16_t yy_nxt[359] =
        !           757:     {   0,
        !           758:        12,   13,   14,   15,   13,   16,   17,   18,   19,   20,
        !           759:        21,   12,   12,   12,   12,   22,   12,   12,   12,   12,
        !           760:        12,   23,   24,   25,   26,   27,   28,   26,   29,   30,
        !           761:        31,   29,   29,   29,   25,   25,   25,   25,   25,   25,
        !           762:        25,   25,   25,   25,   29,   29,   33,   34,   35,   33,
        !           763:        36,   34,   43,   43,   44,   44,   48,   80,   48,   48,
        !           764:        45,   45,   51,   52,   60,   61,   79,   34,   33,   34,
        !           765:        35,   33,   36,   34,   57,   63,   57,   57,   63,   48,
        !           766:        78,   48,   48,   51,   52,   57,   55,   57,   57,   34,
        !           767:        38,   38,   39,   38,   40,   38,   60,   61,   63,   81,
        !           768: 
        !           769:        41,   63,   81,   83,   83,   77,   83,   83,   68,   60,
        !           770:        55,   38,   38,   38,   39,   38,   40,   38,   74,   51,
        !           771:        55,   53,   41,   84,   84,   84,   84,   84,   84,   84,
        !           772:        84,   84,   84,   38,   47,   84,   48,   47,   84,   49,
        !           773:        56,   84,   57,   56,   84,   58,   68,   69,   84,   84,
        !           774:        84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
        !           775:        84,   70,   71,   72,   32,   32,   32,   32,   32,   32,
        !           776:        32,   32,   32,   32,   37,   37,   37,   37,   37,   37,
        !           777:        37,   37,   37,   37,   42,   42,   42,   42,   42,   42,
        !           778:        42,   42,   42,   42,   46,   84,   84,   84,   84,   84,
        !           779: 
        !           780:        84,   84,   84,   46,   50,   50,   50,   50,   50,   50,
        !           781:        50,   50,   50,   50,   54,   84,   84,   84,   84,   84,
        !           782:        84,   54,   84,   54,   59,   59,   59,   59,   59,   59,
        !           783:        59,   59,   59,   59,   62,   84,   84,   84,   84,   84,
        !           784:        62,   62,   62,   62,   64,   84,   84,   84,   84,   84,
        !           785:        64,   64,   64,   65,   65,   66,   66,   66,   84,   66,
        !           786:        84,   66,   66,   66,   67,   67,   67,   67,   67,   67,
        !           787:        67,   67,   67,   67,   73,   73,   84,   84,   73,   73,
        !           788:        73,   73,   73,   73,   52,   52,   52,   52,   52,   52,
        !           789:        52,   52,   52,   52,   75,   84,   84,   84,   84,   84,
        !           790: 
        !           791:        84,   84,   84,   75,   76,   76,   84,   84,   76,   76,
        !           792:        76,   76,   76,   76,   61,   61,   61,   61,   61,   61,
        !           793:        61,   61,   61,   61,   82,   82,   82,   82,   82,   82,
        !           794:        82,   82,   84,   82,   11,   84,   84,   84,   84,   84,
        !           795:        84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
        !           796:        84,   84,   84,   84,   84,   84,   84,   84
        !           797:     } ;
        !           798: 
        !           799: static const flex_int16_t yy_chk[359] =
        !           800:     {   0,
        !           801:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           802:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        !           803:         1,    1,    1,    3,    3,    3,    3,    3,    3,    3,
        !           804:         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        !           805:         3,    3,    3,    3,    3,    3,    5,    5,    5,    5,
        !           806:         5,    5,    9,   10,    9,   10,   15,   79,   15,   15,
        !           807:         9,   10,   17,   17,   30,   30,   78,    5,    6,    6,
        !           808:         6,    6,    6,    6,   28,   33,   28,   28,   33,   48,
        !           809:        77,   48,   48,   50,   50,   57,   75,   57,   57,    6,
        !           810:         7,    7,    7,    7,    7,    7,   59,   59,   63,   80,
        !           811: 
        !           812:         7,   63,   80,   81,   83,   74,   81,   83,   69,   61,
        !           813:        54,    7,    8,    8,    8,    8,    8,    8,   53,   52,
        !           814:        25,   22,    8,   11,    0,    0,    0,    0,    0,    0,
        !           815:         0,    0,    0,    8,   13,    0,   13,   13,    0,   13,
        !           816:        26,    0,   26,   26,    0,   26,   45,   45,    0,    0,
        !           817:         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        !           818:         0,   45,   45,   45,   85,   85,   85,   85,   85,   85,
        !           819:        85,   85,   85,   85,   86,   86,   86,   86,   86,   86,
        !           820:        86,   86,   86,   86,   87,   87,   87,   87,   87,   87,
        !           821:        87,   87,   87,   87,   88,    0,    0,    0,    0,    0,
        !           822: 
        !           823:         0,    0,    0,   88,   89,   89,   89,   89,   89,   89,
        !           824:        89,   89,   89,   89,   90,    0,    0,    0,    0,    0,
        !           825:         0,   90,    0,   90,   91,   91,   91,   91,   91,   91,
        !           826:        91,   91,   91,   91,   92,    0,    0,    0,    0,    0,
        !           827:        92,   92,   92,   92,   93,    0,    0,    0,    0,    0,
        !           828:        93,   93,   93,   94,   94,   95,   95,   95,    0,   95,
        !           829:         0,   95,   95,   95,   96,   96,   96,   96,   96,   96,
        !           830:        96,   96,   96,   96,   97,   97,    0,    0,   97,   97,
        !           831:        97,   97,   97,   97,   98,   98,   98,   98,   98,   98,
        !           832:        98,   98,   98,   98,   99,    0,    0,    0,    0,    0,
        !           833: 
        !           834:         0,    0,    0,   99,  100,  100,    0,    0,  100,  100,
        !           835:       100,  100,  100,  100,  101,  101,  101,  101,  101,  101,
        !           836:       101,  101,  101,  101,  102,  102,  102,  102,  102,  102,
        !           837:       102,  102,    0,  102,   84,   84,   84,   84,   84,   84,
        !           838:        84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
        !           839:        84,   84,   84,   84,   84,   84,   84,   84
        !           840:     } ;
        !           841: 
        !           842: /* Table of booleans, true if rule could match eol. */
        !           843: static const flex_int32_t yy_rule_can_match_eol[40] =
        !           844:     {   0,
        !           845: 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 
        !           846:     0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 
        !           847:         };
        !           848: 
        !           849: static const flex_int16_t yy_rule_linenum[39] =
        !           850:     {   0,
        !           851:        71,   72,   73,   75,   76,   78,   79,   81,   86,   91,
        !           852:        96,  101,  107,  108,  109,  111,  113,  118,  125,  126,
        !           853:       128,  149,  155,  162,  165,  185,  188,  191,  194,  200,
        !           854:       201,  203,  223,  224,  225,  226,  227,  228
        !           855:     } ;
        !           856: 
        !           857: /* The intent behind this definition is that it'll catch
        !           858:  * any uses of REJECT which flex missed.
        !           859:  */
        !           860: #define REJECT reject_used_but_not_detected
        !           861: #define yymore() yymore_used_but_not_detected
        !           862: #define YY_MORE_ADJ 0
        !           863: #define YY_RESTORE_YY_MORE_OFFSET
        !           864: #line 1 "settings/settings_lexer.l"
        !           865: #line 2 "settings/settings_lexer.l"
        !           866: /*
        !           867:  * Copyright (C) 2014-2018 Tobias Brunner
        !           868:  * HSR Hochschule fuer Technik Rapperswil
        !           869:  *
        !           870:  * This program is free software; you can redistribute it and/or modify it
        !           871:  * under the terms of the GNU General Public License as published by the
        !           872:  * Free Software Foundation; either version 2 of the License, or (at your
        !           873:  * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
        !           874:  *
        !           875:  * This program is distributed in the hope that it will be useful, but
        !           876:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
        !           877:  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
        !           878:  * for more details.
        !           879:  */
        !           880: 
        !           881: #include <utils/parser_helper.h>
        !           882: 
        !           883: #include "settings_parser.h"
        !           884: 
        !           885: bool settings_parser_open_next_file(parser_helper_t *ctx);
        !           886: 
        !           887: static void include_files(parser_helper_t *ctx);
        !           888: 
        !           889: #line 890 "settings/settings_lexer.c"
        !           890: /* use start conditions stack */
        !           891: /* do not declare unneeded functions */
        !           892: #define YY_NO_INPUT 1
        !           893: /* do not include unistd.h as it might conflict with our scanner states */
        !           894: #define YY_NO_UNISTD_H 1
        !           895: /* due to that disable interactive mode, which requires isatty() */
        !           896: /* don't use global variables, and interact properly with bison */
        !           897: /* maintain the line number */
        !           898: /* don't generate a default rule */
        !           899: /* prefix function/variable declarations */
        !           900: /* don't change the name of the output file otherwise autotools has issues */
        !           901: /* type of our extra data */
        !           902: /* state used to scan references */
        !           903: 
        !           904: /* state used to scan values */
        !           905: 
        !           906: /* state used to scan include file patterns */
        !           907: 
        !           908: /* state used to scan quoted strings */
        !           909: 
        !           910: /* pattern for section/key names */
        !           911: #line 912 "settings/settings_lexer.c"
        !           912: 
        !           913: #define INITIAL 0
        !           914: #define ref 1
        !           915: #define val 2
        !           916: #define inc 3
        !           917: #define str 4
        !           918: 
        !           919: #ifndef YY_NO_UNISTD_H
        !           920: /* Special case for "unistd.h", since it is non-ANSI. We include it way
        !           921:  * down here because we want the user's section 1 to have been scanned first.
        !           922:  * The user has a chance to override it with an option.
        !           923:  */
        !           924: /* %if-c-only */
        !           925: #include <unistd.h>
        !           926: /* %endif */
        !           927: /* %if-c++-only */
        !           928: /* %endif */
        !           929: #endif
        !           930: 
        !           931: #define YY_EXTRA_TYPE parser_helper_t*
        !           932: 
        !           933: /* %if-c-only Reentrant structure and macros (non-C++). */
        !           934: /* %if-reentrant */
        !           935: 
        !           936: /* Holds the entire state of the reentrant scanner. */
        !           937: struct yyguts_t
        !           938:     {
        !           939: 
        !           940:     /* User-defined. Not touched by flex. */
        !           941:     YY_EXTRA_TYPE yyextra_r;
        !           942: 
        !           943:     /* The rest are the same as the globals declared in the non-reentrant scanner. */
        !           944:     FILE *yyin_r, *yyout_r;
        !           945:     size_t yy_buffer_stack_top; /**< index of top of stack. */
        !           946:     size_t yy_buffer_stack_max; /**< capacity of stack. */
        !           947:     YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
        !           948:     char yy_hold_char;
        !           949:     int yy_n_chars;
        !           950:     int yyleng_r;
        !           951:     char *yy_c_buf_p;
        !           952:     int yy_init;
        !           953:     int yy_start;
        !           954:     int yy_did_buffer_switch_on_eof;
        !           955:     int yy_start_stack_ptr;
        !           956:     int yy_start_stack_depth;
        !           957:     int *yy_start_stack;
        !           958:     yy_state_type yy_last_accepting_state;
        !           959:     char* yy_last_accepting_cpos;
        !           960: 
        !           961:     int yylineno_r;
        !           962:     int yy_flex_debug_r;
        !           963: 
        !           964:     char *yytext_r;
        !           965:     int yy_more_flag;
        !           966:     int yy_more_len;
        !           967: 
        !           968:     YYSTYPE * yylval_r;
        !           969: 
        !           970:     }; /* end struct yyguts_t */
        !           971: 
        !           972: /* %if-c-only */
        !           973: 
        !           974: static int yy_init_globals ( yyscan_t yyscanner );
        !           975: 
        !           976: /* %endif */
        !           977: 
        !           978: /* %if-reentrant */
        !           979: 
        !           980:     /* This must go here because YYSTYPE and YYLTYPE are included
        !           981:      * from bison output in section 1.*/
        !           982:     #    define yylval yyg->yylval_r
        !           983:     
        !           984: int yylex_init (yyscan_t* scanner);
        !           985: 
        !           986: int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner);
        !           987: 
        !           988: /* %endif */
        !           989: 
        !           990: /* %endif End reentrant structures and macros. */
        !           991: 
        !           992: /* Accessor methods to globals.
        !           993:    These are made visible to non-reentrant scanners for convenience. */
        !           994: 
        !           995: int yylex_destroy ( yyscan_t yyscanner );
        !           996: 
        !           997: int yyget_debug ( yyscan_t yyscanner );
        !           998: 
        !           999: void yyset_debug ( int debug_flag , yyscan_t yyscanner );
        !          1000: 
        !          1001: YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner );
        !          1002: 
        !          1003: void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner );
        !          1004: 
        !          1005: FILE *yyget_in ( yyscan_t yyscanner );
        !          1006: 
        !          1007: void yyset_in  ( FILE * _in_str , yyscan_t yyscanner );
        !          1008: 
        !          1009: FILE *yyget_out ( yyscan_t yyscanner );
        !          1010: 
        !          1011: void yyset_out  ( FILE * _out_str , yyscan_t yyscanner );
        !          1012: 
        !          1013:                        int yyget_leng ( yyscan_t yyscanner );
        !          1014: 
        !          1015: char *yyget_text ( yyscan_t yyscanner );
        !          1016: 
        !          1017: int yyget_lineno ( yyscan_t yyscanner );
        !          1018: 
        !          1019: void yyset_lineno ( int _line_number , yyscan_t yyscanner );
        !          1020: 
        !          1021: int yyget_column  ( yyscan_t yyscanner );
        !          1022: 
        !          1023: void yyset_column ( int _column_no , yyscan_t yyscanner );
        !          1024: 
        !          1025: /* %if-bison-bridge */
        !          1026: 
        !          1027: YYSTYPE * yyget_lval ( yyscan_t yyscanner );
        !          1028: 
        !          1029: void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner );
        !          1030: 
        !          1031: /* %endif */
        !          1032: 
        !          1033: /* Macros after this point can all be overridden by user definitions in
        !          1034:  * section 1.
        !          1035:  */
        !          1036: 
        !          1037: #ifndef YY_SKIP_YYWRAP
        !          1038: #ifdef __cplusplus
        !          1039: extern "C" int yywrap ( yyscan_t yyscanner );
        !          1040: #else
        !          1041: extern int yywrap ( yyscan_t yyscanner );
        !          1042: #endif
        !          1043: #endif
        !          1044: 
        !          1045: /* %not-for-header */
        !          1046: #ifndef YY_NO_UNPUT
        !          1047:     
        !          1048:     static void yyunput ( int c, char *buf_ptr  , yyscan_t yyscanner);
        !          1049:     
        !          1050: #endif
        !          1051: /* %ok-for-header */
        !          1052: 
        !          1053: /* %endif */
        !          1054: 
        !          1055: #ifndef yytext_ptr
        !          1056: static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner);
        !          1057: #endif
        !          1058: 
        !          1059: #ifdef YY_NEED_STRLEN
        !          1060: static int yy_flex_strlen ( const char * , yyscan_t yyscanner);
        !          1061: #endif
        !          1062: 
        !          1063: #ifndef YY_NO_INPUT
        !          1064: /* %if-c-only Standard (non-C++) definition */
        !          1065: /* %not-for-header */
        !          1066: #ifdef __cplusplus
        !          1067: static int yyinput ( yyscan_t yyscanner );
        !          1068: #else
        !          1069: static int input ( yyscan_t yyscanner );
        !          1070: #endif
        !          1071: /* %ok-for-header */
        !          1072: 
        !          1073: /* %endif */
        !          1074: #endif
        !          1075: 
        !          1076: /* %if-c-only */
        !          1077: 
        !          1078:     static void yy_push_state ( int _new_state , yyscan_t yyscanner);
        !          1079:     
        !          1080:     static void yy_pop_state ( yyscan_t yyscanner );
        !          1081:     
        !          1082:     static int yy_top_state ( yyscan_t yyscanner );
        !          1083:     
        !          1084: /* %endif */
        !          1085: 
        !          1086: /* Amount of stuff to slurp up with each read. */
        !          1087: #ifndef YY_READ_BUF_SIZE
        !          1088: #ifdef __ia64__
        !          1089: /* On IA-64, the buffer size is 16k, not 8k */
        !          1090: #define YY_READ_BUF_SIZE 16384
        !          1091: #else
        !          1092: #define YY_READ_BUF_SIZE 8192
        !          1093: #endif /* __ia64__ */
        !          1094: #endif
        !          1095: 
        !          1096: /* Copy whatever the last rule matched to the standard output. */
        !          1097: #ifndef ECHO
        !          1098: /* %if-c-only Standard (non-C++) definition */
        !          1099: /* This used to be an fputs(), but since the string might contain NUL's,
        !          1100:  * we now use fwrite().
        !          1101:  */
        !          1102: #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
        !          1103: /* %endif */
        !          1104: /* %if-c++-only C++ definition */
        !          1105: /* %endif */
        !          1106: #endif
        !          1107: 
        !          1108: /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
        !          1109:  * is returned in "result".
        !          1110:  */
        !          1111: #ifndef YY_INPUT
        !          1112: #define YY_INPUT(buf,result,max_size) \
        !          1113: /* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
        !          1114:        if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
        !          1115:                { \
        !          1116:                int c = '*'; \
        !          1117:                int n; \
        !          1118:                for ( n = 0; n < max_size && \
        !          1119:                             (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
        !          1120:                        buf[n] = (char) c; \
        !          1121:                if ( c == '\n' ) \
        !          1122:                        buf[n++] = (char) c; \
        !          1123:                if ( c == EOF && ferror( yyin ) ) \
        !          1124:                        YY_FATAL_ERROR( "input in flex scanner failed" ); \
        !          1125:                result = n; \
        !          1126:                } \
        !          1127:        else \
        !          1128:                { \
        !          1129:                errno=0; \
        !          1130:                while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
        !          1131:                        { \
        !          1132:                        if( errno != EINTR) \
        !          1133:                                { \
        !          1134:                                YY_FATAL_ERROR( "input in flex scanner failed" ); \
        !          1135:                                break; \
        !          1136:                                } \
        !          1137:                        errno=0; \
        !          1138:                        clearerr(yyin); \
        !          1139:                        } \
        !          1140:                }\
        !          1141: \
        !          1142: /* %if-c++-only C++ definition \ */\
        !          1143: /* %endif */
        !          1144: 
        !          1145: #endif
        !          1146: 
        !          1147: /* No semi-colon after return; correct usage is to write "yyterminate();" -
        !          1148:  * we don't want an extra ';' after the "return" because that will cause
        !          1149:  * some compilers to complain about unreachable statements.
        !          1150:  */
        !          1151: #ifndef yyterminate
        !          1152: #define yyterminate() return YY_NULL
        !          1153: #endif
        !          1154: 
        !          1155: /* Number of entries by which start-condition stack grows. */
        !          1156: #ifndef YY_START_STACK_INCR
        !          1157: #define YY_START_STACK_INCR 25
        !          1158: #endif
        !          1159: 
        !          1160: /* Report a fatal error. */
        !          1161: #ifndef YY_FATAL_ERROR
        !          1162: /* %if-c-only */
        !          1163: #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
        !          1164: /* %endif */
        !          1165: /* %if-c++-only */
        !          1166: /* %endif */
        !          1167: #endif
        !          1168: 
        !          1169: /* %if-tables-serialization structures and prototypes */
        !          1170: /* %not-for-header */
        !          1171: /* %ok-for-header */
        !          1172: 
        !          1173: /* %not-for-header */
        !          1174: /* %tables-yydmap generated elements */
        !          1175: /* %endif */
        !          1176: /* end tables serialization structures and prototypes */
        !          1177: 
        !          1178: /* %ok-for-header */
        !          1179: 
        !          1180: /* Default declaration of generated scanner - a define so the user can
        !          1181:  * easily add parameters.
        !          1182:  */
        !          1183: #ifndef YY_DECL
        !          1184: #define YY_DECL_IS_OURS 1
        !          1185: /* %if-c-only Standard (non-C++) definition */
        !          1186: 
        !          1187: extern int yylex \
        !          1188:                (YYSTYPE * yylval_param , yyscan_t yyscanner);
        !          1189: 
        !          1190: #define YY_DECL int yylex \
        !          1191:                (YYSTYPE * yylval_param , yyscan_t yyscanner)
        !          1192: /* %endif */
        !          1193: /* %if-c++-only C++ definition */
        !          1194: /* %endif */
        !          1195: #endif /* !YY_DECL */
        !          1196: 
        !          1197: /* Code executed at the beginning of each rule, after yytext and yyleng
        !          1198:  * have been set up.
        !          1199:  */
        !          1200: #ifndef YY_USER_ACTION
        !          1201: #define YY_USER_ACTION
        !          1202: #endif
        !          1203: 
        !          1204: /* Code executed at the end of each rule. */
        !          1205: #ifndef YY_BREAK
        !          1206: #define YY_BREAK /*LINTED*/break;
        !          1207: #endif
        !          1208: 
        !          1209: /* %% [6.0] YY_RULE_SETUP definition goes here */
        !          1210: #define YY_RULE_SETUP \
        !          1211:        YY_USER_ACTION
        !          1212: 
        !          1213: /* %not-for-header */
        !          1214: /** The main scanner function which does all the work.
        !          1215:  */
        !          1216: YY_DECL
        !          1217: {
        !          1218:        yy_state_type yy_current_state;
        !          1219:        char *yy_cp, *yy_bp;
        !          1220:        int yy_act;
        !          1221:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          1222: 
        !          1223:     yylval = yylval_param;
        !          1224: 
        !          1225:        if ( !yyg->yy_init )
        !          1226:                {
        !          1227:                yyg->yy_init = 1;
        !          1228: 
        !          1229: #ifdef YY_USER_INIT
        !          1230:                YY_USER_INIT;
        !          1231: #endif
        !          1232: 
        !          1233:                if ( ! yyg->yy_start )
        !          1234:                        yyg->yy_start = 1;      /* first start state */
        !          1235: 
        !          1236:                if ( ! yyin )
        !          1237: /* %if-c-only */
        !          1238:                        yyin = stdin;
        !          1239: /* %endif */
        !          1240: /* %if-c++-only */
        !          1241: /* %endif */
        !          1242: 
        !          1243:                if ( ! yyout )
        !          1244: /* %if-c-only */
        !          1245:                        yyout = stdout;
        !          1246: /* %endif */
        !          1247: /* %if-c++-only */
        !          1248: /* %endif */
        !          1249: 
        !          1250:                if ( ! YY_CURRENT_BUFFER ) {
        !          1251:                        yyensure_buffer_stack (yyscanner);
        !          1252:                        YY_CURRENT_BUFFER_LVALUE =
        !          1253:                                yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
        !          1254:                }
        !          1255: 
        !          1256:                yy_load_buffer_state( yyscanner );
        !          1257:                }
        !          1258: 
        !          1259:        {
        !          1260: /* %% [7.0] user's declarations go here */
        !          1261: #line 69 "settings/settings_lexer.l"
        !          1262: 
        !          1263: 
        !          1264: #line 1265 "settings/settings_lexer.c"
        !          1265: 
        !          1266:        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
        !          1267:                {
        !          1268: /* %% [8.0] yymore()-related code goes here */
        !          1269:                yy_cp = yyg->yy_c_buf_p;
        !          1270: 
        !          1271:                /* Support of yytext. */
        !          1272:                *yy_cp = yyg->yy_hold_char;
        !          1273: 
        !          1274:                /* yy_bp points to the position in yy_ch_buf of the start of
        !          1275:                 * the current run.
        !          1276:                 */
        !          1277:                yy_bp = yy_cp;
        !          1278: 
        !          1279: /* %% [9.0] code to set up and find next match goes here */
        !          1280:                yy_current_state = yyg->yy_start;
        !          1281: yy_match:
        !          1282:                do
        !          1283:                        {
        !          1284:                        YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
        !          1285:                        if ( yy_accept[yy_current_state] )
        !          1286:                                {
        !          1287:                                yyg->yy_last_accepting_state = yy_current_state;
        !          1288:                                yyg->yy_last_accepting_cpos = yy_cp;
        !          1289:                                }
        !          1290:                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
        !          1291:                                {
        !          1292:                                yy_current_state = (int) yy_def[yy_current_state];
        !          1293:                                if ( yy_current_state >= 85 )
        !          1294:                                        yy_c = yy_meta[yy_c];
        !          1295:                                }
        !          1296:                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
        !          1297:                        ++yy_cp;
        !          1298:                        }
        !          1299:                while ( yy_current_state != 84 );
        !          1300:                yy_cp = yyg->yy_last_accepting_cpos;
        !          1301:                yy_current_state = yyg->yy_last_accepting_state;
        !          1302: 
        !          1303: yy_find_action:
        !          1304: /* %% [10.0] code to find the action number goes here */
        !          1305:                yy_act = yy_accept[yy_current_state];
        !          1306: 
        !          1307:                YY_DO_BEFORE_ACTION;
        !          1308: 
        !          1309: /* %% [11.0] code for yylineno update goes here */
        !          1310: 
        !          1311:                if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
        !          1312:                        {
        !          1313:                        int yyl;
        !          1314:                        for ( yyl = 0; yyl < yyleng; ++yyl )
        !          1315:                                if ( yytext[yyl] == '\n' )
        !          1316:                                        
        !          1317:     do{ yylineno++;
        !          1318:         yycolumn=0;
        !          1319:     }while(0)
        !          1320: ;
        !          1321:                        }
        !          1322: 
        !          1323: do_action:     /* This label is used only to access EOF actions. */
        !          1324: 
        !          1325: /* %% [12.0] debug code goes here */
        !          1326:                if ( yy_flex_debug )
        !          1327:                        {
        !          1328:                        if ( yy_act == 0 )
        !          1329:                                fprintf( stderr, "--scanner backing up\n" );
        !          1330:                        else if ( yy_act < 39 )
        !          1331:                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
        !          1332:                                         (long)yy_rule_linenum[yy_act], yytext );
        !          1333:                        else if ( yy_act == 39 )
        !          1334:                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
        !          1335:                                         yytext );
        !          1336:                        else if ( yy_act == 40 )
        !          1337:                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
        !          1338:                        else
        !          1339:                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
        !          1340:                        }
        !          1341: 
        !          1342:                switch ( yy_act )
        !          1343:        { /* beginning of action switch */
        !          1344: /* %% [13.0] actions go here */
        !          1345:                        case 0: /* must back up */
        !          1346:                        /* undo the effects of YY_DO_BEFORE_ACTION */
        !          1347:                        *yy_cp = yyg->yy_hold_char;
        !          1348:                        yy_cp = yyg->yy_last_accepting_cpos;
        !          1349:                        yy_current_state = yyg->yy_last_accepting_state;
        !          1350:                        goto yy_find_action;
        !          1351: 
        !          1352: case 1:
        !          1353: YY_RULE_SETUP
        !          1354: #line 71 "settings/settings_lexer.l"
        !          1355: /* eat comments */
        !          1356:        YY_BREAK
        !          1357: case 2:
        !          1358: YY_RULE_SETUP
        !          1359: #line 72 "settings/settings_lexer.l"
        !          1360: /* eat whitespace */
        !          1361:        YY_BREAK
        !          1362: case 3:
        !          1363: /* rule 3 can match eol */
        !          1364: YY_RULE_SETUP
        !          1365: #line 73 "settings/settings_lexer.l"
        !          1366: /* eat newlines and comments at the end of a line */
        !          1367:        YY_BREAK
        !          1368: case 4:
        !          1369: #line 76 "settings/settings_lexer.l"
        !          1370: case 5:
        !          1371: YY_RULE_SETUP
        !          1372: #line 76 "settings/settings_lexer.l"
        !          1373: return yytext[0];
        !          1374:        YY_BREAK
        !          1375: case 6:
        !          1376: YY_RULE_SETUP
        !          1377: #line 78 "settings/settings_lexer.l"
        !          1378: return DOT;
        !          1379:        YY_BREAK
        !          1380: case 7:
        !          1381: YY_RULE_SETUP
        !          1382: #line 79 "settings/settings_lexer.l"
        !          1383: return COMMA;
        !          1384:        YY_BREAK
        !          1385: case 8:
        !          1386: YY_RULE_SETUP
        !          1387: #line 81 "settings/settings_lexer.l"
        !          1388: {
        !          1389:        yy_push_state(ref, yyscanner);
        !          1390:        return COLON;
        !          1391: }
        !          1392:        YY_BREAK
        !          1393: case 9:
        !          1394: YY_RULE_SETUP
        !          1395: #line 86 "settings/settings_lexer.l"
        !          1396: {
        !          1397:        yy_push_state(val, yyscanner);
        !          1398:        return yytext[0];
        !          1399: }
        !          1400:        YY_BREAK
        !          1401: case 10:
        !          1402: /* rule 10 can match eol */
        !          1403: *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
        !          1404: YY_LINENO_REWIND_TO(yy_cp - 1);
        !          1405: yyg->yy_c_buf_p = yy_cp -= 1;
        !          1406: YY_DO_BEFORE_ACTION; /* set up yytext again */
        !          1407: YY_RULE_SETUP
        !          1408: #line 91 "settings/settings_lexer.l"
        !          1409: {
        !          1410:        yyextra->string_init(yyextra);
        !          1411:        yy_push_state(inc, yyscanner);
        !          1412: }
        !          1413:        YY_BREAK
        !          1414: case 11:
        !          1415: YY_RULE_SETUP
        !          1416: #line 96 "settings/settings_lexer.l"
        !          1417: {
        !          1418:        PARSER_DBG1(yyextra, "unexpected string detected");
        !          1419:        return STRING_ERROR;
        !          1420: }
        !          1421:        YY_BREAK
        !          1422: case 12:
        !          1423: YY_RULE_SETUP
        !          1424: #line 101 "settings/settings_lexer.l"
        !          1425: {
        !          1426:        yylval->s = strdup(yytext);
        !          1427:        return NAME;
        !          1428: }
        !          1429:        YY_BREAK
        !          1430: 
        !          1431: case 13:
        !          1432: YY_RULE_SETUP
        !          1433: #line 107 "settings/settings_lexer.l"
        !          1434: /* eat comments */
        !          1435:        YY_BREAK
        !          1436: case 14:
        !          1437: YY_RULE_SETUP
        !          1438: #line 108 "settings/settings_lexer.l"
        !          1439: /* eat whitespace */
        !          1440:        YY_BREAK
        !          1441: case 15:
        !          1442: /* rule 15 can match eol */
        !          1443: YY_RULE_SETUP
        !          1444: #line 109 "settings/settings_lexer.l"
        !          1445: /* eat newlines and comments at the end of a line */
        !          1446:        YY_BREAK
        !          1447: case 16:
        !          1448: YY_RULE_SETUP
        !          1449: #line 111 "settings/settings_lexer.l"
        !          1450: return COMMA;
        !          1451:        YY_BREAK
        !          1452: case 17:
        !          1453: YY_RULE_SETUP
        !          1454: #line 113 "settings/settings_lexer.l"
        !          1455: {
        !          1456:                yylval->s = strdup(yytext);
        !          1457:                return NAME;
        !          1458:        }
        !          1459:        YY_BREAK
        !          1460: case 18:
        !          1461: YY_RULE_SETUP
        !          1462: #line 118 "settings/settings_lexer.l"
        !          1463: {
        !          1464:                unput(yytext[0]);
        !          1465:                yy_pop_state(yyscanner);
        !          1466:        }
        !          1467:        YY_BREAK
        !          1468: 
        !          1469: 
        !          1470: case 19:
        !          1471: YY_RULE_SETUP
        !          1472: #line 125 "settings/settings_lexer.l"
        !          1473: /* just ignore these */
        !          1474:        YY_BREAK
        !          1475: case 20:
        !          1476: YY_RULE_SETUP
        !          1477: #line 126 "settings/settings_lexer.l"
        !          1478: 
        !          1479:        YY_BREAK
        !          1480: case YY_STATE_EOF(val):
        !          1481: #line 127 "settings/settings_lexer.l"
        !          1482: case 21:
        !          1483: /* rule 21 can match eol */
        !          1484: YY_RULE_SETUP
        !          1485: #line 128 "settings/settings_lexer.l"
        !          1486: {
        !          1487:                if (*yytext)
        !          1488:                {
        !          1489:                        switch (yytext[0])
        !          1490:                        {
        !          1491:                                case '\n':
        !          1492:                                        /* put the newline back to fix the line numbers */
        !          1493:                                        unput('\n');
        !          1494:                                        yy_set_bol(0);
        !          1495:                                        break;
        !          1496:                                case '#':
        !          1497:                                case '}':
        !          1498:                                        /* these are parsed outside of this start condition */
        !          1499:                                        unput(yytext[0]);
        !          1500:                                        break;
        !          1501:                        }
        !          1502:                }
        !          1503:                yy_pop_state(yyscanner);
        !          1504:                return NEWLINE;
        !          1505:        }
        !          1506:        YY_BREAK
        !          1507: case 22:
        !          1508: YY_RULE_SETUP
        !          1509: #line 149 "settings/settings_lexer.l"
        !          1510: {
        !          1511:                yyextra->string_init(yyextra);
        !          1512:                yy_push_state(str, yyscanner);
        !          1513:        }
        !          1514:        YY_BREAK
        !          1515: /* same as above, but allow more characters */
        !          1516: case 23:
        !          1517: YY_RULE_SETUP
        !          1518: #line 155 "settings/settings_lexer.l"
        !          1519: {
        !          1520:                yylval->s = strdup(yytext);
        !          1521:                return NAME;
        !          1522:        }
        !          1523:        YY_BREAK
        !          1524: 
        !          1525: 
        !          1526: case 24:
        !          1527: YY_RULE_SETUP
        !          1528: #line 162 "settings/settings_lexer.l"
        !          1529: /* just ignore these */
        !          1530:        YY_BREAK
        !          1531: /* we allow all characters except #, } and spaces, they can be escaped */
        !          1532: case YY_STATE_EOF(inc):
        !          1533: #line 164 "settings/settings_lexer.l"
        !          1534: case 25:
        !          1535: /* rule 25 can match eol */
        !          1536: YY_RULE_SETUP
        !          1537: #line 165 "settings/settings_lexer.l"
        !          1538: {
        !          1539:                if (*yytext)
        !          1540:                {
        !          1541:                        switch (yytext[0])
        !          1542:                        {
        !          1543:                                case '\n':
        !          1544:                                        /* put the newline back to fix the line numbers */
        !          1545:                                        unput('\n');
        !          1546:                                        yy_set_bol(0);
        !          1547:                                        break;
        !          1548:                                case '#':
        !          1549:                                case '}':
        !          1550:                                        /* these are parsed outside of this start condition */
        !          1551:                                        unput(yytext[0]);
        !          1552:                                        break;
        !          1553:                        }
        !          1554:                }
        !          1555:                include_files(yyextra);
        !          1556:                yy_pop_state(yyscanner);
        !          1557:        }
        !          1558:        YY_BREAK
        !          1559: case 26:
        !          1560: YY_RULE_SETUP
        !          1561: #line 185 "settings/settings_lexer.l"
        !          1562: {      /* string include */
        !          1563:                yy_push_state(str, yyscanner);
        !          1564:        }
        !          1565:        YY_BREAK
        !          1566: case 27:
        !          1567: YY_RULE_SETUP
        !          1568: #line 188 "settings/settings_lexer.l"
        !          1569: {
        !          1570:                yyextra->string_add(yyextra, yytext);
        !          1571:        }
        !          1572:        YY_BREAK
        !          1573: case 28:
        !          1574: YY_RULE_SETUP
        !          1575: #line 191 "settings/settings_lexer.l"
        !          1576: {
        !          1577:                yyextra->string_add(yyextra, yytext+1);
        !          1578:        }
        !          1579:        YY_BREAK
        !          1580: case 29:
        !          1581: YY_RULE_SETUP
        !          1582: #line 194 "settings/settings_lexer.l"
        !          1583: {
        !          1584:                yyextra->string_add(yyextra, yytext);
        !          1585:        }
        !          1586:        YY_BREAK
        !          1587: 
        !          1588: 
        !          1589: case 30:
        !          1590: YY_RULE_SETUP
        !          1591: #line 200 "settings/settings_lexer.l"
        !          1592: /* just ignore these */
        !          1593:        YY_BREAK
        !          1594: case 31:
        !          1595: #line 202 "settings/settings_lexer.l"
        !          1596: YY_RULE_SETUP
        !          1597: case YY_STATE_EOF(str):
        !          1598: #line 202 "settings/settings_lexer.l"
        !          1599: case 32:
        !          1600: YY_RULE_SETUP
        !          1601: #line 203 "settings/settings_lexer.l"
        !          1602: {
        !          1603:                if (!streq(yytext, "\""))
        !          1604:                {
        !          1605:                        PARSER_DBG1(yyextra, "unterminated string detected");
        !          1606:                        return STRING_ERROR;
        !          1607:                }
        !          1608:                if (yy_top_state(yyscanner) == inc)
        !          1609:                {       /* string include */
        !          1610:                        include_files(yyextra);
        !          1611:                        yy_pop_state(yyscanner);
        !          1612:                        yy_pop_state(yyscanner);
        !          1613:                }
        !          1614:                else
        !          1615:                {
        !          1616:                        yy_pop_state(yyscanner);
        !          1617:                        yylval->s = yyextra->string_get(yyextra);
        !          1618:                        return STRING;
        !          1619:                }
        !          1620:        }
        !          1621:        YY_BREAK
        !          1622: case 33:
        !          1623: YY_RULE_SETUP
        !          1624: #line 223 "settings/settings_lexer.l"
        !          1625: yyextra->string_add(yyextra, "\n");
        !          1626:        YY_BREAK
        !          1627: case 34:
        !          1628: YY_RULE_SETUP
        !          1629: #line 224 "settings/settings_lexer.l"
        !          1630: yyextra->string_add(yyextra, "\r");
        !          1631:        YY_BREAK
        !          1632: case 35:
        !          1633: YY_RULE_SETUP
        !          1634: #line 225 "settings/settings_lexer.l"
        !          1635: yyextra->string_add(yyextra, "\t");
        !          1636:        YY_BREAK
        !          1637: case 36:
        !          1638: /* rule 36 can match eol */
        !          1639: YY_RULE_SETUP
        !          1640: #line 226 "settings/settings_lexer.l"
        !          1641: /* merge lines that end with escaped EOL characters */
        !          1642:        YY_BREAK
        !          1643: case 37:
        !          1644: YY_RULE_SETUP
        !          1645: #line 227 "settings/settings_lexer.l"
        !          1646: yyextra->string_add(yyextra, yytext+1);
        !          1647:        YY_BREAK
        !          1648: case 38:
        !          1649: /* rule 38 can match eol */
        !          1650: YY_RULE_SETUP
        !          1651: #line 228 "settings/settings_lexer.l"
        !          1652: {
        !          1653:                yyextra->string_add(yyextra, yytext);
        !          1654:        }
        !          1655:        YY_BREAK
        !          1656: 
        !          1657: case YY_STATE_EOF(INITIAL):
        !          1658: case YY_STATE_EOF(ref):
        !          1659: #line 233 "settings/settings_lexer.l"
        !          1660: {
        !          1661:        settings_parser_pop_buffer_state(yyscanner);
        !          1662:        if (!settings_parser_open_next_file(yyextra) && !YY_CURRENT_BUFFER)
        !          1663:        {
        !          1664:                yyterminate();
        !          1665:        }
        !          1666: }
        !          1667:        YY_BREAK
        !          1668: case 39:
        !          1669: YY_RULE_SETUP
        !          1670: #line 241 "settings/settings_lexer.l"
        !          1671: YY_FATAL_ERROR( "flex scanner jammed" );
        !          1672:        YY_BREAK
        !          1673: #line 1674 "settings/settings_lexer.c"
        !          1674: 
        !          1675:        case YY_END_OF_BUFFER:
        !          1676:                {
        !          1677:                /* Amount of text matched not including the EOB char. */
        !          1678:                int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
        !          1679: 
        !          1680:                /* Undo the effects of YY_DO_BEFORE_ACTION. */
        !          1681:                *yy_cp = yyg->yy_hold_char;
        !          1682:                YY_RESTORE_YY_MORE_OFFSET
        !          1683: 
        !          1684:                if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
        !          1685:                        {
        !          1686:                        /* We're scanning a new file or input source.  It's
        !          1687:                         * possible that this happened because the user
        !          1688:                         * just pointed yyin at a new source and called
        !          1689:                         * yylex().  If so, then we have to assure
        !          1690:                         * consistency between YY_CURRENT_BUFFER and our
        !          1691:                         * globals.  Here is the right place to do so, because
        !          1692:                         * this is the first action (other than possibly a
        !          1693:                         * back-up) that will match for the new input source.
        !          1694:                         */
        !          1695:                        yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
        !          1696: /* %if-c-only */
        !          1697:                        YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
        !          1698: /* %endif */
        !          1699: /* %if-c++-only */
        !          1700: /* %endif */
        !          1701:                        YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
        !          1702:                        }
        !          1703: 
        !          1704:                /* Note that here we test for yy_c_buf_p "<=" to the position
        !          1705:                 * of the first EOB in the buffer, since yy_c_buf_p will
        !          1706:                 * already have been incremented past the NUL character
        !          1707:                 * (since all states make transitions on EOB to the
        !          1708:                 * end-of-buffer state).  Contrast this with the test
        !          1709:                 * in input().
        !          1710:                 */
        !          1711:                if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
        !          1712:                        { /* This was really a NUL. */
        !          1713:                        yy_state_type yy_next_state;
        !          1714: 
        !          1715:                        yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
        !          1716: 
        !          1717:                        yy_current_state = yy_get_previous_state( yyscanner );
        !          1718: 
        !          1719:                        /* Okay, we're now positioned to make the NUL
        !          1720:                         * transition.  We couldn't have
        !          1721:                         * yy_get_previous_state() go ahead and do it
        !          1722:                         * for us because it doesn't know how to deal
        !          1723:                         * with the possibility of jamming (and we don't
        !          1724:                         * want to build jamming into it because then it
        !          1725:                         * will run more slowly).
        !          1726:                         */
        !          1727: 
        !          1728:                        yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
        !          1729: 
        !          1730:                        yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
        !          1731: 
        !          1732:                        if ( yy_next_state )
        !          1733:                                {
        !          1734:                                /* Consume the NUL. */
        !          1735:                                yy_cp = ++yyg->yy_c_buf_p;
        !          1736:                                yy_current_state = yy_next_state;
        !          1737:                                goto yy_match;
        !          1738:                                }
        !          1739: 
        !          1740:                        else
        !          1741:                                {
        !          1742: /* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
        !          1743:                                yy_cp = yyg->yy_last_accepting_cpos;
        !          1744:                                yy_current_state = yyg->yy_last_accepting_state;
        !          1745:                                goto yy_find_action;
        !          1746:                                }
        !          1747:                        }
        !          1748: 
        !          1749:                else switch ( yy_get_next_buffer( yyscanner ) )
        !          1750:                        {
        !          1751:                        case EOB_ACT_END_OF_FILE:
        !          1752:                                {
        !          1753:                                yyg->yy_did_buffer_switch_on_eof = 0;
        !          1754: 
        !          1755:                                if ( yywrap( yyscanner ) )
        !          1756:                                        {
        !          1757:                                        /* Note: because we've taken care in
        !          1758:                                         * yy_get_next_buffer() to have set up
        !          1759:                                         * yytext, we can now set up
        !          1760:                                         * yy_c_buf_p so that if some total
        !          1761:                                         * hoser (like flex itself) wants to
        !          1762:                                         * call the scanner after we return the
        !          1763:                                         * YY_NULL, it'll still work - another
        !          1764:                                         * YY_NULL will get returned.
        !          1765:                                         */
        !          1766:                                        yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
        !          1767: 
        !          1768:                                        yy_act = YY_STATE_EOF(YY_START);
        !          1769:                                        goto do_action;
        !          1770:                                        }
        !          1771: 
        !          1772:                                else
        !          1773:                                        {
        !          1774:                                        if ( ! yyg->yy_did_buffer_switch_on_eof )
        !          1775:                                                YY_NEW_FILE;
        !          1776:                                        }
        !          1777:                                break;
        !          1778:                                }
        !          1779: 
        !          1780:                        case EOB_ACT_CONTINUE_SCAN:
        !          1781:                                yyg->yy_c_buf_p =
        !          1782:                                        yyg->yytext_ptr + yy_amount_of_matched_text;
        !          1783: 
        !          1784:                                yy_current_state = yy_get_previous_state( yyscanner );
        !          1785: 
        !          1786:                                yy_cp = yyg->yy_c_buf_p;
        !          1787:                                yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
        !          1788:                                goto yy_match;
        !          1789: 
        !          1790:                        case EOB_ACT_LAST_MATCH:
        !          1791:                                yyg->yy_c_buf_p =
        !          1792:                                &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
        !          1793: 
        !          1794:                                yy_current_state = yy_get_previous_state( yyscanner );
        !          1795: 
        !          1796:                                yy_cp = yyg->yy_c_buf_p;
        !          1797:                                yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
        !          1798:                                goto yy_find_action;
        !          1799:                        }
        !          1800:                break;
        !          1801:                }
        !          1802: 
        !          1803:        default:
        !          1804:                YY_FATAL_ERROR(
        !          1805:                        "fatal flex scanner internal error--no action found" );
        !          1806:        } /* end of action switch */
        !          1807:                } /* end of scanning one token */
        !          1808:        } /* end of user's declarations */
        !          1809: } /* end of yylex */
        !          1810: /* %ok-for-header */
        !          1811: 
        !          1812: /* %if-c++-only */
        !          1813: /* %not-for-header */
        !          1814: /* %ok-for-header */
        !          1815: 
        !          1816: /* %endif */
        !          1817: 
        !          1818: /* yy_get_next_buffer - try to read in a new buffer
        !          1819:  *
        !          1820:  * Returns a code representing an action:
        !          1821:  *     EOB_ACT_LAST_MATCH -
        !          1822:  *     EOB_ACT_CONTINUE_SCAN - continue scanning from current position
        !          1823:  *     EOB_ACT_END_OF_FILE - end of file
        !          1824:  */
        !          1825: /* %if-c-only */
        !          1826: static int yy_get_next_buffer (yyscan_t yyscanner)
        !          1827: /* %endif */
        !          1828: /* %if-c++-only */
        !          1829: /* %endif */
        !          1830: {
        !          1831:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          1832:        char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
        !          1833:        char *source = yyg->yytext_ptr;
        !          1834:        int number_to_move, i;
        !          1835:        int ret_val;
        !          1836: 
        !          1837:        if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
        !          1838:                YY_FATAL_ERROR(
        !          1839:                "fatal flex scanner internal error--end of buffer missed" );
        !          1840: 
        !          1841:        if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
        !          1842:                { /* Don't try to fill the buffer, so this is an EOF. */
        !          1843:                if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
        !          1844:                        {
        !          1845:                        /* We matched a single character, the EOB, so
        !          1846:                         * treat this as a final EOF.
        !          1847:                         */
        !          1848:                        return EOB_ACT_END_OF_FILE;
        !          1849:                        }
        !          1850: 
        !          1851:                else
        !          1852:                        {
        !          1853:                        /* We matched some text prior to the EOB, first
        !          1854:                         * process it.
        !          1855:                         */
        !          1856:                        return EOB_ACT_LAST_MATCH;
        !          1857:                        }
        !          1858:                }
        !          1859: 
        !          1860:        /* Try to read more data. */
        !          1861: 
        !          1862:        /* First move last chars to start of buffer. */
        !          1863:        number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1);
        !          1864: 
        !          1865:        for ( i = 0; i < number_to_move; ++i )
        !          1866:                *(dest++) = *(source++);
        !          1867: 
        !          1868:        if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
        !          1869:                /* don't do the read, it's not guaranteed to return an EOF,
        !          1870:                 * just force an EOF
        !          1871:                 */
        !          1872:                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
        !          1873: 
        !          1874:        else
        !          1875:                {
        !          1876:                        int num_to_read =
        !          1877:                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
        !          1878: 
        !          1879:                while ( num_to_read <= 0 )
        !          1880:                        { /* Not enough room in the buffer - grow it. */
        !          1881: 
        !          1882:                        /* just a shorter name for the current buffer */
        !          1883:                        YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
        !          1884: 
        !          1885:                        int yy_c_buf_p_offset =
        !          1886:                                (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
        !          1887: 
        !          1888:                        if ( b->yy_is_our_buffer )
        !          1889:                                {
        !          1890:                                int new_size = b->yy_buf_size * 2;
        !          1891: 
        !          1892:                                if ( new_size <= 0 )
        !          1893:                                        b->yy_buf_size += b->yy_buf_size / 8;
        !          1894:                                else
        !          1895:                                        b->yy_buf_size *= 2;
        !          1896: 
        !          1897:                                b->yy_ch_buf = (char *)
        !          1898:                                        /* Include room in for 2 EOB chars. */
        !          1899:                                        yyrealloc( (void *) b->yy_ch_buf,
        !          1900:                                                         (yy_size_t) (b->yy_buf_size + 2) , yyscanner );
        !          1901:                                }
        !          1902:                        else
        !          1903:                                /* Can't grow it, we don't own it. */
        !          1904:                                b->yy_ch_buf = NULL;
        !          1905: 
        !          1906:                        if ( ! b->yy_ch_buf )
        !          1907:                                YY_FATAL_ERROR(
        !          1908:                                "fatal error - scanner input buffer overflow" );
        !          1909: 
        !          1910:                        yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
        !          1911: 
        !          1912:                        num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
        !          1913:                                                number_to_move - 1;
        !          1914: 
        !          1915:                        }
        !          1916: 
        !          1917:                if ( num_to_read > YY_READ_BUF_SIZE )
        !          1918:                        num_to_read = YY_READ_BUF_SIZE;
        !          1919: 
        !          1920:                /* Read in more data. */
        !          1921:                YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
        !          1922:                        yyg->yy_n_chars, num_to_read );
        !          1923: 
        !          1924:                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
        !          1925:                }
        !          1926: 
        !          1927:        if ( yyg->yy_n_chars == 0 )
        !          1928:                {
        !          1929:                if ( number_to_move == YY_MORE_ADJ )
        !          1930:                        {
        !          1931:                        ret_val = EOB_ACT_END_OF_FILE;
        !          1932:                        yyrestart( yyin  , yyscanner);
        !          1933:                        }
        !          1934: 
        !          1935:                else
        !          1936:                        {
        !          1937:                        ret_val = EOB_ACT_LAST_MATCH;
        !          1938:                        YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
        !          1939:                                YY_BUFFER_EOF_PENDING;
        !          1940:                        }
        !          1941:                }
        !          1942: 
        !          1943:        else
        !          1944:                ret_val = EOB_ACT_CONTINUE_SCAN;
        !          1945: 
        !          1946:        if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
        !          1947:                /* Extend the array by 50%, plus the number we really need. */
        !          1948:                int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
        !          1949:                YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
        !          1950:                        (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner );
        !          1951:                if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
        !          1952:                        YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
        !          1953:                /* "- 2" to take care of EOB's */
        !          1954:                YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
        !          1955:        }
        !          1956: 
        !          1957:        yyg->yy_n_chars += number_to_move;
        !          1958:        YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
        !          1959:        YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
        !          1960: 
        !          1961:        yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
        !          1962: 
        !          1963:        return ret_val;
        !          1964: }
        !          1965: 
        !          1966: /* yy_get_previous_state - get the state just before the EOB char was reached */
        !          1967: 
        !          1968: /* %if-c-only */
        !          1969: /* %not-for-header */
        !          1970:     static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
        !          1971: /* %endif */
        !          1972: /* %if-c++-only */
        !          1973: /* %endif */
        !          1974: {
        !          1975:        yy_state_type yy_current_state;
        !          1976:        char *yy_cp;
        !          1977:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          1978: 
        !          1979: /* %% [15.0] code to get the start state into yy_current_state goes here */
        !          1980:        yy_current_state = yyg->yy_start;
        !          1981: 
        !          1982:        for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
        !          1983:                {
        !          1984: /* %% [16.0] code to find the next state goes here */
        !          1985:                YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
        !          1986:                if ( yy_accept[yy_current_state] )
        !          1987:                        {
        !          1988:                        yyg->yy_last_accepting_state = yy_current_state;
        !          1989:                        yyg->yy_last_accepting_cpos = yy_cp;
        !          1990:                        }
        !          1991:                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
        !          1992:                        {
        !          1993:                        yy_current_state = (int) yy_def[yy_current_state];
        !          1994:                        if ( yy_current_state >= 85 )
        !          1995:                                yy_c = yy_meta[yy_c];
        !          1996:                        }
        !          1997:                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
        !          1998:                }
        !          1999: 
        !          2000:        return yy_current_state;
        !          2001: }
        !          2002: 
        !          2003: /* yy_try_NUL_trans - try to make a transition on the NUL character
        !          2004:  *
        !          2005:  * synopsis
        !          2006:  *     next_state = yy_try_NUL_trans( current_state );
        !          2007:  */
        !          2008: /* %if-c-only */
        !          2009:     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
        !          2010: /* %endif */
        !          2011: /* %if-c++-only */
        !          2012: /* %endif */
        !          2013: {
        !          2014:        int yy_is_jam;
        !          2015:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
        !          2016: /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
        !          2017:        char *yy_cp = yyg->yy_c_buf_p;
        !          2018: 
        !          2019:        YY_CHAR yy_c = 1;
        !          2020:        if ( yy_accept[yy_current_state] )
        !          2021:                {
        !          2022:                yyg->yy_last_accepting_state = yy_current_state;
        !          2023:                yyg->yy_last_accepting_cpos = yy_cp;
        !          2024:                }
        !          2025:        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
        !          2026:                {
        !          2027:                yy_current_state = (int) yy_def[yy_current_state];
        !          2028:                if ( yy_current_state >= 85 )
        !          2029:                        yy_c = yy_meta[yy_c];
        !          2030:                }
        !          2031:        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
        !          2032:        yy_is_jam = (yy_current_state == 84);
        !          2033: 
        !          2034:        (void)yyg;
        !          2035:        return yy_is_jam ? 0 : yy_current_state;
        !          2036: }
        !          2037: 
        !          2038: #ifndef YY_NO_UNPUT
        !          2039: /* %if-c-only */
        !          2040: 
        !          2041:     static void yyunput (int c, char * yy_bp , yyscan_t yyscanner)
        !          2042: /* %endif */
        !          2043: /* %if-c++-only */
        !          2044: /* %endif */
        !          2045: {
        !          2046:        char *yy_cp;
        !          2047:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2048: 
        !          2049:     yy_cp = yyg->yy_c_buf_p;
        !          2050: 
        !          2051:        /* undo effects of setting up yytext */
        !          2052:        *yy_cp = yyg->yy_hold_char;
        !          2053: 
        !          2054:        if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
        !          2055:                { /* need to shift things up to make room */
        !          2056:                /* +2 for EOB chars. */
        !          2057:                int number_to_move = yyg->yy_n_chars + 2;
        !          2058:                char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
        !          2059:                                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
        !          2060:                char *source =
        !          2061:                                &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
        !          2062: 
        !          2063:                while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
        !          2064:                        *--dest = *--source;
        !          2065: 
        !          2066:                yy_cp += (int) (dest - source);
        !          2067:                yy_bp += (int) (dest - source);
        !          2068:                YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
        !          2069:                        yyg->yy_n_chars = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
        !          2070: 
        !          2071:                if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
        !          2072:                        YY_FATAL_ERROR( "flex scanner push-back overflow" );
        !          2073:                }
        !          2074: 
        !          2075:        *--yy_cp = (char) c;
        !          2076: 
        !          2077: /* %% [18.0] update yylineno here */
        !          2078: 
        !          2079:     if ( c == '\n' ){
        !          2080:         --yylineno;
        !          2081:     }
        !          2082: 
        !          2083:        yyg->yytext_ptr = yy_bp;
        !          2084:        yyg->yy_hold_char = *yy_cp;
        !          2085:        yyg->yy_c_buf_p = yy_cp;
        !          2086: }
        !          2087: /* %if-c-only */
        !          2088: 
        !          2089: /* %endif */
        !          2090: #endif
        !          2091: 
        !          2092: /* %if-c-only */
        !          2093: #ifndef YY_NO_INPUT
        !          2094: #ifdef __cplusplus
        !          2095:     static int yyinput (yyscan_t yyscanner)
        !          2096: #else
        !          2097:     static int input  (yyscan_t yyscanner)
        !          2098: #endif
        !          2099: 
        !          2100: /* %endif */
        !          2101: /* %if-c++-only */
        !          2102: /* %endif */
        !          2103: {
        !          2104:        int c;
        !          2105:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2106: 
        !          2107:        *yyg->yy_c_buf_p = yyg->yy_hold_char;
        !          2108: 
        !          2109:        if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
        !          2110:                {
        !          2111:                /* yy_c_buf_p now points to the character we want to return.
        !          2112:                 * If this occurs *before* the EOB characters, then it's a
        !          2113:                 * valid NUL; if not, then we've hit the end of the buffer.
        !          2114:                 */
        !          2115:                if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
        !          2116:                        /* This was really a NUL. */
        !          2117:                        *yyg->yy_c_buf_p = '\0';
        !          2118: 
        !          2119:                else
        !          2120:                        { /* need more input */
        !          2121:                        int offset = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr);
        !          2122:                        ++yyg->yy_c_buf_p;
        !          2123: 
        !          2124:                        switch ( yy_get_next_buffer( yyscanner ) )
        !          2125:                                {
        !          2126:                                case EOB_ACT_LAST_MATCH:
        !          2127:                                        /* This happens because yy_g_n_b()
        !          2128:                                         * sees that we've accumulated a
        !          2129:                                         * token and flags that we need to
        !          2130:                                         * try matching the token before
        !          2131:                                         * proceeding.  But for input(),
        !          2132:                                         * there's no matching to consider.
        !          2133:                                         * So convert the EOB_ACT_LAST_MATCH
        !          2134:                                         * to EOB_ACT_END_OF_FILE.
        !          2135:                                         */
        !          2136: 
        !          2137:                                        /* Reset buffer status. */
        !          2138:                                        yyrestart( yyin , yyscanner);
        !          2139: 
        !          2140:                                        /*FALLTHROUGH*/
        !          2141: 
        !          2142:                                case EOB_ACT_END_OF_FILE:
        !          2143:                                        {
        !          2144:                                        if ( yywrap( yyscanner ) )
        !          2145:                                                return 0;
        !          2146: 
        !          2147:                                        if ( ! yyg->yy_did_buffer_switch_on_eof )
        !          2148:                                                YY_NEW_FILE;
        !          2149: #ifdef __cplusplus
        !          2150:                                        return yyinput(yyscanner);
        !          2151: #else
        !          2152:                                        return input(yyscanner);
        !          2153: #endif
        !          2154:                                        }
        !          2155: 
        !          2156:                                case EOB_ACT_CONTINUE_SCAN:
        !          2157:                                        yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
        !          2158:                                        break;
        !          2159:                                }
        !          2160:                        }
        !          2161:                }
        !          2162: 
        !          2163:        c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
        !          2164:        *yyg->yy_c_buf_p = '\0';        /* preserve yytext */
        !          2165:        yyg->yy_hold_char = *++yyg->yy_c_buf_p;
        !          2166: 
        !          2167: /* %% [19.0] update BOL and yylineno */
        !          2168:        if ( c == '\n' )
        !          2169:                
        !          2170:     do{ yylineno++;
        !          2171:         yycolumn=0;
        !          2172:     }while(0)
        !          2173: ;
        !          2174: 
        !          2175:        return c;
        !          2176: }
        !          2177: /* %if-c-only */
        !          2178: #endif /* ifndef YY_NO_INPUT */
        !          2179: /* %endif */
        !          2180: 
        !          2181: /** Immediately switch to a different input stream.
        !          2182:  * @param input_file A readable stream.
        !          2183:  * @param yyscanner The scanner object.
        !          2184:  * @note This function does not reset the start condition to @c INITIAL .
        !          2185:  */
        !          2186: /* %if-c-only */
        !          2187:     void yyrestart  (FILE * input_file , yyscan_t yyscanner)
        !          2188: /* %endif */
        !          2189: /* %if-c++-only */
        !          2190: /* %endif */
        !          2191: {
        !          2192:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2193: 
        !          2194:        if ( ! YY_CURRENT_BUFFER ){
        !          2195:         yyensure_buffer_stack (yyscanner);
        !          2196:                YY_CURRENT_BUFFER_LVALUE =
        !          2197:             yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
        !          2198:        }
        !          2199: 
        !          2200:        yy_init_buffer( YY_CURRENT_BUFFER, input_file , yyscanner);
        !          2201:        yy_load_buffer_state( yyscanner );
        !          2202: }
        !          2203: 
        !          2204: /* %if-c++-only */
        !          2205: /* %endif */
        !          2206: 
        !          2207: /** Switch to a different input buffer.
        !          2208:  * @param new_buffer The new input buffer.
        !          2209:  * @param yyscanner The scanner object.
        !          2210:  */
        !          2211: /* %if-c-only */
        !          2212:     void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
        !          2213: /* %endif */
        !          2214: /* %if-c++-only */
        !          2215: /* %endif */
        !          2216: {
        !          2217:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2218: 
        !          2219:        /* TODO. We should be able to replace this entire function body
        !          2220:         * with
        !          2221:         *              yypop_buffer_state();
        !          2222:         *              yypush_buffer_state(new_buffer);
        !          2223:      */
        !          2224:        yyensure_buffer_stack (yyscanner);
        !          2225:        if ( YY_CURRENT_BUFFER == new_buffer )
        !          2226:                return;
        !          2227: 
        !          2228:        if ( YY_CURRENT_BUFFER )
        !          2229:                {
        !          2230:                /* Flush out information for old buffer. */
        !          2231:                *yyg->yy_c_buf_p = yyg->yy_hold_char;
        !          2232:                YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
        !          2233:                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
        !          2234:                }
        !          2235: 
        !          2236:        YY_CURRENT_BUFFER_LVALUE = new_buffer;
        !          2237:        yy_load_buffer_state( yyscanner );
        !          2238: 
        !          2239:        /* We don't actually know whether we did this switch during
        !          2240:         * EOF (yywrap()) processing, but the only time this flag
        !          2241:         * is looked at is after yywrap() is called, so it's safe
        !          2242:         * to go ahead and always set it.
        !          2243:         */
        !          2244:        yyg->yy_did_buffer_switch_on_eof = 1;
        !          2245: }
        !          2246: 
        !          2247: /* %if-c-only */
        !          2248: static void yy_load_buffer_state  (yyscan_t yyscanner)
        !          2249: /* %endif */
        !          2250: /* %if-c++-only */
        !          2251: /* %endif */
        !          2252: {
        !          2253:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2254:        yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
        !          2255:        yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
        !          2256: /* %if-c-only */
        !          2257:        yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
        !          2258: /* %endif */
        !          2259: /* %if-c++-only */
        !          2260: /* %endif */
        !          2261:        yyg->yy_hold_char = *yyg->yy_c_buf_p;
        !          2262: }
        !          2263: 
        !          2264: /** Allocate and initialize an input buffer state.
        !          2265:  * @param file A readable stream.
        !          2266:  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
        !          2267:  * @param yyscanner The scanner object.
        !          2268:  * @return the allocated buffer state.
        !          2269:  */
        !          2270: /* %if-c-only */
        !          2271:     YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
        !          2272: /* %endif */
        !          2273: /* %if-c++-only */
        !          2274: /* %endif */
        !          2275: {
        !          2276:        YY_BUFFER_STATE b;
        !          2277:     
        !          2278:        b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner );
        !          2279:        if ( ! b )
        !          2280:                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
        !          2281: 
        !          2282:        b->yy_buf_size = size;
        !          2283: 
        !          2284:        /* yy_ch_buf has to be 2 characters longer than the size given because
        !          2285:         * we need to put in 2 end-of-buffer characters.
        !          2286:         */
        !          2287:        b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) , yyscanner );
        !          2288:        if ( ! b->yy_ch_buf )
        !          2289:                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
        !          2290: 
        !          2291:        b->yy_is_our_buffer = 1;
        !          2292: 
        !          2293:        yy_init_buffer( b, file , yyscanner);
        !          2294: 
        !          2295:        return b;
        !          2296: }
        !          2297: 
        !          2298: /* %if-c++-only */
        !          2299: /* %endif */
        !          2300: 
        !          2301: /** Destroy the buffer.
        !          2302:  * @param b a buffer created with yy_create_buffer()
        !          2303:  * @param yyscanner The scanner object.
        !          2304:  */
        !          2305: /* %if-c-only */
        !          2306:     void yy_delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
        !          2307: /* %endif */
        !          2308: /* %if-c++-only */
        !          2309: /* %endif */
        !          2310: {
        !          2311:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2312: 
        !          2313:        if ( ! b )
        !          2314:                return;
        !          2315: 
        !          2316:        if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
        !          2317:                YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
        !          2318: 
        !          2319:        if ( b->yy_is_our_buffer )
        !          2320:                yyfree( (void *) b->yy_ch_buf , yyscanner );
        !          2321: 
        !          2322:        yyfree( (void *) b , yyscanner );
        !          2323: }
        !          2324: 
        !          2325: /* Initializes or reinitializes a buffer.
        !          2326:  * This function is sometimes called more than once on the same buffer,
        !          2327:  * such as during a yyrestart() or at EOF.
        !          2328:  */
        !          2329: /* %if-c-only */
        !          2330:     static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
        !          2331: /* %endif */
        !          2332: /* %if-c++-only */
        !          2333: /* %endif */
        !          2334: 
        !          2335: {
        !          2336:        int oerrno = errno;
        !          2337:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2338: 
        !          2339:        yy_flush_buffer( b , yyscanner);
        !          2340: 
        !          2341: /* %if-c-only */
        !          2342:        b->yy_input_file = file;
        !          2343: /* %endif */
        !          2344: /* %if-c++-only */
        !          2345: /* %endif */
        !          2346:        b->yy_fill_buffer = 1;
        !          2347: 
        !          2348:     /* If b is the current buffer, then yy_init_buffer was _probably_
        !          2349:      * called from yyrestart() or through yy_get_next_buffer.
        !          2350:      * In that case, we don't want to reset the lineno or column.
        !          2351:      */
        !          2352:     if (b != YY_CURRENT_BUFFER){
        !          2353:         b->yy_bs_lineno = 1;
        !          2354:         b->yy_bs_column = 0;
        !          2355:     }
        !          2356: 
        !          2357: /* %if-c-only */
        !          2358: 
        !          2359:         b->yy_is_interactive = 0;
        !          2360:     
        !          2361: /* %endif */
        !          2362: /* %if-c++-only */
        !          2363: /* %endif */
        !          2364:        errno = oerrno;
        !          2365: }
        !          2366: 
        !          2367: /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
        !          2368:  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
        !          2369:  * @param yyscanner The scanner object.
        !          2370:  */
        !          2371: /* %if-c-only */
        !          2372:     void yy_flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
        !          2373: /* %endif */
        !          2374: /* %if-c++-only */
        !          2375: /* %endif */
        !          2376: {
        !          2377:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2378:        if ( ! b )
        !          2379:                return;
        !          2380: 
        !          2381:        b->yy_n_chars = 0;
        !          2382: 
        !          2383:        /* We always need two end-of-buffer characters.  The first causes
        !          2384:         * a transition to the end-of-buffer state.  The second causes
        !          2385:         * a jam in that state.
        !          2386:         */
        !          2387:        b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
        !          2388:        b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
        !          2389: 
        !          2390:        b->yy_buf_pos = &b->yy_ch_buf[0];
        !          2391: 
        !          2392:        b->yy_at_bol = 1;
        !          2393:        b->yy_buffer_status = YY_BUFFER_NEW;
        !          2394: 
        !          2395:        if ( b == YY_CURRENT_BUFFER )
        !          2396:                yy_load_buffer_state( yyscanner );
        !          2397: }
        !          2398: 
        !          2399: /* %if-c-or-c++ */
        !          2400: /** Pushes the new state onto the stack. The new state becomes
        !          2401:  *  the current state. This function will allocate the stack
        !          2402:  *  if necessary.
        !          2403:  *  @param new_buffer The new state.
        !          2404:  *  @param yyscanner The scanner object.
        !          2405:  */
        !          2406: /* %if-c-only */
        !          2407: void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
        !          2408: /* %endif */
        !          2409: /* %if-c++-only */
        !          2410: /* %endif */
        !          2411: {
        !          2412:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2413:        if (new_buffer == NULL)
        !          2414:                return;
        !          2415: 
        !          2416:        yyensure_buffer_stack(yyscanner);
        !          2417: 
        !          2418:        /* This block is copied from yy_switch_to_buffer. */
        !          2419:        if ( YY_CURRENT_BUFFER )
        !          2420:                {
        !          2421:                /* Flush out information for old buffer. */
        !          2422:                *yyg->yy_c_buf_p = yyg->yy_hold_char;
        !          2423:                YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
        !          2424:                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
        !          2425:                }
        !          2426: 
        !          2427:        /* Only push if top exists. Otherwise, replace top. */
        !          2428:        if (YY_CURRENT_BUFFER)
        !          2429:                yyg->yy_buffer_stack_top++;
        !          2430:        YY_CURRENT_BUFFER_LVALUE = new_buffer;
        !          2431: 
        !          2432:        /* copied from yy_switch_to_buffer. */
        !          2433:        yy_load_buffer_state( yyscanner );
        !          2434:        yyg->yy_did_buffer_switch_on_eof = 1;
        !          2435: }
        !          2436: /* %endif */
        !          2437: 
        !          2438: /* %if-c-or-c++ */
        !          2439: /** Removes and deletes the top of the stack, if present.
        !          2440:  *  The next element becomes the new top.
        !          2441:  *  @param yyscanner The scanner object.
        !          2442:  */
        !          2443: /* %if-c-only */
        !          2444: void yypop_buffer_state (yyscan_t yyscanner)
        !          2445: /* %endif */
        !          2446: /* %if-c++-only */
        !          2447: /* %endif */
        !          2448: {
        !          2449:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2450:        if (!YY_CURRENT_BUFFER)
        !          2451:                return;
        !          2452: 
        !          2453:        yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner);
        !          2454:        YY_CURRENT_BUFFER_LVALUE = NULL;
        !          2455:        if (yyg->yy_buffer_stack_top > 0)
        !          2456:                --yyg->yy_buffer_stack_top;
        !          2457: 
        !          2458:        if (YY_CURRENT_BUFFER) {
        !          2459:                yy_load_buffer_state( yyscanner );
        !          2460:                yyg->yy_did_buffer_switch_on_eof = 1;
        !          2461:        }
        !          2462: }
        !          2463: /* %endif */
        !          2464: 
        !          2465: /* %if-c-or-c++ */
        !          2466: /* Allocates the stack if it does not exist.
        !          2467:  *  Guarantees space for at least one push.
        !          2468:  */
        !          2469: /* %if-c-only */
        !          2470: static void yyensure_buffer_stack (yyscan_t yyscanner)
        !          2471: /* %endif */
        !          2472: /* %if-c++-only */
        !          2473: /* %endif */
        !          2474: {
        !          2475:        yy_size_t num_to_alloc;
        !          2476:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2477: 
        !          2478:        if (!yyg->yy_buffer_stack) {
        !          2479: 
        !          2480:                /* First allocation is just for 2 elements, since we don't know if this
        !          2481:                 * scanner will even need a stack. We use 2 instead of 1 to avoid an
        !          2482:                 * immediate realloc on the next call.
        !          2483:          */
        !          2484:       num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
        !          2485:                yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc
        !          2486:                                                                (num_to_alloc * sizeof(struct yy_buffer_state*)
        !          2487:                                                                , yyscanner);
        !          2488:                if ( ! yyg->yy_buffer_stack )
        !          2489:                        YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
        !          2490: 
        !          2491:                memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
        !          2492: 
        !          2493:                yyg->yy_buffer_stack_max = num_to_alloc;
        !          2494:                yyg->yy_buffer_stack_top = 0;
        !          2495:                return;
        !          2496:        }
        !          2497: 
        !          2498:        if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
        !          2499: 
        !          2500:                /* Increase the buffer to prepare for a possible push. */
        !          2501:                yy_size_t grow_size = 8 /* arbitrary grow size */;
        !          2502: 
        !          2503:                num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
        !          2504:                yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc
        !          2505:                                                                (yyg->yy_buffer_stack,
        !          2506:                                                                num_to_alloc * sizeof(struct yy_buffer_state*)
        !          2507:                                                                , yyscanner);
        !          2508:                if ( ! yyg->yy_buffer_stack )
        !          2509:                        YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
        !          2510: 
        !          2511:                /* zero only the new slots.*/
        !          2512:                memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
        !          2513:                yyg->yy_buffer_stack_max = num_to_alloc;
        !          2514:        }
        !          2515: }
        !          2516: /* %endif */
        !          2517: 
        !          2518: /* %if-c-only */
        !          2519: /** Setup the input buffer state to scan directly from a user-specified character buffer.
        !          2520:  * @param base the character buffer
        !          2521:  * @param size the size in bytes of the character buffer
        !          2522:  * @param yyscanner The scanner object.
        !          2523:  * @return the newly allocated buffer state object.
        !          2524:  */
        !          2525: YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
        !          2526: {
        !          2527:        YY_BUFFER_STATE b;
        !          2528:     
        !          2529:        if ( size < 2 ||
        !          2530:             base[size-2] != YY_END_OF_BUFFER_CHAR ||
        !          2531:             base[size-1] != YY_END_OF_BUFFER_CHAR )
        !          2532:                /* They forgot to leave room for the EOB's. */
        !          2533:                return NULL;
        !          2534: 
        !          2535:        b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner );
        !          2536:        if ( ! b )
        !          2537:                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
        !          2538: 
        !          2539:        b->yy_buf_size = (int) (size - 2);      /* "- 2" to take care of EOB's */
        !          2540:        b->yy_buf_pos = b->yy_ch_buf = base;
        !          2541:        b->yy_is_our_buffer = 0;
        !          2542:        b->yy_input_file = NULL;
        !          2543:        b->yy_n_chars = b->yy_buf_size;
        !          2544:        b->yy_is_interactive = 0;
        !          2545:        b->yy_at_bol = 1;
        !          2546:        b->yy_fill_buffer = 0;
        !          2547:        b->yy_buffer_status = YY_BUFFER_NEW;
        !          2548: 
        !          2549:        yy_switch_to_buffer( b , yyscanner );
        !          2550: 
        !          2551:        return b;
        !          2552: }
        !          2553: /* %endif */
        !          2554: 
        !          2555: /* %if-c-only */
        !          2556: /** Setup the input buffer state to scan a string. The next call to yylex() will
        !          2557:  * scan from a @e copy of @a str.
        !          2558:  * @param yystr a NUL-terminated string to scan
        !          2559:  * @param yyscanner The scanner object.
        !          2560:  * @return the newly allocated buffer state object.
        !          2561:  * @note If you want to scan bytes that may contain NUL values, then use
        !          2562:  *       yy_scan_bytes() instead.
        !          2563:  */
        !          2564: YY_BUFFER_STATE yy_scan_string (const char * yystr , yyscan_t yyscanner)
        !          2565: {
        !          2566:     
        !          2567:        return yy_scan_bytes( yystr, (int) strlen(yystr) , yyscanner);
        !          2568: }
        !          2569: /* %endif */
        !          2570: 
        !          2571: /* %if-c-only */
        !          2572: /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
        !          2573:  * scan from a @e copy of @a bytes.
        !          2574:  * @param yybytes the byte buffer to scan
        !          2575:  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
        !          2576:  * @param yyscanner The scanner object.
        !          2577:  * @return the newly allocated buffer state object.
        !          2578:  */
        !          2579: YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len , yyscan_t yyscanner)
        !          2580: {
        !          2581:        YY_BUFFER_STATE b;
        !          2582:        char *buf;
        !          2583:        yy_size_t n;
        !          2584:        int i;
        !          2585:     
        !          2586:        /* Get memory for full buffer, including space for trailing EOB's. */
        !          2587:        n = (yy_size_t) (_yybytes_len + 2);
        !          2588:        buf = (char *) yyalloc( n , yyscanner );
        !          2589:        if ( ! buf )
        !          2590:                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
        !          2591: 
        !          2592:        for ( i = 0; i < _yybytes_len; ++i )
        !          2593:                buf[i] = yybytes[i];
        !          2594: 
        !          2595:        buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
        !          2596: 
        !          2597:        b = yy_scan_buffer( buf, n , yyscanner);
        !          2598:        if ( ! b )
        !          2599:                YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
        !          2600: 
        !          2601:        /* It's okay to grow etc. this buffer, and we should throw it
        !          2602:         * away when we're done.
        !          2603:         */
        !          2604:        b->yy_is_our_buffer = 1;
        !          2605: 
        !          2606:        return b;
        !          2607: }
        !          2608: /* %endif */
        !          2609: 
        !          2610: /* %if-c-only */
        !          2611:     static void yy_push_state (int  _new_state , yyscan_t yyscanner)
        !          2612: /* %endif */
        !          2613: /* %if-c++-only */
        !          2614: /* %endif */
        !          2615: {
        !          2616:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2617:        if ( yyg->yy_start_stack_ptr >= yyg->yy_start_stack_depth )
        !          2618:                {
        !          2619:                yy_size_t new_size;
        !          2620: 
        !          2621:                yyg->yy_start_stack_depth += YY_START_STACK_INCR;
        !          2622:                new_size = (yy_size_t) yyg->yy_start_stack_depth * sizeof( int );
        !          2623: 
        !          2624:                if ( ! yyg->yy_start_stack )
        !          2625:                        yyg->yy_start_stack = (int *) yyalloc( new_size , yyscanner );
        !          2626: 
        !          2627:                else
        !          2628:                        yyg->yy_start_stack = (int *) yyrealloc(
        !          2629:                                        (void *) yyg->yy_start_stack, new_size , yyscanner );
        !          2630: 
        !          2631:                if ( ! yyg->yy_start_stack )
        !          2632:                        YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
        !          2633:                }
        !          2634: 
        !          2635:        yyg->yy_start_stack[yyg->yy_start_stack_ptr++] = YY_START;
        !          2636: 
        !          2637:        BEGIN(_new_state);
        !          2638: }
        !          2639: 
        !          2640: /* %if-c-only */
        !          2641:     static void yy_pop_state  (yyscan_t yyscanner)
        !          2642: /* %endif */
        !          2643: /* %if-c++-only */
        !          2644: /* %endif */
        !          2645: {
        !          2646:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2647:        if ( --yyg->yy_start_stack_ptr < 0 )
        !          2648:                YY_FATAL_ERROR( "start-condition stack underflow" );
        !          2649: 
        !          2650:        BEGIN(yyg->yy_start_stack[yyg->yy_start_stack_ptr]);
        !          2651: }
        !          2652: 
        !          2653: /* %if-c-only */
        !          2654:     static int yy_top_state  (yyscan_t yyscanner)
        !          2655: /* %endif */
        !          2656: /* %if-c++-only */
        !          2657: /* %endif */
        !          2658: {
        !          2659:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2660:        return yyg->yy_start_stack[yyg->yy_start_stack_ptr - 1];
        !          2661: }
        !          2662: 
        !          2663: #ifndef YY_EXIT_FAILURE
        !          2664: #define YY_EXIT_FAILURE 2
        !          2665: #endif
        !          2666: 
        !          2667: /* %if-c-only */
        !          2668: static void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner)
        !          2669: {
        !          2670:        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2671:        (void)yyg;
        !          2672:        fprintf( stderr, "%s\n", msg );
        !          2673:        exit( YY_EXIT_FAILURE );
        !          2674: }
        !          2675: /* %endif */
        !          2676: /* %if-c++-only */
        !          2677: /* %endif */
        !          2678: 
        !          2679: /* Redefine yyless() so it works in section 3 code. */
        !          2680: 
        !          2681: #undef yyless
        !          2682: #define yyless(n) \
        !          2683:        do \
        !          2684:                { \
        !          2685:                /* Undo effects of setting up yytext. */ \
        !          2686:         int yyless_macro_arg = (n); \
        !          2687:         YY_LESS_LINENO(yyless_macro_arg);\
        !          2688:                yytext[yyleng] = yyg->yy_hold_char; \
        !          2689:                yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
        !          2690:                yyg->yy_hold_char = *yyg->yy_c_buf_p; \
        !          2691:                *yyg->yy_c_buf_p = '\0'; \
        !          2692:                yyleng = yyless_macro_arg; \
        !          2693:                } \
        !          2694:        while ( 0 )
        !          2695: 
        !          2696: /* Accessor  methods (get/set functions) to struct members. */
        !          2697: 
        !          2698: /* %if-c-only */
        !          2699: /* %if-reentrant */
        !          2700: 
        !          2701: /** Get the user-defined data for this scanner.
        !          2702:  * @param yyscanner The scanner object.
        !          2703:  */
        !          2704: YY_EXTRA_TYPE yyget_extra  (yyscan_t yyscanner)
        !          2705: {
        !          2706:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2707:     return yyextra;
        !          2708: }
        !          2709: 
        !          2710: /* %endif */
        !          2711: 
        !          2712: /** Get the current line number.
        !          2713:  * @param yyscanner The scanner object.
        !          2714:  */
        !          2715: int yyget_lineno  (yyscan_t yyscanner)
        !          2716: {
        !          2717:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2718: 
        !          2719:         if (! YY_CURRENT_BUFFER)
        !          2720:             return 0;
        !          2721:     
        !          2722:     return yylineno;
        !          2723: }
        !          2724: 
        !          2725: /** Get the current column number.
        !          2726:  * @param yyscanner The scanner object.
        !          2727:  */
        !          2728: int yyget_column  (yyscan_t yyscanner)
        !          2729: {
        !          2730:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2731: 
        !          2732:         if (! YY_CURRENT_BUFFER)
        !          2733:             return 0;
        !          2734:     
        !          2735:     return yycolumn;
        !          2736: }
        !          2737: 
        !          2738: /** Get the input stream.
        !          2739:  * @param yyscanner The scanner object.
        !          2740:  */
        !          2741: FILE *yyget_in  (yyscan_t yyscanner)
        !          2742: {
        !          2743:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2744:     return yyin;
        !          2745: }
        !          2746: 
        !          2747: /** Get the output stream.
        !          2748:  * @param yyscanner The scanner object.
        !          2749:  */
        !          2750: FILE *yyget_out  (yyscan_t yyscanner)
        !          2751: {
        !          2752:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2753:     return yyout;
        !          2754: }
        !          2755: 
        !          2756: /** Get the length of the current token.
        !          2757:  * @param yyscanner The scanner object.
        !          2758:  */
        !          2759: int yyget_leng  (yyscan_t yyscanner)
        !          2760: {
        !          2761:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2762:     return yyleng;
        !          2763: }
        !          2764: 
        !          2765: /** Get the current token.
        !          2766:  * @param yyscanner The scanner object.
        !          2767:  */
        !          2768: 
        !          2769: char *yyget_text  (yyscan_t yyscanner)
        !          2770: {
        !          2771:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2772:     return yytext;
        !          2773: }
        !          2774: 
        !          2775: /* %if-reentrant */
        !          2776: 
        !          2777: /** Set the user-defined data. This data is never touched by the scanner.
        !          2778:  * @param user_defined The data to be associated with this scanner.
        !          2779:  * @param yyscanner The scanner object.
        !          2780:  */
        !          2781: void yyset_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
        !          2782: {
        !          2783:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2784:     yyextra = user_defined ;
        !          2785: }
        !          2786: 
        !          2787: /* %endif */
        !          2788: 
        !          2789: /** Set the current line number.
        !          2790:  * @param _line_number line number
        !          2791:  * @param yyscanner The scanner object.
        !          2792:  */
        !          2793: void yyset_lineno (int  _line_number , yyscan_t yyscanner)
        !          2794: {
        !          2795:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2796: 
        !          2797:         /* lineno is only valid if an input buffer exists. */
        !          2798:         if (! YY_CURRENT_BUFFER )
        !          2799:            YY_FATAL_ERROR( "yyset_lineno called with no buffer" );
        !          2800:     
        !          2801:     yylineno = _line_number;
        !          2802: }
        !          2803: 
        !          2804: /** Set the current column.
        !          2805:  * @param _column_no column number
        !          2806:  * @param yyscanner The scanner object.
        !          2807:  */
        !          2808: void yyset_column (int  _column_no , yyscan_t yyscanner)
        !          2809: {
        !          2810:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2811: 
        !          2812:         /* column is only valid if an input buffer exists. */
        !          2813:         if (! YY_CURRENT_BUFFER )
        !          2814:            YY_FATAL_ERROR( "yyset_column called with no buffer" );
        !          2815:     
        !          2816:     yycolumn = _column_no;
        !          2817: }
        !          2818: 
        !          2819: /** Set the input stream. This does not discard the current
        !          2820:  * input buffer.
        !          2821:  * @param _in_str A readable stream.
        !          2822:  * @param yyscanner The scanner object.
        !          2823:  * @see yy_switch_to_buffer
        !          2824:  */
        !          2825: void yyset_in (FILE *  _in_str , yyscan_t yyscanner)
        !          2826: {
        !          2827:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2828:     yyin = _in_str ;
        !          2829: }
        !          2830: 
        !          2831: void yyset_out (FILE *  _out_str , yyscan_t yyscanner)
        !          2832: {
        !          2833:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2834:     yyout = _out_str ;
        !          2835: }
        !          2836: 
        !          2837: int yyget_debug  (yyscan_t yyscanner)
        !          2838: {
        !          2839:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2840:     return yy_flex_debug;
        !          2841: }
        !          2842: 
        !          2843: void yyset_debug (int  _bdebug , yyscan_t yyscanner)
        !          2844: {
        !          2845:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2846:     yy_flex_debug = _bdebug ;
        !          2847: }
        !          2848: 
        !          2849: /* %endif */
        !          2850: 
        !          2851: /* %if-reentrant */
        !          2852: /* Accessor methods for yylval and yylloc */
        !          2853: 
        !          2854: /* %if-bison-bridge */
        !          2855: 
        !          2856: YYSTYPE * yyget_lval  (yyscan_t yyscanner)
        !          2857: {
        !          2858:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2859:     return yylval;
        !          2860: }
        !          2861: 
        !          2862: void yyset_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
        !          2863: {
        !          2864:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2865:     yylval = yylval_param;
        !          2866: }
        !          2867: 
        !          2868: /* %endif */
        !          2869: 
        !          2870: /* User-visible API */
        !          2871: 
        !          2872: /* yylex_init is special because it creates the scanner itself, so it is
        !          2873:  * the ONLY reentrant function that doesn't take the scanner as the last argument.
        !          2874:  * That's why we explicitly handle the declaration, instead of using our macros.
        !          2875:  */
        !          2876: int yylex_init(yyscan_t* ptr_yy_globals)
        !          2877: {
        !          2878:     if (ptr_yy_globals == NULL){
        !          2879:         errno = EINVAL;
        !          2880:         return 1;
        !          2881:     }
        !          2882: 
        !          2883:     *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );
        !          2884: 
        !          2885:     if (*ptr_yy_globals == NULL){
        !          2886:         errno = ENOMEM;
        !          2887:         return 1;
        !          2888:     }
        !          2889: 
        !          2890:     /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
        !          2891:     memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
        !          2892: 
        !          2893:     return yy_init_globals ( *ptr_yy_globals );
        !          2894: }
        !          2895: 
        !          2896: /* yylex_init_extra has the same functionality as yylex_init, but follows the
        !          2897:  * convention of taking the scanner as the last argument. Note however, that
        !          2898:  * this is a *pointer* to a scanner, as it will be allocated by this call (and
        !          2899:  * is the reason, too, why this function also must handle its own declaration).
        !          2900:  * The user defined value in the first argument will be available to yyalloc in
        !          2901:  * the yyextra field.
        !          2902:  */
        !          2903: int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals )
        !          2904: {
        !          2905:     struct yyguts_t dummy_yyguts;
        !          2906: 
        !          2907:     yyset_extra (yy_user_defined, &dummy_yyguts);
        !          2908: 
        !          2909:     if (ptr_yy_globals == NULL){
        !          2910:         errno = EINVAL;
        !          2911:         return 1;
        !          2912:     }
        !          2913: 
        !          2914:     *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
        !          2915: 
        !          2916:     if (*ptr_yy_globals == NULL){
        !          2917:         errno = ENOMEM;
        !          2918:         return 1;
        !          2919:     }
        !          2920: 
        !          2921:     /* By setting to 0xAA, we expose bugs in
        !          2922:     yy_init_globals. Leave at 0x00 for releases. */
        !          2923:     memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
        !          2924: 
        !          2925:     yyset_extra (yy_user_defined, *ptr_yy_globals);
        !          2926: 
        !          2927:     return yy_init_globals ( *ptr_yy_globals );
        !          2928: }
        !          2929: 
        !          2930: /* %endif if-c-only */
        !          2931: 
        !          2932: /* %if-c-only */
        !          2933: static int yy_init_globals (yyscan_t yyscanner)
        !          2934: {
        !          2935:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2936:     /* Initialization is the same as for the non-reentrant scanner.
        !          2937:      * This function is called from yylex_destroy(), so don't allocate here.
        !          2938:      */
        !          2939: 
        !          2940:     yyg->yy_buffer_stack = NULL;
        !          2941:     yyg->yy_buffer_stack_top = 0;
        !          2942:     yyg->yy_buffer_stack_max = 0;
        !          2943:     yyg->yy_c_buf_p = NULL;
        !          2944:     yyg->yy_init = 0;
        !          2945:     yyg->yy_start = 0;
        !          2946: 
        !          2947:     yyg->yy_start_stack_ptr = 0;
        !          2948:     yyg->yy_start_stack_depth = 0;
        !          2949:     yyg->yy_start_stack =  NULL;
        !          2950: 
        !          2951: /* Defined in main.c */
        !          2952: #ifdef YY_STDINIT
        !          2953:     yyin = stdin;
        !          2954:     yyout = stdout;
        !          2955: #else
        !          2956:     yyin = NULL;
        !          2957:     yyout = NULL;
        !          2958: #endif
        !          2959: 
        !          2960:     /* For future reference: Set errno on error, since we are called by
        !          2961:      * yylex_init()
        !          2962:      */
        !          2963:     return 0;
        !          2964: }
        !          2965: /* %endif */
        !          2966: 
        !          2967: /* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
        !          2968: /* yylex_destroy is for both reentrant and non-reentrant scanners. */
        !          2969: int yylex_destroy  (yyscan_t yyscanner)
        !          2970: {
        !          2971:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          2972: 
        !          2973:     /* Pop the buffer stack, destroying each element. */
        !          2974:        while(YY_CURRENT_BUFFER){
        !          2975:                yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner );
        !          2976:                YY_CURRENT_BUFFER_LVALUE = NULL;
        !          2977:                yypop_buffer_state(yyscanner);
        !          2978:        }
        !          2979: 
        !          2980:        /* Destroy the stack itself. */
        !          2981:        yyfree(yyg->yy_buffer_stack , yyscanner);
        !          2982:        yyg->yy_buffer_stack = NULL;
        !          2983: 
        !          2984:     /* Destroy the start condition stack. */
        !          2985:         yyfree( yyg->yy_start_stack , yyscanner );
        !          2986:         yyg->yy_start_stack = NULL;
        !          2987: 
        !          2988:     /* Reset the globals. This is important in a non-reentrant scanner so the next time
        !          2989:      * yylex() is called, initialization will occur. */
        !          2990:     yy_init_globals( yyscanner);
        !          2991: 
        !          2992: /* %if-reentrant */
        !          2993:     /* Destroy the main struct (reentrant only). */
        !          2994:     yyfree ( yyscanner , yyscanner );
        !          2995:     yyscanner = NULL;
        !          2996: /* %endif */
        !          2997:     return 0;
        !          2998: }
        !          2999: /* %endif */
        !          3000: 
        !          3001: /*
        !          3002:  * Internal utility routines.
        !          3003:  */
        !          3004: 
        !          3005: #ifndef yytext_ptr
        !          3006: static void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner)
        !          3007: {
        !          3008:        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          3009:        (void)yyg;
        !          3010: 
        !          3011:        int i;
        !          3012:        for ( i = 0; i < n; ++i )
        !          3013:                s1[i] = s2[i];
        !          3014: }
        !          3015: #endif
        !          3016: 
        !          3017: #ifdef YY_NEED_STRLEN
        !          3018: static int yy_flex_strlen (const char * s , yyscan_t yyscanner)
        !          3019: {
        !          3020:        int n;
        !          3021:        for ( n = 0; s[n]; ++n )
        !          3022:                ;
        !          3023: 
        !          3024:        return n;
        !          3025: }
        !          3026: #endif
        !          3027: 
        !          3028: void *yyalloc (yy_size_t  size , yyscan_t yyscanner)
        !          3029: {
        !          3030:        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          3031:        (void)yyg;
        !          3032:        return malloc(size);
        !          3033: }
        !          3034: 
        !          3035: void *yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
        !          3036: {
        !          3037:        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          3038:        (void)yyg;
        !          3039: 
        !          3040:        /* The cast to (char *) in the following accommodates both
        !          3041:         * implementations that use char* generic pointers, and those
        !          3042:         * that use void* generic pointers.  It works with the latter
        !          3043:         * because both ANSI C and C++ allow castless assignment from
        !          3044:         * any pointer type to void*, and deal with argument conversions
        !          3045:         * as though doing an assignment.
        !          3046:         */
        !          3047:        return realloc(ptr, size);
        !          3048: }
        !          3049: 
        !          3050: void yyfree (void * ptr , yyscan_t yyscanner)
        !          3051: {
        !          3052:        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
        !          3053:        (void)yyg;
        !          3054:        free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
        !          3055: }
        !          3056: 
        !          3057: /* %if-tables-serialization definitions */
        !          3058: /* %define-yytables   The name for this specific scanner's tables. */
        !          3059: #define YYTABLES_NAME "yytables"
        !          3060: /* %endif */
        !          3061: 
        !          3062: /* %ok-for-header */
        !          3063: 
        !          3064: #line 241 "settings/settings_lexer.l"
        !          3065: 
        !          3066: 
        !          3067: /**
        !          3068:  * Open the next file, if any is queued and readable, otherwise returns FALSE.
        !          3069:  */
        !          3070: bool settings_parser_open_next_file(parser_helper_t *ctx)
        !          3071: {
        !          3072:        FILE *file;
        !          3073: 
        !          3074:        file = ctx->file_next(ctx);
        !          3075:        if (!file)
        !          3076:        {
        !          3077:                return FALSE;
        !          3078:        }
        !          3079: 
        !          3080:        settings_parser_set_in(file, ctx->scanner);
        !          3081:        settings_parser_push_buffer_state(
        !          3082:                        settings_parser__create_buffer(file, YY_BUF_SIZE,
        !          3083:                                                                                   ctx->scanner), ctx->scanner);
        !          3084:        return TRUE;
        !          3085: }
        !          3086: 
        !          3087: /**
        !          3088:  * Assumes that the file pattern to include is currently stored as string on
        !          3089:  * the helper object.
        !          3090:  */
        !          3091: static void include_files(parser_helper_t *ctx)
        !          3092: {
        !          3093:        char *pattern = ctx->string_get(ctx);
        !          3094: 
        !          3095:        ctx->file_include(ctx, pattern);
        !          3096:        free(pattern);
        !          3097: 
        !          3098:        settings_parser_open_next_file(ctx);
        !          3099: }
        !          3100: 
        !          3101: /**
        !          3102:  * Load the given string to be parsed next
        !          3103:  */
        !          3104: void settings_parser_load_string(parser_helper_t *ctx, const char *content)
        !          3105: {
        !          3106:        settings_parser__scan_string(content, ctx->scanner);
        !          3107: }
        !          3108: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>