diff options
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | io/test-lfs.c | 40 |
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 |