diff options
author | Andreas Jaeger <aj@suse.de> | 2001-02-05 21:38:54 +0000 |
---|---|---|
committer | Andreas Jaeger <aj@suse.de> | 2001-02-05 21:38:54 +0000 |
commit | 725c76a6b7ab2ab444d304f89ddecd2227f50f9e (patch) | |
tree | 53885d7c429495ee6c5fdbe18709b238c604e490 /io | |
parent | d9bfd1a510a2c83d8f72cb859422f38130be50f9 (diff) | |
download | glibc-725c76a6b7ab2ab444d304f89ddecd2227f50f9e.zip glibc-725c76a6b7ab2ab444d304f89ddecd2227f50f9e.tar.gz glibc-725c76a6b7ab2ab444d304f89ddecd2227f50f9e.tar.bz2 |
Update.
* io/test-lfs.c (do_test): Test lseek64 return value, call
test_ftello.
(test_ftello): New function to test ftello64 and fseeko64.
Diffstat (limited to 'io')
-rw-r--r-- | io/test-lfs.c | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/io/test-lfs.c b/io/test-lfs.c index bfc71f1..a08801f 100644 --- a/io/test-lfs.c +++ b/io/test-lfs.c @@ -88,6 +88,53 @@ do_prepare (int argc, char *argv[]) } } +static void +test_ftello (void) +{ + FILE *f; + int ret; + off64_t pos; + + f = fopen64 (name, "w"); + + ret = fseeko64 (f, TWO_GB+100, SEEK_SET); + if (ret == -1 && errno == ENOSYS) + { + error (0, errno, "fseeko64 is not supported"); + exit (EXIT_SUCCESS); + } + if (ret == -1 && errno == EINVAL) + { + error (0, errno, "LFS seems not to be supported "); + exit (EXIT_SUCCESS); + } + if (ret == -1) + { + error (0, errno, "fseeko64 failed with error: "); + exit (EXIT_FAILURE); + } + + ret = fwrite ("Hello", 1, 5, f); + if (ret == -1 && errno == EINVAL) + { + error (0, errno, "LFS seems not to be supported."); + exit (EXIT_SUCCESS); + } + + if (ret != 5) + error (EXIT_FAILURE, errno, "cannot write test string to large file"); + + pos = ftello64 (f); + + if (pos != TWO_GB+105) + { + error (0, 0, "ftello64 gives wrong result."); + exit (EXIT_FAILURE); + } + + fclose (f); +} + int do_test (int argc, char *argv[]) { @@ -105,6 +152,11 @@ do_test (int argc, char *argv[]) error (0, errno, "LFS seems not to be supported "); exit (EXIT_SUCCESS); } + if (ret == -1) + { + error (0, errno, "lseek64 failed with error: "); + exit (EXIT_FAILURE); + } ret = write (fd, "Hello", 5); if (ret == -1 && errno == EINVAL) @@ -131,5 +183,7 @@ do_test (int argc, char *argv[]) error (EXIT_FAILURE, 0, "stat reported size %lld instead of %lld.", (long long int) statbuf.st_size, (TWO_GB + 100 + 5)); + test_ftello (); + return 0; } |