1
0
mirror of https://github.com/Llewellynvdm/conky.git synced 2024-11-19 11:35:12 +00:00
Commit Graph

2303 Commits

Author SHA1 Message Date
Brian De Wolf
01301f31a3 lock mpd result before modifying it
Add a lock to the mpd work callback to prevent another thread from reading the
struct while we're writing to it.
2015-11-08 21:29:29 -08:00
Brenden Matthews
7ae6b00f30 Merge pull request #160 from bldewolf/cppcheck-fix
Expand several buffers identified by cppcheck
2015-11-07 09:32:07 -08:00
Brenden Matthews
966b744349 Merge pull request #141 from marcpayne/template-segfault
Avoid segfault if template arg number is zero
2015-11-07 09:28:52 -08:00
Brian De Wolf
1dd6a47c24 Expand several buffers identified by cppcheck
I ran cppcheck on a whim while trying to debug #103 and it found these possible
memory corruptions. They all seem to be buffers that were made one byte too
small (leaving out the byte for the C-string null terminator).
2015-11-01 19:37:24 -08:00
Marc Payne
c7108d8261 Avoid segfault if template arg number is zero
If the user enters \0 as a template argument, print a warning and exit
gracefully. Fixes an issue mentioned in #118.
2015-08-29 14:15:52 -06:00
Marc Payne
8f88961c74 Do not try to remove kdeinit: from process name
When we parse /proc/<pid>/* in order to populate the process struct, it isn't
necessary to try to remove any instance of "kdeinit: " anymore (IMO). Here is
why:

* If the user chooses to display full command lines (top_name_verbose = true),
  then we should show full command lines without stripping useful info.

* The new basename entry already has a stripped down command. For example, if
  the command line is "kdeinit4: kded4 [kdeinit]", then basename is "kded4".

* The code does not account for "kdeinit{4,5}: ", resulting in undesired
  behavior, e.g. "kdeinit4: kded4 [kdeinit]" becomes "kdeinit4:".

* The code does not account for NUL separated arguments.

* The code opens /proc/<pid>/cmdline a second time, so this commit is a minor
  optimization.

I think it is best to remove this code altogether. If anyone disagrees, please
comment or send me some hate mail with reasons why we should keep it. The commit
is easy enough to revert. :)
2015-08-26 18:25:39 -06:00
Marc Payne
03a5cc5047 Add basename support to top
The new top_name_verbose option works in most cases, but it will fail if the
executable name contains spaces. Trying to parse command lines from
/proc/<pid>/* turned out to be quite complex due to the many edge cases. My
solution, once again, is to fall back to 1.9.x behavior. If top_name_verbose is
true, use the full command line. Otherwise, use basename.

Fixes #131.
2015-08-26 11:59:26 -06:00
Marc Payne
99ffe6a0d6 Add basename support to if_running
Currently, in order to match a running process with ${if_running}, a user needs
to specify the full command line plus arguments in conky.conf. This commit keeps
that behavior and adds a fallback that is equivalent to the 1.9.x bevahior,
namely matching against the executable name contained in /proc/<pid>/stat.

This completes the fix for #121.
2015-08-26 11:57:38 -06:00
Marc Payne
d8ff24a6f0 Add support for basenames (short executable names)
Since we now store a full command line for each process, a few problems are
apparent. For example, the names displayed by ${top ...} are verbose. This has
been partially addressed by the top_name_verbose option, but it is broken
whenever an executable name contains spaces. Another example is ${if_running},
which only matches the input if it exactly matches the entire command line.

This commit adds a basename (i.e. executable filename) entry to the process
struct. The intention is to store the executable filename from /proc/<pid>/stat,
which was the old 1.9.x behavior. This way, we have the best of both worlds.
Those who like the full command line can have it, and those who prefer the old
way can be satisfied too.
2015-08-26 11:16:20 -06:00
Marc Payne
2a778374a5 Do not add trailing whitespace to proc cmdline
According to proc(5), /proc/<pid>/cmdline is supposed to have a NUL between each
argument, plus an additional NUL at the end. Instead of replacing each NUL with
a space, just replace the ones between arguments and ignore the rest.

Partial fix for #121.
2015-08-26 00:50:08 -06:00
Marc Payne
a061bcff3e Minor code formatting and whitespace cleanup 2015-08-26 00:03:43 -06:00
Brenden Matthews
b3c95959bc Merge pull request #137 from marcpayne/lua53-compile-fix
Fix compile error with Lua 5.3
2015-08-24 08:09:00 -07:00
Marc Payne
acd1c05d74 Fix compile error with Lua 5.3
lua_gettable returns an int instead of void in Lua 5.3, so provide a
backwards-compatible overload of safe_misc_trampoline to account for this.
Tested with Lua 5.2 and 5.3.

This change does not address other compilation issues related to Lua bindings
for cairo, imlib2, and rsvg.

Fixes #90 and part of #100.
2015-08-21 01:56:37 -06:00
Nelis Oostens
0ab7d5fa33 Fixed Curl header issue
Note: This may not be the correct solution, it depends on the author's intention. Maybe he wanted to keep the headers from the previous call (in other words if there are no new headers use the old ones) and didn't realize they weren't copied in the handle, in which case he'll have to save the headers instead of above.
2015-08-19 22:04:42 +02:00
Nelis Oostens
fc6888eee3 Added sanity check to avoid making 0x0 window 2015-07-31 08:22:20 +02:00
Brenden Matthews
89c7da5654 Merge pull request #122 from Nooby4Ever/master
Added missing build flags to the print_version function
2015-07-30 16:01:35 -07:00
Brenden Matthews
7044c5296d Merge pull request #120 from ncopa/master
Compatibility improvements
2015-07-30 16:00:51 -07:00
Brenden Matthews
98d3491ddb Merge pull request #119 from marcpayne/getglobal-fix
Ensure getglobal pushes only one value onto stack
2015-07-30 16:00:01 -07:00
Brenden Matthews
9f6d727831 Merge pull request #115 from marcpayne/top-name-verbose
Add top_name_verbose option
2015-07-30 15:59:16 -07:00
Nelis Oostens
8bf8859c73 Added missing build flags to the print_version function
Added:
BUILD_ICAL
BUILD_ICONV
BUILD_MYSQL
BUILD_LUA_RSVG
BUILD_XSHAPE
2015-07-24 16:42:47 +00:00
Natanael Copa
0956b689ec Fix thread local on pre C++11 compilers 2015-07-23 16:36:00 +02:00
Natanael Copa
476f84cf59 Use portable version of strerror_r
There are 2 variants of strerror_r, GNU extension and a POSIX variant.
Use the more portable POSIX variant.

Also fix a potensial stack-use-after-return bug, instead of relying on
undefined behavoir in GNU libc implementation. The strerror_r manpage
says:

> This may be either a pointer to a string that the function stores in
> buf, or a pointer to some (immutable) static string (in which case buf
> is unused).

So it does not guarantee that it returns a pointer to some (immutable)
static string. It might return a pointer to "buf", in which case we get
a stack-use-after-return bug.

We fix this by declaring a thread local static buffer which we always
return.
2015-07-23 16:07:34 +02:00
Natanael Copa
98b063866f Remove use of sysctl.h
The sysctl.h is not specified in POSIX. This fixes building with musl
libc.
2015-07-23 16:06:42 +02:00
Marc Payne
11ec010561 Ensure getglobal pushes only one value onto stack
Currently, state::getglobal pushes two values onto the stack: the global
environment and the requested global. For example, if you call
getglobal("conky"), the stack ends up with the following:

| ... global, conky |

The function config_setting_base::lua_set in setting.cc does not take this
behavior into account, resulting in #97.

To correct this, call replace(-2) at the end of state::getglobal where
LUA_VERSION_NUM >= 502.
2015-07-22 17:16:26 -06:00
Marc Payne
06722e4a2a Add top_name_verbose option
Since commit 749083a, the output of ${top name <num>} contains the full
command line of each process, including arguments. While this feature can
be very useful, it changes the default behavior of Conky.

The present commit adds a new top_name_verbose option that allows the user
to toggle between basenames with no arguments (the old behavior) and full
command lines with arguments. To remain consistent with past versions of
Conky, the default value of top_name_verbose is false.

Fixes #113 (https://github.com/brndnmtthws/conky/issues/113).
2015-07-20 17:27:45 -06:00
rtoijala
f1a3542734 call get_cpu_count() when needed
get_cpu_count() is not called before trying to use cpus so conky exits with

conky: obj->data.i 1 info.cpu_count 0
conky: attempting to use more CPUs than you have!

Fixes issue #93.
2015-07-10 12:22:18 +03:00
Brenden Matthews
9ac60dcc15 Merge pull request #108 from marcpayne/noipv6-segfault-fix
Close file only if it was successfully opened
2015-07-07 15:59:10 -07:00
Marc Payne
ee08a9e1b0 Close file only if it was successfully opened
If BUILD_IPV6=ON (default), but the user has disabled ipv6 support
in the kernel using the parameter ipv6.disable=1, then conky fails
to open /proc/net/if_inet6. This leads to a segfault when conky
calls fclose(file) regardless. This fix simply moves the fclose call
into the preceding if statement.
2015-07-06 02:51:43 -06:00
Steven Allen
0aa790baac Correctly shorten unknown. 2015-07-02 11:09:50 -04:00
Steven Allen
54a5cb8cbb If we're on AC, there is no battery.
Again, no point in having two ways to say the same thing.
2015-07-02 11:09:24 -04:00
Steven Allen
8852c0083c No point in having two ways to say charged.
replace full with charged.
2015-07-02 11:02:30 -04:00
Troy C
9fd4090a07 Fix segfault on invalid label 2015-02-28 23:03:37 -06:00
Troy C
345d62a555 Search device labels for diskio 2015-02-19 13:42:50 -06:00
Łukasz Stelmach
00481ee9a9 Read configuration from ~/.config/conky/conky.conf
Try to load configuration from ~/.config/conky/conky.conf before
falling back to ~/.conkyrc and /etc/conky/conky.conf.
2014-11-17 22:06:27 +01:00
Andrew Deason
b9dba46fb3 Enable X11 backing store
In our XCreateWindow call, we always set the backing_store attribute
to 'Always'. But since we never add the CWBackingStore to our value
mask, the backing_store setting always gets set to the default
NotUseful. This means that the backing store is never turned on, and
so when unobscuring the conky window, portions of the display will not
be drawn immediately if conky is blocked doing something else (e.g.
network, disk, the process is stopped), which is really annoying.

To fix this, specify the CWBackingStore flag in our value mask, so the
conky data is always visible, even if conky is blocking on some other
operation.
2014-10-25 19:34:25 -05:00
Andrew Deason
cd95b659c7 Consolidate common X11 XSetWindowAttributes flags
We always specify CWOverrideRedirect. So just assign that to flags
once, instead of assigning it to flags in four different cases.
2014-10-25 19:33:19 -05:00
Denis Gorodnichev
442f78119c add support for x11 shape extension
x11 shape extension (version >= 1.1) provide ability to set up input region
set up empty input region for undecorated window to create transparent window for mouse events
2014-09-09 11:12:44 +04:00
CTK
3e85698458 Fix size of the reported "buffers/cache" memory.
It now reports only reclaimable memory, by excluding shared memory,
and including the reclaimable part of the SLAB cache.

So '$mem' with 'no_buffers yes' is now the "really used" (unreclaimable) memory.
And when reaching OOM conditions, conky will always report high memory usage.

Related post:
http://calimeroteknik.free.fr/blag/?article20/really-used-memory-on-gnu-linux
2014-06-19 23:24:19 +02:00
Brenden Matthews
eef323eafd Merge pull request #48 from paulegan/graph-in-shell
Support for graph output on console/shell
2014-06-17 17:23:17 -07:00
Nikolas Garofil
70f27ccfab Fix invalid read 2014-05-30 12:24:55 +02:00
Paul Egan
9809f7cd91 Support for graph output on console/shell 2014-05-05 21:07:55 +01:00
Vilmos Nebehaj
cda5afda69 Address PR comments.
In particular:
- Don't call get_battery_perct() recursively.
- Use define for length of string holding battery name.
- We can use strcpy() since bat is zero-terminated.
2014-03-09 21:32:15 +01:00
Vilmos Nebehaj
3fb201bbc8 Use strncmp() when checking battery name. 2014-03-09 18:53:26 +01:00
Vilmos Nebehaj
ad92c60d6b Compute mean percentage for multiple batteries.
If a laptop has multiple batteries, compute the mean percentage if the
user asks for 'all' instead of a specific battery.
2014-03-09 14:03:36 +01:00
eskerda
68263d4556 add support for $ibm_thinklight
Some IBM/Lenovo models come with a light on the top edge of the
display to illuminate the keyboard. This either reports 'on', 'off'
or 'unknown'.
2013-12-06 16:44:37 +01:00
Andrew Deason
f670e70d7c Set uninitialized inotify_fd to -1, not 0
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.
2013-08-18 13:50:17 -05:00
Pavel Labath
02dfacd694 Add support for lua 5.2
luamm is now able to be compiled with both lua 5.1 and 5.2 (assuming 5.2 has backward
compatibility features compiled in). It is my intention to always support at least two versions
of lua.
2013-07-13 23:55:28 +02:00
Pavel Labath
0f94f409a1 Fix an some strange code found by a clang warning 2013-07-13 19:42:20 +02:00
Pavel Labath
fc84f0f6a0 Fix compilation with clang 2013-07-13 19:42:04 +02:00
Nikolas Garofil
9d36db7138 Fix warning about unused result in strerror_r() redefinition
On systems, the buildprocess will complain:
  [  7%] Building CXX object src/CMakeFiles/conky.dir/c++wrap.cc.o
  conky/src/c++wrap.cc: In function ‘std::string strerror_r(int)’:
  conky/src/c++wrap.cc:66:37: warning: ignoring return value of ‘char* strerror_r(int, char*, size_t)’, declared with attribute warn_unused_result [-Wunused-result]

According to "man 3 strerror_r" the buffer used as 2nd arg is not always used, this patch also fixes that problem.
2013-06-20 22:07:40 +02:00