aboutsummaryrefslogtreecommitdiff
path: root/cfg.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2014-10-29 12:50:05 +0000
committerThomas Adam <thomas@xteddy.org>2014-10-29 12:51:21 +0000
commit35ffd093d724053046ae49984af0beb0530e5560 (patch)
treed5b89a213621dc56b852fc7eb8a1daba12046830 /cfg.c
parent201036ad80f2e51f7238db2adf05914a4a4f5819 (diff)
parent10a9440055ccdda5788965bcb048207eab2a0548 (diff)
downloadrtmux-35ffd093d724053046ae49984af0beb0530e5560.tar.gz
rtmux-35ffd093d724053046ae49984af0beb0530e5560.tar.bz2
rtmux-35ffd093d724053046ae49984af0beb0530e5560.zip
Merge branch 'obsd-master'
Conflicts: Makefile cmd-link-window.c cmd-unlink-window.c
Diffstat (limited to 'cfg.c')
-rw-r--r--cfg.c34
1 files changed, 30 insertions, 4 deletions
diff --git a/cfg.c b/cfg.c
index 0e0f55bc..18ab10f2 100644
--- a/cfg.c
+++ b/cfg.c
@@ -29,7 +29,7 @@
struct cmd_q *cfg_cmd_q;
int cfg_finished;
int cfg_references;
-struct causelist cfg_causes;
+ARRAY_DECL (, char *) cfg_causes = ARRAY_INITIALIZER;
struct client *cfg_client;
int
@@ -39,7 +39,7 @@ load_cfg(const char *path, struct cmd_q *cmdq, char **cause)
char delim[3] = { '\\', '\\', '\0' };
u_int found;
size_t line = 0;
- char *buf, *cause1, *msg, *p;
+ char *buf, *cause1, *p;
struct cmd_list *cmdlist;
log_debug("loading %s", path);
@@ -66,8 +66,7 @@ load_cfg(const char *path, struct cmd_q *cmdq, char **cause)
free(buf);
if (cause1 == NULL)
continue;
- xasprintf(&msg, "%s:%zu: %s", path, line, cause1);
- ARRAY_ADD(&cfg_causes, msg);
+ cfg_add_cause("%s:%zu: %s", path, line, cause1);
free(cause1);
continue;
}
@@ -113,6 +112,33 @@ cfg_default_done(unused struct cmd_q *cmdq)
}
void
+cfg_add_cause(const char* fmt, ...)
+{
+ va_list ap;
+ char* msg;
+
+ va_start(ap, fmt);
+ xvasprintf(&msg, fmt, ap);
+ va_end (ap);
+
+ ARRAY_ADD(&cfg_causes, msg);
+}
+
+void
+cfg_print_causes(struct cmd_q *cmdq)
+{
+ char *cause;
+ u_int i;
+
+ for (i = 0; i < ARRAY_LENGTH(&cfg_causes); i++) {
+ cause = ARRAY_ITEM(&cfg_causes, i);
+ cmdq_print(cmdq, "%s", cause);
+ free(cause);
+ }
+ ARRAY_FREE(&cfg_causes);
+}
+
+void
cfg_show_causes(struct session *s)
{
struct window_pane *wp;