[Powertop] [PATCH 08/10] backlight: use process_directory() helper

Sergey Senozhatsky <sergey.senozhatsky at gmail.com>
Newsgroups dev.linux.lists.powertop
Message-ID <[email protected]>
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky(a)gmail.com>
---
 src/devices/backlight.cpp | 42 +++++++++++++++---------------------------
 src/devices/backlight.h   |  4 ++--
 2 files changed, 17 insertions(+), 29 deletions(-)

diff --git a/src/devices/backlight.cpp b/src/devices/backlight.cpp
index 03aa5bc..ebdebc8 100644
--- a/src/devices/backlight.cpp
+++ b/src/devices/backlight.cpp
@@ -39,7 +39,7 @@ using namespace std;
 #include <string.h>
 
 
-backlight::backlight(char *_name, char *path): device()
+backlight::backlight(const char *_name, const char *path): device()
 {
 	char devname[128];
 	min_level = 0;
@@ -156,36 +156,24 @@ const char * backlight::device_name(void)
 	return name;
 }
 
-void create_all_backlights(void)
+static void create_all_backlights_callback(const char *d_name)
 {
-	struct dirent *entry;
-	DIR *dir;
+	class backlight *bl;
 	char filename[4096];
-
-	dir = opendir("/sys/class/backlight/");
-	if (!dir)
-		return;
-	while (1) {
-		class backlight *bl;
-		entry = readdir(dir);
-		if (!entry)
-			break;
-		if (entry->d_name[0] == '.')
-			continue;
-		sprintf(filename, "/sys/class/backlight/%s", entry->d_name);
-		bl = new class backlight(entry->d_name, filename);
-		all_devices.push_back(bl);
-		register_parameter("backlight");
-		register_parameter("backlight-power");
-		register_parameter("backlight-boost-40", 0, 0.5);
-		register_parameter("backlight-boost-80", 0, 0.5);
-		register_parameter("backlight-boost-100", 0, 0.5);
-	}
-	closedir(dir);
-
+	sprintf(filename, "/sys/class/backlight/%s", d_name);
+	bl = new class backlight(d_name, filename);
+	all_devices.push_back(bl);
 }
 
-
+void create_all_backlights(void)
+{
+	process_directory("/sys/class/backlight/", create_all_backlights_callback);
+	register_parameter("backlight");
+	register_parameter("backlight-power");
+	register_parameter("backlight-boost-40", 0, 0.5);
+	register_parameter("backlight-boost-80", 0, 0.5);
+	register_parameter("backlight-boost-100", 0, 0.5);
+}
 
 double backlight::power_usage(struct result_bundle *result, struct parameter_bundle *bundle)
 {
diff --git a/src/devices/backlight.h b/src/devices/backlight.h
index 549654e..3d5377a 100644
--- a/src/devices/backlight.h
+++ b/src/devices/backlight.h
@@ -37,7 +37,7 @@ class backlight: public device {
 	int r_index_power;
 public:
 
-	backlight(char *_name, char *path);
+	backlight(const char *_name, const char *path);
 
 	virtual void start_measurement(void);
 	virtual void end_measurement(void);
@@ -55,4 +55,4 @@ public:
 extern void create_all_backlights(void);
 
 
-#endif
\ No newline at end of file
+#endif
-- 
1.8.4.679.g0a1a803
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.