From 8db145da1ed40d471e9ecff0e788ced26a43fc92 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Wed, 18 Nov 2009 13:16:33 +0000 Subject: 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. --- server-client.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'server-client.c') diff --git a/server-client.c b/server-client.c index a9058594..8ff71223 100644 --- a/server-client.c +++ b/server-client.c @@ -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); -- cgit