]> git.saurik.com Git - bison.git/blobdiff - src/output.c
Cope with CVS weird way to report warnings.
[bison.git] / src / output.c
index f4b3c3fd7f8fd8600d01c4c0f428f6f27388fe5f..b86f461134c38884a62a8509f4c39875c4ccbd33 100644 (file)
@@ -223,10 +223,18 @@ register YYLTYPE *yylsp;\n\
 void
 output_headers (void)
 {
-  char *attrsfile_quoted = quotearg_style (c_quoting_style, attrsfile);
+  char *attrsfile_quoted = 0;
 
   if (semantic_parser)
-    obstack_fgrow1 (&guard_obstack, GUARDSTR, attrsfile_quoted);
+    {
+      /* FIXME: This is *buggy*.  ATTRSFILE is not computed yet, since
+        we are waiting for the full input file to have been read to
+        be sure of the output file name.  So basically, here, a SEGV
+        is guaranteed.  OTOH, currently semantic parsers are not
+        supported.  */
+      attrsfile_quoted = quotearg_style (c_quoting_style, attrsfile);
+      obstack_fgrow1 (&guard_obstack, GUARDSTR, attrsfile_quoted);
+    }
 
   if (no_parser_flag)
     return;
@@ -1146,17 +1154,19 @@ output_parser (void)
   int c;
   FILE *fskel;
   size_t line;
-  const char *skeleton = NULL;
   int actions_dumped = 0;
 
   if (pure_parser)
     obstack_sgrow (&table_obstack, "#define YYPURE 1\n\n");
 
   /* Loop over lines in the standard parser file.  */
-  if (semantic_parser)
-    skeleton = skeleton_find ("BISON_HAIRY", BISON_HAIRY);
-  else
-    skeleton = skeleton_find ("BISON_SIMPLE", BISON_SIMPLE);
+  if (!skeleton)
+    {
+      if (semantic_parser)
+       skeleton = skeleton_find ("BISON_HAIRY", BISON_HAIRY);
+      else
+       skeleton = skeleton_find ("BISON_SIMPLE", BISON_SIMPLE);
+    }
   fskel = xfopen (skeleton, "r");
 
   /* Set LINE to 2, not 1: `#line LINENUM' -- Here LINENUM is a