summaryrefslogtreecommitdiffstats
path: root/source/lib/snprintf.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/lib/snprintf.c')
-rw-r--r--source/lib/snprintf.c34
1 files changed, 14 insertions, 20 deletions
diff --git a/source/lib/snprintf.c b/source/lib/snprintf.c
index 27336261086..0b0bdb0b335 100644
--- a/source/lib/snprintf.c
+++ b/source/lib/snprintf.c
@@ -57,12 +57,6 @@
#ifndef NO_CONFIG_H /* for some tests */
#include "config.h"
-#else
-#define NULL 0
-#endif
-
-#ifdef TEST_SNPRINTF /* need math library headers for testing */
-#include <math.h>
#endif
#ifdef HAVE_STRING_H
@@ -667,8 +661,9 @@ static void fmtfp (char *buffer, size_t *currlen, size_t maxlen,
/* Convert integer part */
do {
- temp = intpart*0.1;
- my_modf(temp, &intpart);
+ temp = intpart;
+ my_modf(intpart*0.1, &intpart);
+ temp = temp*0.1;
index = (int) ((temp -intpart +0.05)* 10.0);
/* index = (int) (((double)(temp*0.1) -intpart +0.05) *10.0); */
/* printf ("%llf, %f, %x\n", temp, intpart, index); */
@@ -682,8 +677,9 @@ static void fmtfp (char *buffer, size_t *currlen, size_t maxlen,
if (fracpart)
{
do {
- temp = fracpart*0.1;
- my_modf(temp, &fracpart);
+ temp = fracpart;
+ my_modf(fracpart*0.1, &fracpart);
+ temp = temp*0.1;
index = (int) ((temp -fracpart +0.05)* 10.0);
/* index = (int) ((((temp/10) -fracpart) +0.05) *10); */
/* printf ("%lf, %lf, %ld\n", temp, fracpart, index); */
@@ -735,14 +731,14 @@ static void fmtfp (char *buffer, size_t *currlen, size_t maxlen,
if (max > 0) {
dopr_outch (buffer, currlen, maxlen, '.');
- while (zpadlen > 0) {
- dopr_outch (buffer, currlen, maxlen, '0');
- --zpadlen;
- }
-
while (fplace > 0)
dopr_outch (buffer, currlen, maxlen, fconvert[--fplace]);
}
+
+ while (zpadlen > 0) {
+ dopr_outch (buffer, currlen, maxlen, '0');
+ --zpadlen;
+ }
while (padlen < 0) {
dopr_outch (buffer, currlen, maxlen, ' ');
@@ -862,7 +858,7 @@ static void dopr_outch(char *buffer, size_t *currlen, size_t maxlen, char c)
NULL
};
double fp_nums[] = { 6442452944.1234, -1.5, 134.21, 91340.2, 341.1234, 0203.9, 0.96, 0.996,
- 0.9996, 1.996, 4.136, 5.030201, 0};
+ 0.9996, 1.996, 4.136, 0};
char *int_fmt[] = {
"%-1.5d",
"%1.5d",
@@ -957,10 +953,8 @@ static void dopr_outch(char *buffer, size_t *currlen, size_t maxlen, char c)
{
double v0 = 0.12345678901234567890123456789012345678901;
for (x=0; x<100; x++) {
- double p = pow(10, x);
- double r = v0*p;
- snprintf(buf1, sizeof(buf1), "%1.1f", r);
- sprintf(buf2, "%1.1f", r);
+ snprintf(buf1, sizeof(buf1), "%1.1f", v0*pow(10, x));
+ sprintf(buf2, "%1.1f", v0*pow(10, x));
if (strcmp(buf1, buf2)) {
printf("we seem to support %d digits\n", x-1);
break;