diff options
author | Hisham Muhammad <hisham@gobolinux.org> | 2016-06-19 18:55:35 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-06-19 18:55:35 -0300 |
commit | 0fa03322a935a6ffc564852068f13302f3dd1e72 (patch) | |
tree | 2f7fc7ef742e55a46cec55fac9114256c68cb002 /linux/Battery.c | |
parent | 52f814481cdfa4be2290953978a81014f8bfd391 (diff) |
Dynamically adjust the size of line reads
* Dynamically adjust the size of line reads.
* Remove some more uses of fgets with arbitrary sizes.
* Fix reading of lines and width of n column.
Fixes #514.
Diffstat (limited to 'linux/Battery.c')
-rw-r--r-- | linux/Battery.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/linux/Battery.c b/linux/Battery.c index 572bad48..10681844 100644 --- a/linux/Battery.c +++ b/linux/Battery.c @@ -65,10 +65,11 @@ static unsigned long int parseBatInfo(const char *fileName, const unsigned short break; } - char line[50] = ""; + char* line = NULL; for (unsigned short int i = 0; i < lineNum; i++) { - char* ok = fgets(line, sizeof line, file); - if (!ok) break; + free(line); + line = String_readLine(file); + if (!line) break; } fclose(file); @@ -76,7 +77,8 @@ static unsigned long int parseBatInfo(const char *fileName, const unsigned short char *foundNumStr = String_getToken(line, wordNum); const unsigned long int foundNum = atoi(foundNumStr); free(foundNumStr); - + free(line); + total += foundNum; } @@ -116,14 +118,13 @@ static ACPresence procAcpiCheck() { continue; } - char line[100]; - char* ok = fgets(line, sizeof line, file); - if (!ok) continue; - line[sizeof(line) - 1] = '\0'; + char* line = String_readLine(file); + if (!line) continue; fclose(file); const char *isOnline = String_getToken(line, 2); + free(line); if (strcmp(isOnline, "on-line") == 0) { isOn = AC_PRESENT; |