#line should have quoted strings.
authorAkim Demaille <akim@epita.fr>
Wed, 6 Nov 2002 16:22:04 +0000 (16:22 +0000)
committerAkim Demaille <akim@epita.fr>
Wed, 6 Nov 2002 16:22:04 +0000 (16:22 +0000)
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
NEWS
src/output.c
src/scan-skel.l

index ee1fa16..536a06c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
 2002-11-06  Akim Demaille  <akim@epita.fr>
 
+       #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  <akim@epita.fr>
+
        * tests/regression.at (Invalid inputs): Adjust to the recent
        messages.
 
diff --git a/NEWS b/NEWS
index 08bc957..022aa47 100644 (file)
--- 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.
index f115bd2..c2e1d2b 100644 (file)
@@ -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,
index e56d372..aa71ac8 100644 (file)
 
 %{
 #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;