summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2019-09-19Do not return true from slurp() if it failed to readOlivier Gayot
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>
2019-07-29Improve NetBSD port. (#361)Thomas Klausner
Detect and link against ossaudio. Comment out unused code and functions.
2019-07-29print_cpu_usage: use buffered file APIMichael Stapelberg
fixes #343 fixes #344
2019-07-29make pulseaudio an optional dependency, follow best practicesMichael Stapelberg
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
2019-07-21On NetBSD, include sys/socket.h for AF_INET{,6}.Thomas Klausner
2019-07-21Merge pull request #355 from jasperla/header_fixIngo Bürk
Fix headers meant for OpenBSD, but snuck in for FreeBSD
2019-07-12battery: include sys/sysctl.h on OpenBSDMichael Stapelberg
This is required so that CTL_HW and others are defined (ran into this on OpenBSD 6.5).
2019-07-08Fix headers meant for OpenBSD, but snuck in for FreeBSDJasper Lievisse Adriaanse
2019-07-08Extend battery handling on OpenBSD (#351)Jasper Lievisse Adriaanse
If acpibat watts value is not available, try current (for batteries that report in amps), then convert to watts. originally submitted by @jcs
2019-06-10print_file_contents: allocate enough to include \0Sam Newbold
related to #331 Previously, if max_chars was read, the null byte would be written past the end of buf.
2019-02-21Added function to print content from file (#331)Dennis Vesterlund
Added a function to print file contents to status bar without newlines. Added tests for print file contents function Added manpage entry for file contents
2019-01-27fix ethernet speed display for 100 Gbit/s cardsMichael Stapelberg
Before this fix, i3status would display 34464 Mbit/s instead of 100000 Mbit/s, because it was only looking at ecmd.speed, ignoring ecmd.speed_hi.
2019-01-23Fix non Linux build for #309eplanet
2019-01-23Switch to autotools (#316)Michael Stapelberg
2019-01-23Implement %devicename specifier for volume module (#325)Denton Liu
This commit implements the %devicename specifier for the volume module for both PulseAudio and ALSA. This way, i3status will be able to display the specific device that corresponds to the volume indicator. Note that this is not implemented for the OSS API but is left in a state where someone can pick it up for the future.
2019-01-03Fixed ALSA capture device monitoring.Eugene Dzhurinsky
When using ALSA, the "Capture" mixer doesn't have the playback channel, instead "capture"-related methods should be used to get information about the current volume / state of the mixer.
2018-11-15Corrections according to PR revieweplanet
2018-11-10Add timezone switcheplanet
2018-11-08Merge pull request #319 from eplanet/fix-etc-mtabOrestis
Read /proc/mounts if /etc/mtab can't be read
2018-11-08Read /proc/mounts if /etc/mtab can't be readeplanet
2018-11-07Fix error messageseplanet
2018-11-05print_cpu_usage.c: Support non-consecutive CPUsTwentyFourD
Fixes #308
2018-10-21print_cpu_usage: fix invalid %cpu placeholder outputGaël PORTAY
Currently, the module cpu_usage prints %cpu0 information for the invalid %cpu placeholder (i.e. the cpu number is missing). Consider the following configuration. order += "cpu_usage" cpu_usage { format = "cpu0=%cpu0 cpu1=%cpu1 cpu=%cpu" # missing cpu number -------------------^ } The configuration above produces the output below. $ i3status -c config i3status: trying to auto-detect output_format setting i3status: auto-detected "term" cpu0=-2% cpu1=-49% cpu=-2% cpu0=06% cpu1=02% cpu=06% cpu0=05% cpu1=06% cpu=05% ... The module prints %cpu0 at the third placeholder where it should report an error. This commit fixes this behavior by initializing `number' to -1. If the cpu is missing in %cpu placeholder, the sscanf function does not set `number'. Because `number' is -1 (lower to 0), an error is reported and the placeholder is skipped. $ i3status -c ./config i3status: trying to auto-detect output_format setting i3status: auto-detected "term" provided CPU number '-1' above detected number of CPU 4 cpu0= cpu1=-48% cpu= provided CPU number '-1' above detected number of CPU 4 cpu0= cpu1=11% cpu= provided CPU number '-1' above detected number of CPU 4 cpu0= cpu1=03% cpu= ...
2018-10-11Provide a more natural volume percentage with ALSA.arcnmx
The rationale of the code is explained in the header: http://git.alsa-project.org/?p=alsa-utils.git;a=blob;f=alsamixer/volume_mapping.c;h=1c0d7c45e6686239464e1b0bbc8983ea57f3914f;hb=HEAD > The mapping is designed so that the position in the interval is > proportional to the volume as a human ear would perceive it (i.e., the > position is the cubic root of the linear sample multiplication > factor). and the commit message: http://git.alsa-project.org/?p=alsa-utils.git;a=commit;h=34bb514b5fd1d6f91ba9a7b3a70b0ea0c6014250 > use a mapping where the bar height is proportional to the audible > volume, i.e., where the amplitude is the cube of the bar height. and further explanation can be found in the pull request: https://github.com/i3/i3status/pull/268#pullrequestreview-147429763
2018-09-03Add support for "POWER_SUPPLY_STATUS=Not charging" (fixes #304)David96
2018-08-24Added %interface to the ethernet optionsMax Christian Pohle
2018-07-31Fix for issue 300: Correctly print usage for cpu 10=
2018-07-16Merge pull request #296 from Stunkymonkey/include-orderIngo Bürk
switch to clang 3.8 & ignore include sort order
2018-07-16Merge pull request #299 from tuxillo/patch-2Ingo Bürk
Detect interface type on DragonFly BSD
2018-07-15Detect interface type on DragonFly BSDAntonio Huete Jimenez
2018-07-14Do not use pulseaudio for DragonFly BSDAntonio Huete Jimenez
2018-07-13fix clang errorsFelix Buehler
2018-07-13able to print percentageFelix Buehler
its now possible to have percentage before and after a variable. except for the date. But percentage with dates does not make much sense to me, so i skipped it.
2018-07-13Merge pull request #256 from oyvinht/masterIngo Bürk
Read multiple batteries on DragonFly BSD.
2018-06-29Merge pull request #292 from Stunkymonkey/format_qualityIngo Bürk
add format_quality option in wireless
2018-06-29add format_quality option in wirelessFelix Buehler
2018-06-25Stop requiring CAP_NET_ADMINOlivier Gayot
Since the following commit in the Linux kernel tree 0fdc100bdc4b ethtool: allow non-netadmin to query settings it is no longer necessary to have the CAP_NET_ADMIN capability to query a device speed using ioctl(..., SIOCETHTOOL) in conjonction with the ETHTOOL_GSET ethtool command. The mentioned commit landed first in the 2.6.37 version of the Kernel. This version is no longer maintained nowdays. Since it is not necessary anymore, it is strongly prefered from a security standpoint to drop the CAP_NET_ADMIN capability from the binary. Signed-off-by: Olivier Gayot <olivier.gayot@sigexec.com>
2018-06-20Prevent potential crash if glob() failsOlivier Gayot
Calling globfree(NULL) is undefined behaviour. In Linux (glibc), it results in a segmentation fault. It is also undefined behaviour to call globfree(&pglob) if a previous call to glob(&pglob) returned an error. Signed-off-by: Olivier Gayot <olivier.gayot@sigexec.com>
2018-06-20Fix potential memory leak on LinuxOlivier Gayot
The function slurp_all_batteries(), on Linux, allocates memory dynamically Signed-off-by: Olivier Gayot <olivier.gayot@sigexec.com>
2018-06-20Fix invalid handling of glob() errors on LinuxOlivier Gayot
The manual of glob(3) says that the function returns 0 on successful completion. Any other integer value should be considered an error, not only negative integers. In practice, *BSD systems use negative values but Linux uses positive integers. Signed-off-by: Olivier Gayot <olivier.gayot@sigexec.com>
2018-06-20Fix use of undefined macro __OpenBSD__Olivier Gayot
Compiling on Linux with -Wundef produces the following warning: warning: "__OpenBSD__" is not defined, evaluates to 0 [-Wundef] Signed-off-by: Olivier Gayot <olivier.gayot@sigexec.com>
2018-06-20Avoid assigning a new value to a var before using the old valueOlivier Gayot
Signed-off-by: Olivier Gayot <olivier.gayot@sigexec.com>
2018-06-20Make sure the arguments passed to printf/die(...) match the formatOlivier Gayot
Signed-off-by: Olivier Gayot <olivier.gayot@sigexec.com>
2018-06-20No longer use a temporary buffer in the die() functionOlivier Gayot
Before the following change f947d0a Breaks configfiles! Major refactoring of i3status, see below The die(fmt, ...) function was outputting the reason to the status bar in addition to stderr. For this reason, it was meaningful to create a temporary string according to the format string and then passing it around to the different functions. Nowadays, we only display the error message to stderr so calling fprintf(stderr, ...) is much simpler. Signed-off-by: Olivier Gayot <olivier.gayot@sigexec.com>
2018-06-11Fix shown IP address belonging to wrong interfaceOlivier Gayot
The following commit: 6a75ea9 Show IP address when address has a label introduced a way to show the IP address of an interface when a label is associated to the IP. When a label is associated to an IP, the structure returned by getifaddrs() has the label concatenated to the interface name in the .ifa_name field as in the following example: struct ifaddrs ifaddr = { .ifa_name = "eth0:mylabel", }; As a consequence, using a strict comparison between the interface name and the .ifa_name field yields a falsy result. However, checking if the .ifa_name starts with the interface name (e.g. eth0) does not work either because other network interfaces can have a name which starts with eth0. This commit solves the issue by stripping out the optional label from the .ifa_name field before making a strict comparison with the interface name. Fix #283 Signed-off-by: Olivier Gayot <olivier.gayot@sigexec.com>
2018-06-04Simplify the algorithm used to determine the IP addressOlivier Gayot
Signed-off-by: Olivier Gayot <olivier.gayot@sigexec.com>
2018-05-19Merge pull request #270 from Stunkymonkey/mem-supportIngo Bürk
initial support of memory-usage for linux
2018-05-15Fix MacOS buildeplanet
2018-05-04Simplify the memory thresholdsBenedikt Heine
2018-05-04Rename ram variables consistentlyBenedikt Heine