Update.
authorAndreas Jaeger <aj@suse.de>
Mon, 5 Feb 2001 21:38:54 +0000 (21:38 +0000)
committerAndreas Jaeger <aj@suse.de>
Mon, 5 Feb 2001 21:38:54 +0000 (21:38 +0000)
* io/test-lfs.c (do_test): Test lseek64 return value, call
test_ftello.
(test_ftello): New function to test ftello64 and fseeko64.

ChangeLog
io/test-lfs.c

index bab50bc..3388534 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2001-02-05  Andreas Jaeger  <aj@suse.de>
 
+       * io/test-lfs.c (do_test): Test lseek64 return value, call
+       test_ftello.
+       (test_ftello): New function to test ftello64 and fseeko64.
+
        * signal/signal.h: Move __sigaction from here to...
        * include/signal.h: ...here.
 
index bfc71f1..a08801f 100644 (file)
@@ -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;
 }