Merge pull request #3329 from efuss/fix-3311
[collectd.git] / src / entropy.c
index e312a0b..94a291e 100644 (file)
@@ -26,8 +26,8 @@
 
 #include "collectd.h"
 
-#include "common.h"
 #include "plugin.h"
+#include "utils/common/common.h"
 
 #if !KERNEL_LINUX
 #error "No applicable input method."
 
 #define ENTROPY_FILE "/proc/sys/kernel/random/entropy_avail"
 
-static void entropy_submit(double entropy) {
-  value_t values[1];
+static void entropy_submit(value_t value) {
   value_list_t vl = VALUE_LIST_INIT;
 
-  values[0].gauge = entropy;
-
-  vl.values = values;
+  vl.values = &value;
   vl.values_len = 1;
-  sstrncpy(vl.host, hostname_g, sizeof(vl.host));
   sstrncpy(vl.plugin, "entropy", sizeof(vl.plugin));
   sstrncpy(vl.type, "entropy", sizeof(vl.type));
 
@@ -51,26 +47,14 @@ static void entropy_submit(double entropy) {
 }
 
 static int entropy_read(void) {
-  double entropy;
-  FILE *fh;
-  char buffer[64];
-
-  fh = fopen(ENTROPY_FILE, "r");
-  if (fh == NULL)
-    return (-1);
-
-  if (fgets(buffer, sizeof(buffer), fh) == NULL) {
-    fclose(fh);
-    return (-1);
+  value_t v;
+  if (parse_value_file(ENTROPY_FILE, &v, DS_TYPE_GAUGE) != 0) {
+    ERROR("entropy plugin: Reading \"" ENTROPY_FILE "\" failed.");
+    return -1;
   }
-  fclose(fh);
-
-  entropy = atof(buffer);
-
-  if (entropy > 0.0)
-    entropy_submit(entropy);
 
-  return (0);
+  entropy_submit(v);
+  return 0;
 }
 
 void module_register(void) {