]> git.saurik.com Git - bison.git/commitdiff
* src/output.c (m4_invoke): Extracted from...
authorAkim Demaille <akim@epita.fr>
Fri, 14 Jun 2002 17:36:58 +0000 (17:36 +0000)
committerAkim Demaille <akim@epita.fr>
Fri, 14 Jun 2002 17:36:58 +0000 (17:36 +0000)
(output_skeleton): here.
Free tempfile.

ChangeLog
src/output.c

index 5a65e783385925b95273e04c2e75f8ba021e2e9c..632b63c84e179dab0d09637aebf02581a25bde1f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2002-06-14  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c (m4_invoke): Extracted from...
+       (output_skeleton): here.
+       Free tempfile.
+
+       
 2002-06-14  Akim Demaille  <akim@epita.fr>
 
        * src/parse-gram.y (directives, directive, gram)
index 0cfadc80e72bee135999a8333f6d5ecd5eeb9a41..e630b1507a6b4c11016dfebeb3da0cf38bfb053a 100644 (file)
@@ -941,6 +941,46 @@ output_actions (void)
 }
 
 \f
+/*----------------------.
+| Run our backend, M4.  |
+`----------------------*/
+
+static void
+m4_invoke (const char *definitions)
+{
+  /* 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_lex ();
+
+}
+
 /*---------------------------.
 | Call the skeleton parser.  |
 `---------------------------*/
@@ -985,42 +1025,13 @@ output_skeleton (void)
   fputs ("m4_divert_push(0)dnl\n", out);
   xfclose (out);
 
-  /* 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, tempfile, full_skeleton);
-    skel_in = readpipe (m4,
-                       "-I", bison_pkgdatadir,
-                       "m4sugar/m4sugar.m4",
-                       tempfile,
-                       full_skeleton,
-                       NULL);
-    XFREE (full_skeleton);
-    if (!skel_in)
-      error (EXIT_FAILURE, errno, "cannot run m4");
-    skel_lex ();
-
-    /* If `debugging', keep this file alive. */
-    if (!trace_flag)
-      unlink (tempfile);
-  }
+  m4_invoke (tempfile);
+
+  /* If `debugging', keep this file alive. */
+  if (!trace_flag)
+    unlink (tempfile);
+
+  free (tempfile);
 }
 
 static void