From 5547289c70acc83c02bbd8721236aa2c87efc043 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Micha=C5=82=20Miros=C5=82aw?= Date: Sat, 21 Jun 2008 22:19:41 +0200 Subject: [PATCH] src/common.c: Move walk_directory() to here. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit src/common.c: Move walk_directory() from thermal plugin Signed-off-by: Michał Mirosław Signed-off-by: Florian Forster --- src/common.c | 30 ++++++++++++++++++++++++++++++ src/common.h | 4 ++++ src/thermal.c | 40 ++++++---------------------------------- 3 files changed, 40 insertions(+), 34 deletions(-) diff --git a/src/common.c b/src/common.c index 3f6eecc3..39436178 100644 --- a/src/common.c +++ b/src/common.c @@ -864,3 +864,33 @@ int notification_init (notification_t *n, int severity, const char *message, return (0); } /* int notification_init */ + +int walk_directory (const char *dir, dirwalk_callback_f callback) +{ + struct dirent *ent; + DIR *dh; + int ok = 0; + + if ((dh = opendir (dir)) == NULL) + { + char errbuf[1024]; + ERROR ("Cannot open '%s': %s", dir, + sstrerror (errno, errbuf, sizeof (errbuf))); + return -1; + } + + while ((ent = readdir (dh)) != NULL) + { + if (ent->d_name[0] == '.') + continue; + + if (!callback(ent->d_name)) + ++ok; + } + + closedir (dh); + + return ok ? 0 : -1; +} + + diff --git a/src/common.h b/src/common.h index d142679f..ca34e781 100644 --- a/src/common.h +++ b/src/common.h @@ -200,4 +200,8 @@ int notification_init (notification_t *n, int severity, const char *message, notification_init (n, NOTIF_FAILURE, NULL, \ (vl)->host, (vl)->plugin, (vl)->plugin_instance, \ (ds)->type, (vl)->type_instance) + +typedef int (*dirwalk_callback_f)(const char *filename); +int walk_directory (const char *dir, dirwalk_callback_f callback); + #endif /* COMMON_H */ diff --git a/src/thermal.c b/src/thermal.c index 4af63bc0..29ea05f5 100644 --- a/src/thermal.c +++ b/src/thermal.c @@ -82,6 +82,9 @@ static int thermal_sysfs_device_read (const char *name) int len; int ok = 0; + if (device_list && ignorelist_match (device_list, name)) + return -1; + len = snprintf (filename, sizeof (filename), "%s/%s/temp", dirname_sysfs, name); if ((len < 0) || ((unsigned int)len >= sizeof (filename))) return -1; @@ -130,6 +133,9 @@ static int thermal_procfs_device_read (const char *name) char data[1024]; int len; + if (device_list && ignorelist_match (device_list, name)) + return -1; + /** * rechot ~ # cat /proc/acpi/thermal_zone/THRM/temperature * temperature: 55 C @@ -221,40 +227,6 @@ static int thermal_config (const char *key, const char *value) return 0; } -static int walk_directory (const char *dir, int (*callback)(const char *dev)) -{ - struct dirent *ent; - DIR *dh; - int ok = 0; - - if ((dh = opendir (dir)) == NULL) - { - char errbuf[1024]; - ERROR ("Cannot open '%s': %s", dir, - sstrerror (errno, errbuf, sizeof (errbuf))); - return -1; - } - - while ((ent = readdir (dh)) != NULL) - { - if (ent->d_name[0] == '.') - continue; - - if (device_list) { - DEBUG ("thermal plugin: Checking ignorelist for '%s'", ent->d_name); - if (ignorelist_match (device_list, ent->d_name)) - continue; - } - - if (!callback(ent->d_name)) - ++ok; - } - - closedir (dh); - - return ok ? 0 : -1; -} - static int thermal_sysfs_read (void) { return walk_directory (dirname_sysfs, thermal_sysfs_device_read); -- 2.30.2