Allocate and expose per-instance pointers for plugins
Patch status: merged
Patch by Alexander Monakov
To apply this patch, use:
curl http://cr.i3wm.org/patch/689/raw.patch | git am
b/i3status.c
14 |
@@ -56,6 +56,8 @@ static bool exit_upon_signal = false; |
15 |
|
16 |
cfg_t *cfg, *cfg_general, *cfg_section; |
17 |
|
18 |
+void **cur_instance; |
19 |
+ |
20 |
/* |
21 |
* Set the exit_upon_signal flag, because one cannot do anything in a safe |
22 |
* manner in a signal handler (e.g. fprintf, which we really want to do for |
23 |
@@ -550,6 +552,8 @@ int main(int argc, char *argv[]) { |
24 |
* (!), not individual plugins, seem very unlikely. */ |
25 |
char buffer[4096]; |
26 |
|
27 |
+ void **per_instance = calloc(cfg_size(cfg, "order"), sizeof(*per_instance)); |
28 |
+ |
29 |
while (1) { |
30 |
if (exit_upon_signal) { |
31 |
fprintf(stderr, "Exiting due to signal.\n"); |
32 |
@@ -563,6 +567,7 @@ int main(int argc, char *argv[]) { |
33 |
/* Restore the cursor-position, clear line */ |
34 |
printf("\033[u\033[K"); |
35 |
for (j = 0; j < cfg_size(cfg, "order"); j++) { |
36 |
+ cur_instance = per_instance + j; |
37 |
if (j > 0) |
38 |
print_separator(separator); |
39 |
|
b/include/i3status.h
44 |
@@ -198,4 +198,6 @@ extern int general_socket; |
45 |
|
46 |
extern cfg_t *cfg, *cfg_general, *cfg_section; |
47 |
|
48 |
+extern void **cur_instance; |
49 |
+ |
50 |
#endif |