curl_json plugin: Add compatibility code for libyajl v2.
[collectd.git] / src / df.c
index 66daab2..2e9b2ae 100644 (file)
--- a/src/df.c
+++ b/src/df.c
@@ -1,6 +1,6 @@
 /**
  * collectd - src/df.c
- * Copyright (C) 2005-2007  Florian octo Forster
+ * Copyright (C) 2005-2009  Florian octo Forster
  * Copyright (C) 2009       Paul Sadauskas
  *
  * This program is free software; you can redistribute it and/or modify it
 #  include <sys/statvfs.h>
 # endif
 # define STATANYFS statvfs
+# define STATANYFS_STR "statvfs"
 # define BLOCKSIZE(s) ((s).f_frsize ? (s).f_frsize : (s).f_bsize)
 #elif HAVE_STATFS
 # if HAVE_SYS_STATFS_H
 #  include <sys/statfs.h>
 # endif
 # define STATANYFS statfs
+# define STATANYFS_STR "statfs"
 # define BLOCKSIZE(s) (s).f_bsize
 #else
 # error "No applicable input method."
@@ -51,7 +53,8 @@ static const char *config_keys[] =
        "FSType",
        "IgnoreSelected",
        "ReportByDevice",
-       "ReportReserved"
+       "ReportReserved",
+       "ReportInodes"
 };
 static int config_keys_num = STATIC_ARRAY_SIZE (config_keys);
 
@@ -61,6 +64,7 @@ static ignorelist_t *il_fstype = NULL;
 
 static _Bool by_device = false;
 static _Bool report_reserved = false;
+static _Bool report_inodes = false;
 
 static int df_init (void)
 {
@@ -128,6 +132,15 @@ static int df_config (const char *key, const char *value)
 
                return (0);
        }
+       else if (strcasecmp (key, "ReportInodes") == 0)
+       {
+               if (IS_TRUE (value))
+                       report_inodes = true;
+               else
+                       report_inodes = false;
+
+               return (0);
+       }
 
 
        return (-1);
@@ -193,7 +206,10 @@ static int df_read (void)
 
        mnt_list = NULL;
        if (cu_mount_getlist (&mnt_list) == NULL)
+       {
+               ERROR ("df plugin: cu_mount_getlist failed.");
                return (-1);
+       }
 
        for (mnt_ptr = mnt_list; mnt_ptr != NULL; mnt_ptr = mnt_ptr->next)
        {
@@ -213,7 +229,8 @@ static int df_read (void)
                if (STATANYFS (mnt_ptr->dir, &statbuf) < 0)
                {
                        char errbuf[1024];
-                       ERROR ("statv?fs failed: %s",
+                       ERROR (STATANYFS_STR"(%s) failed: %s",
+                                       mnt_ptr->dir,
                                        sstrerror (errno, errbuf,
                                                sizeof (errbuf)));
                        continue;
@@ -292,6 +309,7 @@ static int df_read (void)
                }
 
                /* inode handling */
+               if (report_inodes)
                {
                        uint64_t inode_free;
                        uint64_t inode_reserved;