In the case where no CPU number is given, skipping a character of
padding actually skips the null terminator, causing further iterations
through the loop to read out of bounds. Have sscanf() return the number
of characters read, instead of reconstructing it from the CPU number.
This was observed as a failure in test 024-cpu-usage-invalid-cpu.
Avoid using the OSS emulation layer to fetch the master volume,
and instead share the audioio code with OpenBSD.
Avoid a failed read on the master control's mute enum if it can't
be found, because sometimes there isn't one.
Previously the format placeholders were auto-converted to the maximum possible
unit, e.g. /proc/meminfo reports MemTotal of 16307104kB which will get
converted to 15.6GiB. It is now possible to specifiy the target unit, e.g. Mi,
which will be used for the conversion - in the example it would lead to
15924.9MiB.
The resulting number can now be further formatted via the decimal option. It
allows to specify the number of decimals to use, e.g. 15.6GiB vs. 15GiB or
15924.9MiB vs. 15925MiB.
Use station info instead of bss info to update %signal and %quality.
Bss info is based on scan info and doesn't get updated often. Station
info get's updated with every beacon. Bss info still used as fallback.
Failing to read() some data into the destination buffer from the slurp()
function was not considered an error. This means that we were
potentially leaving the caller with an uninitialized destination buffer
without letting him know it's uninitialized.
It is quite unlikely that a single call to read() would ever fail right
after a successful call to open(..., O_RDONLY). However, one practical
example of this happening is when the file being opened is actually a
directory.
Fixed by propagating the error (i.e. returning false from slurp()) if
the call to read() fails.
Signed-off-by: Olivier Gayot <olivier.gayot@sigexec.com>
For my thoughts about optional dependencies, see
https://michael.stapelberg.ch/posts/2019-05-23-optional-dependencies/
This commit follows the best practices outlined in that article:
1. The travis config was modified to verify both code paths build and link/don’t
link against pulseaudio.
2. If pulseaudio is missing, the build fails until packagers explicitly pass a
--disable flag. In practice, I think the only situation when this flag should
be set is in source-based linux distributions where users can express
package-level compilation preferences (e.g. Gentoo USE flags).
3. The --version output now reflects the status of the optional dependency.
fixes#359
This matches the conditional compilation in the code and is more correct than
distinguishing linux vs. non-linux (which breaks on Debian’s kFreeBSD and hurd
variants).
Thanks to sdk for providing an OpenBSD 6.5 environment for verification. This
has not been tested on DragonFlyBSD.
related to #352