diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/sort.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/sort.c b/src/sort.c index da7e0034b..a216e6bba 100644 --- a/src/sort.c +++ b/src/sort.c @@ -266,26 +266,29 @@ static void 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); + } } } |