summaryrefslogtreecommitdiffstats
path: root/usr.bin/tmux/server-client.c
diff options
context:
space:
mode:
authornicm <nicm@openbsd.org>2009-11-18 13:16:33 +0000
committernicm <nicm@openbsd.org>2009-11-18 13:16:33 +0000
commitdca899ea8fbdacd4bc69967850ea2038e43b795f (patch)
treeca4f55f872b96a1e1ec71af4cc3779d3239bfe4f /usr.bin/tmux/server-client.c
parentMark -n keys with (no prefix) rather than []. (diff)
downloadwireguard-openbsd-dca899ea8fbdacd4bc69967850ea2038e43b795f.tar.xz
wireguard-openbsd-dca899ea8fbdacd4bc69967850ea2038e43b795f.zip
Add a per-client log of status line messages displayed while that client
exists. A new message-limit session option sets the maximum number of entries and a command, show-messages, shows the log (bound to ~ by default). This (and prompt history) might be better as a single global log but until there are global options it is easier for them to be per client.
Diffstat (limited to 'usr.bin/tmux/server-client.c')
-rw-r--r--usr.bin/tmux/server-client.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/usr.bin/tmux/server-client.c b/usr.bin/tmux/server-client.c
index 50cebd4ddf6..6115c9469d5 100644
--- a/usr.bin/tmux/server-client.c
+++ b/usr.bin/tmux/server-client.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: server-client.c,v 1.20 2009/11/13 18:13:18 nicm Exp $ */
+/* $OpenBSD: server-client.c,v 1.21 2009/11/18 13:16:33 nicm Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -80,6 +80,7 @@ server_client_create(int fd)
job_tree_init(&c->status_jobs);
c->message_string = NULL;
+ ARRAY_INIT(&c->message_log);
c->prompt_string = NULL;
c->prompt_buffer = NULL;
@@ -101,7 +102,8 @@ server_client_create(int fd)
void
server_client_lost(struct client *c)
{
- u_int i;
+ struct message_entry *msg;
+ u_int i;
for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
if (ARRAY_ITEM(&clients, i) == c)
@@ -129,6 +131,11 @@ server_client_lost(struct client *c)
if (c->message_string != NULL)
xfree(c->message_string);
evtimer_del(&c->message_timer);
+ for (i = 0; i < ARRAY_LENGTH(&c->message_log); i++) {
+ msg = &ARRAY_ITEM(&c->message_log, i);
+ xfree(msg->msg);
+ }
+ ARRAY_FREE(&c->message_log);
if (c->prompt_string != NULL)
xfree(c->prompt_string);