From 8c35615297983227cac1437edbe0cdedf4c2227b Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Tue, 7 Jan 2025 00:00:50 +0100 Subject: [PATCH] scanner: better error reporting for CRLF line terminators Provide a hint to users that file is coming with CRLF line terminators, maybe from a non-Linux OS. Extend scanner.l to provide hint on CRLF in files: # file test.nft test.nft: ASCII text, with CRLF, LF line terminators # nft -f test.nft test.nft:1:13-14: Error: syntax error, unexpected CRLF line terminators table ip x { ^^ Signed-off-by: Pablo Neira Ayuso --- src/parser_bison.y | 1 + src/scanner.l | 3 +++ 2 files changed, 4 insertions(+) diff --git a/src/parser_bison.y b/src/parser_bison.y index 31ccc5e2..c8714812 100644 --- a/src/parser_bison.y +++ b/src/parser_bison.y @@ -251,6 +251,7 @@ int nft_lex(void *, void *, void *); %token TOKEN_EOF 0 "end of file" %token JUNK "junk" +%token CRLF "CRLF line terminators" %token NEWLINE "newline" %token COLON "colon" diff --git a/src/scanner.l b/src/scanner.l index 9ccbc22d..4787cc12 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -121,6 +121,7 @@ extern void yyset_column(int, yyscan_t); space [ ] tab \t +newline_crlf \r\n newline \n digit [0-9] hexdigit [0-9a-fA-F] @@ -894,6 +895,8 @@ addrstring ({macaddr}|{ip4addr}|{ip6addr}) return STRING; } +{newline_crlf} { return CRLF; } + \\{newline} { reset_pos(yyget_extra(yyscanner), yylloc); } -- 2.47.2