Merge branch 'collectd-5.7' into collectd-5.8
[collectd.git] / src / df.c
index 1581e0c..688c322 100644 (file)
--- a/src/df.c
+++ b/src/df.c
@@ -68,7 +68,7 @@ static int df_init(void) {
   if (il_fstype == NULL)
     il_fstype = ignorelist_create(1);
 
-  return (0);
+  return 0;
 }
 
 static int df_config(const char *key, const char *value) {
@@ -76,16 +76,16 @@ static int df_config(const char *key, const char *value) {
 
   if (strcasecmp(key, "Device") == 0) {
     if (ignorelist_add(il_device, value))
-      return (1);
-    return (0);
+      return 1;
+    return 0;
   } else if (strcasecmp(key, "MountPoint") == 0) {
     if (ignorelist_add(il_mountpoint, value))
-      return (1);
-    return (0);
+      return 1;
+    return 0;
   } else if (strcasecmp(key, "FSType") == 0) {
     if (ignorelist_add(il_fstype, value))
-      return (1);
-    return (0);
+      return 1;
+    return 0;
   } else if (strcasecmp(key, "IgnoreSelected") == 0) {
     if (IS_TRUE(value)) {
       ignorelist_set_invert(il_device, 0);
@@ -96,50 +96,46 @@ static int df_config(const char *key, const char *value) {
       ignorelist_set_invert(il_mountpoint, 1);
       ignorelist_set_invert(il_fstype, 1);
     }
-    return (0);
+    return 0;
   } else if (strcasecmp(key, "ReportByDevice") == 0) {
     if (IS_TRUE(value))
       by_device = 1;
 
-    return (0);
+    return 0;
   } else if (strcasecmp(key, "ReportInodes") == 0) {
     if (IS_TRUE(value))
       report_inodes = 1;
     else
       report_inodes = 0;
 
-    return (0);
+    return 0;
   } else if (strcasecmp(key, "ValuesAbsolute") == 0) {
     if (IS_TRUE(value))
       values_absolute = 1;
     else
       values_absolute = 0;
 
-    return (0);
+    return 0;
   } else if (strcasecmp(key, "ValuesPercentage") == 0) {
     if (IS_TRUE(value))
       values_percentage = 1;
     else
       values_percentage = 0;
 
-    return (0);
+    return 0;
   }
 
-  return (-1);
+  return -1;
 }
 
 __attribute__((nonnull(2))) static void df_submit_one(char *plugin_instance,
                                                       const char *type,
                                                       const char *type_instance,
                                                       gauge_t value) {
-  value_t values[1];
   value_list_t vl = VALUE_LIST_INIT;
 
-  values[0].gauge = value;
-
-  vl.values = values;
+  vl.values = &(value_t){.gauge = value};
   vl.values_len = 1;
-  sstrncpy(vl.host, hostname_g, sizeof(vl.host));
   sstrncpy(vl.plugin, "df", sizeof(vl.plugin));
   if (plugin_instance != NULL)
     sstrncpy(vl.plugin_instance, plugin_instance, sizeof(vl.plugin_instance));
@@ -156,13 +152,14 @@ static int df_read(void) {
 #elif HAVE_STATFS
   struct statfs statbuf;
 #endif
+  int retval = 0;
   /* struct STATANYFS statbuf; */
   cu_mount_t *mnt_list;
 
   mnt_list = NULL;
   if (cu_mount_getlist(&mnt_list) == NULL) {
     ERROR("df plugin: cu_mount_getlist failed.");
-    return (-1);
+    return -1;
   }
 
   for (cu_mount_t *mnt_ptr = mnt_list; mnt_ptr != NULL;
@@ -193,7 +190,8 @@ static int df_read(void) {
       }
 
       /* Duplicate found: leave non-NULL dup_ptr. */
-      if (by_device &&
+      if (by_device && (mnt_ptr->spec_device != NULL) &&
+          (dup_ptr->spec_device != NULL) &&
           (strcmp(mnt_ptr->spec_device, dup_ptr->spec_device) == 0))
         break;
       else if (!by_device && (strcmp(mnt_ptr->dir, dup_ptr->dir) == 0))
@@ -287,8 +285,10 @@ static int df_read(void) {
             (gauge_t)((float_t)(blk_reserved) / statbuf.f_blocks * 100));
         df_submit_one(disk_name, "percent_bytes", "used",
                       (gauge_t)((float_t)(blk_used) / statbuf.f_blocks * 100));
-      } else
-        return (-1);
+      } else {
+        retval = -1;
+        break;
+      }
     }
 
     /* inode handling */
@@ -318,8 +318,10 @@ static int df_read(void) {
           df_submit_one(
               disk_name, "percent_inodes", "used",
               (gauge_t)((float_t)(inode_used) / statbuf.f_files * 100));
-        } else
-          return (-1);
+        } else {
+          retval = -1;
+          break;
+        }
       }
       if (values_absolute) {
         df_submit_one(disk_name, "df_inodes", "free", (gauge_t)inode_free);
@@ -332,7 +334,7 @@ static int df_read(void) {
 
   cu_mount_freelist(mnt_list);
 
-  return (0);
+  return retval;
 } /* int df_read */
 
 void module_register(void) {