From 6e40b4ebd43da977e1399f3b4678f8346d8e3f2c Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Wed, 6 Nov 2002 16:22:04 +0000 Subject: [PATCH 1/1] #line should have quoted strings. Ideally, this should be done by m4_quotearg. * src/scan-skel.l: Include quotearg.h. Quote __ofile__. * src/output.c (symbol_printers_output) (symbol_destructors_output): Quote the file name. --- ChangeLog | 10 ++++++++++ NEWS | 17 ++++++++++------- src/output.c | 6 ++++-- src/scan-skel.l | 6 +++++- 4 files changed, 29 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index ee1fa169..536a06cc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2002-11-06 Akim Demaille + + #line should have quoted strings. + Ideally, this should be done by m4_quotearg. + + * src/scan-skel.l: Include quotearg.h. + Quote __ofile__. + * src/output.c (symbol_printers_output) + (symbol_destructors_output): Quote the file name. + 2002-11-06 Akim Demaille * tests/regression.at (Invalid inputs): Adjust to the recent diff --git a/NEWS b/NEWS index 08bc9575..022aa47f 100644 --- a/NEWS +++ b/NEWS @@ -8,13 +8,6 @@ Changes in version 1.75b: * --no-line works properly. -Changes in version 1.75a, 2002-10-24: - -* Bison can no longer be built by a K&R C compiler; it requires C89 or - later to be built. This change originally took place a few versions - ago, but nobody noticed until we recently asked someone to try - building Bison with a K&R C compiler. - * %error-verbose This new directive is preferred over YYERROR_VERBOSE. @@ -26,6 +19,16 @@ Changes in version 1.75a, 2002-10-24: * #line Bison now recognizes #line in its input, and forwards them. +* #line + File names are properly escaped. E.g. foo\bar.y give #line 123 "foo\\bar.y". + +Changes in version 1.75a, 2002-10-24: + +* Bison can no longer be built by a K&R C compiler; it requires C89 or + later to be built. This change originally took place a few versions + ago, but nobody noticed until we recently asked someone to try + building Bison with a K&R C compiler. + Changes in version 1.75, 2002-10-14: * Bison should now work on 64-bit hosts. diff --git a/src/output.c b/src/output.c index f115bd2f..c2e1d2ba 100644 --- a/src/output.c +++ b/src/output.c @@ -380,7 +380,8 @@ symbol_destructors_output (FILE *out) destructor, typename. */ fprintf (out, "%s[[[%s]], [[%d]], [[%s]], [[%d]], [[%s]], [[%s]]]", first ? "" : ",\n", - symbol->destructor_location.file, + quotearg_style (escape_quoting_style, + symbol->destructor_location.file), symbol->destructor_location.first_line, symbol->tag, symbol->number, @@ -414,7 +415,8 @@ symbol_printers_output (FILE *out) printer, typename. */ fprintf (out, "%s[[[%s]], [[%d]], [[%s]], [[%d]], [[%s]], [[%s]]]", first ? "" : ",\n", - symbol->printer_location.file, + quotearg_style (escape_quoting_style, + symbol->printer_location.file), symbol->printer_location.first_line, symbol->tag, symbol->number, diff --git a/src/scan-skel.l b/src/scan-skel.l index e56d3723..aa71ac8c 100644 --- a/src/scan-skel.l +++ b/src/scan-skel.l @@ -23,12 +23,16 @@ %{ #include "system.h" +#include "quotearg.h" #include "error.h" #include "getargs.h" #include "files.h" + int skel_lex (void); + static int yylineno = 1; static char *yyoutname = NULL; + %} %% /* This is an approximation, but we don't need more. */ @@ -44,7 +48,7 @@ static char *yyoutname = NULL; "@:>@" fputc (']', yyout); "__oline__" fprintf (yyout, "%d", yylineno+1); -"__ofile__" fprintf (yyout, "%s", yyoutname); +"__ofile__" fprintf (yyout, "%s", quotearg_style (escape_quoting_style, yyoutname)); [^@_\n]+ ECHO; \n+ yylineno += yyleng; ECHO; . ECHO; -- 2.45.2