[PATCH 1/2] lib: fwts_ac_adapter: fix readdir(ac_power_dir) failing
Colin Ian King
colin.king at canonical.com
Thu Jan 10 09:23:15 UTC 2019
On 10/01/2019 05:34, Alex Hung wrote:
> 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;
This may open the wrong directory, there could be the case where the
older /proc interface is being used in which case re-opening
FWTS_SYS_CLASS_POWER_SUPPLY is not correct.
I'd prefer just using rewinddir(ac_power_dir) instead.
> do {
> entry = readdir(ac_power_dir);
> if (entry && strlen(entry->d_name) > 2) {
>
More information about the fwts-devel
mailing list