[PATCH 1/2] lib: fwts_ac_adapter: fix readdir(ac_power_dir) failing

Alex Hung alex.hung at canonical.com
Thu Jan 10 05:34:06 UTC 2019


As readdir() returns next directory, readdir(ac_power_dir) needs to be
closed and re-opened.

Signed-off-by: Alex Hung <alex.hung at canonical.com>
---
 src/lib/src/fwts_ac_adapter.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/lib/src/fwts_ac_adapter.c b/src/lib/src/fwts_ac_adapter.c
index 9dd828f7..de2242a2 100644
--- a/src/lib/src/fwts_ac_adapter.c
+++ b/src/lib/src/fwts_ac_adapter.c
@@ -90,6 +90,7 @@ int fwts_ac_adapter_get_state(const int state, int *matching, int *not_matching)
 			return FWTS_ERROR;
 		}
 
+		(void)closedir(ac_power_dir);
 		ac_interface = &fwts_ac_interfaces[SYS_INTERFACE];
 	/* then try older /proc interface  */
 	} else if ((ac_power_dir = opendir(FWTS_PROC_ACPI_AC_ADAPTER))) {
@@ -98,6 +99,8 @@ int fwts_ac_adapter_get_state(const int state, int *matching, int *not_matching)
 		return FWTS_ERROR;
 	}
 
+	if (!(ac_power_dir = opendir(FWTS_SYS_CLASS_POWER_SUPPLY)))
+		return FWTS_ERROR;
 	do {
 		entry = readdir(ac_power_dir);
 		if (entry && strlen(entry->d_name) > 2) {
-- 
2.19.1




More information about the fwts-devel mailing list