Mercurial > hg > octave-nkf > gnulib-hg
changeset 8753:10d7922803f5
freading has an undefined value after repositioning a read-write stream.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Sun, 29 Apr 2007 08:38:22 +0000 |
parents | 3d1951b8600f |
children | 1f57552cdb11 |
files | ChangeLog lib/freading.h lib/fwriting.h tests/test-freading.c tests/test-fwriting.c |
diffstat | 5 files changed, 31 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-04-29 Bruno Haible <bruno@clisp.org> + + * lib/freading.h: Improve comments. + * lib/fwriting.h: Likewise. + * tests/test-freading.c (main): Don't check freading immediately after + repositioning. Needed for glibc. + 2007-04-29 Bruno Haible <bruno@clisp.org> * lib/freading.c (freading): Trivial simplification.
--- a/lib/freading.h +++ b/lib/freading.h @@ -24,10 +24,12 @@ writing and there is no current read operation (such as fputc). freading and fwriting will never both be true. If STREAM supports - both reads and writes, then both freading and fwriting might be - false when the stream is first opened, after repositioning (such as - fseek, fsetpos, or rewind), after read encounters EOF, or after - fflush, depending on the underlying implementation. + both reads and writes, then: + - both freading and fwriting might be false when the stream is first + opened, after read encounters EOF, or after fflush, + - freading might be false or true and fwriting might be false + after repositioning (such as fseek, fsetpos, or rewind), + depending on the underlying implementation. STREAM must not be wide-character oriented. */
--- a/lib/fwriting.h +++ b/lib/fwriting.h @@ -25,10 +25,12 @@ as fputc). freading and fwriting will never both be true. If STREAM supports - both reads and writes, then both freading and fwriting might be - false when the stream is first opened, after repositioning (such as - fseek, fsetpos, or rewind), after read encounters EOF, or after - fflush, depending on the underlying implementation. + both reads and writes, then: + - both freading and fwriting might be false when the stream is first + opened, after read encounters EOF, or after fflush, + - freading might be false or true and fwriting might be false + after repositioning (such as fseek, fsetpos, or rewind), + depending on the underlying implementation. STREAM must not be wide-character oriented. */
--- a/tests/test-freading.c +++ b/tests/test-freading.c @@ -97,7 +97,9 @@ ASSERT (!freading (fp)); if (fseek (fp, 0, SEEK_END)) goto skip; - ASSERT (!freading (fp)); + /* freading (fp) is undefined here, because on some implementations (e.g. + glibc) fseek causes a buffer to be read. + fwriting (fp) is undefined as well. */ if (fclose (fp)) goto skip; @@ -135,7 +137,9 @@ ASSERT (!freading (fp)); if (fseek (fp, 0, SEEK_END)) goto skip; - ASSERT (!freading (fp)); + /* freading (fp) is undefined here, because on some implementations (e.g. + glibc) fseek causes a buffer to be read. + fwriting (fp) is undefined as well. */ if (fclose (fp)) goto skip;
--- a/tests/test-fwriting.c +++ b/tests/test-fwriting.c @@ -97,7 +97,9 @@ ASSERT (fwriting (fp)); if (fseek (fp, 0, SEEK_END)) goto skip; - /* fwriting (fp) is undefined here, but freading (fp) is false. */ + /* freading (fp) is undefined here, because on some implementations (e.g. + glibc) fseek causes a buffer to be read. + fwriting (fp) is undefined as well. */ if (fclose (fp)) goto skip; @@ -135,7 +137,9 @@ ASSERT (fwriting (fp)); if (fseek (fp, 0, SEEK_END)) goto skip; - /* fwriting (fp) is undefined here, but freading (fp) is false. */ + /* freading (fp) is undefined here, because on some implementations (e.g. + glibc) fseek causes a buffer to be read. + fwriting (fp) is undefined as well. */ if (fclose (fp)) goto skip;