diff options
Diffstat (limited to 'system/procps/strtod.patch')
-rw-r--r-- | system/procps/strtod.patch | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/system/procps/strtod.patch b/system/procps/strtod.patch deleted file mode 100644 index 9cc974b1b..000000000 --- a/system/procps/strtod.patch +++ /dev/null @@ -1,115 +0,0 @@ -From 4ed44ab58e27a9a09902b9c5b49df484842b6c9a Mon Sep 17 00:00:00 2001 -From: Dr. Werner Fink <werner@suse.de> -Date: Wed, 13 Jul 2016 20:08:51 +1000 -Subject: [PATCH] misc: fix strtod_nol_err tests - -A better way of implementing the string to double -conversion and a better way of testing it. - -Signed-off-by: Craig Small <csmall@enc.com.au> ---- - include/strutils.h | 2 +- - lib/strutils.c | 22 ++++++++++++---------- - lib/test_strtod_nol.c | 7 ++++--- - 4 files changed, 20 insertions(+), 18 deletions(-) - -diff --git a/include/strutils.h b/include/strutils.h -index 85a6192..a5a15c9 100644 ---- a/include/strutils.h -+++ b/include/strutils.h -@@ -7,6 +7,6 @@ - - extern long strtol_or_err(const char *str, const char *errmesg); - extern double strtod_or_err(const char *str, const char *errmesg); --double strtod_nol_or_err(char *str, const char *errmesg); -+extern double strtod_nol_or_err(char *str, const char *errmesg); - - #endif -diff --git a/lib/strutils.c b/lib/strutils.c -index e5245db..e0632c4 100644 ---- a/lib/strutils.c -+++ b/lib/strutils.c -@@ -20,6 +20,8 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -+#include <float.h> -+#include <math.h> - #include <stdlib.h> - #include <ctype.h> - -@@ -71,9 +73,9 @@ double strtod_or_err(const char *str, const char *errmesg) - */ - double strtod_nol_or_err(char *str, const char *errmesg) - { -- double num; -+ long double num; - const char *cp, *radix; -- double mult; -+ long double mult; - int negative = 0; - - if (str != NULL && *str != '\0') { -@@ -95,29 +97,29 @@ double strtod_nol_or_err(char *str, const char *errmesg) - mult=0.1; - while(isdigit(*radix)) { - radix++; -- mult *= 10; -+ mult *= 10.0; - } - while(isdigit(*cp)) { -- num += (*cp - '0') * mult; -- mult /= 10; -+ num += (long double)(*cp - '0') * mult; -+ mult /= 10.0; - cp++; - } - /* got the integers */ - if (*cp == '\0') -- return (negative?-num:num); -+ return (double)(negative?-num:num); - if (*cp != '.' && *cp != ',') - error(EXIT_FAILURE, EINVAL, "%s: '%s'", errmesg, str); - - cp++; - mult = 0.1; - while(isdigit(*cp)) { -- num += (*cp - '0') * mult; -- mult /= 10; -+ num += (long double)(*cp - '0') * mult; -+ mult /= 10.0; - cp++; - } - if (*cp == '\0') -- return (negative?-num:num); -+ return (double)(negative?-num:num); - } - error(EXIT_FAILURE, errno, "%s: '%s'", errmesg, str); -- return 0; -+ return (double)0; - } -diff --git a/lib/test_strtod_nol.c b/lib/test_strtod_nol.c -index 0be798c..736768a 100644 ---- a/lib/test_strtod_nol.c -+++ b/lib/test_strtod_nol.c -@@ -1,4 +1,5 @@ -- -+#include <float.h> -+#include <math.h> - #include <stdio.h> - #include <stdlib.h> - #include "strutils.h" -@@ -33,8 +34,8 @@ int main(int argc, char *argv[]) - double val; - - for(i=0; tests[i].string != NULL; i++) { -- if(strtod_nol_or_err(tests[i].string, "Cannot parse number") != -- tests[i].result) { -+ val = strtod_nol_or_err(tests[i].string, "Cannot parse number"); -+ if(fabs(tests[i].result - val) > DBL_EPSILON) { - fprintf(stderr, "FAIL: strtod_nol_or_err(\"%s\") != %f\n", - tests[i].string, tests[i].result); - return EXIT_FAILURE; --- -libgit2 0.26.0 - |