mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-27 05:03:07 +00:00
* src/files.c (skeleton_find): New function, eved out of...
(open_files, open_extra_files): here.
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
2000-11-03 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
|
* src/files.c (skeleton_find): New function, eved out of...
|
||||||
|
(open_files, open_extra_files): here.
|
||||||
|
|
||||||
2000-11-03 Akim Demaille <akim@epita.fr>
|
2000-11-03 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
Don't use `atexit'.
|
Don't use `atexit'.
|
||||||
|
|||||||
67
src/files.c
67
src/files.c
@@ -141,7 +141,7 @@ xfclose (FILE *ptr)
|
|||||||
| Save the content of the obstack OBS in FILENAME. |
|
| Save the content of the obstack OBS in FILENAME. |
|
||||||
`--------------------------------------------------*/
|
`--------------------------------------------------*/
|
||||||
|
|
||||||
void
|
static void
|
||||||
obstack_save (struct obstack *obs, const char *filename)
|
obstack_save (struct obstack *obs, const char *filename)
|
||||||
{
|
{
|
||||||
FILE *out = xfopen (filename, "w");
|
FILE *out = xfopen (filename, "w");
|
||||||
@@ -150,6 +150,29 @@ obstack_save (struct obstack *obs, const char *filename)
|
|||||||
xfclose (out);
|
xfclose (out);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static const char *
|
||||||
|
skeleton_find (const char *envvar, const char *skeleton)
|
||||||
|
{
|
||||||
|
const char *res = getenv (envvar);
|
||||||
|
|
||||||
|
#ifdef MSDOS
|
||||||
|
const char *cp;
|
||||||
|
|
||||||
|
/* File doesn't exist in current directory; try in INIT directory. */
|
||||||
|
if (!res && (cp = getenv ("INIT")))
|
||||||
|
{
|
||||||
|
res = XMALLOC (char, strlen (cp) + strlen (skeleton) + 2);
|
||||||
|
sprintf (res, "%s%c%s", cp, '/', skeleton);
|
||||||
|
}
|
||||||
|
#endif /* !MSDOS */
|
||||||
|
|
||||||
|
if (!res)
|
||||||
|
res = skeleton;
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*-----------------------------------------------------------------.
|
/*-----------------------------------------------------------------.
|
||||||
| Open the input file. Look for the skeletons. Find the names of |
|
| Open the input file. Look for the skeletons. Find the names of |
|
||||||
@@ -163,7 +186,6 @@ open_files (void)
|
|||||||
#ifdef MSDOS
|
#ifdef MSDOS
|
||||||
register char *cp;
|
register char *cp;
|
||||||
#endif
|
#endif
|
||||||
char *filename;
|
|
||||||
int base_length;
|
int base_length;
|
||||||
int short_base_length;
|
int short_base_length;
|
||||||
|
|
||||||
@@ -270,22 +292,7 @@ open_files (void)
|
|||||||
finput = xfopen (infile, "r");
|
finput = xfopen (infile, "r");
|
||||||
|
|
||||||
if (!no_parser_flag)
|
if (!no_parser_flag)
|
||||||
{
|
fparser = xfopen (skeleton_find ("BISON_SIMPLE", PFILE), "r");
|
||||||
filename = getenv ("BISON_SIMPLE");
|
|
||||||
#ifdef MSDOS
|
|
||||||
/* File doesn't exist in current directory; try in INIT directory. */
|
|
||||||
cp = getenv ("INIT");
|
|
||||||
if (filename == 0 && cp != NULL)
|
|
||||||
{
|
|
||||||
filename = XMALLOC (char, strlen (cp) + strlen (PFILE) + 2);
|
|
||||||
strcpy (filename, cp);
|
|
||||||
cp = filename + strlen (filename);
|
|
||||||
*cp++ = '/';
|
|
||||||
strcpy (cp, PFILE);
|
|
||||||
}
|
|
||||||
#endif /* MSDOS */
|
|
||||||
fparser = xfopen (filename ? filename : PFILE, "r");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (verbose_flag)
|
if (verbose_flag)
|
||||||
{
|
{
|
||||||
@@ -346,32 +353,10 @@ open_files (void)
|
|||||||
void
|
void
|
||||||
open_extra_files (void)
|
open_extra_files (void)
|
||||||
{
|
{
|
||||||
int c;
|
|
||||||
char *filename;
|
|
||||||
|
|
||||||
xfclose (fparser);
|
xfclose (fparser);
|
||||||
|
|
||||||
if (!no_parser_flag)
|
if (!no_parser_flag)
|
||||||
{
|
fparser = xfopen (skeleton_find ("BISON_HAIRY", PFILE1), "r");
|
||||||
filename = (char *) getenv ("BISON_HAIRY");
|
|
||||||
#ifdef MSDOS
|
|
||||||
{
|
|
||||||
/* File doesn't exist in current directory; try in INIT
|
|
||||||
directory. */
|
|
||||||
char *cp = getenv ("INIT");
|
|
||||||
if (filename == 0 && cp != NULL)
|
|
||||||
{
|
|
||||||
filename = XMALLOC (char, strlen (cp) + strlen (PFILE1) + 2);
|
|
||||||
strcpy (filename, cp);
|
|
||||||
cp = filename + strlen (filename);
|
|
||||||
*cp++ = '/';
|
|
||||||
strcpy (cp, PFILE1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
fparser = xfopen (filename ? filename : PFILE1, "r");
|
|
||||||
}
|
|
||||||
|
|
||||||
fguard = xfopen (guardfile, "w");
|
fguard = xfopen (guardfile, "w");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user