toybox/kconfig/lex.zconf.c_shipped
<<
>>
Prefs
   1
   2#line 3 "scripts/kconfig/lex.zconf.c"
   3
   4#define  YY_INT_ALIGNED short int
   5
   6/* A lexical scanner generated by flex */
   7
   8#define FLEX_SCANNER
   9#define YY_FLEX_MAJOR_VERSION 2
  10#define YY_FLEX_MINOR_VERSION 5
  11#define YY_FLEX_SUBMINOR_VERSION 33
  12#if YY_FLEX_SUBMINOR_VERSION > 0
  13#define FLEX_BETA
  14#endif
  15
  16/* First, we deal with  platform-specific or compiler-specific issues. */
  17
  18/* begin standard C headers. */
  19#include <stdio.h>
  20#include <string.h>
  21#include <errno.h>
  22#include <stdlib.h>
  23
  24/* end standard C headers. */
  25
  26/* flex integer type definitions */
  27
  28#ifndef FLEXINT_H
  29#define FLEXINT_H
  30
  31/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
  32
  33#if __STDC_VERSION__ >= 199901L
  34
  35/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
  36 * if you want the limit (max/min) macros for int types.
  37 */
  38#ifndef __STDC_LIMIT_MACROS
  39#define __STDC_LIMIT_MACROS 1
  40#endif
  41
  42#include <inttypes.h>
  43typedef int8_t flex_int8_t;
  44typedef uint8_t flex_uint8_t;
  45typedef int16_t flex_int16_t;
  46typedef uint16_t flex_uint16_t;
  47typedef int32_t flex_int32_t;
  48typedef uint32_t flex_uint32_t;
  49#else
  50typedef signed char flex_int8_t;
  51typedef short int flex_int16_t;
  52typedef int flex_int32_t;
  53typedef unsigned char flex_uint8_t; 
  54typedef unsigned short int flex_uint16_t;
  55typedef unsigned int flex_uint32_t;
  56#endif /* ! C99 */
  57
  58/* Limits of integral types. */
  59#ifndef INT8_MIN
  60#define INT8_MIN               (-128)
  61#endif
  62#ifndef INT16_MIN
  63#define INT16_MIN              (-32767-1)
  64#endif
  65#ifndef INT32_MIN
  66#define INT32_MIN              (-2147483647-1)
  67#endif
  68#ifndef INT8_MAX
  69#define INT8_MAX               (127)
  70#endif
  71#ifndef INT16_MAX
  72#define INT16_MAX              (32767)
  73#endif
  74#ifndef INT32_MAX
  75#define INT32_MAX              (2147483647)
  76#endif
  77#ifndef UINT8_MAX
  78#define UINT8_MAX              (255U)
  79#endif
  80#ifndef UINT16_MAX
  81#define UINT16_MAX             (65535U)
  82#endif
  83#ifndef UINT32_MAX
  84#define UINT32_MAX             (4294967295U)
  85#endif
  86
  87#endif /* ! FLEXINT_H */
  88
  89#ifdef __cplusplus
  90
  91/* The "const" storage-class-modifier is valid. */
  92#define YY_USE_CONST
  93
  94#else   /* ! __cplusplus */
  95
  96#if __STDC__
  97
  98#define YY_USE_CONST
  99
 100#endif  /* __STDC__ */
 101#endif  /* ! __cplusplus */
 102
 103#ifdef YY_USE_CONST
 104#define yyconst const
 105#else
 106#define yyconst
 107#endif
 108
 109/* Returned upon end-of-file. */
 110#define YY_NULL 0
 111
 112/* Promotes a possibly negative, possibly signed char to an unsigned
 113 * integer for use as an array index.  If the signed char is negative,
 114 * we want to instead treat it as an 8-bit unsigned char, hence the
 115 * double cast.
 116 */
 117#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
 118
 119/* Enter a start condition.  This macro really ought to take a parameter,
 120 * but we do it the disgusting crufty way forced on us by the ()-less
 121 * definition of BEGIN.
 122 */
 123#define BEGIN (yy_start) = 1 + 2 *
 124
 125/* Translate the current start state into a value that can be later handed
 126 * to BEGIN to return to the state.  The YYSTATE alias is for lex
 127 * compatibility.
 128 */
 129#define YY_START (((yy_start) - 1) / 2)
 130#define YYSTATE YY_START
 131
 132/* Action number for EOF rule of a given start state. */
 133#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
 134
 135/* Special action meaning "start processing a new file". */
 136#define YY_NEW_FILE zconfrestart(zconfin  )
 137
 138#define YY_END_OF_BUFFER_CHAR 0
 139
 140/* Size of default input buffer. */
 141#ifndef YY_BUF_SIZE
 142#define YY_BUF_SIZE 16384
 143#endif
 144
 145/* The state buf must be large enough to hold one state per character in the main buffer.
 146 */
 147#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
 148
 149#ifndef YY_TYPEDEF_YY_BUFFER_STATE
 150#define YY_TYPEDEF_YY_BUFFER_STATE
 151typedef struct yy_buffer_state *YY_BUFFER_STATE;
 152#endif
 153
 154extern int zconfleng;
 155
 156extern FILE *zconfin, *zconfout;
 157
 158#define EOB_ACT_CONTINUE_SCAN 0
 159#define EOB_ACT_END_OF_FILE 1
 160#define EOB_ACT_LAST_MATCH 2
 161
 162    #define YY_LESS_LINENO(n)
 163    
 164/* Return all but the first "n" matched characters back to the input stream. */
 165#define yyless(n) \
 166        do \
 167                { \
 168                /* Undo effects of setting up zconftext. */ \
 169        int yyless_macro_arg = (n); \
 170        YY_LESS_LINENO(yyless_macro_arg);\
 171                *yy_cp = (yy_hold_char); \
 172                YY_RESTORE_YY_MORE_OFFSET \
 173                (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
 174                YY_DO_BEFORE_ACTION; /* set up zconftext again */ \
 175                } \
 176        while ( 0 )
 177
 178#define unput(c) yyunput( c, (yytext_ptr)  )
 179
 180/* The following is because we cannot portably get our hands on size_t
 181 * (without autoconf's help, which isn't available because we want
 182 * flex-generated scanners to compile on their own).
 183 */
 184
 185#ifndef YY_TYPEDEF_YY_SIZE_T
 186#define YY_TYPEDEF_YY_SIZE_T
 187typedef unsigned int yy_size_t;
 188#endif
 189
 190#ifndef YY_STRUCT_YY_BUFFER_STATE
 191#define YY_STRUCT_YY_BUFFER_STATE
 192struct yy_buffer_state
 193        {
 194        FILE *yy_input_file;
 195
 196        char *yy_ch_buf;                /* input buffer */
 197        char *yy_buf_pos;               /* current position in input buffer */
 198
 199        /* Size of input buffer in bytes, not including room for EOB
 200         * characters.
 201         */
 202        yy_size_t yy_buf_size;
 203
 204        /* Number of characters read into yy_ch_buf, not including EOB
 205         * characters.
 206         */
 207        int yy_n_chars;
 208
 209        /* Whether we "own" the buffer - i.e., we know we created it,
 210         * and can realloc() it to grow it, and should free() it to
 211         * delete it.
 212         */
 213        int yy_is_our_buffer;
 214
 215        /* Whether this is an "interactive" input source; if so, and
 216         * if we're using stdio for input, then we want to use getc()
 217         * instead of fread(), to make sure we stop fetching input after
 218         * each newline.
 219         */
 220        int yy_is_interactive;
 221
 222        /* Whether we're considered to be at the beginning of a line.
 223         * If so, '^' rules will be active on the next match, otherwise
 224         * not.
 225         */
 226        int yy_at_bol;
 227
 228    int yy_bs_lineno; /**< The line count. */
 229    int yy_bs_column; /**< The column count. */
 230    
 231        /* Whether to try to fill the input buffer when we reach the
 232         * end of it.
 233         */
 234        int yy_fill_buffer;
 235
 236        int yy_buffer_status;
 237
 238#define YY_BUFFER_NEW 0
 239#define YY_BUFFER_NORMAL 1
 240        /* When an EOF's been seen but there's still some text to process
 241         * then we mark the buffer as YY_EOF_PENDING, to indicate that we
 242         * shouldn't try reading from the input source any more.  We might
 243         * still have a bunch of tokens to match, though, because of
 244         * possible backing-up.
 245         *
 246         * When we actually see the EOF, we change the status to "new"
 247         * (via zconfrestart()), so that the user can continue scanning by
 248         * just pointing zconfin at a new input file.
 249         */
 250#define YY_BUFFER_EOF_PENDING 2
 251
 252        };
 253#endif /* !YY_STRUCT_YY_BUFFER_STATE */
 254
 255/* Stack of input buffers. */
 256static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
 257static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
 258static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
 259
 260/* We provide macros for accessing buffer states in case in the
 261 * future we want to put the buffer states in a more general
 262 * "scanner state".
 263 *
 264 * Returns the top of the stack, or NULL.
 265 */
 266#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
 267                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
 268                          : NULL)
 269
 270/* Same as previous macro, but useful when we know that the buffer stack is not
 271 * NULL or when we need an lvalue. For internal use only.
 272 */
 273#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
 274
 275/* yy_hold_char holds the character lost when zconftext is formed. */
 276static char yy_hold_char;
 277static int yy_n_chars;          /* number of characters read into yy_ch_buf */
 278int zconfleng;
 279
 280/* Points to current character in buffer. */
 281static char *yy_c_buf_p = (char *) 0;
 282static int yy_init = 0;         /* whether we need to initialize */
 283static int yy_start = 0;        /* start state number */
 284
 285/* Flag which is used to allow zconfwrap()'s to do buffer switches
 286 * instead of setting up a fresh zconfin.  A bit of a hack ...
 287 */
 288static int yy_did_buffer_switch_on_eof;
 289
 290void zconfrestart (FILE *input_file  );
 291void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
 292YY_BUFFER_STATE zconf_create_buffer (FILE *file,int size  );
 293void zconf_delete_buffer (YY_BUFFER_STATE b  );
 294void zconf_flush_buffer (YY_BUFFER_STATE b  );
 295void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer  );
 296void zconfpop_buffer_state (void );
 297
 298static void zconfensure_buffer_stack (void );
 299static void zconf_load_buffer_state (void );
 300static void zconf_init_buffer (YY_BUFFER_STATE b,FILE *file  );
 301
 302#define YY_FLUSH_BUFFER zconf_flush_buffer(YY_CURRENT_BUFFER )
 303
 304YY_BUFFER_STATE zconf_scan_buffer (char *base,yy_size_t size  );
 305YY_BUFFER_STATE zconf_scan_string (yyconst char *yy_str  );
 306YY_BUFFER_STATE zconf_scan_bytes (yyconst char *bytes,int len  );
 307
 308void *zconfalloc (yy_size_t  );
 309void *zconfrealloc (void *,yy_size_t  );
 310void zconffree (void *  );
 311
 312#define yy_new_buffer zconf_create_buffer
 313
 314#define yy_set_interactive(is_interactive) \
 315        { \
 316        if ( ! YY_CURRENT_BUFFER ){ \
 317        zconfensure_buffer_stack (); \
 318                YY_CURRENT_BUFFER_LVALUE =    \
 319            zconf_create_buffer(zconfin,YY_BUF_SIZE ); \
 320        } \
 321        YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
 322        }
 323
 324#define yy_set_bol(at_bol) \
 325        { \
 326        if ( ! YY_CURRENT_BUFFER ){\
 327        zconfensure_buffer_stack (); \
 328                YY_CURRENT_BUFFER_LVALUE =    \
 329            zconf_create_buffer(zconfin,YY_BUF_SIZE ); \
 330        } \
 331        YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
 332        }
 333
 334#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
 335
 336/* Begin user sect3 */
 337
 338#define zconfwrap() 1
 339#define YY_SKIP_YYWRAP
 340
 341typedef unsigned char YY_CHAR;
 342
 343FILE *zconfin = (FILE *) 0, *zconfout = (FILE *) 0;
 344
 345typedef int yy_state_type;
 346
 347extern int zconflineno;
 348
 349int zconflineno = 1;
 350
 351extern char *zconftext;
 352#define yytext_ptr zconftext
 353static yyconst flex_int16_t yy_nxt[][17] =
 354    {
 355    {
 356        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 357        0,    0,    0,    0,    0,    0,    0
 358    },
 359
 360    {
 361       11,   12,   13,   14,   12,   12,   15,   12,   12,   12,
 362       12,   12,   12,   12,   12,   12,   12
 363    },
 364
 365    {
 366       11,   12,   13,   14,   12,   12,   15,   12,   12,   12,
 367       12,   12,   12,   12,   12,   12,   12
 368    },
 369
 370    {
 371       11,   16,   16,   17,   16,   16,   16,   16,   16,   16,
 372       16,   16,   16,   18,   16,   16,   16
 373    },
 374
 375    {
 376       11,   16,   16,   17,   16,   16,   16,   16,   16,   16,
 377       16,   16,   16,   18,   16,   16,   16
 378
 379    },
 380
 381    {
 382       11,   19,   20,   21,   19,   19,   19,   19,   19,   19,
 383       19,   19,   19,   19,   19,   19,   19
 384    },
 385
 386    {
 387       11,   19,   20,   21,   19,   19,   19,   19,   19,   19,
 388       19,   19,   19,   19,   19,   19,   19
 389    },
 390
 391    {
 392       11,   22,   22,   23,   22,   24,   22,   22,   24,   22,
 393       22,   22,   22,   22,   22,   25,   22
 394    },
 395
 396    {
 397       11,   22,   22,   23,   22,   24,   22,   22,   24,   22,
 398       22,   22,   22,   22,   22,   25,   22
 399    },
 400
 401    {
 402       11,   26,   26,   27,   28,   29,   30,   31,   29,   32,
 403       33,   34,   35,   35,   36,   37,   38
 404
 405    },
 406
 407    {
 408       11,   26,   26,   27,   28,   29,   30,   31,   29,   32,
 409       33,   34,   35,   35,   36,   37,   38
 410    },
 411
 412    {
 413      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
 414      -11,  -11,  -11,  -11,  -11,  -11,  -11
 415    },
 416
 417    {
 418       11,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
 419      -12,  -12,  -12,  -12,  -12,  -12,  -12
 420    },
 421
 422    {
 423       11,  -13,   39,   40,  -13,  -13,   41,  -13,  -13,  -13,
 424      -13,  -13,  -13,  -13,  -13,  -13,  -13
 425    },
 426
 427    {
 428       11,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
 429      -14,  -14,  -14,  -14,  -14,  -14,  -14
 430
 431    },
 432
 433    {
 434       11,   42,   42,   43,   42,   42,   42,   42,   42,   42,
 435       42,   42,   42,   42,   42,   42,   42
 436    },
 437
 438    {
 439       11,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
 440      -16,  -16,  -16,  -16,  -16,  -16,  -16
 441    },
 442
 443    {
 444       11,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
 445      -17,  -17,  -17,  -17,  -17,  -17,  -17
 446    },
 447
 448    {
 449       11,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
 450      -18,  -18,  -18,   44,  -18,  -18,  -18
 451    },
 452
 453    {
 454       11,   45,   45,  -19,   45,   45,   45,   45,   45,   45,
 455       45,   45,   45,   45,   45,   45,   45
 456
 457    },
 458
 459    {
 460       11,  -20,   46,   47,  -20,  -20,  -20,  -20,  -20,  -20,
 461      -20,  -20,  -20,  -20,  -20,  -20,  -20
 462    },
 463
 464    {
 465       11,   48,  -21,  -21,   48,   48,   48,   48,   48,   48,
 466       48,   48,   48,   48,   48,   48,   48
 467    },
 468
 469    {
 470       11,   49,   49,   50,   49,  -22,   49,   49,  -22,   49,
 471       49,   49,   49,   49,   49,  -22,   49
 472    },
 473
 474    {
 475       11,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
 476      -23,  -23,  -23,  -23,  -23,  -23,  -23
 477    },
 478
 479    {
 480       11,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
 481      -24,  -24,  -24,  -24,  -24,  -24,  -24
 482
 483    },
 484
 485    {
 486       11,   51,   51,   52,   51,   51,   51,   51,   51,   51,
 487       51,   51,   51,   51,   51,   51,   51
 488    },
 489
 490    {
 491       11,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
 492      -26,  -26,  -26,  -26,  -26,  -26,  -26
 493    },
 494
 495    {
 496       11,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
 497      -27,  -27,  -27,  -27,  -27,  -27,  -27
 498    },
 499
 500    {
 501       11,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
 502      -28,  -28,  -28,  -28,   53,  -28,  -28
 503    },
 504
 505    {
 506       11,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
 507      -29,  -29,  -29,  -29,  -29,  -29,  -29
 508
 509    },
 510
 511    {
 512       11,   54,   54,  -30,   54,   54,   54,   54,   54,   54,
 513       54,   54,   54,   54,   54,   54,   54
 514    },
 515
 516    {
 517       11,  -31,  -31,  -31,  -31,  -31,  -31,   55,  -31,  -31,
 518      -31,  -31,  -31,  -31,  -31,  -31,  -31
 519    },
 520
 521    {
 522       11,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
 523      -32,  -32,  -32,  -32,  -32,  -32,  -32
 524    },
 525
 526    {
 527       11,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
 528      -33,  -33,  -33,  -33,  -33,  -33,  -33
 529    },
 530
 531    {
 532       11,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
 533      -34,   56,   57,   57,  -34,  -34,  -34
 534
 535    },
 536
 537    {
 538       11,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
 539      -35,   57,   57,   57,  -35,  -35,  -35
 540    },
 541
 542    {
 543       11,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
 544      -36,  -36,  -36,  -36,  -36,  -36,  -36
 545    },
 546
 547    {
 548       11,  -37,  -37,   58,  -37,  -37,  -37,  -37,  -37,  -37,
 549      -37,  -37,  -37,  -37,  -37,  -37,  -37
 550    },
 551
 552    {
 553       11,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
 554      -38,  -38,  -38,  -38,  -38,  -38,   59
 555    },
 556
 557    {
 558       11,  -39,   39,   40,  -39,  -39,   41,  -39,  -39,  -39,
 559      -39,  -39,  -39,  -39,  -39,  -39,  -39
 560
 561    },
 562
 563    {
 564       11,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
 565      -40,  -40,  -40,  -40,  -40,  -40,  -40
 566    },
 567
 568    {
 569       11,   42,   42,   43,   42,   42,   42,   42,   42,   42,
 570       42,   42,   42,   42,   42,   42,   42
 571    },
 572
 573    {
 574       11,   42,   42,   43,   42,   42,   42,   42,   42,   42,
 575       42,   42,   42,   42,   42,   42,   42
 576    },
 577
 578    {
 579       11,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
 580      -43,  -43,  -43,  -43,  -43,  -43,  -43
 581    },
 582
 583    {
 584       11,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
 585      -44,  -44,  -44,   44,  -44,  -44,  -44
 586
 587    },
 588
 589    {
 590       11,   45,   45,  -45,   45,   45,   45,   45,   45,   45,
 591       45,   45,   45,   45,   45,   45,   45
 592    },
 593
 594    {
 595       11,  -46,   46,   47,  -46,  -46,  -46,  -46,  -46,  -46,
 596      -46,  -46,  -46,  -46,  -46,  -46,  -46
 597    },
 598
 599    {
 600       11,   48,  -47,  -47,   48,   48,   48,   48,   48,   48,
 601       48,   48,   48,   48,   48,   48,   48
 602    },
 603
 604    {
 605       11,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
 606      -48,  -48,  -48,  -48,  -48,  -48,  -48
 607    },
 608
 609    {
 610       11,   49,   49,   50,   49,  -49,   49,   49,  -49,   49,
 611       49,   49,   49,   49,   49,  -49,   49
 612
 613    },
 614
 615    {
 616       11,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
 617      -50,  -50,  -50,  -50,  -50,  -50,  -50
 618    },
 619
 620    {
 621       11,  -51,  -51,   52,  -51,  -51,  -51,  -51,  -51,  -51,
 622      -51,  -51,  -51,  -51,  -51,  -51,  -51
 623    },
 624
 625    {
 626       11,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
 627      -52,  -52,  -52,  -52,  -52,  -52,  -52
 628    },
 629
 630    {
 631       11,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
 632      -53,  -53,  -53,  -53,  -53,  -53,  -53
 633    },
 634
 635    {
 636       11,   54,   54,  -54,   54,   54,   54,   54,   54,   54,
 637       54,   54,   54,   54,   54,   54,   54
 638
 639    },
 640
 641    {
 642       11,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
 643      -55,  -55,  -55,  -55,  -55,  -55,  -55
 644    },
 645
 646    {
 647       11,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
 648      -56,   60,   57,   57,  -56,  -56,  -56
 649    },
 650
 651    {
 652       11,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,
 653      -57,   57,   57,   57,  -57,  -57,  -57
 654    },
 655
 656    {
 657       11,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
 658      -58,  -58,  -58,  -58,  -58,  -58,  -58
 659    },
 660
 661    {
 662       11,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,
 663      -59,  -59,  -59,  -59,  -59,  -59,  -59
 664
 665    },
 666
 667    {
 668       11,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,
 669      -60,   57,   57,   57,  -60,  -60,  -60
 670    },
 671
 672    } ;
 673
 674static yy_state_type yy_get_previous_state (void );
 675static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
 676static int yy_get_next_buffer (void );
 677static void yy_fatal_error (yyconst char msg[]  );
 678
 679/* Done after the current pattern has been matched and before the
 680 * corresponding action - sets up zconftext.
 681 */
 682#define YY_DO_BEFORE_ACTION \
 683        (yytext_ptr) = yy_bp; \
 684        zconfleng = (size_t) (yy_cp - yy_bp); \
 685        (yy_hold_char) = *yy_cp; \
 686        *yy_cp = '\0'; \
 687        (yy_c_buf_p) = yy_cp;
 688
 689#define YY_NUM_RULES 33
 690#define YY_END_OF_BUFFER 34
 691/* This struct is not used in this scanner,
 692   but its presence is necessary. */
 693struct yy_trans_info
 694        {
 695        flex_int32_t yy_verify;
 696        flex_int32_t yy_nxt;
 697        };
 698static yyconst flex_int16_t yy_accept[61] =
 699    {   0,
 700        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 701       34,    5,    4,    2,    3,    7,    8,    6,   32,   29,
 702       31,   24,   28,   27,   26,   22,   17,   13,   16,   20,
 703       22,   11,   12,   19,   19,   14,   22,   22,    4,    2,
 704        3,    3,    1,    6,   32,   29,   31,   30,   24,   23,
 705       26,   25,   15,   20,    9,   19,   19,   21,   10,   18
 706    } ;
 707
 708static yyconst flex_int32_t yy_ec[256] =
 709    {   0,
 710        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
 711        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 712        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 713        1,    2,    4,    5,    6,    1,    1,    7,    8,    9,
 714       10,    1,    1,    1,   11,   12,   12,   13,   13,   13,
 715       13,   13,   13,   13,   13,   13,   13,    1,    1,    1,
 716       14,    1,    1,    1,   13,   13,   13,   13,   13,   13,
 717       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
 718       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
 719        1,   15,    1,    1,   13,    1,   13,   13,   13,   13,
 720
 721       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
 722       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
 723       13,   13,    1,   16,    1,    1,    1,    1,    1,    1,
 724        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 725        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 726        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 727        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 728        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 729        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 730        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 731
 732        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 733        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 734        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 735        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 736        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 737        1,    1,    1,    1,    1
 738    } ;
 739
 740extern int zconf_flex_debug;
 741int zconf_flex_debug = 0;
 742
 743/* The intent behind this definition is that it'll catch
 744 * any uses of REJECT which flex missed.
 745 */
 746#define REJECT reject_used_but_not_detected
 747#define yymore() yymore_used_but_not_detected
 748#define YY_MORE_ADJ 0
 749#define YY_RESTORE_YY_MORE_OFFSET
 750char *zconftext;
 751
 752/*
 753 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
 754 * Released under the terms of the GNU GPL v2.0.
 755 */
 756
 757#include <limits.h>
 758#include <stdio.h>
 759#include <stdlib.h>
 760#include <string.h>
 761#include <unistd.h>
 762
 763#define LKC_DIRECT_LINK
 764#include "lkc.h"
 765
 766#define START_STRSIZE   16
 767
 768static struct {
 769        struct file *file;
 770        int lineno;
 771} current_pos;
 772
 773static char *text;
 774static int text_size, text_asize;
 775
 776struct buffer {
 777        struct buffer *parent;
 778        YY_BUFFER_STATE state;
 779};
 780
 781struct buffer *current_buf;
 782
 783static int last_ts, first_ts;
 784
 785static void zconf_endhelp(void);
 786static void zconf_endfile(void);
 787
 788void new_string(void)
 789{
 790        text = malloc(START_STRSIZE);
 791        text_asize = START_STRSIZE;
 792        text_size = 0;
 793        *text = 0;
 794}
 795
 796void append_string(const char *str, int size)
 797{
 798        int new_size = text_size + size + 1;
 799        if (new_size > text_asize) {
 800                new_size += START_STRSIZE - 1;
 801                new_size &= -START_STRSIZE;
 802                text = realloc(text, new_size);
 803                text_asize = new_size;
 804        }
 805        memcpy(text + text_size, str, size);
 806        text_size += size;
 807        text[text_size] = 0;
 808}
 809
 810void alloc_string(const char *str, int size)
 811{
 812        text = malloc(size + 1);
 813        memcpy(text, str, size);
 814        text[size] = 0;
 815}
 816
 817#define INITIAL 0
 818#define COMMAND 1
 819#define HELP 2
 820#define STRING 3
 821#define PARAM 4
 822
 823#ifndef YY_NO_UNISTD_H
 824/* Special case for "unistd.h", since it is non-ANSI. We include it way
 825 * down here because we want the user's section 1 to have been scanned first.
 826 * The user has a chance to override it with an option.
 827 */
 828#include <unistd.h>
 829#endif
 830
 831#ifndef YY_EXTRA_TYPE
 832#define YY_EXTRA_TYPE void *
 833#endif
 834
 835static int yy_init_globals (void );
 836
 837/* Macros after this point can all be overridden by user definitions in
 838 * section 1.
 839 */
 840
 841#ifndef YY_SKIP_YYWRAP
 842#ifdef __cplusplus
 843extern "C" int zconfwrap (void );
 844#else
 845extern int zconfwrap (void );
 846#endif
 847#endif
 848
 849    static void yyunput (int c,char *buf_ptr  );
 850    
 851#ifndef yytext_ptr
 852static void yy_flex_strncpy (char *,yyconst char *,int );
 853#endif
 854
 855#ifdef YY_NEED_STRLEN
 856static int yy_flex_strlen (yyconst char * );
 857#endif
 858
 859#ifndef YY_NO_INPUT
 860
 861#ifdef __cplusplus
 862static int yyinput (void );
 863#else
 864static int input (void );
 865#endif
 866
 867#endif
 868
 869/* Amount of stuff to slurp up with each read. */
 870#ifndef YY_READ_BUF_SIZE
 871#define YY_READ_BUF_SIZE 8192
 872#endif
 873
 874/* Copy whatever the last rule matched to the standard output. */
 875#ifndef ECHO
 876/* This used to be an fputs(), but since the string might contain NUL's,
 877 * we now use fwrite().
 878 */
 879#define ECHO (void) fwrite( zconftext, zconfleng, 1, zconfout )
 880#endif
 881
 882/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
 883 * is returned in "result".
 884 */
 885#ifndef YY_INPUT
 886#define YY_INPUT(buf,result,max_size) \
 887        errno=0; \
 888        while ( (result = read( fileno(zconfin), (char *) buf, max_size )) < 0 ) \
 889        { \
 890                if( errno != EINTR) \
 891                { \
 892                        YY_FATAL_ERROR( "input in flex scanner failed" ); \
 893                        break; \
 894                } \
 895                errno=0; \
 896                clearerr(zconfin); \
 897        }\
 898\
 899
 900#endif
 901
 902/* No semi-colon after return; correct usage is to write "yyterminate();" -
 903 * we don't want an extra ';' after the "return" because that will cause
 904 * some compilers to complain about unreachable statements.
 905 */
 906#ifndef yyterminate
 907#define yyterminate() return YY_NULL
 908#endif
 909
 910/* Number of entries by which start-condition stack grows. */
 911#ifndef YY_START_STACK_INCR
 912#define YY_START_STACK_INCR 25
 913#endif
 914
 915/* Report a fatal error. */
 916#ifndef YY_FATAL_ERROR
 917#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
 918#endif
 919
 920/* end tables serialization structures and prototypes */
 921
 922/* Default declaration of generated scanner - a define so the user can
 923 * easily add parameters.
 924 */
 925#ifndef YY_DECL
 926#define YY_DECL_IS_OURS 1
 927
 928extern int zconflex (void);
 929
 930#define YY_DECL int zconflex (void)
 931#endif /* !YY_DECL */
 932
 933/* Code executed at the beginning of each rule, after zconftext and zconfleng
 934 * have been set up.
 935 */
 936#ifndef YY_USER_ACTION
 937#define YY_USER_ACTION
 938#endif
 939
 940/* Code executed at the end of each rule. */
 941#ifndef YY_BREAK
 942#define YY_BREAK break;
 943#endif
 944
 945#define YY_RULE_SETUP \
 946        YY_USER_ACTION
 947
 948/** The main scanner function which does all the work.
 949 */
 950YY_DECL
 951{
 952        register yy_state_type yy_current_state;
 953        register char *yy_cp, *yy_bp;
 954        register int yy_act;
 955    
 956        int str = 0;
 957        int ts, i;
 958
 959        if ( !(yy_init) )
 960                {
 961                (yy_init) = 1;
 962
 963#ifdef YY_USER_INIT
 964                YY_USER_INIT;
 965#endif
 966
 967                if ( ! (yy_start) )
 968                        (yy_start) = 1; /* first start state */
 969
 970                if ( ! zconfin )
 971                        zconfin = stdin;
 972
 973                if ( ! zconfout )
 974                        zconfout = stdout;
 975
 976                if ( ! YY_CURRENT_BUFFER ) {
 977                        zconfensure_buffer_stack ();
 978                        YY_CURRENT_BUFFER_LVALUE =
 979                                zconf_create_buffer(zconfin,YY_BUF_SIZE );
 980                }
 981
 982                zconf_load_buffer_state( );
 983                }
 984
 985        while ( 1 )             /* loops until end-of-file is reached */
 986                {
 987                yy_cp = (yy_c_buf_p);
 988
 989                /* Support of zconftext. */
 990                *yy_cp = (yy_hold_char);
 991
 992                /* yy_bp points to the position in yy_ch_buf of the start of
 993                 * the current run.
 994                 */
 995                yy_bp = yy_cp;
 996
 997                yy_current_state = (yy_start);
 998yy_match:
 999                while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)]  ]) > 0 )
1000                        ++yy_cp;
1001
1002                yy_current_state = -yy_current_state;
1003
1004yy_find_action:
1005                yy_act = yy_accept[yy_current_state];
1006
1007                YY_DO_BEFORE_ACTION;
1008
1009do_action:      /* This label is used only to access EOF actions. */
1010
1011                switch ( yy_act )
1012        { /* beginning of action switch */
1013case 1:
1014/* rule 1 can match eol */
1015case 2:
1016/* rule 2 can match eol */
1017YY_RULE_SETUP
1018{
1019        current_file->lineno++;
1020        return T_EOL;
1021}
1022        YY_BREAK
1023case 3:
1024YY_RULE_SETUP
1025
1026        YY_BREAK
1027case 4:
1028YY_RULE_SETUP
1029{
1030        BEGIN(COMMAND);
1031}
1032        YY_BREAK
1033case 5:
1034YY_RULE_SETUP
1035{
1036        unput(zconftext[0]);
1037        BEGIN(COMMAND);
1038}
1039        YY_BREAK
1040
1041case 6:
1042YY_RULE_SETUP
1043{
1044                struct kconf_id *id = kconf_id_lookup(zconftext, zconfleng);
1045                BEGIN(PARAM);
1046                current_pos.file = current_file;
1047                current_pos.lineno = current_file->lineno;
1048                if (id && id->flags & TF_COMMAND) {
1049                        zconflval.id = id;
1050                        return id->token;
1051                }
1052                alloc_string(zconftext, zconfleng);
1053                zconflval.string = text;
1054                return T_WORD;
1055        }
1056        YY_BREAK
1057case 7:
1058YY_RULE_SETUP
1059
1060        YY_BREAK
1061case 8:
1062/* rule 8 can match eol */
1063YY_RULE_SETUP
1064{
1065                BEGIN(INITIAL);
1066                current_file->lineno++;
1067                return T_EOL;
1068        }
1069        YY_BREAK
1070
1071case 9:
1072YY_RULE_SETUP
1073return T_AND;
1074        YY_BREAK
1075case 10:
1076YY_RULE_SETUP
1077return T_OR;
1078        YY_BREAK
1079case 11:
1080YY_RULE_SETUP
1081return T_OPEN_PAREN;
1082        YY_BREAK
1083case 12:
1084YY_RULE_SETUP
1085return T_CLOSE_PAREN;
1086        YY_BREAK
1087case 13:
1088YY_RULE_SETUP
1089return T_NOT;
1090        YY_BREAK
1091case 14:
1092YY_RULE_SETUP
1093return T_EQUAL;
1094        YY_BREAK
1095case 15:
1096YY_RULE_SETUP
1097return T_UNEQUAL;
1098        YY_BREAK
1099case 16:
1100YY_RULE_SETUP
1101{
1102                str = zconftext[0];
1103                new_string();
1104                BEGIN(STRING);
1105        }
1106        YY_BREAK
1107case 17:
1108/* rule 17 can match eol */
1109YY_RULE_SETUP
1110BEGIN(INITIAL); current_file->lineno++; return T_EOL;
1111        YY_BREAK
1112case 18:
1113YY_RULE_SETUP
1114/* ignore */
1115        YY_BREAK
1116case 19:
1117YY_RULE_SETUP
1118{
1119                struct kconf_id *id = kconf_id_lookup(zconftext, zconfleng);
1120                if (id && id->flags & TF_PARAM) {
1121                        zconflval.id = id;
1122                        return id->token;
1123                }
1124                alloc_string(zconftext, zconfleng);
1125                zconflval.string = text;
1126                return T_WORD;
1127        }
1128        YY_BREAK
1129case 20:
1130YY_RULE_SETUP
1131/* comment */
1132        YY_BREAK
1133case 21:
1134/* rule 21 can match eol */
1135YY_RULE_SETUP
1136current_file->lineno++;
1137        YY_BREAK
1138case 22:
1139YY_RULE_SETUP
1140
1141        YY_BREAK
1142case YY_STATE_EOF(PARAM):
1143{
1144                BEGIN(INITIAL);
1145        }
1146        YY_BREAK
1147
1148case 23:
1149/* rule 23 can match eol */
1150*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
1151(yy_c_buf_p) = yy_cp -= 1;
1152YY_DO_BEFORE_ACTION; /* set up zconftext again */
1153YY_RULE_SETUP
1154{
1155                append_string(zconftext, zconfleng);
1156                zconflval.string = text;
1157                return T_WORD_QUOTE;
1158        }
1159        YY_BREAK
1160case 24:
1161YY_RULE_SETUP
1162{
1163                append_string(zconftext, zconfleng);
1164        }
1165        YY_BREAK
1166case 25:
1167/* rule 25 can match eol */
1168*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
1169(yy_c_buf_p) = yy_cp -= 1;
1170YY_DO_BEFORE_ACTION; /* set up zconftext again */
1171YY_RULE_SETUP
1172{
1173                append_string(zconftext + 1, zconfleng - 1);
1174                zconflval.string = text;
1175                return T_WORD_QUOTE;
1176        }
1177        YY_BREAK
1178case 26:
1179YY_RULE_SETUP
1180{
1181                append_string(zconftext + 1, zconfleng - 1);
1182        }
1183        YY_BREAK
1184case 27:
1185YY_RULE_SETUP
1186{
1187                if (str == zconftext[0]) {
1188                        BEGIN(PARAM);
1189                        zconflval.string = text;
1190                        return T_WORD_QUOTE;
1191                } else
1192                        append_string(zconftext, 1);
1193        }
1194        YY_BREAK
1195case 28:
1196/* rule 28 can match eol */
1197YY_RULE_SETUP
1198{
1199                printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno());
1200                current_file->lineno++;
1201                BEGIN(INITIAL);
1202                return T_EOL;
1203        }
1204        YY_BREAK
1205case YY_STATE_EOF(STRING):
1206{
1207                BEGIN(INITIAL);
1208        }
1209        YY_BREAK
1210
1211case 29:
1212YY_RULE_SETUP
1213{
1214                ts = 0;
1215                for (i = 0; i < zconfleng; i++) {
1216                        if (zconftext[i] == '\t')
1217                                ts = (ts & ~7) + 8;
1218                        else
1219                                ts++;
1220                }
1221                last_ts = ts;
1222                if (first_ts) {
1223                        if (ts < first_ts) {
1224                                zconf_endhelp();
1225                                return T_HELPTEXT;
1226                        }
1227                        ts -= first_ts;
1228                        while (ts > 8) {
1229                                append_string("        ", 8);
1230                                ts -= 8;
1231                        }
1232                        append_string("        ", ts);
1233                }
1234        }
1235        YY_BREAK
1236case 30:
1237/* rule 30 can match eol */
1238*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
1239(yy_c_buf_p) = yy_cp -= 1;
1240YY_DO_BEFORE_ACTION; /* set up zconftext again */
1241YY_RULE_SETUP
1242{
1243                current_file->lineno++;
1244                zconf_endhelp();
1245                return T_HELPTEXT;
1246        }
1247        YY_BREAK
1248case 31:
1249/* rule 31 can match eol */
1250YY_RULE_SETUP
1251{
1252                current_file->lineno++;
1253                append_string("\n", 1);
1254        }
1255        YY_BREAK
1256case 32:
1257YY_RULE_SETUP
1258{
1259                append_string(zconftext, zconfleng);
1260                if (!first_ts)
1261                        first_ts = last_ts;
1262        }
1263        YY_BREAK
1264case YY_STATE_EOF(HELP):
1265{
1266                zconf_endhelp();
1267                return T_HELPTEXT;
1268        }
1269        YY_BREAK
1270
1271case YY_STATE_EOF(INITIAL):
1272case YY_STATE_EOF(COMMAND):
1273{
1274        if (current_file) {
1275                zconf_endfile();
1276                return T_EOL;
1277        }
1278        fclose(zconfin);
1279        yyterminate();
1280}
1281        YY_BREAK
1282case 33:
1283YY_RULE_SETUP
1284YY_FATAL_ERROR( "flex scanner jammed" );
1285        YY_BREAK
1286
1287        case YY_END_OF_BUFFER:
1288                {
1289                /* Amount of text matched not including the EOB char. */
1290                int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
1291
1292                /* Undo the effects of YY_DO_BEFORE_ACTION. */
1293                *yy_cp = (yy_hold_char);
1294                YY_RESTORE_YY_MORE_OFFSET
1295
1296                if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
1297                        {
1298                        /* We're scanning a new file or input source.  It's
1299                         * possible that this happened because the user
1300                         * just pointed zconfin at a new source and called
1301                         * zconflex().  If so, then we have to assure
1302                         * consistency between YY_CURRENT_BUFFER and our
1303                         * globals.  Here is the right place to do so, because
1304                         * this is the first action (other than possibly a
1305                         * back-up) that will match for the new input source.
1306                         */
1307                        (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1308                        YY_CURRENT_BUFFER_LVALUE->yy_input_file = zconfin;
1309                        YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
1310                        }
1311
1312                /* Note that here we test for yy_c_buf_p "<=" to the position
1313                 * of the first EOB in the buffer, since yy_c_buf_p will
1314                 * already have been incremented past the NUL character
1315                 * (since all states make transitions on EOB to the
1316                 * end-of-buffer state).  Contrast this with the test
1317                 * in input().
1318                 */
1319                if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
1320                        { /* This was really a NUL. */
1321                        yy_state_type yy_next_state;
1322
1323                        (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
1324
1325                        yy_current_state = yy_get_previous_state(  );
1326
1327                        /* Okay, we're now positioned to make the NUL
1328                         * transition.  We couldn't have
1329                         * yy_get_previous_state() go ahead and do it
1330                         * for us because it doesn't know how to deal
1331                         * with the possibility of jamming (and we don't
1332                         * want to build jamming into it because then it
1333                         * will run more slowly).
1334                         */
1335
1336                        yy_next_state = yy_try_NUL_trans( yy_current_state );
1337
1338                        yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1339
1340                        if ( yy_next_state )
1341                                {
1342                                /* Consume the NUL. */
1343                                yy_cp = ++(yy_c_buf_p);
1344                                yy_current_state = yy_next_state;
1345                                goto yy_match;
1346                                }
1347
1348                        else
1349                                {
1350                                yy_cp = (yy_c_buf_p);
1351                                goto yy_find_action;
1352                                }
1353                        }
1354
1355                else switch ( yy_get_next_buffer(  ) )
1356                        {
1357                        case EOB_ACT_END_OF_FILE:
1358                                {
1359                                (yy_did_buffer_switch_on_eof) = 0;
1360
1361                                if ( zconfwrap( ) )
1362                                        {
1363                                        /* Note: because we've taken care in
1364                                         * yy_get_next_buffer() to have set up
1365                                         * zconftext, we can now set up
1366                                         * yy_c_buf_p so that if some total
1367                                         * hoser (like flex itself) wants to
1368                                         * call the scanner after we return the
1369                                         * YY_NULL, it'll still work - another
1370                                         * YY_NULL will get returned.
1371                                         */
1372                                        (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
1373
1374                                        yy_act = YY_STATE_EOF(YY_START);
1375                                        goto do_action;
1376                                        }
1377
1378                                else
1379                                        {
1380                                        if ( ! (yy_did_buffer_switch_on_eof) )
1381                                                YY_NEW_FILE;
1382                                        }
1383                                break;
1384                                }
1385
1386                        case EOB_ACT_CONTINUE_SCAN:
1387                                (yy_c_buf_p) =
1388                                        (yytext_ptr) + yy_amount_of_matched_text;
1389
1390                                yy_current_state = yy_get_previous_state(  );
1391
1392                                yy_cp = (yy_c_buf_p);
1393                                yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1394                                goto yy_match;
1395
1396                        case EOB_ACT_LAST_MATCH:
1397                                (yy_c_buf_p) =
1398                                &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
1399
1400                                yy_current_state = yy_get_previous_state(  );
1401
1402                                yy_cp = (yy_c_buf_p);
1403                                yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1404                                goto yy_find_action;
1405                        }
1406                break;
1407                }
1408
1409        default:
1410                YY_FATAL_ERROR(
1411                        "fatal flex scanner internal error--no action found" );
1412        } /* end of action switch */
1413                } /* end of scanning one token */
1414} /* end of zconflex */
1415
1416/* yy_get_next_buffer - try to read in a new buffer
1417 *
1418 * Returns a code representing an action:
1419 *      EOB_ACT_LAST_MATCH -
1420 *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1421 *      EOB_ACT_END_OF_FILE - end of file
1422 */
1423static int yy_get_next_buffer (void)
1424{
1425        register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
1426        register char *source = (yytext_ptr);
1427        register int number_to_move, i;
1428        int ret_val;
1429
1430        if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
1431                YY_FATAL_ERROR(
1432                "fatal flex scanner internal error--end of buffer missed" );
1433
1434        if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
1435                { /* Don't try to fill the buffer, so this is an EOF. */
1436                if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
1437                        {
1438                        /* We matched a single character, the EOB, so
1439                         * treat this as a final EOF.
1440                         */
1441                        return EOB_ACT_END_OF_FILE;
1442                        }
1443
1444                else
1445                        {
1446                        /* We matched some text prior to the EOB, first
1447                         * process it.
1448                         */
1449                        return EOB_ACT_LAST_MATCH;
1450                        }
1451                }
1452
1453        /* Try to read more data. */
1454
1455        /* First move last chars to start of buffer. */
1456        number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
1457
1458        for ( i = 0; i < number_to_move; ++i )
1459                *(dest++) = *(source++);
1460
1461        if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1462                /* don't do the read, it's not guaranteed to return an EOF,
1463                 * just force an EOF
1464                 */
1465                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
1466
1467        else
1468                {
1469                        int num_to_read =
1470                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
1471
1472                while ( num_to_read <= 0 )
1473                        { /* Not enough room in the buffer - grow it. */
1474
1475                        /* just a shorter name for the current buffer */
1476                        YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
1477
1478                        int yy_c_buf_p_offset =
1479                                (int) ((yy_c_buf_p) - b->yy_ch_buf);
1480
1481                        if ( b->yy_is_our_buffer )
1482                                {
1483                                int new_size = b->yy_buf_size * 2;
1484
1485                                if ( new_size <= 0 )
1486                                        b->yy_buf_size += b->yy_buf_size / 8;
1487                                else
1488                                        b->yy_buf_size *= 2;
1489
1490                                b->yy_ch_buf = (char *)
1491                                        /* Include room in for 2 EOB chars. */
1492                                        zconfrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
1493                                }
1494                        else
1495                                /* Can't grow it, we don't own it. */
1496                                b->yy_ch_buf = 0;
1497
1498                        if ( ! b->yy_ch_buf )
1499                                YY_FATAL_ERROR(
1500                                "fatal error - scanner input buffer overflow" );
1501
1502                        (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
1503
1504                        num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
1505                                                number_to_move - 1;
1506
1507                        }
1508
1509                if ( num_to_read > YY_READ_BUF_SIZE )
1510                        num_to_read = YY_READ_BUF_SIZE;
1511
1512                /* Read in more data. */
1513                YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
1514                        (yy_n_chars), num_to_read );
1515
1516                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
1517                }
1518
1519        if ( (yy_n_chars) == 0 )
1520                {
1521                if ( number_to_move == YY_MORE_ADJ )
1522                        {
1523                        ret_val = EOB_ACT_END_OF_FILE;
1524                        zconfrestart(zconfin  );
1525                        }
1526
1527                else
1528                        {
1529                        ret_val = EOB_ACT_LAST_MATCH;
1530                        YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
1531                                YY_BUFFER_EOF_PENDING;
1532                        }
1533                }
1534
1535        else
1536                ret_val = EOB_ACT_CONTINUE_SCAN;
1537
1538        (yy_n_chars) += number_to_move;
1539        YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
1540        YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
1541
1542        (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
1543
1544        return ret_val;
1545}
1546
1547/* yy_get_previous_state - get the state just before the EOB char was reached */
1548
1549    static yy_state_type yy_get_previous_state (void)
1550{
1551        register yy_state_type yy_current_state;
1552        register char *yy_cp;
1553    
1554        yy_current_state = (yy_start);
1555
1556        for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
1557                {
1558                yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)];
1559                }
1560
1561        return yy_current_state;
1562}
1563
1564/* yy_try_NUL_trans - try to make a transition on the NUL character
1565 *
1566 * synopsis
1567 *      next_state = yy_try_NUL_trans( current_state );
1568 */
1569    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
1570{
1571        register int yy_is_jam;
1572    
1573        yy_current_state = yy_nxt[yy_current_state][1];
1574        yy_is_jam = (yy_current_state <= 0);
1575
1576        return yy_is_jam ? 0 : yy_current_state;
1577}
1578
1579    static void yyunput (int c, register char * yy_bp )
1580{
1581        register char *yy_cp;
1582    
1583    yy_cp = (yy_c_buf_p);
1584
1585        /* undo effects of setting up zconftext */
1586        *yy_cp = (yy_hold_char);
1587
1588        if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
1589                { /* need to shift things up to make room */
1590                /* +2 for EOB chars. */
1591                register int number_to_move = (yy_n_chars) + 2;
1592                register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
1593                                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
1594                register char *source =
1595                                &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
1596
1597                while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1598                        *--dest = *--source;
1599
1600                yy_cp += (int) (dest - source);
1601                yy_bp += (int) (dest - source);
1602                YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
1603                        (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
1604
1605                if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
1606                        YY_FATAL_ERROR( "flex scanner push-back overflow" );
1607                }
1608
1609        *--yy_cp = (char) c;
1610
1611        (yytext_ptr) = yy_bp;
1612        (yy_hold_char) = *yy_cp;
1613        (yy_c_buf_p) = yy_cp;
1614}
1615
1616#ifndef YY_NO_INPUT
1617#ifdef __cplusplus
1618    static int yyinput (void)
1619#else
1620    static int input  (void)
1621#endif
1622
1623{
1624        int c;
1625    
1626        *(yy_c_buf_p) = (yy_hold_char);
1627
1628        if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
1629                {
1630                /* yy_c_buf_p now points to the character we want to return.
1631                 * If this occurs *before* the EOB characters, then it's a
1632                 * valid NUL; if not, then we've hit the end of the buffer.
1633                 */
1634                if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
1635                        /* This was really a NUL. */
1636                        *(yy_c_buf_p) = '\0';
1637
1638                else
1639                        { /* need more input */
1640                        int offset = (yy_c_buf_p) - (yytext_ptr);
1641                        ++(yy_c_buf_p);
1642
1643                        switch ( yy_get_next_buffer(  ) )
1644                                {
1645                                case EOB_ACT_LAST_MATCH:
1646                                        /* This happens because yy_g_n_b()
1647                                         * sees that we've accumulated a
1648                                         * token and flags that we need to
1649                                         * try matching the token before
1650                                         * proceeding.  But for input(),
1651                                         * there's no matching to consider.
1652                                         * So convert the EOB_ACT_LAST_MATCH
1653                                         * to EOB_ACT_END_OF_FILE.
1654                                         */
1655
1656                                        /* Reset buffer status. */
1657                                        zconfrestart(zconfin );
1658
1659                                        /*FALLTHROUGH*/
1660
1661                                case EOB_ACT_END_OF_FILE:
1662                                        {
1663                                        if ( zconfwrap( ) )
1664                                                return EOF;
1665
1666                                        if ( ! (yy_did_buffer_switch_on_eof) )
1667                                                YY_NEW_FILE;
1668#ifdef __cplusplus
1669                                        return yyinput();
1670#else
1671                                        return input();
1672#endif
1673                                        }
1674
1675                                case EOB_ACT_CONTINUE_SCAN:
1676                                        (yy_c_buf_p) = (yytext_ptr) + offset;
1677                                        break;
1678                                }
1679                        }
1680                }
1681
1682        c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
1683        *(yy_c_buf_p) = '\0';   /* preserve zconftext */
1684        (yy_hold_char) = *++(yy_c_buf_p);
1685
1686        return c;
1687}
1688#endif  /* ifndef YY_NO_INPUT */
1689
1690/** Immediately switch to a different input stream.
1691 * @param input_file A readable stream.
1692 * 
1693 * @note This function does not reset the start condition to @c INITIAL .
1694 */
1695    void zconfrestart  (FILE * input_file )
1696{
1697    
1698        if ( ! YY_CURRENT_BUFFER ){
1699        zconfensure_buffer_stack ();
1700                YY_CURRENT_BUFFER_LVALUE =
1701            zconf_create_buffer(zconfin,YY_BUF_SIZE );
1702        }
1703
1704        zconf_init_buffer(YY_CURRENT_BUFFER,input_file );
1705        zconf_load_buffer_state( );
1706}
1707
1708/** Switch to a different input buffer.
1709 * @param new_buffer The new input buffer.
1710 * 
1711 */
1712    void zconf_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
1713{
1714    
1715        /* TODO. We should be able to replace this entire function body
1716         * with
1717         *              zconfpop_buffer_state();
1718         *              zconfpush_buffer_state(new_buffer);
1719     */
1720        zconfensure_buffer_stack ();
1721        if ( YY_CURRENT_BUFFER == new_buffer )
1722                return;
1723
1724        if ( YY_CURRENT_BUFFER )
1725                {
1726                /* Flush out information for old buffer. */
1727                *(yy_c_buf_p) = (yy_hold_char);
1728                YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
1729                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
1730                }
1731
1732        YY_CURRENT_BUFFER_LVALUE = new_buffer;
1733        zconf_load_buffer_state( );
1734
1735        /* We don't actually know whether we did this switch during
1736         * EOF (zconfwrap()) processing, but the only time this flag
1737         * is looked at is after zconfwrap() is called, so it's safe
1738         * to go ahead and always set it.
1739         */
1740        (yy_did_buffer_switch_on_eof) = 1;
1741}
1742
1743static void zconf_load_buffer_state  (void)
1744{
1745        (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1746        (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
1747        zconfin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
1748        (yy_hold_char) = *(yy_c_buf_p);
1749}
1750
1751/** Allocate and initialize an input buffer state.
1752 * @param file A readable stream.
1753 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
1754 * 
1755 * @return the allocated buffer state.
1756 */
1757    YY_BUFFER_STATE zconf_create_buffer  (FILE * file, int  size )
1758{
1759        YY_BUFFER_STATE b;
1760    
1761        b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state )  );
1762        if ( ! b )
1763                YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" );
1764
1765        b->yy_buf_size = size;
1766
1767        /* yy_ch_buf has to be 2 characters longer than the size given because
1768         * we need to put in 2 end-of-buffer characters.
1769         */
1770        b->yy_ch_buf = (char *) zconfalloc(b->yy_buf_size + 2  );
1771        if ( ! b->yy_ch_buf )
1772                YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" );
1773
1774        b->yy_is_our_buffer = 1;
1775
1776        zconf_init_buffer(b,file );
1777
1778        return b;
1779}
1780
1781/** Destroy the buffer.
1782 * @param b a buffer created with zconf_create_buffer()
1783 * 
1784 */
1785    void zconf_delete_buffer (YY_BUFFER_STATE  b )
1786{
1787    
1788        if ( ! b )
1789                return;
1790
1791        if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
1792                YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
1793
1794        if ( b->yy_is_our_buffer )
1795                zconffree((void *) b->yy_ch_buf  );
1796
1797        zconffree((void *) b  );
1798}
1799
1800/* Initializes or reinitializes a buffer.
1801 * This function is sometimes called more than once on the same buffer,
1802 * such as during a zconfrestart() or at EOF.
1803 */
1804    static void zconf_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
1805
1806{
1807        int oerrno = errno;
1808    
1809        zconf_flush_buffer(b );
1810
1811        b->yy_input_file = file;
1812        b->yy_fill_buffer = 1;
1813
1814    /* If b is the current buffer, then zconf_init_buffer was _probably_
1815     * called from zconfrestart() or through yy_get_next_buffer.
1816     * In that case, we don't want to reset the lineno or column.
1817     */
1818    if (b != YY_CURRENT_BUFFER){
1819        b->yy_bs_lineno = 1;
1820        b->yy_bs_column = 0;
1821    }
1822
1823        b->yy_is_interactive = 0;
1824    
1825        errno = oerrno;
1826}
1827
1828/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
1829 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
1830 * 
1831 */
1832    void zconf_flush_buffer (YY_BUFFER_STATE  b )
1833{
1834        if ( ! b )
1835                return;
1836
1837        b->yy_n_chars = 0;
1838
1839        /* We always need two end-of-buffer characters.  The first causes
1840         * a transition to the end-of-buffer state.  The second causes
1841         * a jam in that state.
1842         */
1843        b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
1844        b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
1845
1846        b->yy_buf_pos = &b->yy_ch_buf[0];
1847
1848        b->yy_at_bol = 1;
1849        b->yy_buffer_status = YY_BUFFER_NEW;
1850
1851        if ( b == YY_CURRENT_BUFFER )
1852                zconf_load_buffer_state( );
1853}
1854
1855/** Pushes the new state onto the stack. The new state becomes
1856 *  the current state. This function will allocate the stack
1857 *  if necessary.
1858 *  @param new_buffer The new state.
1859 *  
1860 */
1861void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer )
1862{
1863        if (new_buffer == NULL)
1864                return;
1865
1866        zconfensure_buffer_stack();
1867
1868        /* This block is copied from zconf_switch_to_buffer. */
1869        if ( YY_CURRENT_BUFFER )
1870                {
1871                /* Flush out information for old buffer. */
1872                *(yy_c_buf_p) = (yy_hold_char);
1873                YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
1874                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
1875                }
1876
1877        /* Only push if top exists. Otherwise, replace top. */
1878        if (YY_CURRENT_BUFFER)
1879                (yy_buffer_stack_top)++;
1880        YY_CURRENT_BUFFER_LVALUE = new_buffer;
1881
1882        /* copied from zconf_switch_to_buffer. */
1883        zconf_load_buffer_state( );
1884        (yy_did_buffer_switch_on_eof) = 1;
1885}
1886
1887/** Removes and deletes the top of the stack, if present.
1888 *  The next element becomes the new top.
1889 *  
1890 */
1891void zconfpop_buffer_state (void)
1892{
1893        if (!YY_CURRENT_BUFFER)
1894                return;
1895
1896        zconf_delete_buffer(YY_CURRENT_BUFFER );
1897        YY_CURRENT_BUFFER_LVALUE = NULL;
1898        if ((yy_buffer_stack_top) > 0)
1899                --(yy_buffer_stack_top);
1900
1901        if (YY_CURRENT_BUFFER) {
1902                zconf_load_buffer_state( );
1903                (yy_did_buffer_switch_on_eof) = 1;
1904        }
1905}
1906
1907/* Allocates the stack if it does not exist.
1908 *  Guarantees space for at least one push.
1909 */
1910static void zconfensure_buffer_stack (void)
1911{
1912        int num_to_alloc;
1913    
1914        if (!(yy_buffer_stack)) {
1915
1916                /* First allocation is just for 2 elements, since we don't know if this
1917                 * scanner will even need a stack. We use 2 instead of 1 to avoid an
1918                 * immediate realloc on the next call.
1919         */
1920                num_to_alloc = 1;
1921                (yy_buffer_stack) = (struct yy_buffer_state**)zconfalloc
1922                                                                (num_to_alloc * sizeof(struct yy_buffer_state*)
1923                                                                );
1924                
1925                memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
1926                                
1927                (yy_buffer_stack_max) = num_to_alloc;
1928                (yy_buffer_stack_top) = 0;
1929                return;
1930        }
1931
1932        if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
1933
1934                /* Increase the buffer to prepare for a possible push. */
1935                int grow_size = 8 /* arbitrary grow size */;
1936
1937                num_to_alloc = (yy_buffer_stack_max) + grow_size;
1938                (yy_buffer_stack) = (struct yy_buffer_state**)zconfrealloc
1939                                                                ((yy_buffer_stack),
1940                                                                num_to_alloc * sizeof(struct yy_buffer_state*)
1941                                                                );
1942
1943                /* zero only the new slots.*/
1944                memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
1945                (yy_buffer_stack_max) = num_to_alloc;
1946        }
1947}
1948
1949/** Setup the input buffer state to scan directly from a user-specified character buffer.
1950 * @param base the character buffer
1951 * @param size the size in bytes of the character buffer
1952 * 
1953 * @return the newly allocated buffer state object. 
1954 */
1955YY_BUFFER_STATE zconf_scan_buffer  (char * base, yy_size_t  size )
1956{
1957        YY_BUFFER_STATE b;
1958    
1959        if ( size < 2 ||
1960             base[size-2] != YY_END_OF_BUFFER_CHAR ||
1961             base[size-1] != YY_END_OF_BUFFER_CHAR )
1962                /* They forgot to leave room for the EOB's. */
1963                return 0;
1964
1965        b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state )  );
1966        if ( ! b )
1967                YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_buffer()" );
1968
1969        b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
1970        b->yy_buf_pos = b->yy_ch_buf = base;
1971        b->yy_is_our_buffer = 0;
1972        b->yy_input_file = 0;
1973        b->yy_n_chars = b->yy_buf_size;
1974        b->yy_is_interactive = 0;
1975        b->yy_at_bol = 1;
1976        b->yy_fill_buffer = 0;
1977        b->yy_buffer_status = YY_BUFFER_NEW;
1978
1979        zconf_switch_to_buffer(b  );
1980
1981        return b;
1982}
1983
1984/** Setup the input buffer state to scan a string. The next call to zconflex() will
1985 * scan from a @e copy of @a str.
1986 * @param yystr a NUL-terminated string to scan
1987 * 
1988 * @return the newly allocated buffer state object.
1989 * @note If you want to scan bytes that may contain NUL values, then use
1990 *       zconf_scan_bytes() instead.
1991 */
1992YY_BUFFER_STATE zconf_scan_string (yyconst char * yystr )
1993{
1994    
1995        return zconf_scan_bytes(yystr,strlen(yystr) );
1996}
1997
1998/** Setup the input buffer state to scan the given bytes. The next call to zconflex() will
1999 * scan from a @e copy of @a bytes.
2000 * @param bytes the byte buffer to scan
2001 * @param len the number of bytes in the buffer pointed to by @a bytes.
2002 * 
2003 * @return the newly allocated buffer state object.
2004 */
2005YY_BUFFER_STATE zconf_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
2006{
2007        YY_BUFFER_STATE b;
2008        char *buf;
2009        yy_size_t n;
2010        int i;
2011    
2012        /* Get memory for full buffer, including space for trailing EOB's. */
2013        n = _yybytes_len + 2;
2014        buf = (char *) zconfalloc(n  );
2015        if ( ! buf )
2016                YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_bytes()" );
2017
2018        for ( i = 0; i < _yybytes_len; ++i )
2019                buf[i] = yybytes[i];
2020
2021        buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
2022
2023        b = zconf_scan_buffer(buf,n );
2024        if ( ! b )
2025                YY_FATAL_ERROR( "bad buffer in zconf_scan_bytes()" );
2026
2027        /* It's okay to grow etc. this buffer, and we should throw it
2028         * away when we're done.
2029         */
2030        b->yy_is_our_buffer = 1;
2031
2032        return b;
2033}
2034
2035#ifndef YY_EXIT_FAILURE
2036#define YY_EXIT_FAILURE 2
2037#endif
2038
2039static void yy_fatal_error (yyconst char* msg )
2040{
2041        (void) fprintf( stderr, "%s\n", msg );
2042        exit( YY_EXIT_FAILURE );
2043}
2044
2045/* Redefine yyless() so it works in section 3 code. */
2046
2047#undef yyless
2048#define yyless(n) \
2049        do \
2050                { \
2051                /* Undo effects of setting up zconftext. */ \
2052        int yyless_macro_arg = (n); \
2053        YY_LESS_LINENO(yyless_macro_arg);\
2054                zconftext[zconfleng] = (yy_hold_char); \
2055                (yy_c_buf_p) = zconftext + yyless_macro_arg; \
2056                (yy_hold_char) = *(yy_c_buf_p); \
2057                *(yy_c_buf_p) = '\0'; \
2058                zconfleng = yyless_macro_arg; \
2059                } \
2060        while ( 0 )
2061
2062/* Accessor  methods (get/set functions) to struct members. */
2063
2064/** Get the current line number.
2065 * 
2066 */
2067int zconfget_lineno  (void)
2068{
2069        
2070    return zconflineno;
2071}
2072
2073/** Get the input stream.
2074 * 
2075 */
2076FILE *zconfget_in  (void)
2077{
2078        return zconfin;
2079}
2080
2081/** Get the output stream.
2082 * 
2083 */
2084FILE *zconfget_out  (void)
2085{
2086        return zconfout;
2087}
2088
2089/** Get the length of the current token.
2090 * 
2091 */
2092int zconfget_leng  (void)
2093{
2094        return zconfleng;
2095}
2096
2097/** Get the current token.
2098 * 
2099 */
2100
2101char *zconfget_text  (void)
2102{
2103        return zconftext;
2104}
2105
2106/** Set the current line number.
2107 * @param line_number
2108 * 
2109 */
2110void zconfset_lineno (int  line_number )
2111{
2112    
2113    zconflineno = line_number;
2114}
2115
2116/** Set the input stream. This does not discard the current
2117 * input buffer.
2118 * @param in_str A readable stream.
2119 * 
2120 * @see zconf_switch_to_buffer
2121 */
2122void zconfset_in (FILE *  in_str )
2123{
2124        zconfin = in_str ;
2125}
2126
2127void zconfset_out (FILE *  out_str )
2128{
2129        zconfout = out_str ;
2130}
2131
2132int zconfget_debug  (void)
2133{
2134        return zconf_flex_debug;
2135}
2136
2137void zconfset_debug (int  bdebug )
2138{
2139        zconf_flex_debug = bdebug ;
2140}
2141
2142static int yy_init_globals (void)
2143{
2144        /* Initialization is the same as for the non-reentrant scanner.
2145     * This function is called from zconflex_destroy(), so don't allocate here.
2146     */
2147
2148    (yy_buffer_stack) = 0;
2149    (yy_buffer_stack_top) = 0;
2150    (yy_buffer_stack_max) = 0;
2151    (yy_c_buf_p) = (char *) 0;
2152    (yy_init) = 0;
2153    (yy_start) = 0;
2154
2155/* Defined in main.c */
2156#ifdef YY_STDINIT
2157    zconfin = stdin;
2158    zconfout = stdout;
2159#else
2160    zconfin = (FILE *) 0;
2161    zconfout = (FILE *) 0;
2162#endif
2163
2164    /* For future reference: Set errno on error, since we are called by
2165     * zconflex_init()
2166     */
2167    return 0;
2168}
2169
2170/* zconflex_destroy is for both reentrant and non-reentrant scanners. */
2171int zconflex_destroy  (void)
2172{
2173    
2174    /* Pop the buffer stack, destroying each element. */
2175        while(YY_CURRENT_BUFFER){
2176                zconf_delete_buffer(YY_CURRENT_BUFFER  );
2177                YY_CURRENT_BUFFER_LVALUE = NULL;
2178                zconfpop_buffer_state();
2179        }
2180
2181        /* Destroy the stack itself. */
2182        zconffree((yy_buffer_stack) );
2183        (yy_buffer_stack) = NULL;
2184
2185    /* Reset the globals. This is important in a non-reentrant scanner so the next time
2186     * zconflex() is called, initialization will occur. */
2187    yy_init_globals( );
2188
2189    return 0;
2190}
2191
2192/*
2193 * Internal utility routines.
2194 */
2195
2196#ifndef yytext_ptr
2197static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
2198{
2199        register int i;
2200        for ( i = 0; i < n; ++i )
2201                s1[i] = s2[i];
2202}
2203#endif
2204
2205#ifdef YY_NEED_STRLEN
2206static int yy_flex_strlen (yyconst char * s )
2207{
2208        register int n;
2209        for ( n = 0; s[n]; ++n )
2210                ;
2211
2212        return n;
2213}
2214#endif
2215
2216void *zconfalloc (yy_size_t  size )
2217{
2218        return (void *) malloc( size );
2219}
2220
2221void *zconfrealloc  (void * ptr, yy_size_t  size )
2222{
2223        /* The cast to (char *) in the following accommodates both
2224         * implementations that use char* generic pointers, and those
2225         * that use void* generic pointers.  It works with the latter
2226         * because both ANSI C and C++ allow castless assignment from
2227         * any pointer type to void*, and deal with argument conversions
2228         * as though doing an assignment.
2229         */
2230        return (void *) realloc( (char *) ptr, size );
2231}
2232
2233void zconffree (void * ptr )
2234{
2235        free( (char *) ptr );   /* see zconfrealloc() for (char *) cast */
2236}
2237
2238#define YYTABLES_NAME "yytables"
2239
2240void zconf_starthelp(void)
2241{
2242        new_string();
2243        last_ts = first_ts = 0;
2244        BEGIN(HELP);
2245}
2246
2247static void zconf_endhelp(void)
2248{
2249        zconflval.string = text;
2250        BEGIN(INITIAL);
2251}
2252
2253/*
2254 * Try to open specified file with following names:
2255 * ./name
2256 * $(srctree)/name
2257 * The latter is used when srctree is separate from objtree
2258 * when compiling the kernel.
2259 * Return NULL if file is not found.
2260 */
2261FILE *zconf_fopen(const char *name)
2262{
2263        char *env, fullname[PATH_MAX+1];
2264        FILE *f;
2265
2266        f = fopen(name, "r");
2267        if (!f && name[0] != '/') {
2268                env = getenv(SRCTREE);
2269                if (env) {
2270                        sprintf(fullname, "%s/%s", env, name);
2271                        f = fopen(fullname, "r");
2272                }
2273        }
2274        return f;
2275}
2276
2277void zconf_initscan(const char *name)
2278{
2279        zconfin = zconf_fopen(name);
2280        if (!zconfin) {
2281                printf("can't find file %s\n", name);
2282                exit(1);
2283        }
2284
2285        current_buf = malloc(sizeof(*current_buf));
2286        memset(current_buf, 0, sizeof(*current_buf));
2287
2288        current_file = file_lookup(name);
2289        current_file->lineno = 1;
2290        current_file->flags = FILE_BUSY;
2291}
2292
2293void zconf_nextfile(const char *name)
2294{
2295        struct file *file = file_lookup(name);
2296        struct buffer *buf = malloc(sizeof(*buf));
2297        memset(buf, 0, sizeof(*buf));
2298
2299        current_buf->state = YY_CURRENT_BUFFER;
2300        zconfin = zconf_fopen(name);
2301        if (!zconfin) {
2302                printf("%s:%d: can't open file \"%s\"\n", zconf_curname(), zconf_lineno(), name);
2303                exit(1);
2304        }
2305        zconf_switch_to_buffer(zconf_create_buffer(zconfin,YY_BUF_SIZE));
2306        buf->parent = current_buf;
2307        current_buf = buf;
2308
2309        if (file->flags & FILE_BUSY) {
2310                printf("recursive scan (%s)?\n", name);
2311                exit(1);
2312        }
2313        if (file->flags & FILE_SCANNED) {
2314                printf("file %s already scanned?\n", name);
2315                exit(1);
2316        }
2317        file->flags |= FILE_BUSY;
2318        file->lineno = 1;
2319        file->parent = current_file;
2320        current_file = file;
2321}
2322
2323static void zconf_endfile(void)
2324{
2325        struct buffer *parent;
2326
2327        current_file->flags |= FILE_SCANNED;
2328        current_file->flags &= ~FILE_BUSY;
2329        current_file = current_file->parent;
2330
2331        parent = current_buf->parent;
2332        if (parent) {
2333                fclose(zconfin);
2334                zconf_delete_buffer(YY_CURRENT_BUFFER);
2335                zconf_switch_to_buffer(parent->state);
2336        }
2337        free(current_buf);
2338        current_buf = parent;
2339}
2340
2341int zconf_lineno(void)
2342{
2343        return current_pos.lineno;
2344}
2345
2346char *zconf_curname(void)
2347{
2348        return current_pos.file ? current_pos.file->name : "<none>";
2349}
2350
2351