diff options
author | Thomas Adam <thomas@xteddy.org> | 2017-11-02 20:01:26 +0000 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2017-11-02 20:01:26 +0000 |
commit | 8c29f7413bd41e0f7afb1b53dc73128dfd42fb6f (patch) | |
tree | 2a8ecf685a8f14f673a6b7e1036c7d5ac79032f1 /format.c | |
parent | cf782c4f546fb11f3157de7aecff85845b0dbed9 (diff) | |
parent | 17655e5ba65e37787cd9920e1a89aedf6f623957 (diff) | |
download | rtmux-8c29f7413bd41e0f7afb1b53dc73128dfd42fb6f.tar.gz rtmux-8c29f7413bd41e0f7afb1b53dc73128dfd42fb6f.tar.bz2 rtmux-8c29f7413bd41e0f7afb1b53dc73128dfd42fb6f.zip |
Merge branch 'obsd-master'
Diffstat (limited to 'format.c')
-rw-r--r-- | format.c | 43 |
1 files changed, 39 insertions, 4 deletions
@@ -587,8 +587,35 @@ format_cb_pane_tabs(struct format_tree *ft, struct format_entry *fe) evbuffer_add(buffer, ",", 1); evbuffer_add_printf(buffer, "%u", i); } - size = EVBUFFER_LENGTH(buffer); - xasprintf(&fe->value, "%.*s", size, EVBUFFER_DATA(buffer)); + if ((size = EVBUFFER_LENGTH(buffer)) != 0) + xasprintf(&fe->value, "%.*s", size, EVBUFFER_DATA(buffer)); + evbuffer_free(buffer); +} + +/* Callback for session_group_list. */ +static void +format_cb_session_group_list(struct format_tree *ft, struct format_entry *fe) +{ + struct session *s = ft->s; + struct session_group *sg; + struct session *loop; + struct evbuffer *buffer; + int size; + + if (s == NULL) + return; + sg = session_group_contains(s); + if (sg == NULL) + return; + + buffer = evbuffer_new(); + TAILQ_FOREACH(loop, &sg->sessions, gentry) { + if (EVBUFFER_LENGTH(buffer) > 0) + evbuffer_add(buffer, ",", 1); + evbuffer_add_printf(buffer, "%s", loop->name); + } + if ((size = EVBUFFER_LENGTH(buffer)) != 0) + xasprintf(&fe->value, "%.*s", size, EVBUFFER_DATA(buffer)); evbuffer_free(buffer); } @@ -781,8 +808,11 @@ format_find(struct format_tree *ft, const char *key, int modifiers) found = s; goto found; } - if (fe->value == NULL && fe->cb != NULL) + if (fe->value == NULL && fe->cb != NULL) { fe->cb(ft, fe); + if (fe->value == NULL) + fe->value = xstrdup(""); + } found = fe->value; goto found; } @@ -1269,8 +1299,13 @@ format_defaults_session(struct format_tree *ft, struct session *s) sg = session_group_contains(s); format_add(ft, "session_grouped", "%d", sg != NULL); - if (sg != NULL) + if (sg != NULL) { format_add(ft, "session_group", "%s", sg->name); + format_add(ft, "session_group_size", "%u", + session_group_count (sg)); + format_add_cb(ft, "session_group_list", + format_cb_session_group_list); + } format_add_tv(ft, "session_created", &s->creation_time); format_add_tv(ft, "session_last_attached", &s->last_attached_time); |