summaryrefslogtreecommitdiffstats
path: root/format.c
diff options
context:
space:
mode:
authornicm <nicm>2013-10-10 11:47:52 +0000
committernicm <nicm>2013-10-10 11:47:52 +0000
commitd75dd2ab1c792ea06c2777a31cb83cb3ba4c47a7 (patch)
tree18071d5799bc05f54592c8c06c16fa47c22b0c2e /format.c
parent6e665708fc13836dff9a683ccddb2ed194951767 (diff)
Add formats for window flags.
Diffstat (limited to 'format.c')
-rw-r--r--format.c24
1 files changed, 21 insertions, 3 deletions
diff --git a/format.c b/format.c
index 168ff5b9..e870cd0a 100644
--- a/format.c
+++ b/format.c
@@ -151,6 +151,7 @@ void
format_add(struct format_tree *ft, const char *key, const char *fmt, ...)
{
struct format_entry *fe;
+ struct format_entry *fe_now;
va_list ap;
fe = xmalloc(sizeof *fe);
@@ -160,7 +161,13 @@ format_add(struct format_tree *ft, const char *key, const char *fmt, ...)
xvasprintf(&fe->value, fmt, ap);
va_end(ap);
- RB_INSERT(format_tree, ft, fe);
+ fe_now = RB_INSERT(format_tree, ft, fe);
+ if (fe_now != NULL) {
+ free(fe_now->value);
+ fe_now->value = fe->value;
+ free(fe->key);
+ free(fe);
+ }
}
/* Find a format entry. */
@@ -346,8 +353,10 @@ format_client(struct format_tree *ft, struct client *c)
format_add(ft, "client_cwd", "%s", c->cwd);
format_add(ft, "client_height", "%u", c->tty.sy);
format_add(ft, "client_width", "%u", c->tty.sx);
- format_add(ft, "client_tty", "%s", c->tty.path);
- format_add(ft, "client_termname", "%s", c->tty.termname);
+ if (c->tty.path != NULL)
+ format_add(ft, "client_tty", "%s", c->tty.path);
+ if (c->tty.termname != NULL)
+ format_add(ft, "client_termname", "%s", c->tty.termname);
t = c->creation_time.tv_sec;
format_add(ft, "client_created", "%lld", (long long) t);
@@ -401,6 +410,15 @@ format_winlink(struct format_tree *ft, struct session *s, struct winlink *wl)
format_add(ft, "window_active", "%d", wl == s->curw);
format_add(ft, "window_panes", "%u", window_count_panes(w));
+ format_add(ft, "window_bell_flag", "%u",
+ !!(wl->flags & WINLINK_BELL));
+ format_add(ft, "window_content_flag", "%u",
+ !!(wl->flags & WINLINK_CONTENT));
+ format_add(ft, "window_activity_flag", "%u",
+ !!(wl->flags & WINLINK_ACTIVITY));
+ format_add(ft, "window_silence_flag", "%u",
+ !!(wl->flags & WINLINK_SILENCE));
+
free(flags);
free(layout);
}