projects
/
collectd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'collectd-5.4' into collectd-5.5
[collectd.git]
/
src
/
daemon
/
common.c
diff --git
a/src/daemon/common.c
b/src/daemon/common.c
index
535dfad
..
b244808
100644
(file)
--- a/
src/daemon/common.c
+++ b/
src/daemon/common.c
@@
-312,44
+312,51
@@
int strsplit (char *string, char **fields, size_t size)
return ((int) i);
}
return ((int) i);
}
-int strjoin (char *
dst, size_t dst_len
,
+int strjoin (char *
buffer, size_t buffer_size
,
char **fields, size_t fields_num,
const char *sep)
{
char **fields, size_t fields_num,
const char *sep)
{
- size_t field_len;
+ size_t avail;
+ char *ptr;
size_t sep_len;
size_t sep_len;
- int i;
-
- memset (dst, '\0', dst_len);
+ size_t i;
- if (
fields_num <= 0
)
+ if (
(buffer_size < 1) || (fields_num <= 0)
)
return (-1);
return (-1);
+ memset (buffer, 0, buffer_size);
+ ptr = buffer;
+ avail = buffer_size - 1;
+
sep_len = 0;
if (sep != NULL)
sep_len = strlen (sep);
sep_len = 0;
if (sep != NULL)
sep_len = strlen (sep);
- for (i = 0; i <
(int)
fields_num; i++)
+ for (i = 0; i < fields_num; i++)
{
{
+ size_t field_len;
+
if ((i > 0) && (sep_len > 0))
{
if ((i > 0) && (sep_len > 0))
{
- if (
dst_len <=
sep_len)
+ if (
avail <
sep_len)
return (-1);
return (-1);
- strncat (dst, sep, dst_len);
- dst_len -= sep_len;
+ memcpy (ptr, sep, sep_len);
+ ptr += sep_len;
+ avail -= sep_len;
}
field_len = strlen (fields[i]);
}
field_len = strlen (fields[i]);
-
- if (dst_len <= field_len)
+ if (avail < field_len)
return (-1);
return (-1);
- strncat (dst, fields[i], dst_len);
- dst_len -= field_len;
+ memcpy (ptr, fields[i], field_len);
+ ptr += field_len;
+ avail -= field_len;
}
}
- return (strlen (dst));
+ assert (buffer[buffer_size - 1] == 0);
+ return (strlen (buffer));
}
int strsubstitute (char *str, char c_from, char c_to)
}
int strsubstitute (char *str, char c_from, char c_to)
@@
-475,8
+482,8
@@
size_t strstripnewline (char *buffer)
if ((buffer[buffer_len - 1] != '\n')
&& (buffer[buffer_len - 1] != '\r'))
break;
if ((buffer[buffer_len - 1] != '\n')
&& (buffer[buffer_len - 1] != '\r'))
break;
- buffer[buffer_len] = 0;
buffer_len--;
buffer_len--;
+ buffer[buffer_len] = 0;
}
return (buffer_len);
}
return (buffer_len);
@@
-507,7
+514,7
@@
int escape_slashes (char *buffer, size_t buffer_size)
buffer_len--;
}
buffer_len--;
}
- for (i = 0; i < buffer_len
- 1
; i++)
+ for (i = 0; i < buffer_len; i++)
{
if (buffer[i] == '/')
buffer[i] = '_';
{
if (buffer[i] == '/')
buffer[i] = '_';
@@
-968,18
+975,17
@@
int format_values (char *ret, size_t ret_len, /* {{{ */
for (i = 0; i < ds->ds_num; i++)
{
if (ds->ds[i].type == DS_TYPE_GAUGE)
for (i = 0; i < ds->ds_num; i++)
{
if (ds->ds[i].type == DS_TYPE_GAUGE)
- BUFFER_ADD (":
%f"
, vl->values[i].gauge);
+ BUFFER_ADD (":
"GAUGE_FORMAT
, vl->values[i].gauge);
else if (store_rates)
{
if (rates == NULL)
rates = uc_get_rate (ds, vl);
if (rates == NULL)
{
else if (store_rates)
{
if (rates == NULL)
rates = uc_get_rate (ds, vl);
if (rates == NULL)
{
- WARNING ("format_values: "
- "uc_get_rate failed.");
+ WARNING ("format_values: uc_get_rate failed.");
return (-1);
}
return (-1);
}
- BUFFER_ADD (":
%g"
, rates[i]);
+ BUFFER_ADD (":
"GAUGE_FORMAT
, rates[i]);
}
else if (ds->ds[i].type == DS_TYPE_COUNTER)
BUFFER_ADD (":%llu", vl->values[i].counter);
}
else if (ds->ds[i].type == DS_TYPE_COUNTER)
BUFFER_ADD (":%llu", vl->values[i].counter);
@@
-989,7
+995,7
@@
int format_values (char *ret, size_t ret_len, /* {{{ */
BUFFER_ADD (":%"PRIu64, vl->values[i].absolute);
else
{
BUFFER_ADD (":%"PRIu64, vl->values[i].absolute);
else
{
- ERROR ("format_values
plugin
: Unknown data source type: %i",
+ ERROR ("format_values: Unknown data source type: %i",
ds->ds[i].type);
sfree (rates);
return (-1);
ds->ds[i].type);
sfree (rates);
return (-1);