]> git.saurik.com Git - bison.git/blobdiff - src/files.c
* src/atgeneral.m4: Update from Autoconf.
[bison.git] / src / files.c
index f77df452b8b2272ec58441659fc5fd00b6c5d3a5..b7f168a3d76ca7b005ed5a16e203797e7f95c7d3 100644 (file)
@@ -1,52 +1,47 @@
 /* Open and close files for bison,
-   Copyright (C) 1984, 1986, 1989, 1992 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1986, 1989, 1992, 2000 Free Software Foundation, Inc.
 
-This file is part of Bison, the GNU Compiler Compiler.
+   This file is part of Bison, the GNU Compiler Compiler.
 
-Bison is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
+   Bison is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
 
-Bison is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+   Bison is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with Bison; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+   You should have received a copy of the GNU General Public License
+   along with Bison; see the file COPYING.  If not, write to the Free
+   Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+   02111-1307, USA.  */
 
 
 #include "system.h"
 
 #if defined (VMS) & !defined (__VMS_POSIX)
-#include <ssdef.h>
-#define unlink delete
-#ifndef XPFILE
-#define XPFILE "GNU_BISON:[000000]BISON.SIMPLE"
-#endif
-#ifndef XPFILE1
-#define XPFILE1 "GNU_BISON:[000000]BISON.HAIRY"
-#endif
+# include <ssdef.h>
+# define unlink delete
+# ifndef XPFILE
+#  define XPFILE "GNU_BISON:[000000]BISON.SIMPLE"
+# endif
+# ifndef XPFILE1
+#  define XPFILE1 "GNU_BISON:[000000]BISON.HAIRY"
+# endif
 #endif
 
 #if defined (_MSC_VER)
-#ifndef XPFILE
-#define XPFILE "c:/usr/local/lib/bison.simple"
-#endif
-#ifndef XPFILE1
-#define XPFILE1 "c:/usr/local/lib/bison.hairy"
-#endif
-#endif
-
-#include <stdio.h>
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
+# ifndef XPFILE
+#  define XPFILE "c:/usr/local/lib/bison.simple"
+# endif
+# ifndef XPFILE1
+#  define XPFILE1 "c:/usr/local/lib/bison.hairy"
+# endif
 #endif
 
+#include "getargs.h"
 #include "files.h"
 #include "alloc.h"
 #include "gram.h"
@@ -65,42 +60,40 @@ FILE *fparser = NULL;
 char *spec_outfile;
 
 char *infile;
-char *outfile;
-char *defsfile;
-char *tabfile;
 char *attrsfile;
-char *guardfile;
-char *actfile;
-char *tmpattrsfile;
-char *tmptabfile;
-char *tmpdefsfile;
 
-extern int noparserflag;
+static char *outfile;
+static char *defsfile;
+static char *tabfile;
+static char *guardfile;
+static char *actfile;
+static char *tmpattrsfile;
+static char *tmptabfile;
+static char *tmpdefsfile;
 
 extern char    *mktemp();      /* So the compiler won't complain */
 extern char    *getenv();
 
-char *stringappend PARAMS((char *, int, char *));
-void openfiles PARAMS((void));
-void open_extra_files PARAMS((void));
-FILE *tryopen PARAMS((char *, char *));        /* This might be a good idea */
-int tryclose PARAMS((FILE *));
+extern char *stringappend PARAMS((const char *, int, const char *));
+extern void openfiles PARAMS((void));
+extern void open_extra_files PARAMS((void));
 
-extern char *program_name;
-extern int verboseflag;
-extern int definesflag;
 int fixed_outfiles = 0;
+
+extern char *program_name;
 \f
 
 char *
-stringappend (char *string1, int end1, char *string2)
+stringappend (const char *string1, int end1, const char *string2)
 {
   register char *ostring;
-  register char *cp, *cp1;
+  register char *cp;
+  register const char *cp1;
   register int i;
 
-  cp = string2;  i = 0;
-  while (*cp++) i++;
+  cp1 = string2;
+  i = 0;
+  while (*cp1++) i++;
 
   ostring = NEW2(i+end1+1, char);
 
@@ -116,7 +109,42 @@ stringappend (char *string1, int end1, char *string2)
   return ostring;
 }
 
+/*-----------------------------------------------------------------.
+| Try to open file NAME with mode MODE, and print an error message |
+| if fails.                                                        |
+`-----------------------------------------------------------------*/
+
+static FILE *
+tryopen (const char *name, const char *mode)
+{
+  FILE *ptr;
+
+  ptr = fopen (name, mode);
+  if (!ptr)
+    error (2, errno, _("cannot open file `%s'"), name);
+
+  return ptr;
+}
+
+/*-------------------------------------------------------------.
+| Try to close file PTR, and print an error message if fails.  |
+`-------------------------------------------------------------*/
+
+static int
+tryclose (FILE *ptr)
+{
+  int result;
+
+  if (ptr == NULL)
+    return 0;
+
+  result = fclose (ptr);
+  if (result == EOF)
+    error (2, errno, _("cannot close file"));
 
+  return result;
+}
+\f
 /* JF this has been hacked to death.  Nowaday it sets up the file names for
    the output files, and opens the tmp files and the parser */
 void
@@ -131,9 +159,9 @@ openfiles (void)
   int short_base_length;
 
 #if defined (VMS) & !defined (__VMS_POSIX)
-  char *tmp_base = "sys$scratch:b_";
+  const char *tmp_base = "sys$scratch:b_";
 #else
-  char *tmp_base = "/tmp/b.";
+  const char *tmp_base = "/tmp/b.";
 #endif
   int tmp_len;
 
@@ -207,7 +235,9 @@ openfiles (void)
       /* -o was not specified; compute output file name from input
         or use y.tab.c, etc., if -y was specified.  */
 
-      name_base = fixed_outfiles ? "y.y" : infile;
+      static char FIXED_NAME_BASE[] = "y.y";
+
+      name_base = fixed_outfiles ? FIXED_NAME_BASE : infile;
 
       /* BASE_LENGTH gets length of NAME_BASE, sans ".y" suffix if any.  */
 
@@ -322,8 +352,10 @@ openfiles (void)
 
 
 
-/* open the output files needed only for the semantic parser.
-This is done when %semantic_parser is seen in the declarations section.  */
+/*--------------------------------------------------------------------.
+| Open the output files needed only for the semantic parser.  This    |
+| is done when %semantic_parser is seen in the declarations section.  |
+`--------------------------------------------------------------------*/
 
 void
 open_extra_files (void)
@@ -367,35 +399,6 @@ open_extra_files (void)
 
 }
 
-/* JF to make file opening easier.  This func tries to open file
-   NAME with mode MODE, and prints an error message if it fails. */
-FILE *
-tryopen (char *name, char *mode)
-{
-  FILE *ptr;
-
-  ptr = fopen (name, mode);
-  if (!ptr)
-    error (2, errno, _("cannot open file `%s'"), name);
-
-  return ptr;
-}
-
-int
-tryclose (FILE *ptr)
-{
-  int result;
-
-  if (ptr == NULL)
-    return 0;
-
-  result = fclose (ptr);
-  if (result == EOF)
-    error (2, errno, _("cannot close file"));
-
-  return result;
-}
-
 void
 done (void)
 {