diff options
-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); |