From a4cae13e07bbf40ac3c3729fd9775a752d0e7ff6 Mon Sep 17 00:00:00 2001 From: YuQing <384681@qq.com> Date: Wed, 10 Sep 2025 15:06:17 +0800 Subject: [PATCH] add function fc_ftoa --- HISTORY | 4 ++ src/logger.c | 4 +- src/shared_func.c | 113 ++++++++++++++++++++++++++++++++++++++++++++++ src/shared_func.h | 22 +++++++-- 4 files changed, 138 insertions(+), 5 deletions(-) diff --git a/HISTORY b/HISTORY index b2e7121..8834474 100644 --- a/HISTORY +++ b/HISTORY @@ -1,4 +1,8 @@ +Version 1.80 2025-09-10 + * getIpaddrByNameEx: IPv4 has priority over IPv6 + * shared_func.[hc]: add function fc_ftoa + Version 1.79 2025-08-29 * logger.h export function log_it_ex3 * shared_func.[hc]: add function bytes_to_human_str diff --git a/src/logger.c b/src/logger.c index 130f24d..24251b4 100644 --- a/src/logger.c +++ b/src/logger.c @@ -136,8 +136,8 @@ static int log_print_header(LogContext *pContext) if (pContext->current_size < 0) { result = errno != 0 ? errno : EACCES; - fprintf(stderr, "lseek file \"%s\" fail, " \ - "errno: %d, error info: %s\n", \ + fprintf(stderr, "lseek file \"%s\" fail, " + "errno: %d, error info: %s\n", pContext->log_filename, result, STRERROR(result)); } else { diff --git a/src/shared_func.c b/src/shared_func.c index d12e243..60e9734 100644 --- a/src/shared_func.c +++ b/src/shared_func.c @@ -4406,6 +4406,119 @@ int fc_itoa(int64_t n, char *buff) return (start - buff) + len; } +int fc_ftoa(double d, const int scale, char *buff) +{ + int len; + int i; + bool positive; + int64_t n; + double fraction; + char *p; + + positive = (d >= 0.00); + switch (scale) + { + case 0: + d += (positive ? 5e-1 : -5e-1); + break; + case 1: + d += (positive ? 5e-2 : -5e-2); + break; + case 2: + d += (positive ? 5e-3 : -5e-3); + break; + case 3: + d += (positive ? 5e-4 : -5e-4); + break; + case 4: + d += (positive ? 5e-5 : -5e-5); + break; + case 5: + d += (positive ? 5e-6 : -5e-6); + break; + case 6: + d += (positive ? 5e-7 : -5e-7); + break; + case 7: + d += (positive ? 5e-8 : -5e-8); + break; + case 8: + d += (positive ? 5e-9 : -5e-9); + break; + case 9: + d += (positive ? 5e-10 : -5e-10); + break; + case 10: + d += (positive ? 5e-11 : -5e-11); + break; + case 11: + d += (positive ? 5e-12 : -5e-12); + break; + case 12: + d += (positive ? 5e-13 : -5e-13); + break; + case 13: + d += (positive ? 5e-14 : -5e-14); + break; + case 14: + d += (positive ? 5e-15 : -5e-15); + break; + case 15: + d += (positive ? 5e-16 : -5e-16); + break; + case 16: + d += (positive ? 5e-17 : -5e-17); + break; + default: + d += (positive ? 5e-18 : -5e-18); + break; + } + + n = (int64_t)d; + if (n > -10 && n < 10) + { + if (positive) + { + *buff = '0' + n; + len = 1; + } + else + { + *buff = '-'; + *(buff+1) = '0' + (-1) * n; + len = 2; + } + } + else + { + len = fc_itoa(n, buff); + } + if (scale <= 0) + { + return len; + } + + p = buff + len; + *p++ = '.'; + if (positive) + { + fraction = d - (double)n; + } + else + { + fraction = (double)n - d; + } + for (i=0; i