projects
/
bison.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
tests: highlight empty right-hand sides
[bison.git]
/
src
/
files.c
diff --git
a/src/files.c
b/src/files.c
index ba7705308597d9a8094f4e5222abaed31780bc4c..bc8a4e51d2038c70c7ed7b8a13abfdbd6d3c4b7d 100644
(file)
--- a/
src/files.c
+++ b/
src/files.c
@@
-1,6
+1,6
@@
/* Open and close files for Bison.
/* Open and close files for Bison.
- Copyright (C) 1984, 1986, 1989, 1992, 2000-201
1
Free Software
+ Copyright (C) 1984, 1986, 1989, 1992, 2000-201
3
Free Software
Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
@@
-25,6
+25,7
@@
#include <dirname.h>
#include <get-errno.h>
#include <quote.h>
#include <dirname.h>
#include <get-errno.h>
#include <quote.h>
+#include <quotearg.h>
#include <stdio-safer.h>
#include <xstrndup.h>
#include <stdio-safer.h>
#include <xstrndup.h>
@@
-109,7
+110,8
@@
xfopen (const char *name, const char *mode)
ptr = fopen_safer (name, mode);
if (!ptr)
ptr = fopen_safer (name, mode);
if (!ptr)
- error (EXIT_FAILURE, get_errno (), _("cannot open file `%s'"), name);
+ error (EXIT_FAILURE, get_errno (),
+ _("%s: cannot open"), quotearg_colon (name));
return ptr;
}
return ptr;
}
@@
-125,13
+127,25
@@
xfclose (FILE *ptr)
return;
if (ferror (ptr))
return;
if (ferror (ptr))
- error (EXIT_FAILURE, 0, _("
I/O
error"));
+ error (EXIT_FAILURE, 0, _("
input/output
error"));
if (fclose (ptr) != 0)
error (EXIT_FAILURE, get_errno (), _("cannot close file"));
}
\f
if (fclose (ptr) != 0)
error (EXIT_FAILURE, get_errno (), _("cannot close file"));
}
\f
+FILE *
+xfdopen (int fd, char const *mode)
+{
+ FILE *res = fdopen (fd, mode);
+ if (! res)
+ error (EXIT_FAILURE, get_errno (),
+ /* On a separate line to please the "unmarked_diagnostics"
+ syntax-check. */
+ "fdopen");
+ return res;
+}
+
/*------------------------------------------------------------------.
| Compute ALL_BUT_EXT, ALL_BUT_TAB_EXT and output files extensions. |
`------------------------------------------------------------------*/
/*------------------------------------------------------------------.
| Compute ALL_BUT_EXT, ALL_BUT_TAB_EXT and output files extensions. |
`------------------------------------------------------------------*/
@@
-140,7
+154,7
@@
xfclose (FILE *ptr)
static void
compute_exts_from_gf (const char *ext)
{
static void
compute_exts_from_gf (const char *ext)
{
- if (
strcmp (ext, ".y") == 0
)
+ if (
STREQ (ext, ".y")
)
{
src_extension = xstrdup (language->src_extension);
header_extension = xstrdup (language->header_extension);
{
src_extension = xstrdup (language->src_extension);
header_extension = xstrdup (language->header_extension);
@@
-200,7
+214,7
@@
compute_exts_from_src (const char *ext)
static void
file_name_split (const char *file_name,
static void
file_name_split (const char *file_name,
- const char **base, const char **tab, const char **ext)
+
const char **base, const char **tab, const char **ext)
{
*base = last_component (file_name);
{
*base = last_component (file_name);
@@
-213,11
+227,10
@@
file_name_split (const char *file_name,
if (*ext)
{
size_t baselen = *ext - *base;
if (*ext)
{
size_t baselen = *ext - *base;
- size_t dottablen =
4
;
+ size_t dottablen =
sizeof (TAB_EXT) - 1
;
if (dottablen < baselen
if (dottablen < baselen
- && (strncmp (*ext - dottablen, ".tab", dottablen) == 0
- || strncmp (*ext - dottablen, "_tab", dottablen) == 0))
- *tab = *ext - dottablen;
+ && STRPREFIX_LIT (TAB_EXT, *ext - dottablen))
+ *tab = *ext - dottablen;
}
}
}
}
@@
-239,44
+252,44
@@
compute_file_name_parts (void)
/* ALL_BUT_EXT goes up the EXT, excluding it. */
all_but_ext =
/* ALL_BUT_EXT goes up the EXT, excluding it. */
all_but_ext =
- xstrndup (spec_outfile,
- (strlen (spec_outfile) - (ext ? strlen (ext) : 0)));
+
xstrndup (spec_outfile,
+
(strlen (spec_outfile) - (ext ? strlen (ext) : 0)));
/* ALL_BUT_TAB_EXT goes up to TAB, excluding it. */
all_but_tab_ext =
/* ALL_BUT_TAB_EXT goes up to TAB, excluding it. */
all_but_tab_ext =
- xstrndup (spec_outfile,
- (strlen (spec_outfile)
- - (tab ? strlen (tab) : (ext ? strlen (ext) : 0))));
+
xstrndup (spec_outfile,
+
(strlen (spec_outfile)
+
- (tab ? strlen (tab) : (ext ? strlen (ext) : 0))));
if (ext)
if (ext)
- compute_exts_from_src (ext);
+
compute_exts_from_src (ext);
}
else
{
file_name_split (grammar_file, &base, &tab, &ext);
if (spec_file_prefix)
}
else
{
file_name_split (grammar_file, &base, &tab, &ext);
if (spec_file_prefix)
- {
- /* If --file-prefix=foo was specified, ALL_BUT_TAB_EXT = `foo'. */
- dir_prefix =
+
{
+
/* If --file-prefix=foo was specified, ALL_BUT_TAB_EXT = `foo'. */
+
dir_prefix =
xstrndup (spec_file_prefix,
last_component (spec_file_prefix) - spec_file_prefix);
xstrndup (spec_file_prefix,
last_component (spec_file_prefix) - spec_file_prefix);
- all_but_tab_ext = xstrdup (spec_file_prefix);
- }
+
all_but_tab_ext = xstrdup (spec_file_prefix);
+
}
else if (yacc_flag)
else if (yacc_flag)
- {
- /* If --yacc, then the output is `y.tab.c'. */
- dir_prefix = xstrdup ("");
- all_but_tab_ext = xstrdup ("y");
- }
+
{
+
/* If --yacc, then the output is `y.tab.c'. */
+
dir_prefix = xstrdup ("");
+
all_but_tab_ext = xstrdup ("y");
+
}
else
else
- {
- /* Otherwise, ALL_BUT_TAB_EXT is computed from the input
- grammar: `foo/bar.yy' => `bar'. */
- dir_prefix = xstrdup ("");
- all_but_tab_ext =
- xstrndup (base, (strlen (base) - (ext ? strlen (ext) : 0)));
- }
+
{
+
/* Otherwise, ALL_BUT_TAB_EXT is computed from the input
+
grammar: `foo/bar.yy' => `bar'. */
+
dir_prefix = xstrdup ("");
+
all_but_tab_ext =
+
xstrndup (base, (strlen (base) - (ext ? strlen (ext) : 0)));
+
}
if (language->add_tab)
all_but_ext = concat2 (all_but_tab_ext, TAB_EXT);
if (language->add_tab)
all_but_ext = concat2 (all_but_tab_ext, TAB_EXT);
@@
-285,7
+298,7
@@
compute_file_name_parts (void)
/* Compute the extensions from the grammar file name. */
if (ext && !yacc_flag)
/* Compute the extensions from the grammar file name. */
if (ext && !yacc_flag)
- compute_exts_from_gf (ext);
+
compute_exts_from_gf (ext);
}
}
}
}
@@
-312,20
+325,20
@@
compute_output_file_names (void)
if (defines_flag)
{
if (! spec_defines_file)
if (defines_flag)
{
if (! spec_defines_file)
- spec_defines_file = concat2 (all_but_ext, header_extension);
+
spec_defines_file = concat2 (all_but_ext, header_extension);
}
if (graph_flag)
{
if (! spec_graph_file)
}
if (graph_flag)
{
if (! spec_graph_file)
- spec_graph_file = concat2 (all_but_tab_ext, ".dot");
+
spec_graph_file = concat2 (all_but_tab_ext, ".dot");
output_file_name_check (&spec_graph_file);
}
if (xml_flag)
{
if (! spec_xml_file)
output_file_name_check (&spec_graph_file);
}
if (xml_flag)
{
if (! spec_xml_file)
- spec_xml_file = concat2 (all_but_tab_ext, ".xml");
+
spec_xml_file = concat2 (all_but_tab_ext, ".xml");
output_file_name_check (&spec_xml_file);
}
output_file_name_check (&spec_xml_file);
}
@@
-345,9
+358,9
@@
void
output_file_name_check (char **file_name)
{
bool conflict = false;
output_file_name_check (char **file_name)
{
bool conflict = false;
- if (
0 == strcmp
(*file_name, grammar_file))
+ if (
STREQ
(*file_name, grammar_file))
{
{
- complain (_("refusing to overwrite the input file %s"),
+ complain (
NULL, complaint,
_("refusing to overwrite the input file %s"),
quote (*file_name));
conflict = true;
}
quote (*file_name));
conflict = true;
}
@@
-355,10
+368,10
@@
output_file_name_check (char **file_name)
{
int i;
for (i = 0; i < file_names_count; i++)
{
int i;
for (i = 0; i < file_names_count; i++)
- if (
0 == strcmp
(file_names[i], *file_name))
+ if (
STREQ
(file_names[i], *file_name))
{
{
-
warn (
_("conflicting outputs to file %s"),
- quote (*file_name));
+
complain (NULL, Wother,
_("conflicting outputs to file %s"),
+
quote (*file_name));
conflict = true;
}
}
conflict = true;
}
}