mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-21 18:23:03 +00:00
Add tryclose(), which verifies that fclose was successful.
Hush a couple of compiler warnings.
This commit is contained in:
62
src/files.c
62
src/files.c
@@ -78,6 +78,7 @@ char *stringappend PARAMS((char *, int, char *));
|
|||||||
void openfiles PARAMS((void));
|
void openfiles PARAMS((void));
|
||||||
void open_extra_files PARAMS((void));
|
void open_extra_files PARAMS((void));
|
||||||
FILE *tryopen PARAMS((char *, char *)); /* This might be a good idea */
|
FILE *tryopen PARAMS((char *, char *)); /* This might be a good idea */
|
||||||
|
int tryclose PARAMS((FILE *));
|
||||||
void done PARAMS((int));
|
void done PARAMS((int));
|
||||||
|
|
||||||
extern char *program_name;
|
extern char *program_name;
|
||||||
@@ -117,7 +118,9 @@ void
|
|||||||
openfiles (void)
|
openfiles (void)
|
||||||
{
|
{
|
||||||
char *name_base;
|
char *name_base;
|
||||||
|
#ifdef MSDOS
|
||||||
register char *cp;
|
register char *cp;
|
||||||
|
#endif
|
||||||
char *filename;
|
char *filename;
|
||||||
int base_length;
|
int base_length;
|
||||||
int short_base_length;
|
int short_base_length;
|
||||||
@@ -322,10 +325,12 @@ open_extra_files (void)
|
|||||||
{
|
{
|
||||||
FILE *ftmp;
|
FILE *ftmp;
|
||||||
int c;
|
int c;
|
||||||
char *filename, *cp;
|
char *filename;
|
||||||
|
#ifdef MSDOS
|
||||||
|
char *cp;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (fparser)
|
tryclose(fparser);
|
||||||
fclose(fparser);
|
|
||||||
|
|
||||||
if (! noparserflag)
|
if (! noparserflag)
|
||||||
{
|
{
|
||||||
@@ -350,7 +355,7 @@ open_extra_files (void)
|
|||||||
rewind(fattrs);
|
rewind(fattrs);
|
||||||
while((c=getc(fattrs))!=EOF) /* Thank god for buffering */
|
while((c=getc(fattrs))!=EOF) /* Thank god for buffering */
|
||||||
putc(c,ftmp);
|
putc(c,ftmp);
|
||||||
fclose(fattrs);
|
tryclose(fattrs);
|
||||||
fattrs=ftmp;
|
fattrs=ftmp;
|
||||||
|
|
||||||
fguard = tryopen(guardfile, "w");
|
fguard = tryopen(guardfile, "w");
|
||||||
@@ -374,26 +379,33 @@ tryopen (char *name, char *mode)
|
|||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
tryclose (FILE *ptr)
|
||||||
|
{
|
||||||
|
int result;
|
||||||
|
|
||||||
|
if (ptr == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
result = fclose (ptr);
|
||||||
|
if (result == EOF)
|
||||||
|
{
|
||||||
|
fprintf (stderr, "%s: ", program_name);
|
||||||
|
perror ("fclose");
|
||||||
|
done (2);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
done (int k)
|
done (int k)
|
||||||
{
|
{
|
||||||
if (faction)
|
tryclose(faction);
|
||||||
fclose(faction);
|
tryclose(fattrs);
|
||||||
|
tryclose(fguard);
|
||||||
if (fattrs)
|
tryclose(finput);
|
||||||
fclose(fattrs);
|
tryclose(fparser);
|
||||||
|
tryclose(foutput);
|
||||||
if (fguard)
|
|
||||||
fclose(fguard);
|
|
||||||
|
|
||||||
if (finput)
|
|
||||||
fclose(finput);
|
|
||||||
|
|
||||||
if (fparser)
|
|
||||||
fclose(fparser);
|
|
||||||
|
|
||||||
if (foutput)
|
|
||||||
fclose(foutput);
|
|
||||||
|
|
||||||
/* JF write out the output file */
|
/* JF write out the output file */
|
||||||
if (k == 0 && ftable)
|
if (k == 0 && ftable)
|
||||||
@@ -405,8 +417,8 @@ done (int k)
|
|||||||
rewind(ftable);
|
rewind(ftable);
|
||||||
while((c=getc(ftable)) != EOF)
|
while((c=getc(ftable)) != EOF)
|
||||||
putc(c,ftmp);
|
putc(c,ftmp);
|
||||||
fclose(ftmp);
|
tryclose(ftmp);
|
||||||
fclose(ftable);
|
tryclose(ftable);
|
||||||
|
|
||||||
if (definesflag)
|
if (definesflag)
|
||||||
{
|
{
|
||||||
@@ -415,8 +427,8 @@ done (int k)
|
|||||||
rewind(fdefines);
|
rewind(fdefines);
|
||||||
while((c=getc(fdefines)) != EOF)
|
while((c=getc(fdefines)) != EOF)
|
||||||
putc(c,ftmp);
|
putc(c,ftmp);
|
||||||
fclose(ftmp);
|
tryclose(ftmp);
|
||||||
fclose(fdefines);
|
tryclose(fdefines);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user