X-Git-Url: http://git.samba.org/?p=metze%2Fwireshark%2Fwip.git;a=blobdiff_plain;f=text2pcap-scanner.l;h=3a69a83ba1d34f06773810c3df40826d076b1c81;hp=da36898ad14cb7c37e0506e4a5c0f58f26f1e8ad;hb=6648e34c061a14d4f76e22ed891aae8ceede520a;hpb=8a8b8834500043ea4f7d818aafa2b1edb353563a diff --git a/text2pcap-scanner.l b/text2pcap-scanner.l index da36898ad1..3a69a83ba1 100644 --- a/text2pcap-scanner.l +++ b/text2pcap-scanner.l @@ -1,7 +1,38 @@ /* -*-mode: flex-*- */ +%top { +/* Include this before everything else, for various large-file definitions */ +#include "config.h" +} + +/* + * We don't use input, so don't generate code for it. + */ +%option noinput + +/* + * We don't use unput, so don't generate code for it. + */ +%option nounput + +/* + * We don't read interactively from the terminal. + */ +%option never-interactive + +/* + * We want to stop processing when we get to the end of the input. + */ +%option noyywrap + +/* + * Prefix scanner routines with "text2pcap_" rather than "yy" to avoid a + * "redefined macro" warning with flex 2.6.3. + */ +%option prefix="text2pcap_" + %{ - + /******************************************************************************** * * text2pcap-scanner.l @@ -10,64 +41,72 @@ * * (c) Copyright 2001 Ashok Narayanan * - * $Id$ - * - * Ethereal - Network traffic analyzer - * By Gerald Combs + * Wireshark - Network traffic analyzer + * By Gerald Combs * Copyright 1998 Gerald Combs - * - * - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * SPDX-License-Identifier: GPL-2.0-or-later * *******************************************************************************/ - + #include #include #include "text2pcap.h" - + +/* + * Disable diagnostics in the code generated by Flex. + */ +DIAG_OFF_FLEX + +/* + * Flex (v 2.5.35) uses this symbol to "exclude" unistd.h + */ +#ifdef _WIN32 +#define YY_NO_UNISTD_H +#endif + %} -hexdigit [0-9A-Fa-f] -directive #TEXT2PCAP.* -comment #[^W].* -byte [0-9A-Fa-f][0-9A-Fa-f][ \t] -byte_eol [0-9A-Fa-f][0-9A-Fa-f]\n +directive ^#TEXT2PCAP.*\r?\n +comment ^[\t ]*#.*\r?\n +byte [0-9A-Fa-f][0-9A-Fa-f][ \t]? +byte_eol [0-9A-Fa-f][0-9A-Fa-f]\r?\n offset [0-9A-Fa-f]+[: \t] -offset_eol [0-9A-Fa-f]+\n +offset_eol [0-9A-Fa-f]+\r?\n text [^ \n\t]+ mailfwd > eol \r?\n\r? %% -{byte} { parse_token(T_BYTE, yytext); } -{byte_eol} { parse_token(T_BYTE, yytext); parse_token(T_EOL, NULL); } -{offset} { parse_token(T_OFFSET, yytext); } -{offset_eol} { parse_token(T_OFFSET, yytext); parse_token(T_EOL, NULL); } -{mailfwd}{offset} { parse_token(T_OFFSET, yytext+1); } -{eol} { parse_token(T_EOL, NULL); } +{byte} { if (parse_token(T_BYTE, yytext) != EXIT_SUCCESS) return EXIT_FAILURE; } +{byte_eol} { if (parse_token(T_BYTE, yytext) != EXIT_SUCCESS) return EXIT_FAILURE; + if (parse_token(T_EOL, NULL) != EXIT_SUCCESS) return EXIT_FAILURE; } +{offset} { if (parse_token(T_OFFSET, yytext) != EXIT_SUCCESS) return EXIT_FAILURE; } +{offset_eol} { if (parse_token(T_OFFSET, yytext) != EXIT_SUCCESS) return EXIT_FAILURE; + if (parse_token(T_EOL, NULL) != EXIT_SUCCESS) return EXIT_FAILURE; } +{mailfwd}{offset} { if (parse_token(T_OFFSET, yytext+1) != EXIT_SUCCESS) return EXIT_FAILURE; } +{eol} { if (parse_token(T_EOL, NULL) != EXIT_SUCCESS) return EXIT_FAILURE; } [ \t] ; /* ignore whitespace */ -{directive} { parse_token(T_DIRECTIVE, yytext); } -{comment} ; /* ignore comments */ -{text} { parse_token(T_TEXT, yytext); } +{directive} { if (parse_token(T_DIRECTIVE, yytext) != EXIT_SUCCESS) return EXIT_FAILURE; + if (parse_token(T_EOL, NULL) != EXIT_SUCCESS) return EXIT_FAILURE; } +{comment} { if (parse_token(T_EOL, NULL) != EXIT_SUCCESS) return EXIT_FAILURE; } +{text} { if (parse_token(T_TEXT, yytext) != EXIT_SUCCESS) return EXIT_FAILURE; } %% -int yywrap() +/* + * Turn diagnostics back on, so we check the code that we've written. + */ +DIAG_ON_FLEX + +int +text2pcap_scan(void) { - return 1; + int ret; + + ret = text2pcap_lex(); + text2pcap_lex_destroy(); + return ret; }