From 3818dabcebea7f98e3dfdfbe5be42374bb60cf88 Mon Sep 17 00:00:00 2001 From: Alexander Monakov Date: Sun, 7 Dec 2014 23:32:19 +0300 Subject: [PATCH] Allocate and expose per-instance pointers for plugins --- i3status.c | 5 +++++ include/i3status.h | 2 ++ 2 files changed, 7 insertions(+) diff --git a/i3status.c b/i3status.c index daa2d00..7c98d06 100644 --- a/i3status.c +++ b/i3status.c @@ -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