diff options
author | eplanet <emeric.planet@gmail.com> | 2016-03-20 11:47:56 +0100 |
---|---|---|
committer | eplanet <emeric.planet@gmail.com> | 2016-03-20 11:47:56 +0100 |
commit | a8aa5d608ce8ad1cffddd25cbc98d101a959a80a (patch) | |
tree | 3fdc5b5b5574f1593781f9cc75be7b93038c912d | |
parent | 132c35f6c9effbda3cf0e2cac80c9945b9d8d638 (diff) |
Adding glob check to cpu temperature fixes #55
-rw-r--r-- | src/print_cpu_temperature.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/print_cpu_temperature.c b/src/print_cpu_temperature.c index 71ee4d4..fd2dd90 100644 --- a/src/print_cpu_temperature.c +++ b/src/print_cpu_temperature.c @@ -1,6 +1,7 @@ // vim:ts=4:sw=4:expandtab #include <stdlib.h> #include <limits.h> +#include <glob.h> #include <stdio.h> #include <string.h> #include <yajl/yajl_gen.h> @@ -57,8 +58,19 @@ void print_cpu_temperature_info(yajl_gen json_gen, char *buffer, int zone, const if (path == NULL) asprintf(&thermal_zone, THERMAL_ZONE, zone); - else - asprintf(&thermal_zone, path, zone); + else { + static glob_t globbuf; + if (glob(path, GLOB_NOCHECK | GLOB_TILDE, NULL, &globbuf) < 0) + die("glob() failed\n"); + if (globbuf.gl_pathc == 0) { + /* No glob matches, the specified path does not contain a wildcard. */ + asprintf(&thermal_zone, path, zone); + } else { + /* glob matched, we take the first match and ignore the others */ + asprintf(&thermal_zone, "%s", globbuf.gl_pathv[0]); + } + globfree(&globbuf); + } INSTANCE(thermal_zone); |