]> git.ipfire.org Git - pakfire.git/commitdiff
libpakfire: parser: Show line number in error message
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 9 Mar 2019 18:50:57 +0000 (18:50 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 9 Mar 2019 18:50:57 +0000 (18:50 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/parser/grammar.y
src/libpakfire/parser/scanner.l

index 07dcc89522d74f6fe7b6f85940c6c2c28989807e..ef8e32b3db1dd8a120bbd57fb414c95b5368cc66 100644 (file)
@@ -34,6 +34,9 @@ extern void yy_delete_buffer(YY_BUFFER_STATE buffer);
 extern int yylex();
 extern int yyparse();
 void yyerror(const char* s);
+
+extern int num_lines;
+
 %}
 
 %token APPEND
@@ -55,6 +58,8 @@ top: NEWLINE
 int pakfire_parser_parse_metadata(Pakfire pakfire, const char* data, size_t len) {
        DEBUG(pakfire, "Parsing the following data:\n%s\n", data);
 
+       num_lines = 1;
+
        YY_BUFFER_STATE buffer = yy_scan_bytes(data, len);
        int r = yyparse();
        yy_delete_buffer(buffer);
@@ -63,6 +68,5 @@ int pakfire_parser_parse_metadata(Pakfire pakfire, const char* data, size_t len)
 }
 
 void yyerror(const char* s) {
-       fprintf(stderr, "Parse error: %s\n", s);
-       abort();
+       fprintf(stderr, "Error (line %d): %s\n", num_lines, s);
 }
index 406c5c4c878ae0571e8715763d17f871a103805f..a3fad7cfe0205ad820042a93a2d71561320cc764 100644 (file)
@@ -23,6 +23,8 @@
 %{
 #define YY_DECL int yylex()
 
+int num_lines;
+
 #include "grammar.h"
 %}