]> git.saurik.com Git - bison.git/blobdiff - src/files.c
* data/glr.c (yyresolveValue): Add default case to pacify
[bison.git] / src / files.c
index 32a3e729c931dfc0029941b1677bbb7962233397..f2092b273aa913c6aa6cdb960be85fbab1a1e8ca 100644 (file)
@@ -1,6 +1,6 @@
 /* Open and close files for Bison.
 
 /* Open and close files for Bison.
 
-   Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002, 2003, 2004
+   Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002, 2003, 2004, 2005
    Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
    Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
@@ -17,8 +17,8 @@
 
    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
 
    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.  */
+   Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.  */
 
 
 #include "system.h"
 
 
 #include "system.h"
@@ -32,6 +32,7 @@
 #include "files.h"
 #include "getargs.h"
 #include "gram.h"
 #include "files.h"
 #include "getargs.h"
 #include "gram.h"
+#include "stdio-safer.h"
 
 /* From basename.c.  Almost a lie, as it returns a char *. */
 const char *base_name (char const *name);
 
 /* From basename.c.  Almost a lie, as it returns a char *. */
 const char *base_name (char const *name);
@@ -65,9 +66,9 @@ static char *full_base_name = NULL;
 char *short_base_name = NULL;
 
 /* C source file extension (the parser source).  */
 char *short_base_name = NULL;
 
 /* C source file extension (the parser source).  */
-const char *src_extension = NULL;
+static char const *src_extension = NULL;
 /* Header file extension (if option ``-d'' is specified).  */
 /* Header file extension (if option ``-d'' is specified).  */
-const char *header_extension = NULL;
+static char const *header_extension = NULL;
 \f
 /*-----------------------------------------------------------------.
 | Return a newly allocated string composed of the concatenation of |
 \f
 /*-----------------------------------------------------------------.
 | Return a newly allocated string composed of the concatenation of |
@@ -95,7 +96,7 @@ xfopen (const char *name, const char *mode)
 {
   FILE *ptr;
 
 {
   FILE *ptr;
 
-  ptr = fopen (name, mode);
+  ptr = fopen_safer (name, mode);
   if (!ptr)
     error (EXIT_FAILURE, get_errno (), _("cannot open file `%s'"), name);
 
   if (!ptr)
     error (EXIT_FAILURE, get_errno (), _("cannot open file `%s'"), name);
 
@@ -164,8 +165,8 @@ compute_exts_from_src (const char *ext)
 }
 
 
 }
 
 
-/* Decompose FILENAME in four parts: *BASE, *TAB, and *EXT, the fourth
-   part, (the directory) is ranging from FILENAME to the char before
+/* Decompose FILE_NAME in four parts: *BASE, *TAB, and *EXT, the fourth
+   part, (the directory) is ranging from FILE_NAME to the char before
    *BASE, so we don't need an additional parameter.
 
    *EXT points to the last period in the basename, or NULL if none.
    *BASE, so we don't need an additional parameter.
 
    *EXT points to the last period in the basename, or NULL if none.
@@ -174,7 +175,7 @@ compute_exts_from_src (const char *ext)
    `.tab' or `_tab' if present right before *EXT, or is NULL. *TAB
    cannot be equal to *BASE.
 
    `.tab' or `_tab' if present right before *EXT, or is NULL. *TAB
    cannot be equal to *BASE.
 
-   None are allocated, they are simply pointers to parts of FILENAME.
+   None are allocated, they are simply pointers to parts of FILE_NAME.
    Examples:
 
    '/tmp/foo.tab.c' -> *BASE = 'foo.tab.c', *TAB = '.tab.c', *EXT =
    Examples:
 
    '/tmp/foo.tab.c' -> *BASE = 'foo.tab.c', *TAB = '.tab.c', *EXT =
@@ -193,10 +194,10 @@ compute_exts_from_src (const char *ext)
    'foo' -> *BASE = 'foo', *TAB = NULL, *EXT = NULL.  */
 
 static void
    'foo' -> *BASE = 'foo', *TAB = NULL, *EXT = NULL.  */
 
 static void
-filename_split (const char *filename,
-               const char **base, const char **tab, const char **ext)
+file_name_split (const char *file_name,
+                const char **base, const char **tab, const char **ext)
 {
 {
-  *base = base_name (filename);
+  *base = base_name (file_name);
 
   /* Look for the extension, i.e., look for the last dot. */
   *ext = strrchr (*base, '.');
 
   /* Look for the extension, i.e., look for the last dot. */
   *ext = strrchr (*base, '.');
@@ -216,8 +217,6 @@ filename_split (const char *filename,
 }
 
 
 }
 
 
-/* FIXME: Should use xstrndup. */
-
 static void
 compute_base_names (void)
 {
 static void
 compute_base_names (void)
 {
@@ -233,7 +232,7 @@ compute_base_names (void)
      files, remove the ".c" or ".tab.c" suffix.  */
   if (spec_outfile)
     {
      files, remove the ".c" or ".tab.c" suffix.  */
   if (spec_outfile)
     {
-      filename_split (spec_outfile, &base, &tab, &ext);
+      file_name_split (spec_outfile, &base, &tab, &ext);
 
       /* The full base name goes up the EXT, excluding it. */
       full_base_name =
 
       /* The full base name goes up the EXT, excluding it. */
       full_base_name =
@@ -271,7 +270,7 @@ compute_base_names (void)
        {
          /* Otherwise, the short base name is computed from the input
             grammar: `foo/bar.yy' => `bar'.  */
        {
          /* Otherwise, the short base name is computed from the input
             grammar: `foo/bar.yy' => `bar'.  */
-         filename_split (grammar_file, &base, &tab, &ext);
+         file_name_split (grammar_file, &base, &tab, &ext);
          short_base_name =
            xstrndup (base,
                      (strlen (base) - (ext ? strlen (ext) : 0)));
          short_base_name =
            xstrndup (base,
                      (strlen (base) - (ext ? strlen (ext) : 0)));
@@ -282,7 +281,7 @@ compute_base_names (void)
       stpcpy (stpcpy (full_base_name, short_base_name), TAB_EXT);
 
       /* Compute the extensions from the grammar file name.  */
       stpcpy (stpcpy (full_base_name, short_base_name), TAB_EXT);
 
       /* Compute the extensions from the grammar file name.  */
-      filename_split (grammar_file, &base, &tab, &ext);
+      file_name_split (grammar_file, &base, &tab, &ext);
       if (ext && !yacc_flag)
        compute_exts_from_gf (ext);
     }
       if (ext && !yacc_flag)
        compute_exts_from_gf (ext);
     }