/**
* collectd - src/common.c
- * Copyright (C) 2005-2014 Florian octo Forster
+ * Copyright (C) 2005-2015 Florian octo Forster
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
return (0);
}
+int read_file (char const *file, void **ret_data, size_t *ret_data_size)
+{
+ int fd = open (file, O_RDONLY);
+ if (fd == -1)
+ return (-1);
+
+ struct stat statbuf = { 0 };
+ if (fstat (fd, &statbuf) == -1)
+ {
+ close (fd);
+ return (-1);
+ }
+
+ size_t data_size = (size_t) statbuf.st_size;
+ void *data = malloc (data_size);
+ if (data == NULL)
+ {
+ close (fd);
+ return (-1);
+ }
+
+ if (sread (fd, data, data_size) != 0)
+ {
+ close (fd);
+ sfree (data);
+ return (-1);
+ }
+
+ close (fd);
+ *ret_data = data;
+ *ret_data_size = data_size;
+ return (0);
+} /* }}} int read_file */
ssize_t swrite (int fd, const void *buf, size_t count)
{
if ((buffer[buffer_len - 1] != '\n')
&& (buffer[buffer_len - 1] != '\r'))
break;
- buffer[buffer_len] = 0;
buffer_len--;
+ buffer[buffer_len] = 0;
}
return (buffer_len);
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)
{
- WARNING ("format_values: "
- "uc_get_rate failed.");
+ WARNING ("format_values: uc_get_rate failed.");
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);
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);