Otherwise, at least Ultrix-4.3's fflush would return EOF.
Reported by Jim Blandy (jimb@cyclic.com).
xfclose (fp)
FILE *fp;
{
- if (fflush (fp) != 0)
+ if (fp == stdin)
{
- error (0, errno, "flushing file");
- cleanup ();
- exit (2);
+ /* Allow reading stdin from tty more than once. */
+ if (feof (fp))
+ clearerr (fp);
}
-
- if (fp != stdin && fp != stdout)
+ else if (fp == stdout)
{
- if (fclose (fp) != 0)
+ if (fflush (fp) != 0)
{
- error (0, errno, "error closing file");
+ error (0, errno, "flushing file");
cleanup ();
exit (2);
}
}
else
{
- /* Allow reading stdin from tty more than once. */
- clearerr (fp);
+ if (fclose (fp) != 0)
+ {
+ error (0, errno, "error closing file");
+ cleanup ();
+ exit (2);
+ }
}
}