diff options
-rw-r--r-- | include/zbxtypes.h | 6 | ||||
-rw-r--r-- | src/libs/zbxcommon/variant.c | 4 | ||||
-rw-r--r-- | src/libs/zbxcommon/variant_misc.c | 2 | ||||
-rw-r--r-- | src/libs/zbxdbcache/dbcache.c | 18 | ||||
-rw-r--r-- | src/libs/zbxdbhigh/db.c | 4 | ||||
-rw-r--r-- | src/libs/zbxdbhigh/host.c | 14 | ||||
-rw-r--r-- | src/libs/zbxhistory/history.c | 2 | ||||
-rw-r--r-- | src/libs/zbxhistory/history_elastic.c | 2 | ||||
-rw-r--r-- | src/libs/zbxserver/evalfunc.c | 22 | ||||
-rw-r--r-- | src/libs/zbxsysinfo/sysinfo.c | 2 | ||||
-rw-r--r-- | src/zabbix_server/lld/lld_graph.c | 8 | ||||
-rw-r--r-- | src/zabbix_server/poller/checks_calculated.c | 2 | ||||
-rw-r--r-- | src/zabbix_server/trapper/trapper.c | 2 |
13 files changed, 47 insertions, 41 deletions
diff --git a/include/zbxtypes.h b/include/zbxtypes.h index 73129c3ab89..f5b049a76a5 100644 --- a/include/zbxtypes.h +++ b/include/zbxtypes.h @@ -159,9 +159,9 @@ typedef off_t zbx_offset_t; #endif /* _WINDOWS */ -#define ZBX_FS_ARG_LIST(m, a) m(a) -#define ZBX_FS_DBL_EXT(p) "%." #p "g" -#define ZBX_FS_DBL ZBX_FS_ARG_LIST(ZBX_FS_DBL_EXT, DECIMAL_DIG) +#define ZBX_FS_DBL "%lf" +#define ZBX_FS_DBL_EXT(p) "%." #p "lf" +#define ZBX_FS_DBL64 "%.17g" #define ZBX_PTR_SIZE sizeof(void *) #define ZBX_FS_SIZE_T ZBX_FS_UI64 diff --git a/src/libs/zbxcommon/variant.c b/src/libs/zbxcommon/variant.c index 8123e1a1bdd..c7ef4d5c7bf 100644 --- a/src/libs/zbxcommon/variant.c +++ b/src/libs/zbxcommon/variant.c @@ -219,7 +219,7 @@ static int variant_to_str(zbx_variant_t *value) case ZBX_VARIANT_STR: return SUCCEED; case ZBX_VARIANT_DBL: - value_str = zbx_dsprintf(NULL, ZBX_FS_DBL, value->data.dbl); + value_str = zbx_dsprintf(NULL, ZBX_FS_DBL64, value->data.dbl); del_zeros(value_str); break; case ZBX_VARIANT_UI64: @@ -294,7 +294,7 @@ const char *zbx_variant_value_desc(const zbx_variant_t *value) switch (value->type) { case ZBX_VARIANT_DBL: - zbx_snprintf(buffer, sizeof(buffer), ZBX_FS_DBL, value->data.dbl); + zbx_snprintf(buffer, sizeof(buffer), ZBX_FS_DBL64, value->data.dbl); del_zeros(buffer); return buffer; case ZBX_VARIANT_UI64: diff --git a/src/libs/zbxcommon/variant_misc.c b/src/libs/zbxcommon/variant_misc.c index 0cd0cc0cd58..00b09413a24 100644 --- a/src/libs/zbxcommon/variant_misc.c +++ b/src/libs/zbxcommon/variant_misc.c @@ -48,7 +48,7 @@ int zbx_variant_to_value_type(zbx_variant_t *value, unsigned char value_type, in { if (FAIL == (ret = zbx_validate_value_dbl(value->data.dbl, dbl_precision))) { - *errmsg = zbx_dsprintf(NULL, "Value " ZBX_FS_DBL " is too small or too large.", + *errmsg = zbx_dsprintf(NULL, "Value " ZBX_FS_DBL64 " is too small or too large.", value->data.dbl); } } diff --git a/src/libs/zbxdbcache/dbcache.c b/src/libs/zbxdbcache/dbcache.c index 3e76bfd45a2..368fde04932 100644 --- a/src/libs/zbxdbcache/dbcache.c +++ b/src/libs/zbxdbcache/dbcache.c @@ -493,10 +493,13 @@ static void dc_trends_update_float(ZBX_DC_TREND *trend, DB_ROW row, int num, siz trend->value_max.dbl = value_max.dbl; for (i = 0; i < num; i++) - trend->value_avg.dbl += (value_avg.dbl - trend->value_avg.dbl) / ++(trend->num); + { + trend->num++; + trend->value_avg.dbl += value_avg.dbl / trend->num - trend->value_avg.dbl / trend->num; + } zbx_snprintf_alloc(&sql, &sql_alloc, sql_offset, "update trends set" - " num=%d,value_min=" ZBX_FS_DBL ",value_avg=" ZBX_FS_DBL ",value_max=" ZBX_FS_DBL + " num=%d,value_min=" ZBX_FS_DBL64 ",value_avg=" ZBX_FS_DBL64 ",value_max=" ZBX_FS_DBL64 " where itemid=" ZBX_FS_UI64 " and clock=%d;\n", trend->num, trend->value_min.dbl, trend->value_avg.dbl, trend->value_max.dbl, trend->itemid, trend->clock); @@ -805,7 +808,8 @@ static void DCadd_trend(const ZBX_DC_HISTORY *history, ZBX_DC_TREND **trends, in trend->value_min.dbl = history->value.dbl; if (trend->num == 0 || history->value.dbl > trend->value_max.dbl) trend->value_max.dbl = history->value.dbl; - trend->value_avg.dbl += (history->value.dbl - trend->value_avg.dbl) / (trend->num + 1); + trend->value_avg.dbl += history->value.dbl / (trend->num + 1) - + trend->value_avg.dbl / (trend->num + 1); break; case ITEM_VALUE_TYPE_UINT64: if (trend->num == 0 || history->value.ui64 < trend->value_min.ui64) @@ -1602,7 +1606,7 @@ static void DCinventory_value_add(zbx_vector_ptr_t *inventory_values, const DC_I switch (h->value_type) { case ITEM_VALUE_TYPE_FLOAT: - zbx_snprintf(value, sizeof(value), ZBX_FS_DBL, h->value.dbl); + zbx_snprintf(value, sizeof(value), ZBX_FS_DBL64, h->value.dbl); break; case ITEM_VALUE_TYPE_UINT64: zbx_snprintf(value, sizeof(value), ZBX_FS_UI64, h->value.ui64); @@ -1827,7 +1831,7 @@ static void normalize_item_value(const DC_ITEM *item, ZBX_DC_HISTORY *hdata) case ITEM_VALUE_TYPE_FLOAT: if (FAIL == zbx_validate_value_dbl(hdata->value.dbl, CONFIG_DOUBLE_PRECISION)) { - dc_history_set_error(hdata, zbx_dsprintf(NULL, "Value " ZBX_FS_DBL + dc_history_set_error(hdata, zbx_dsprintf(NULL, "Value " ZBX_FS_DBL64 " is too small or too large.", hdata->value.dbl)); } break; @@ -2147,7 +2151,7 @@ static void dc_add_proxy_history(ZBX_DC_HISTORY *history, int history_num) switch (h->value_type) { case ITEM_VALUE_TYPE_FLOAT: - zbx_snprintf(pvalue = buffer, sizeof(buffer), ZBX_FS_DBL, h->value.dbl); + zbx_snprintf(pvalue = buffer, sizeof(buffer), ZBX_FS_DBL64, h->value.dbl); break; case ITEM_VALUE_TYPE_UINT64: zbx_snprintf(pvalue = buffer, sizeof(buffer), ZBX_FS_UI64, h->value.ui64); @@ -2218,7 +2222,7 @@ static void dc_add_proxy_history_meta(ZBX_DC_HISTORY *history, int history_num) switch (h->value_type) { case ITEM_VALUE_TYPE_FLOAT: - zbx_snprintf(pvalue = buffer, sizeof(buffer), ZBX_FS_DBL, h->value.dbl); + zbx_snprintf(pvalue = buffer, sizeof(buffer), ZBX_FS_DBL64, h->value.dbl); break; case ITEM_VALUE_TYPE_UINT64: zbx_snprintf(pvalue = buffer, sizeof(buffer), ZBX_FS_UI64, h->value.ui64); diff --git a/src/libs/zbxdbhigh/db.c b/src/libs/zbxdbhigh/db.c index eec13ca6bd4..5797f03088f 100644 --- a/src/libs/zbxdbhigh/db.c +++ b/src/libs/zbxdbhigh/db.c @@ -2135,7 +2135,7 @@ static char *zbx_db_format_values(ZBX_FIELD **fields, const zbx_db_value_t *valu zbx_snprintf_alloc(&str, &str_alloc, &str_offset, "'%s'", value->str); break; case ZBX_TYPE_FLOAT: - zbx_snprintf_alloc(&str, &str_alloc, &str_offset, ZBX_FS_DBL, value->dbl); + zbx_snprintf_alloc(&str, &str_alloc, &str_offset, ZBX_FS_DBL64, value->dbl); break; case ZBX_TYPE_ID: case ZBX_TYPE_UINT: @@ -2604,7 +2604,7 @@ retry_oracle: zbx_snprintf_alloc(&sql, &sql_alloc, &sql_offset, "%d", value->i32); break; case ZBX_TYPE_FLOAT: - zbx_snprintf_alloc(&sql, &sql_alloc, &sql_offset, ZBX_FS_DBL, value->dbl); + zbx_snprintf_alloc(&sql, &sql_alloc, &sql_offset, ZBX_FS_DBL64, value->dbl); break; case ZBX_TYPE_UINT: zbx_snprintf_alloc(&sql, &sql_alloc, &sql_offset, ZBX_FS_UI64, diff --git a/src/libs/zbxdbhigh/host.c b/src/libs/zbxdbhigh/host.c index 7ebb5875db1..695b518cd55 100644 --- a/src/libs/zbxdbhigh/host.c +++ b/src/libs/zbxdbhigh/host.c @@ -3844,16 +3844,16 @@ static void DBcopy_graph_to_host(zbx_uint64_t hostid, zbx_uint64_t graphid, " set name='%s'," "width=%d," "height=%d," - "yaxismin=" ZBX_FS_DBL "," - "yaxismax=" ZBX_FS_DBL "," + "yaxismin=" ZBX_FS_DBL64 "," + "yaxismax=" ZBX_FS_DBL64 "," "templateid=" ZBX_FS_UI64 "," "show_work_period=%d," "show_triggers=%d," "graphtype=%d," "show_legend=%d," "show_3d=%d," - "percent_left=" ZBX_FS_DBL "," - "percent_right=" ZBX_FS_DBL "," + "percent_left=" ZBX_FS_DBL64 "," + "percent_right=" ZBX_FS_DBL64 "," "ymin_type=%d," "ymax_type=%d," "ymin_itemid=%s," @@ -3901,9 +3901,9 @@ static void DBcopy_graph_to_host(zbx_uint64_t hostid, zbx_uint64_t graphid, "show_work_period,show_triggers,graphtype,show_legend," "show_3d,percent_left,percent_right,ymin_type,ymax_type," "ymin_itemid,ymax_itemid,flags)" - " values (" ZBX_FS_UI64 ",'%s',%d,%d," ZBX_FS_DBL "," - ZBX_FS_DBL "," ZBX_FS_UI64 ",%d,%d,%d,%d,%d," ZBX_FS_DBL "," - ZBX_FS_DBL ",%d,%d,%s,%s,%d);\n", + " values (" ZBX_FS_UI64 ",'%s',%d,%d," ZBX_FS_DBL64 "," + ZBX_FS_DBL64 "," ZBX_FS_UI64 ",%d,%d,%d,%d,%d," ZBX_FS_DBL64 "," + ZBX_FS_DBL64 ",%d,%d,%s,%s,%d);\n", hst_graphid, name_esc, width, height, yaxismin, yaxismax, graphid, (int)show_work_period, (int)show_triggers, (int)graphtype, (int)show_legend, (int)show_3d, diff --git a/src/libs/zbxhistory/history.c b/src/libs/zbxhistory/history.c index 92f8abdd035..d7b8196f564 100644 --- a/src/libs/zbxhistory/history.c +++ b/src/libs/zbxhistory/history.c @@ -276,7 +276,7 @@ void zbx_history_value2str(char *buffer, size_t size, const history_value_t *val switch (value_type) { case ITEM_VALUE_TYPE_FLOAT: - zbx_snprintf(buffer, size, ZBX_FS_DBL, value->dbl); + zbx_snprintf(buffer, size, ZBX_FS_DBL64, value->dbl); break; case ITEM_VALUE_TYPE_UINT64: zbx_snprintf(buffer, size, ZBX_FS_UI64, value->ui64); diff --git a/src/libs/zbxhistory/history_elastic.c b/src/libs/zbxhistory/history_elastic.c index 2b6fb5ad6f4..065a3706d62 100644 --- a/src/libs/zbxhistory/history_elastic.c +++ b/src/libs/zbxhistory/history_elastic.c @@ -128,7 +128,7 @@ static const char *history_value2str(const ZBX_DC_HISTORY *h) case ITEM_VALUE_TYPE_LOG: return h->value.log->value; case ITEM_VALUE_TYPE_FLOAT: - zbx_snprintf(buffer, sizeof(buffer), ZBX_FS_DBL, h->value.dbl); + zbx_snprintf(buffer, sizeof(buffer), ZBX_FS_DBL64, h->value.dbl); break; case ITEM_VALUE_TYPE_UINT64: zbx_snprintf(buffer, sizeof(buffer), ZBX_FS_UI64, h->value.ui64); diff --git a/src/libs/zbxserver/evalfunc.c b/src/libs/zbxserver/evalfunc.c index 7b934e3d65f..7b05cea182b 100644 --- a/src/libs/zbxserver/evalfunc.c +++ b/src/libs/zbxserver/evalfunc.c @@ -1045,19 +1045,21 @@ static int evaluate_AVG(char *value, DC_ITEM *item, const char *parameters, cons if (0 < values.values_num) { - double sum = 0; + double avg = 0; if (ITEM_VALUE_TYPE_FLOAT == item->value_type) { for (i = 0; i < values.values_num; i++) - sum += values.values[i].value.dbl; + avg += values.values[i].value.dbl / (i + 1) - avg / (i + 1); } else { for (i = 0; i < values.values_num; i++) - sum += values.values[i].value.ui64; + avg += values.values[i].value.ui64; + + avg = avg / values.values_num; } - zbx_snprintf(value, MAX_BUFFER_LEN, ZBX_FS_DBL, sum / values.values_num); + zbx_snprintf(value, MAX_BUFFER_LEN, ZBX_FS_DBL64, avg); ret = SUCCEED; } @@ -1738,7 +1740,7 @@ static int evaluate_ABSCHANGE(char *value, DC_ITEM *item, const zbx_timespec_t * switch (item->value_type) { case ITEM_VALUE_TYPE_FLOAT: - zbx_snprintf(value, MAX_BUFFER_LEN, ZBX_FS_DBL, + zbx_snprintf(value, MAX_BUFFER_LEN, ZBX_FS_DBL64, fabs(values.values[0].value.dbl - values.values[1].value.dbl)); break; case ITEM_VALUE_TYPE_UINT64: @@ -1813,7 +1815,7 @@ static int evaluate_CHANGE(char *value, DC_ITEM *item, const zbx_timespec_t *ts, switch (item->value_type) { case ITEM_VALUE_TYPE_FLOAT: - zbx_snprintf(value, MAX_BUFFER_LEN, ZBX_FS_DBL, + zbx_snprintf(value, MAX_BUFFER_LEN, ZBX_FS_DBL64, values.values[0].value.dbl - values.values[1].value.dbl); break; case ITEM_VALUE_TYPE_UINT64: @@ -2439,13 +2441,13 @@ static int evaluate_FORECAST(char *value, DC_ITEM *item, const char *parameters, } } - zbx_snprintf(value, MAX_BUFFER_LEN, ZBX_FS_DBL, zbx_forecast(t, x, values.values_num, + zbx_snprintf(value, MAX_BUFFER_LEN, ZBX_FS_DBL64, zbx_forecast(t, x, values.values_num, ts->sec - zero_time.sec - 1.0e-9 * (zero_time.ns + 1), time, fit, k, mode)); } else { zabbix_log(LOG_LEVEL_DEBUG, "no data available"); - zbx_snprintf(value, MAX_BUFFER_LEN, ZBX_FS_DBL, ZBX_MATH_ERROR); + zbx_snprintf(value, MAX_BUFFER_LEN, ZBX_FS_DBL64, ZBX_MATH_ERROR); } ret = SUCCEED; @@ -2593,13 +2595,13 @@ static int evaluate_TIMELEFT(char *value, DC_ITEM *item, const char *parameters, } } - zbx_snprintf(value, MAX_BUFFER_LEN, ZBX_FS_DBL, zbx_timeleft(t, x, values.values_num, + zbx_snprintf(value, MAX_BUFFER_LEN, ZBX_FS_DBL64, zbx_timeleft(t, x, values.values_num, ts->sec - zero_time.sec - 1.0e-9 * (zero_time.ns + 1), threshold, fit, k)); } else { zabbix_log(LOG_LEVEL_DEBUG, "no data available"); - zbx_snprintf(value, MAX_BUFFER_LEN, ZBX_FS_DBL, ZBX_MATH_ERROR); + zbx_snprintf(value, MAX_BUFFER_LEN, ZBX_FS_DBL64, ZBX_MATH_ERROR); } ret = SUCCEED; diff --git a/src/libs/zbxsysinfo/sysinfo.c b/src/libs/zbxsysinfo/sysinfo.c index b84056034e7..d8c146f1287 100644 --- a/src/libs/zbxsysinfo/sysinfo.c +++ b/src/libs/zbxsysinfo/sysinfo.c @@ -810,7 +810,7 @@ void test_parameter(const char *key) printf(" [u|" ZBX_FS_UI64 "]", result.ui64); if (0 != ISSET_DBL(&result)) - printf(" [d|" ZBX_FS_DBL "]", result.dbl); + printf(" [d|" ZBX_FS_DBL64 "]", result.dbl); if (0 != ISSET_STR(&result)) printf(" [s|%s]", result.str); diff --git a/src/zabbix_server/lld/lld_graph.c b/src/zabbix_server/lld/lld_graph.c index 99926954387..41c0ee78fff 100644 --- a/src/zabbix_server/lld/lld_graph.c +++ b/src/zabbix_server/lld/lld_graph.c @@ -1051,14 +1051,14 @@ static int lld_graphs_save(zbx_uint64_t hostid, zbx_uint64_t parent_graphid, zbx if (0 != (graph->flags & ZBX_FLAG_LLD_GRAPH_UPDATE_YAXISMIN)) { - zbx_snprintf_alloc(&sql, &sql_alloc, &sql_offset, "%syaxismin=" ZBX_FS_DBL, d, + zbx_snprintf_alloc(&sql, &sql_alloc, &sql_offset, "%syaxismin=" ZBX_FS_DBL64, d, yaxismin); d = ","; } if (0 != (graph->flags & ZBX_FLAG_LLD_GRAPH_UPDATE_YAXISMAX)) { - zbx_snprintf_alloc(&sql, &sql_alloc, &sql_offset, "%syaxismax=" ZBX_FS_DBL, d, + zbx_snprintf_alloc(&sql, &sql_alloc, &sql_offset, "%syaxismax=" ZBX_FS_DBL64, d, yaxismax); d = ","; } @@ -1099,14 +1099,14 @@ static int lld_graphs_save(zbx_uint64_t hostid, zbx_uint64_t parent_graphid, zbx if (0 != (graph->flags & ZBX_FLAG_LLD_GRAPH_UPDATE_PERCENT_LEFT)) { - zbx_snprintf_alloc(&sql, &sql_alloc, &sql_offset, "%spercent_left=" ZBX_FS_DBL, d, + zbx_snprintf_alloc(&sql, &sql_alloc, &sql_offset, "%spercent_left=" ZBX_FS_DBL64, d, percent_left); d = ","; } if (0 != (graph->flags & ZBX_FLAG_LLD_GRAPH_UPDATE_PERCENT_RIGHT)) { - zbx_snprintf_alloc(&sql, &sql_alloc, &sql_offset, "%spercent_right=" ZBX_FS_DBL, d, + zbx_snprintf_alloc(&sql, &sql_alloc, &sql_offset, "%spercent_right=" ZBX_FS_DBL64, d, percent_right); d = ","; } diff --git a/src/zabbix_server/poller/checks_calculated.c b/src/zabbix_server/poller/checks_calculated.c index d637361761b..b3c6c8e1fa1 100644 --- a/src/zabbix_server/poller/checks_calculated.c +++ b/src/zabbix_server/poller/checks_calculated.c @@ -350,7 +350,7 @@ int get_value_calculated(DC_ITEM *dc_item, AGENT_RESULT *result) if (ITEM_VALUE_TYPE_UINT64 == dc_item->value_type && 0 > value) { - SET_MSG_RESULT(result, zbx_dsprintf(NULL, "Received value [" ZBX_FS_DBL "]" + SET_MSG_RESULT(result, zbx_dsprintf(NULL, "Received value [" ZBX_FS_DBL64 "]" " is not suitable for value type [%s].", value, zbx_item_value_type_string((zbx_item_value_type_t)dc_item->value_type))); ret = NOTSUPPORTED; diff --git a/src/zabbix_server/trapper/trapper.c b/src/zabbix_server/trapper/trapper.c index 833446fa552..753805fd637 100644 --- a/src/zabbix_server/trapper/trapper.c +++ b/src/zabbix_server/trapper/trapper.c @@ -837,7 +837,7 @@ static void status_entry_export(struct zbx_json *json, const zbx_section_entry_t zbx_json_adduint64(json, "count", counter_value.ui64); break; case ZBX_COUNTER_TYPE_DBL: - tmp = zbx_dsprintf(tmp, ZBX_FS_DBL, counter_value.dbl); + tmp = zbx_dsprintf(tmp, ZBX_FS_DBL64, counter_value.dbl); zbx_json_addstring(json, "count", tmp, ZBX_JSON_TYPE_STRING); break; default: |