Use xStrdup instead of xMallow and strncpy
StringUtils.c: In function ‘String_split’:
StringUtils.c:86:7: error: ‘strncpy’ specified bound depends on the length of the source argument [-Werror=stringop-overflow=]
86 | strncpy(token, s, size + 1);
| ^
StringUtils.c:84:18: note: length computed here
84 | int size = strlen(s);
| ^
Use strncmp() combined with a strlen() will give better performance
than a strstr in worst case. Especially when the match prefix is a
constant and not a variable.
While we are at it, replace the match() function in linux/Battery.c,
which uses a naive algorithm, with a macro that does better job by
utilizing Strings_startWith().
$ gcc --version | head -n 1
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
$ uname -m
x86_64
$ size htop.old htop.new
text data bss dec hex filename
137929 15112 3776 156817 26491 htop.old
137784 15104 3776 156664 263f8 htop.new
Signed-off-by: Kang-Che Sung <explorer09 @ gmail.com>
* 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.