about summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-10-26 02:24:09 +0000
committerUlrich Drepper <drepper@redhat.com>2000-10-26 02:24:09 +0000
commit85471284c726eec22a38f2652cde279678381ab9 (patch)
tree74457a7da63ab4e0512b0b5251d282bda63ad110
parent106599818f03d43df1cf58e236bd3969e4691fa5 (diff)
downloadglibc-85471284c726eec22a38f2652cde279678381ab9.tar.gz
glibc-85471284c726eec22a38f2652cde279678381ab9.tar.xz
glibc-85471284c726eec22a38f2652cde279678381ab9.zip
Update.
	* io/test-lfs.c (do_prepare): Rewrite so it doesn't fail on systems
	without LFS support.
-rw-r--r--ChangeLog3
-rw-r--r--io/test-lfs.c40
2 files changed, 28 insertions, 15 deletions
diff --git a/ChangeLog b/ChangeLog
index 7570b95e4c..0010ef942f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2000-10-25  Ulrich Drepper  <drepper@redhat.com>
 
+	* io/test-lfs.c (do_prepare): Rewrite so it doesn't fail on systems
+	without LFS support.
+
 	* sysdeps/ieee754/dbl-64/e_jn.c: Use __ieee754_sqrt instead of __sqrt.
 	* sysdeps/ieee754/dbl-64/e_j1.c: Likewise.
 	* sysdeps/ieee754/dbl-64/e_j0.c: Likewise.
diff --git a/io/test-lfs.c b/io/test-lfs.c
index 16b2be9718..f4aa67f96a 100644
--- a/io/test-lfs.c
+++ b/io/test-lfs.c
@@ -50,6 +50,7 @@ void
 do_prepare (int argc, char *argv[])
 {
   char name_len;
+  struct rlimit64 rlim;
 
   name_len = strlen (test_dir);
   name = malloc (name_len + sizeof ("/lfsXXXXXX"));
@@ -58,24 +59,33 @@ do_prepare (int argc, char *argv[])
   add_temp_file (name);
 
   /* Open our test file.   */
-  if (mktemp (name) == NULL)
-    error (EXIT_FAILURE, errno, "cannot create temporary file name");
-
-  fd = open64 (name, O_CREAT|O_TRUNC|O_RDWR, 0666);
-  if (fd == -1 && errno == ENOSYS)
+  fd = mkstemp64 (name);
+  if (fd == -1)
     {
-      /* Fail silently.  */
-      error (0, errno, "open64 is not supported");
-      exit (EXIT_SUCCESS);
+      if (errno == ENOSYS)
+	{
+	  /* Fail silently.  */
+	  error (0, errno, "open64 is not supported");
+	  exit (EXIT_SUCCESS);
+	}
+      else
+	error (EXIT_FAILURE, errno, "cannot create temporary file");
     }
 
-  if (fd == -1)
-    error (EXIT_FAILURE, errno, "cannot open test file `%s'", name);
-
-  if (setrlimit64 (RLIMIT_FSIZE, &((const struct rlimit64)
-                                   { RLIM_INFINITY, RLIM_INFINITY }))
-      == -1)
-    error (EXIT_FAILURE, errno, "cannot reset file size limits");
+  if (getrlimit64 (RLIMIT_FSIZE, &rlim) != 0)
+    {
+      error (0, errno, "cannot get resource limit");
+      exit (0);
+    }
+  if (rlim.rlim_cur < TWO_GB + 200)
+    {
+      rlim.rlim_cur = TWO_GB + 200;
+      if (setrlimit64 (RLIMIT_FSIZE, &rlim) != 0)
+	{
+	  error (0, errno, "cannot reset file size limits");
+	  exit (0);
+	}
+    }
 }
 
 int