Module Name:    src
Committed By:   rmind
Date:           Tue Oct  2 23:38:52 UTC 2012

Modified Files:
        src/usr.sbin/npf/npfctl: npf_parse.y

Log Message:
npfctl/yyerror(): print the right line number if we already parsed the line.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/usr.sbin/npf/npfctl/npf_parse.y

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.sbin/npf/npfctl/npf_parse.y
diff -u src/usr.sbin/npf/npfctl/npf_parse.y:1.13 src/usr.sbin/npf/npfctl/npf_parse.y:1.14
--- src/usr.sbin/npf/npfctl/npf_parse.y:1.13	Sun Sep 16 13:47:41 2012
+++ src/usr.sbin/npf/npfctl/npf_parse.y	Tue Oct  2 23:38:52 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: npf_parse.y,v 1.13 2012/09/16 13:47:41 rmind Exp $	*/
+/*	$NetBSD: npf_parse.y,v 1.14 2012/10/02 23:38:52 rmind Exp $	*/
 
 /*-
  * Copyright (c) 2011-2012 The NetBSD Foundation, Inc.
@@ -55,17 +55,23 @@ yyerror(const char *fmt, ...)
 	extern char *yytext;
 
 	char *msg, *context = xstrndup(yytext, yyleng);
-	size_t len = strlen(context);
-	char *dst = zalloc(len * 4 + 1);
+	bool eol = (*context == '\n');
 	va_list ap;
 
 	va_start(ap, fmt);
 	vasprintf(&msg, fmt, ap);
 	va_end(ap);
 
-	strvisx(dst, context, len, VIS_WHITE|VIS_CSTYLE);
-	fprintf(stderr, "%s:%d:%d: %s near '%s'\n", yyfilename, yylineno,
-	    yycolumn, msg, dst);
+	fprintf(stderr, "%s:%d:%d: %s", yyfilename,
+	    yylineno - (int)eol, yycolumn, msg);
+	if (!eol) {
+		size_t len = strlen(context);
+		char *dst = zalloc(len * 4 + 1);
+
+		strvisx(dst, context, len, VIS_WHITE|VIS_CSTYLE);
+		fprintf(stderr, " near '%s'", dst);
+	}
+	fprintf(stderr, "\n");
 	exit(EXIT_FAILURE);
 }
 

Reply via email to