Previously, the fields in the wireless module were declared but not explicitly
initialized upon declaration. As nothing else would do so afterwards, this
could introduce random characters left over in the memory segment into
the fields. This was explicitly observed in the essid-field, but likely
a possibility for other fields as well. Hence, this commit adds explicit
initialization with zero bytes to all fields to ensure proper
termination of all fields.
Fixes#432
* Add support for batteries outputting Time to empty on linux
The battery in the pinebook pro does not output the remaining charge
in Wh or mAh, so i3 cannot calculate the time remaining. However, it
does directly output the number of minutes remaining on in
POWER_SUPPLY_TIME_TO_EMPTY. This adds support for reading this field
and converting it to seconds_remaining.
* Add testcase for POWER_SUPPLY_TIME_TO_EMTY_NOW
This generates much friendlier names on all my systems, e.g.
"HDMI / DisplayPort 5" rather than
"Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] Digital Stereo (HDMI 5)"
New matrix for 5 jobs in total.
Updates our checks to bionic & xenial. Trusty could also be
included but it is a bit outdated at this point.
I use bionic to pull a more recent clang-format and use a dedicated job
just to check formatting. An alternative would be to conditionally run
the formatting script only on bionic.
I don't think that there is a better way to expand a `dist` x `compiler`
matrix (except using docker).
- unused variable ‘walk’ [-Wunused-variable]
- implicit declaration of built-in function ‘free’
[-Wimplicit-function-declaration]
- initialization discards ‘const’ qualifier from pointer target type
[-Wdiscarded-qualifiers]
- variable 'ram_used' is used uninitialized whenever 'if' condition is
false [-Wsometimes-uninitialized]. This is actually easily reproducible
by specifying `memory_used_method = "XXX"`.
- comparison of integers of different signs: 'int' and 'unsigned long'
[-Wsign-compare] (for `exponent`)
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.