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