Add tryclose(), which verifies that fclose was successful.

Hush a couple of compiler warnings.
This commit is contained in:
Jesse Thilo
1999-01-20 22:53:23 +00:00
parent 29620c5d9c
commit a693bf18ef

View File

@@ -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);
} }
} }