]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - contrib/ipfilter/tools/lex_var.h
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / contrib / ipfilter / tools / lex_var.h
1 /*      $FreeBSD$       */
2
3 /*
4  * Copyright (C) 2002 by Darren Reed.
5  *
6  * See the IPFILTER.LICENCE file for details on licencing.
7  */
8
9 extern  long            string_start;
10 extern  long            string_end;
11 extern  char            *string_val;
12 extern  long            pos;
13
14 #define YY_INPUT(buf, result, max_size) \
15         if (pos >= string_start && pos <= string_end) { \
16                 buf[0] = string_val[pos - string_start]; \
17                 pos++; \
18                 result = 1; \
19         } else if ( yy_current_buffer->yy_is_interactive ) \
20                 { \
21                 int c = '*', n; \
22                 for ( n = 0; n < 1 && \
23                              (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
24                         buf[n] = (char) c; \
25                 if ( c == '\n' ) \
26                         buf[n++] = (char) c; \
27                 if ( c == EOF && ferror( yyin ) ) \
28                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
29                 result = n; \
30                 pos++; \
31                 } \
32         else if ( ((result = fread( buf, 1, 1, yyin )) == 0) \
33                   && ferror( yyin ) ) \
34                 YY_FATAL_ERROR( "input in flex scanner failed" );
35
36 #ifdef input
37 # undef input
38 # define input() (((pos >= string_start) && (pos < string_end)) ? \
39                   yysptr = yysbuf, string_val[pos++ - string_start] : \
40                   ((yytchar = yysptr > yysbuf ? U(*--yysptr) : \
41                    getc(yyin)) == 10 ? (pos++, yylineno++, yytchar) : \
42                   yytchar) == EOF ? (pos++, 0) : (pos++, yytchar))
43 #endif
44
45 #ifdef lex_input
46 # undef lex_input
47 # define lex_input() (((pos >= string_start) && (pos < string_end)) ? \
48                   yysptr = yysbuf, string_val[pos++ - string_start] : \
49                   ((yytchar = yysptr > yysbuf ? U(*--yysptr) : \
50                    getc(yyin)) == 10 ? (pos++, yylineno++, yytchar) : \
51                   yytchar) == EOF ? (pos++, 0) : (pos++, yytchar))
52 #endif
53
54 #ifdef unput
55 # undef unput
56 # define unput(c) { if (pos > 0) pos--; \
57                     yytchar = (c); if (yytchar == '\n') yylineno--; \
58                     *yysptr++ = yytchar; }
59 #endif
60