kconfig/lex.zconf.c
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Fri Aug 19 00:52:05 2011 +0200 (2011-08-19)
branch1.12
changeset 2633 22e779b0a4ed
parent 1237 d757b7d685c3
permissions -rw-r--r--
scripts: simplify and fix the toolchain config script

The script that is installed, and which sole purpose is to dump
the .config that was used to build the toolchain, is pure insanity.

Let's make it much, much more simpler...

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