From 588adf30ae540f584992f61e43d36d030847336e Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Thu, 13 Dec 2007 11:25:42 -0700 Subject: [PATCH] Beef up fseek tests. * tests/test-fseek.c (main): Also test eof handling. * tests/test-fseeko.c (main): Likewise. Reported by Larry Jones. Signed-off-by: Eric Blake --- ChangeLog | 7 +++++++ tests/test-fseek.c | 18 +++++++++++++++++- tests/test-fseeko.c | 18 +++++++++++++++++- 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index f430f7bc59..b91f640ee8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-12-13 Eric Blake + + Beef up fseek tests. + * tests/test-fseek.c (main): Also test eof handling. + * tests/test-fseeko.c (main): Likewise. + Reported by Larry Jones. + 2007-12-13 Larry Jones (tiny change) Fix fseeko on BSD-based platforms. diff --git a/tests/test-fseek.c b/tests/test-fseek.c index c2d783f6be..dde7ea0de4 100644 --- a/tests/test-fseek.c +++ b/tests/test-fseek.c @@ -25,5 +25,21 @@ main (int argc, char **argv) { /* Assume stdin is seekable iff argc > 1. */ int expected = argc > 1 ? 0 : -1; - return fseek (stdin, 0, SEEK_CUR) != expected; + if (fseek (stdin, 0, SEEK_CUR) != expected) + return 1; + if (argc > 1) + { + /* Test that fseek resets end-of-file marker. */ + if (fseek (stdin, 0, SEEK_END)) + return 1; + if (fgetc (stdin) != EOF) + return 1; + if (!feof (stdin)) + return 1; + if (fseek (stdin, 0, SEEK_END)) + return 1; + if (feof (stdin)) + return 1; + } + return 0; } diff --git a/tests/test-fseeko.c b/tests/test-fseeko.c index bcafeea0a3..3be4f6e502 100644 --- a/tests/test-fseeko.c +++ b/tests/test-fseeko.c @@ -31,5 +31,21 @@ main (int argc, char **argv) /* Exit with success only if fseek/fseeko agree. */ int r1 = fseeko (stdin, (off_t)0, SEEK_CUR); int r2 = fseek (stdin, (long)0, SEEK_CUR); - return ! (r1 == r2 && r1 == expected); + if (r1 != r2 || r1 != expected) + return 1; + if (argc > 1) + { + /* Test that fseek resets end-of-file marker. */ + if (fseeko (stdin, (off_t) 0, SEEK_END)) + return 1; + if (fgetc (stdin) != EOF) + return 1; + if (!feof (stdin)) + return 1; + if (fseeko (stdin, (off_t) 0, SEEK_END)) + return 1; + if (feof (stdin)) + return 1; + } + return 0; } -- 2.30.2