summaryrefslogtreecommitdiff
path: root/src/c99-to-c89.diff
diff options
context:
space:
mode:
authorJim Meyering <meyering@redhat.com>2008-04-14 11:21:26 +0200
committerJim Meyering <meyering@redhat.com>2008-04-14 11:29:20 +0200
commit4827dd27b0c655a685947aaa01426a5ecba179f3 (patch)
tree6270e3d5bb3eb832ed3d39a312882221b95e52e8 /src/c99-to-c89.diff
parentf91dec277a0d52489dd58a9f1c9eb4fd54fca7b8 (diff)
downloadcoreutils-4827dd27b0c655a685947aaa01426a5ecba179f3.tar.xz
seq: work around floating point inaccuracies on more systems
* src/seq.c: Include <math.h> for fabs. Include <float.h> for DBL_EPSILON. (abs_rel_diff): New function. (print_numbers): Use abs_rel_diff rather than a strict equality test. Without this change, Solaris 8 and Irix 6.2 would fail the float-6 test. Reported by Peter Fales in http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/13183 * src/c99-to-c89.diff: Adjust seq.c offsets.
Diffstat (limited to 'src/c99-to-c89.diff')
-rw-r--r--src/c99-to-c89.diff16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/c99-to-c89.diff b/src/c99-to-c89.diff
index 052b60651..81580197c 100644
--- a/src/c99-to-c89.diff
+++ b/src/c99-to-c89.diff
@@ -124,9 +124,9 @@ diff -upr src/rm.c src/rm.c
+ }
}
diff -upr src/seq.c src/seq.c
---- src/seq.c 2007-07-23 12:56:20.000000000 +0200
-+++ src/seq.c 2007-07-23 13:03:12.000000000 +0200
-@@ -164,6 +164,7 @@ scan_arg (const char *arg)
+--- src/seq.c 2008-04-14 11:17:15.000000000 +0200
++++ src/seq.c 2008-04-14 11:26:57.000000000 +0200
+@@ -166,6 +166,7 @@ scan_arg (const char *arg)
: (decimal_point == arg /* .# -> 0.# */
|| ! ISDIGIT (decimal_point[-1]))); /* -.# -> 0.# */
}
@@ -134,7 +134,7 @@ diff -upr src/seq.c src/seq.c
char const *e = strchr (arg, 'e');
if (! e)
e = strchr (arg, 'E');
-@@ -172,6 +173,7 @@ scan_arg (const char *arg)
+@@ -174,6 +175,7 @@ scan_arg (const char *arg)
long exponent = strtol (e + 1, NULL, 10);
ret.precision += exponent < 0 ? -exponent : 0;
}
@@ -142,7 +142,7 @@ diff -upr src/seq.c src/seq.c
}
return ret;
-@@ -339,6 +341,7 @@ get_default_format (operand first, opera
+@@ -349,6 +351,7 @@ get_default_format (operand first, opera
size_t last_width = last.width + (prec - last.precision);
if (last.precision && prec == 0)
last_width--; /* don't include space for '.' */
@@ -150,7 +150,7 @@ diff -upr src/seq.c src/seq.c
size_t width = MAX (first_width, last_width);
if (width <= INT_MAX)
{
-@@ -346,6 +349,7 @@ get_default_format (operand first, opera
+@@ -356,6 +359,7 @@ get_default_format (operand first, opera
sprintf (format_buf, "%%0%d.%dLf", w, prec);
return format_buf;
}
@@ -158,7 +158,7 @@ diff -upr src/seq.c src/seq.c
}
else
{
-@@ -434,6 +438,7 @@ main (int argc, char **argv)
+@@ -444,6 +448,7 @@ main (int argc, char **argv)
if (format_str)
{
validate_format (format_str);
@@ -166,7 +166,7 @@ diff -upr src/seq.c src/seq.c
char const *f = long_double_format (format_str, &layout);
if (! f)
{
-@@ -441,6 +446,7 @@ main (int argc, char **argv)
+@@ -451,6 +456,7 @@ main (int argc, char **argv)
usage (EXIT_FAILURE);
}
format_str = f;