Provide a hint to users that file are coming with CRLF line terminators maybe from 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 <pablo@xxxxxxxxxxxxx> --- 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 e107ddfd3e4e..addeb03ac21c 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 9ccbc22d2120..4787cc12f993 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.30.2