* Fix #190:
* Added function `is_on_battery()` to correct set update interval
* Added setting `detect_battery` to correct select one or more batteries to check
* Added `detect_battery` to doc/config_settings.xml
* cmake: Add Haiku as a supported platform
* move mixer.cc to platform-specific as Haiku doesn't use OSS
* Add haiku.h with some stubs
* Use haiku.h
* Add some Haiku stubs
* Some Haiku network workarounds
It does not define SUN_LEN, provide a default.
It doesn't name the union in struct ifreq, use ifr_addr directly.
It seems Linux also declares it so it should work without change.
We can always define it for other platforms lacking it (add a cmake test ?).
Haiku does not have IFF_RUNNING, IFF_LINK seems close in semantics, so use it.
* Haiku: Minimal implementation of update_meminfo & get_top_info
* Haiku: implement update_cpu_usage
* llabs() is included in FreeBSD since FreeBSD 5.0.
Oldest supported FreeBSD version is 9.3 now.
* stdio.h needs to be explicitly included here for FreeBSD.
I can wrap it in #ifdefs if needed, but I don't think it can hurt other OSes.
* addr config variable works fine on FreeBSD.
* FreeBSD 5.x is really an ancient version and long unsupported, so I think this check for it can be dropped.
* Fix and simplify code to get battery state and charge.
* Add required include on FreeBSD.
* Add needed include on FreeBSD.
* Also populate basename to avoid printing (null) process names.
Repored by fellow FreeBSD user Szabolcs Grof.
* Add native support for pulseaudio.
This adds ability to get Pulseaudio current volume without calling an
external program. Also it provides a few other parameters like card's
current profile similarly to pavucontrol. Currently it only queries the
default sink (and associated card).
* Switch to pulse async API.
This us by far the most efficient as conky subscribe to a few pulseaudio
notifications. Whenever pulseaudio server changes (volume or default
sink or default card), conky's callback updates the results.
* use CLOCK_MONOTONIC if supported
get_time is used to control the update interval etc. so there's
no need to query the system time
* repaint immediately when the root pixmap changed
Original patch by pweisenburger,
In addition resets the next_update_time to ensure "now"
FIXES: #48
This patch modifies logic for setting next_update_time such that the
update is done at full update_interval seconds. That is, for example
with update_interval 60.0, update is done at 00:00:00, 00:01:00,
00:02:00, etc.
This might be useful for using conky as a clock widget which only needs
to be updated once per minute, but is obliged to update exactly at
minute change.
It is implemented in a way that is (hopefully) immune to clockchanges
(as for example by NTP or DST).
e.g. in the beginning the scale is always 0, leading to NaN and a crash
fixes the "show_graph_scale" not working bug, not yet reported (even though I actually noticed that before, didn't seem to bother me)
also cpugauge works again because fo this BUILD_MATH MATH problem
Currently we set inotify_fd to the value 0 when inotify_fd hasn't been
created yet, or after we close it. But 0 is a valid fd, and we check
for the value -1 to see if it's been initialized. So, if inotify
support is compiled in, but we disable_auto_reload, we can end up
closing fd 0. This can screw up various other things in weird ways,
including that exec'd processes appear to have an invalid stdin.
So, set inotify_fd to -1 to clear all of this up.
== common.cc ==
'result' can be uninitialized.
== conky.cc ==
strcpy()'s overlap: undefined behaviour. memmove()'s one is
defined.
== eve.cc ==
Some simplifications, and there are two leaks:
1. 'mySkill' could be leaked. So, let's make 'skill' point to it instead
of strdup()'ing the buffer.
2. 'output' could be leaked at l.390.
== freebsd.cc ==
Leak of 'freq_sysctl'.
== net_stat.cc ==
free() already null-checks, so we don't need to do it again.
== proc.cc ==
Leak.
Signed-off-by: Pavel Labath <pavelo@centrum.sk>
* don't use kvm_* calls, just sysctl (so no suid perm necessary)
* sysctls calls in general aren't thread safe, collapse callbacks
using same sysctls (specifically total/running procs and proc list
ones).
Some sysctls need two calls (first to get size of obj returned,
second to get object self); if different threads use this schema
on same sysctl, weird values are returned (first/second calls
sequence should be serialized).
In general it makes not much sense too having more threads that use
the same sysctl; just get info once and populate all data.
* add DragonFly specific extended uname string ($version in conky.conf)
with git version and signature
Todo:
- top process list logic is old style, use top.cc funcs.
- find a solution for cpu freq
Signed-off-by: Pavel Labath <pavelo@centrum.sk>
apparently, this was actually a feature as someone made it deliberately act that way. However, I
agree with the bug reporter that it is strange so I remove it.
Noone knows what it was supposed to do and removing it seems to fix sf.net #3411610 (and probably
a few others). If it turns out it was doing something useful, we will try to reintroduce it
without breaking other things.
I revert this, because it breaks padding for numbers < 1000, which causes ugly text shifts when
numbers change from <1000 to >1000. If someone disagrees with this, we can talk about it in
#conky. I asked before doing this, but noone seemed to care.
This "fixes" bug #3389641 on sf.net, reported by sakalisc.
This reverts commit c9cf08d9e9.
Conflicts:
src/conky.cc
I removed the code for automatic killing of stuck children, because (by admission of the person
who wrote it) it wasn't working. I also removed the $pre_exec variable, because one can use lua
to generate the config on the startup, if one wants to.
As i said in my rant somewhere, it's up to the person catching the exception to decide if the
error is critical or not. The person throwing the exception should specify the type of error and
that's where his job ends.