From: Bruno Haible Date: Sun, 29 Apr 2007 08:38:22 +0000 (+0000) Subject: freading has an undefined value after repositioning a read-write stream. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=17fecfc4d6363d6d4127a97b42f0acbbcbd60a44;p=pspp freading has an undefined value after repositioning a read-write stream. --- diff --git a/ChangeLog b/ChangeLog index e538c9c8b9..f819138fd5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-04-29 Bruno Haible + + * 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 * lib/freading.c (freading): Trivial simplification. diff --git a/lib/freading.h b/lib/freading.h index 1845de1a85..9bd2eaf3ab 100644 --- 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. */ diff --git a/lib/fwriting.h b/lib/fwriting.h index b354186c85..cba2b132b4 100644 --- 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. */ diff --git a/tests/test-freading.c b/tests/test-freading.c index 3d69c404ea..b2f6fc7b07 100644 --- a/tests/test-freading.c +++ b/tests/test-freading.c @@ -97,7 +97,9 @@ main () 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 @@ main () 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; diff --git a/tests/test-fwriting.c b/tests/test-fwriting.c index 690a35f306..0f97df5ccf 100644 --- a/tests/test-fwriting.c +++ b/tests/test-fwriting.c @@ -97,7 +97,9 @@ main () 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 @@ main () 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;