[PATCH nft] scanner: better error reporting for CRLF line terminators

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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





[Index of Archives]     [Netfitler Users]     [Berkeley Packet Filter]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux