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