]> git.saurik.com Git - bison.git/blobdiff - src/scan-skel.l
Let yyerror always receive the msg as last argument, so that
[bison.git] / src / scan-skel.l
index 2d9cef1317d2025b36df6f1570875cba4fdd25aa..aa71ac8c865bd563e50b001c07cb691655438f55 100644 (file)
 
 %{
 #include "system.h"
+#include "quotearg.h"
 #include "error.h"
 #include "getargs.h"
 #include "files.h"
-int skel_lex PARAMS ((void));
+
+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;
@@ -52,47 +56,16 @@ static char *yyoutname = NULL;
 <<EOF>>          xfclose (yyout); free (yyoutname); return EOF;
 %%
 
-/* From lib/readpipe.c.  */
-FILE *readpipe PARAMS ((const char *, ...));
-
-/*----------------------.
-| Run our backend, M4.  |
-`----------------------*/
+/*------------------------.
+| Scan a Bison skeleton.  |
+`------------------------*/
 
-void m4_invoke PARAMS ((const char *definitions));
+void scan_skel (FILE *);
 
 void
-m4_invoke (const char *definitions)
+scan_skel (FILE *in)
 {
-  /* Invoke m4 on the definition of the muscles, and the skeleton. */
-  const char *bison_pkgdatadir = getenv ("BISON_PKGDATADIR");
-  const char *m4 = getenv ("M4");
-  int pkg_data_len;
-  char *full_skeleton;
-
-  if (!m4)
-    m4 = M4;
-  if (!bison_pkgdatadir)
-    bison_pkgdatadir = PKGDATADIR;
-  pkg_data_len = strlen (bison_pkgdatadir);
-  full_skeleton = XMALLOC (char, pkg_data_len + strlen (skeleton) + 2);
-  if (bison_pkgdatadir[pkg_data_len-1] == '/')
-    sprintf (full_skeleton, "%s%s", bison_pkgdatadir, skeleton);
-  else
-    sprintf (full_skeleton, "%s/%s", bison_pkgdatadir, skeleton);
-  if (trace_flag)
-    fprintf (stderr,
-            "running: %s -I %s m4sugar/m4sugar.m4 %s %s\n",
-            m4, bison_pkgdatadir, definitions, full_skeleton);
-  skel_in = readpipe (m4,
-                     "-I", bison_pkgdatadir,
-                     "m4sugar/m4sugar.m4",
-                     definitions,
-                     full_skeleton,
-                     NULL);
-  XFREE (full_skeleton);
-  if (!skel_in)
-    error (EXIT_FAILURE, errno, "cannot run m4");
+  skel_in = in;
   skel_lex ();
 
   /* Reclaim Flex's buffers.  */