* src/output.c (output_skeleton): Put an explicit path in front of
authorPaul Hilfinger <Hilfinger@CS.Berkeley.EDU>
Mon, 27 May 2002 22:33:54 +0000 (22:33 +0000)
committerPaul Hilfinger <Hilfinger@CS.Berkeley.EDU>
Mon, 27 May 2002 22:33:54 +0000 (22:33 +0000)
the skeleton file name, rather than relying on the -I directory,
to partially alleviate effects of having a skeleton file lying around
in the current directory.

ChangeLog
src/output.c

index 1e949ea..55542c3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2002-05-27  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>
 
+       * src/output.c (output_skeleton): Put an explicit path in front of
+       the skeleton file name, rather than relying on the -I directory,
+       to partially alleviate effects of having a skeleton file lying around
+       in the current directory.
+       
+2002-05-27  Paul Hilfinger  <Hilfinger@CS.Berkeley.EDU>
+
        * src/conflicts.c (log_resolution): Correct typo: 
        obstack_printf should be obstack_fgrow1.
 
index 2b2f1f0..a8ddf82 100644 (file)
@@ -994,20 +994,30 @@ output_skeleton (void)
   {
     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) + 1);
+    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, skeleton);
+              m4, bison_pkgdatadir, tempfile, full_skeleton);
     skel_in = readpipe (m4,
                        "-I", bison_pkgdatadir,
                        "m4sugar/m4sugar.m4",
                        tempfile,
-                       skeleton,
+                       full_skeleton,
                        NULL);
+    XFREE (full_skeleton);
     if (!skel_in)
       error (EXIT_FAILURE, errno, "cannot run m4");
     skel_lex ();