/* See LICENSE file for copyright and license details. */ #include <stdio.h> #include <stdlib.h> #include "../util.h" int fshut(FILE *fp, const char *fname) { int ret = 0; /* fflush() is undefined for input streams by ISO C, * but not POSIX 2008 if you ignore ISO C overrides. * Leave it unchecked and rely on the following * functions to detect errors. */ fflush(fp); if (ferror(fp) && !ret) { weprintf("ferror %s:", fname); ret = 1; } if (fclose(fp) && !ret) { weprintf("fclose %s:", fname); ret = 1; } return ret; } void enfshut(int status, FILE *fp, const char *fname) { if (fshut(fp, fname)) exit(status); } void efshut(FILE *fp, const char *fname) { enfshut(1, fp, fname); }