about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--math/libm-test.c78
-rw-r--r--pwd/fgetpwent_r.c1
-rw-r--r--shadow/fgetspent_r.c1
4 files changed, 52 insertions, 34 deletions
diff --git a/ChangeLog b/ChangeLog
index 49ff73f024..289c42fcdf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+1999-06-10  Ulrich Drepper  <drepper@cygnus.com>
+
+	* shadow/fgetspent_r.c (__fgetspent_r): Set errno to ENOENT for
+	returning after last entry.
+	* pwd/fgetpwent_r.c (__fgetpwent_r): Likewise.
+
 1999-06-09  Ulrich Drepper  <drepper@cygnus.com>
 
 	* misc/sysexits.h: Remove advertising clause of copyright.
diff --git a/math/libm-test.c b/math/libm-test.c
index 3e5033094c..de1e23b36e 100644
--- a/math/libm-test.c
+++ b/math/libm-test.c
@@ -5514,13 +5514,14 @@ j0_test (void)
   check ("j0 (0.1) = 0.99750...", FUNC(j0) (0.1), 0.99750156206604003228);
   check ("j0 (0.7) = 0.88120...", FUNC(j0) (0.7), 0.88120088860740528084);
   check ("j0 (1.0) = 0.76519...", FUNC(j0) (1.0), 0.76519768655796655145);
-  check ("j0 (1.5) = 0.51182...", FUNC(j0) (1.5), 0.51182767173591812875);
+  check_eps ("j0 (1.5) = 0.51182...", FUNC(j0) (1.5), 0.51182767173591812875,
+	     CHOOSE (0, 0, 6e-8));
   check_eps ("j0 (2.0) = 0.22389...", FUNC(j0) (2.0), 0.22389077914123566805,
 	     CHOOSE(0, 3e-17, 1.5e-8));
   check_eps ("j0 (8.0) = 0.17165...", FUNC(j0) (8.0), 0.17165080713755390609,
 	     CHOOSE(0, 0, 1.5e-8));
   check_eps ("j0 (10.0) = -0.24593...", FUNC(j0) (10.0), -0.24593576445134833520,
-	     CHOOSE(0, 6e-17, 1.5e-8));
+	     CHOOSE(0, 6e-17, 5e-8));
 }
 
 static void
@@ -5536,18 +5537,21 @@ j1_test (void)
   check_isnan ("j1 (NaN) = NaN", FUNC(j1) (nan_value));
   check ("j1 (+Inf) = 0", FUNC(j1) (plus_infty), 0);
 
-  check ("j1 (-1.0) = -0.44005...", FUNC(j1) (-1.0), -0.44005058574493351596);
+  check_eps ("j1 (-1.0) = -0.44005...", FUNC(j1) (-1.0),
+	     -0.44005058574493351596, CHOOSE (0, 0, 3e-8));
   check ("j1 (0) = 0", FUNC(j1) (0.0), 0.0);
   check ("j1 (0.1) = 0.049937...", FUNC(j1) (0.1), 0.049937526036241997556);
   check ("j1 (0.7) = 0.32899...", FUNC(j1) (0.7), 0.32899574154005894785);
-  check ("j1 (1.0) = 0.44005...", FUNC(j1) (1.0), 0.44005058574493351596);
-  check ("j1 (1.5) = 0.55793...", FUNC(j1) (1.5), 0.55793650791009964199);
+  check_eps ("j1 (1.0) = 0.44005...", FUNC(j1) (1.0), 0.44005058574493351596,
+	     CHOOSE (0, 0, 3e-8));
+  check_eps ("j1 (1.5) = 0.55793...", FUNC(j1) (1.5), 0.55793650791009964199,
+	     CHOOSE (0, 0, 6e-8));
   check_eps ("j1 (2.0) = 0.57672...", FUNC(j1) (2.0), 0.57672480775687338720,
 	     CHOOSE(0, 2e-16, 0));
   check_eps ("j1 (8.0) = 0.23463...", FUNC(j1) (8.0), 0.23463634685391462438,
 	     CHOOSE(0, 0, 1.5e-8));
   check_eps ("j1 (10.0) = 0.04347...", FUNC(j1) (10.0), 0.043472746168861436670,
-	     CHOOSE(0, 2e-17, 3.8e-9));
+	     CHOOSE(0, 2e-17, 7.5e-9));
 }
 
 static void
@@ -5569,64 +5573,70 @@ jn_test (void)
   check ("jn (0, 0.1) = 0.99750...", FUNC(jn) (0, 0.1), 0.99750156206604003228);
   check ("jn (0, 0.7) = 0.88120...", FUNC(jn) (0, 0.7), 0.88120088860740528084);
   check ("jn (0, 1.0) = 0.76519...", FUNC(jn) (0, 1.0), 0.76519768655796655145);
-  check ("jn (0, 1.5) = 0.51182...", FUNC(jn) (0, 1.5), 0.51182767173591812875);
+  check_eps ("jn (0, 1.5) = 0.51182...", FUNC(jn) (0, 1.5),
+	     0.51182767173591812875, CHOOSE (0, 0, 6e-8));
   check_eps ("jn (0, 2.0) = 0.22389...", FUNC(jn) (0, 2.0), 0.22389077914123566805,
 	     CHOOSE(0, 3e-17, 1.5e-8));
   check_eps ("jn (0, 8.0) = 0.17165...", FUNC(jn) (0, 8.0), 0.17165080713755390609,
 	     CHOOSE(0, 0, 1.5e-8));
   check_eps ("jn (0, 10.0) = -0.24593...", FUNC(jn) (0, 10.0), -0.24593576445134833520,
-	     CHOOSE(0, 6e-17, 1.5e-8));
+	     CHOOSE(0, 6e-17, 4.5e-8));
 
   /* jn (1, x) == j1 (x)  */
   check_isnan ("jn (1, NaN) = NaN", FUNC(jn) (1, nan_value));
   check ("jn (1, +Inf) = 0", FUNC(jn) (1, plus_infty), 0);
 
-  check ("jn (1, -1.0) = -0.44005...", FUNC(jn) (1, -1.0), -0.44005058574493351596);
+  check_eps ("jn (1, -1.0) = -0.44005...", FUNC(jn) (1, -1.0),
+	     -0.44005058574493351596, CHOOSE (0, 0, 3e-8));
   check ("jn (1, 0.0) = 0", FUNC(jn) (1, 0.0), 0.0);
   check ("jn (1, 0.1) = 0.049937...", FUNC(jn) (1, 0.1), 0.049937526036241997556);
   check ("jn (1, 0.7) = 0.32899...", FUNC(jn) (1, 0.7), 0.32899574154005894785);
-  check ("jn (1, 1.0) = 0.44005...", FUNC(jn) (1, 1.0), 0.44005058574493351596);
-  check ("jn (1, 1.5) = 0.55793...", FUNC(jn) (1, 1.5), 0.55793650791009964199);
+  check_eps ("jn (1, 1.0) = 0.44005...", FUNC(jn) (1, 1.0),
+	     0.44005058574493351596, CHOOSE (0, 0, 3e-8));
+  check_eps ("jn (1, 1.5) = 0.55793...", FUNC(jn) (1, 1.5),
+	     0.55793650791009964199, CHOOSE (0, 0, 6e-8));
   check_eps ("jn (1, 2.0) = 0.57672...", FUNC(jn) (1, 2.0), 0.57672480775687338720,
 	     CHOOSE(0, 2e-16, 0));
   check_eps ("jn (1, 8.0) = 0.23463...", FUNC(jn) (1, 8.0), 0.23463634685391462438,
 	     CHOOSE(0, 0, 1.5e-8));
   check_eps ("jn (1, 10.0) = 0.04347...", FUNC(jn) (1, 10.0), 0.043472746168861436670,
-	     CHOOSE(0, 2e-17, 3.8e-9));
+	     CHOOSE(0, 2e-17, 7.5e-9));
 
   /* jn (3, x)  */
   check_isnan ("jn (3, NaN) = NaN", FUNC(jn) (3, nan_value));
   check ("jn (3, +Inf) = 0", FUNC(jn) (3, plus_infty), 0);
 
-  check ("jn (3, -1.0) = -0.01956...", FUNC(jn) (3, -1.0), -0.019563353982668405919);
+  check_eps ("jn (3, -1.0) = -0.01956...", FUNC(jn) (3, -1.0),
+	     -0.019563353982668405919, CHOOSE (0, 0, 1.9e-9));
   check ("jn (3, 0.0) = 0", FUNC(jn) (3, 0.0), 0.0);
   check_eps ("jn (3, 0.1) = 2.082...*10^-6", FUNC(jn) (3, 0.1), 0.000020820315754756261429,
 	     CHOOSE(0, 4e-21, 0));
   check_eps ("jn (3, 0.7) = 0.00692...", FUNC(jn) (3, 0.7), 0.0069296548267508408077,
 	     CHOOSE(0, 2e-18, 0));
-  check ("jn (3, 1.0) = 0.01956...", FUNC(jn) (3, 1.0), 0.019563353982668405919);
+  check_eps ("jn (3, 1.0) = 0.01956...", FUNC(jn) (3, 1.0),
+	     0.019563353982668405919, CHOOSE (0, 0, 1.9e-9));
   check_eps ("jn (3, 2.0) = 0.12894...", FUNC(jn) (3, 2.0), 0.12894324947440205110,
 	     CHOOSE(0, 3e-17, 0));
   check_eps ("jn (3, 10.0) = 0.05837...", FUNC(jn) (3, 10.0), 0.058379379305186812343,
-	     CHOOSE(0, 3e-17, 4e-9));
+	     CHOOSE(0, 3e-17, 1.9e-8));
 
   /*  jn (10, x)  */
   check_isnan ("jn (10, NaN) = NaN", FUNC(jn) (10, nan_value));
   check ("jn (10, +Inf) = 0", FUNC(jn) (10, plus_infty), 0);
 
   check_eps ("jn (10, -1.0) = 2.6306...*10^-10", FUNC(jn) (10, -1.0), 0.26306151236874532070e-9,
-	     CHOOSE(0, 0, 3e-17));
+	     CHOOSE(0, 0, 5.6e-17));
   check ("jn (10, 0) = 0", FUNC(jn) (10, 0.0), 0.0);
   check_eps ("jn (10, 0.1) = 2.6905...*10^-20", FUNC(jn) (10, 0.1), 0.26905328954342155795e-19,
-	     CHOOSE(0, 2e-35, 4e-27));
+	     CHOOSE(0, 2e-35, 9.7e-27));
   check_eps ("jn (10, 0.7) = 7.517...*10^-12", FUNC(jn) (10, 0.7), 0.75175911502153953928e-11,
-	     CHOOSE(0, 7e-27, 9e-19));
+	     CHOOSE(0, 7e-27, 1.8e-18));
   check_eps ("jn (10, 1.0) = 2.630...*10^-11", FUNC(jn) (10, 1.0), 0.26306151236874532070e-9,
-	     CHOOSE(0, 0, 3e-17));
+	     CHOOSE(0, 0, 5.6e-17));
   check_eps ("jn (10, 2.0) = 2.515...*10^-7", FUNC(jn) (10, 2.0), 0.25153862827167367096e-6,
-	     CHOOSE(0, 2e-22, 0));
+	     CHOOSE(0, 2e-22, 5.7e-14));
   check_eps ("jn (10, 10.0) = 0.20748...", FUNC(jn) (10, 10.0), 0.20748610663335885770,
-	     CHOOSE(0, 2e-16, 3e-8));
+	     CHOOSE(0, 2e-16, 1.4e-7));
 }
 
 static void
@@ -5645,7 +5655,7 @@ y0_test (void)
   check ("y0 (+Inf) = 0", FUNC(y0) (plus_infty), 0);
 
   check_eps ("y0 (0.1) = -1.53423...", FUNC(y0) (0.1), -1.5342386513503668441,
-	     CHOOSE(0, 3e-16, 1.2e-7));
+	     CHOOSE(0, 3e-16, 2.4e-7));
   check_eps ("y0 (0.7) = -0.19066...", FUNC(y0) (0.7), -0.19066492933739506743,
 	     CHOOSE(0, 6e-17, 1.5e-8));
   check_eps ("y0 (1.0) = 0.08825...", FUNC(y0) (1.0), 0.088256964215676957983,
@@ -5653,7 +5663,7 @@ y0_test (void)
   check_eps ("y0 (1.5) = 0.38244...", FUNC(y0) (1.5), 0.38244892379775884396,
 	     CHOOSE(0, 6e-17, 3.0e-8));
   check_eps ("y0 (2.0) = 0.51037...", FUNC(y0) (2.0), 0.51037567264974511960,
-	     CHOOSE(0, 2e-16 ,0));
+	     CHOOSE(0, 2e-16, 6e-8));
   check_eps ("y0 (8.0) = 0.22352...", FUNC(y0) (8.0), 0.22352148938756622053,
 	     CHOOSE(0, 3e-17, 1.5e-8));
   check_eps ("y0 (10.0) = 0.05567...", FUNC(y0) (10.0), 0.055671167283599391424,
@@ -5677,13 +5687,13 @@ y1_test (void)
   check_isnan ("y1 (NaN) = NaN", FUNC(y1) (nan_value));
 
   check_eps ("y1 (0.1) = -6.45895...", FUNC(y1) (0.1), -6.4589510947020269877,
-	     CHOOSE(0, 9e-16, 4.8e-7));
+	     CHOOSE(0, 9e-16, 9.6e-7));
   check_eps ("y1 (0.7) = -1.10324...", FUNC(y1) (0.7), -1.1032498719076333697,
-	     CHOOSE(0, 3e-16, 0));
+	     CHOOSE(0, 3e-16, 1.2e-7));
   check_eps ("y1 (1.0) = -0.78121...", FUNC(y1) (1.0), -0.78121282130028871655,
 	     CHOOSE(0, 2e-16, 0));
   check_eps ("y1 (1.5) = -0.41230...", FUNC(y1) (1.5), -0.41230862697391129595,
-	     CHOOSE (0, 0, 3e-8));
+	     CHOOSE (0, 0, 6e-8));
   check_eps ("y1 (2.0) = -0.10703...", FUNC(y1) (2.0), -0.10703243154093754689,
 	     CHOOSE(0, 2e-17, 1.5e-8));
   check_eps ("y1 (8.0) = -0.15806...", FUNC(y1) (8.0), -0.15806046173124749426,
@@ -5710,15 +5720,15 @@ yn_test (void)
   check ("yn (0, +Inf) = 0", FUNC(yn) (0, plus_infty), 0);
 
   check_eps ("yn (0, 0.1) = -1.53423...", FUNC(yn) (0, 0.1), -1.5342386513503668441,
-	     CHOOSE(0, 3e-16, 3e-7));
+	     CHOOSE(0, 3e-16, 9.6e-7));
   check_eps ("yn (0, 0.7) = -0.19066...", FUNC(yn) (0, 0.7), -0.19066492933739506743,
-	     CHOOSE(0, 6e-17, 2e-8));
+	     CHOOSE(0, 6e-17, 1.2e-7));
   check_eps ("yn (0, 1.0) = 0.08825...", FUNC(yn) (0, 1.0), 0.088256964215676957983,
-	     CHOOSE(0, 2e-17, 8e-9));
+	     CHOOSE(0, 2e-17, 3e-8));
   check_eps ("yn (0, 1.5) = 0.38244...", FUNC(yn) (0, 1.5), 0.38244892379775884396,
 	     CHOOSE(0, 6e-17, 3e-8));
   check_eps ("yn (0, 2.0) = 0.51037...", FUNC(yn) (0, 2.0), 0.51037567264974511960,
-	     CHOOSE(0, 2e-16, 0));
+	     CHOOSE(0, 2e-16, 6e-8));
   check_eps ("yn (0, 8.0) = 0.22352...", FUNC(yn) (0, 8.0), 0.22352148938756622053,
 	     CHOOSE(0, 3e-17, 1.5e-8));
   check_eps ("yn (0, 10.0) = 0.05567...", FUNC(yn) (0, 10.0), 0.055671167283599391424,
@@ -5750,12 +5760,12 @@ yn_test (void)
   check_isnan ("yn (3, NaN) = NaN", FUNC(yn) (3, nan_value));
 
   check_eps ("yn (3, 0.1) = -5099.3...", FUNC(yn) (3, 0.1), -5099.3323786129048894,
-	     CHOOSE(0, 1e-12, 5e-4));
+	     CHOOSE(0, 1e-12, 9.8e-4));
   check_eps ("yn (3, 0.7) = -15.819...", FUNC(yn) (3, 0.7), -15.819479052819633505,
-	     CHOOSE(0, 4e-15, 0));
+	     CHOOSE(0, 4e-15, 9.6e-7));
   check ("yn (3, 1.0) = -5.8215...", FUNC(yn) (3, 1.0), -5.8215176059647288478);
   check_eps ("yn (3, 2.0) = -1.1277...", FUNC(yn) (3, 2.0), -1.1277837768404277861,
-	     CHOOSE(0, 3e-16, 0));
+	     CHOOSE(0, 3e-16, 1.2e-7));
   check_eps ("yn (3, 10.0) = -0.25136...", FUNC(yn) (3, 10.0), -0.25136265718383732978,
 	     CHOOSE(0, 6e-17, 3e-8));
 
@@ -5764,7 +5774,7 @@ yn_test (void)
   check_isnan ("yn (10, NaN) = NaN", FUNC(yn) (10, nan_value));
 
   check_eps ("yn (10, 0.1) = -1.183...*10^18", FUNC(yn) (10, 0.1), -0.11831335132045197885e19,
-	     CHOOSE(0, 6e2, 2e11));
+	     CHOOSE(0, 6e2, 2.8e11));
   check_eps ("yn (10, 0.7) = -4.244...*10^9", FUNC(yn) (10, 0.7), -0.42447194260703866924e10,
 	     CHOOSE(0, 3e-6, 8e2));
   check_eps ("yn (10, 1.0) = -1.216...*10^8", FUNC(yn) (10, 1.0), -0.12161801427868918929e9,
diff --git a/pwd/fgetpwent_r.c b/pwd/fgetpwent_r.c
index c2a746d902..33f49ea1ae 100644
--- a/pwd/fgetpwent_r.c
+++ b/pwd/fgetpwent_r.c
@@ -86,6 +86,7 @@ __fgetpwent_r (FILE *stream, struct passwd *resbuf, char *buffer,
 	{
 	  funlockfile (stream);
 	  *result = NULL;
+	  __set_errno (ENOENT);
 	  return errno;
 	}
       if (p == NULL || buffer[buflen - 1] != '\xff')
diff --git a/shadow/fgetspent_r.c b/shadow/fgetspent_r.c
index a61483c95a..8f7e303e07 100644
--- a/shadow/fgetspent_r.c
+++ b/shadow/fgetspent_r.c
@@ -53,6 +53,7 @@ __fgetspent_r (FILE *stream, struct spwd *resbuf, char *buffer, size_t buflen,
 	{
 	  funlockfile (stream);
 	  *result = NULL;
+	  __set_errno (ENOENT);
 	  return errno;
 	}
       if (p == NULL || buffer[buflen - 1] != '\xff')