diff options
author | Alexander Monakov <amonakov@ispras.ru> | 2014-12-07 23:32:19 +0300 |
---|---|---|
committer | Michael Stapelberg <michael@stapelberg.de> | 2014-12-10 19:58:54 +0100 |
commit | 3818dabcebea7f98e3dfdfbe5be42374bb60cf88 (patch) | |
tree | b0c7d2ad25f8c8095e0c7104ca883f9120bc3fbd | |
parent | b219f47f394e536198997578e4cce3c539b84b6d (diff) |
Allocate and expose per-instance pointers for plugins
-rw-r--r-- | i3status.c | 5 | ||||
-rw-r--r-- | include/i3status.h | 2 |
2 files changed, 7 insertions, 0 deletions
@@ -56,6 +56,8 @@ static bool exit_upon_signal = false; cfg_t *cfg, *cfg_general, *cfg_section; +void **cur_instance; + /* * Set the exit_upon_signal flag, because one cannot do anything in a safe * manner in a signal handler (e.g. fprintf, which we really want to do for @@ -550,6 +552,8 @@ int main(int argc, char *argv[]) { * (!), not individual plugins, seem very unlikely. */ char buffer[4096]; + void **per_instance = calloc(cfg_size(cfg, "order"), sizeof(*per_instance)); + while (1) { if (exit_upon_signal) { fprintf(stderr, "Exiting due to signal.\n"); @@ -563,6 +567,7 @@ int main(int argc, char *argv[]) { /* Restore the cursor-position, clear line */ printf("\033[u\033[K"); for (j = 0; j < cfg_size(cfg, "order"); j++) { + cur_instance = per_instance + j; if (j > 0) print_separator(separator); diff --git a/include/i3status.h b/include/i3status.h index f8f0784..ef212c8 100644 --- a/include/i3status.h +++ b/include/i3status.h @@ -198,4 +198,6 @@ extern int general_socket; extern cfg_t *cfg, *cfg_general, *cfg_section; +extern void **cur_instance; + #endif |