X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fclosein.c;h=5b2c9150a9588fc60d7e545752d86521eabca1ac;hb=cd56634a4a8179fd5a4419fbb3e27211b042ab1c;hp=077a3247d60ffa39e896dab2d718015919371d07;hpb=b2e2010c7c902235b5efb5bd3c6529f61b093aa4;p=gnulib.git diff --git a/lib/closein.c b/lib/closein.c index 077a3247d..5b2c9150a 100644 --- a/lib/closein.c +++ b/lib/closein.c @@ -1,6 +1,6 @@ /* Close standard input, rewinding seekable stdin if necessary. - Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc. + Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -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', @@ -72,7 +72,7 @@ close_stdin_set_file_name (const char *file) the removal of these files. It's important to detect such failures and exit nonzero because many - tools (most notably `make' and other build-management systems) depend + tools (most notably 'make' and other build-management systems) depend on being able to detect failure in other tools via their exit status. */ void @@ -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