Code

collectd-threshold(5): Correct the description of the "Interesting" config option.
[collectd.git] / src / battery.c
index 416f3397d0e6c01da373ca17dfc8d48fac8ab03a..4178d8b5145f2b728e5c7c949d72ebd8d126a89e 100644 (file)
@@ -1,6 +1,7 @@
 /**
  * collectd - src/battery.c
  * Copyright (C) 2006,2007  Florian octo Forster
+ * Copyright (C) 2008       Michał Mirosław
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License as published by the
  *
  * Authors:
  *   Florian octo Forster <octo at verplant.org>
+ *   Michał Mirosław <mirq-linux at rere.qmqm.pl>
  **/
 
 #include "collectd.h"
 #include "common.h"
 #include "plugin.h"
 
+#include "utils_complain.h"
+
 #if HAVE_MACH_MACH_TYPES_H
 #  include <mach/mach_types.h>
 #endif
@@ -98,7 +102,6 @@ static void battery_submit (const char *plugin_instance, const char *type, doubl
 
        vl.values = values;
        vl.values_len = 1;
-       vl.time = time (NULL);
        sstrncpy (vl.host, hostname_g, sizeof (vl.host));
        sstrncpy (vl.plugin, "battery", sizeof (vl.plugin));
        sstrncpy (vl.plugin_instance, plugin_instance, sizeof (vl.plugin_instance));
@@ -315,8 +318,8 @@ static void get_via_generic_iokit (double *ret_charge,
 #endif /* HAVE_IOKIT_IOKITLIB_H */
 
 #if KERNEL_LINUX
-static int battery_read_acpi (const char *dir, const char *name,
-               void *user_data)
+static int battery_read_acpi (const char __attribute__((unused)) *dir,
+               const char *name, void __attribute__((unused)) *user_data)
 {
        double  current = INVALID_VALUE;
        double  voltage = INVALID_VALUE;
@@ -437,6 +440,8 @@ static int battery_read (void)
 /* #endif HAVE_IOKIT_IOKITLIB_H || HAVE_IOKIT_PS_IOPOWERSOURCES_H */
 
 #elif KERNEL_LINUX
+       static c_complain_t acpi_dir_complaint = C_COMPLAIN_INIT_STATIC;
+
        FILE *fh;
        char buffer[1024];
        char filename[256];
@@ -507,8 +512,18 @@ static int battery_read (void)
                        battery_submit ("0", "voltage", voltage);
        }
 
-       walk_directory (battery_acpi_dir, battery_read_acpi,
-                       /* user_data = */ NULL);
+       if (0 == access (battery_acpi_dir, R_OK))
+               walk_directory (battery_acpi_dir, battery_read_acpi,
+                               /* user_data = */ NULL,
+                               /* include hidden */ 0);
+       else
+       {
+               char errbuf[1024];
+               c_complain_once (LOG_WARNING, &acpi_dir_complaint,
+                               "battery plugin: Failed to access `%s': %s",
+                               battery_acpi_dir,
+                               sstrerror (errno, errbuf, sizeof (errbuf)));
+       }
 
 #endif /* KERNEL_LINUX */