From 2bc8f11d9c7182e24fb62a6efefa3e0b74ac0afb Mon Sep 17 00:00:00 2001 From: Ryan McCabe Date: Thu, 7 Nov 2019 13:58:37 -0500 Subject: [PATCH] turbostat: Fix parsing warnings Fix warnings generated by the turbostat plugin due to trailing characters while picking out the first number in a range. ChangeLog: turbostat plugin: Fix parsing warnings. PR: #2365 Signed-off-by: Ryan McCabe --- src/turbostat.c | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/src/turbostat.c b/src/turbostat.c index 19a51115..8bbb92b5 100644 --- a/src/turbostat.c +++ b/src/turbostat.c @@ -1103,7 +1103,11 @@ static int __attribute__((format(printf, 1, 2))) parse_int_file(const char *fmt, ...) { va_list args; char path[PATH_MAX]; + char buf[256]; int len; + value_t v; + char *c; + FILE *fp; va_start(args, fmt); len = vsnprintf(path, sizeof(path), fmt, args); @@ -1113,8 +1117,29 @@ parse_int_file(const char *fmt, ...) { return -1; } - value_t v; - if (parse_value_file(path, &v, DS_TYPE_DERIVE) != 0) { + fp = fopen(path, "r"); + if (fp == NULL) { + ERROR("turbostat plugin: unable to open: '%s': %s", path, strerror(errno)); + return -1; + } + + if (fgets(buf, sizeof(buf), fp) == NULL) { + ERROR("turbostat plugin: unable to read: '%s': %s", path, strerror(errno)); + fclose(fp); + return -1; + } + fclose(fp); + + /* We only care about the first integer in the range */ + c = strchr(buf, '-'); + if (c != NULL) + *c = '\0'; + c = strchr(buf, ','); + if (c != NULL) + *c = '\0'; + strstripnewline(buf); + + if (parse_value(buf, &v, DS_TYPE_DERIVE) != 0) { ERROR("turbostat plugin: Parsing \"%s\" failed.", path); return -1; } -- 2.11.0