X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fclosein.c;h=2a652f4940a1bb9d84459a06f7781c940dad0ffc;hb=1bb384c44db25aef8f8b455cef22af32d8401abc;hp=beff8bb53a7e40fedc9d83a25b4931a74ec64816;hpb=d60f3b0c6b0f93a601acd1cfd3923f94ca05abb0;p=gnulib.git diff --git a/lib/closein.c b/lib/closein.c index beff8bb53..2a652f494 100644 --- a/lib/closein.c +++ b/lib/closein.c @@ -55,7 +55,7 @@ close_stdin_set_file_name (const char *file) For example, POSIX requires that these two commands behave alike: (sed -ne 1q; cat) < file - tail -n 1 file + tail -n +2 file Since close_stdin is commonly registered via 'atexit', POSIX and the C standard both say that it should not call 'exit', @@ -82,7 +82,8 @@ close_stdin (void) /* There is no need to flush stdin if we can determine quickly that stdin's input buffer is empty; in this case we know that if stdin is seekable, - fseeko (stdin, 0, SEEK_CUR) == lseek (0, 0, SEEK_CUR). */ + (fseeko (stdin, 0, SEEK_CUR), ftello (stdin)) + == lseek (0, 0, SEEK_CUR). */ if (freadahead (stdin) > 0) { /* Only attempt flush if stdin is seekable, as fflush is entitled to