diff options
author | nicm <nicm> | 2020-05-16 15:47:22 +0000 |
---|---|---|
committer | nicm <nicm> | 2020-05-16 15:47:22 +0000 |
commit | 367b4e4e0f1d78589398cddb609b33be870af30c (patch) | |
tree | a45a113764f1473a42f0611ca98e18b6a0164eda /server.c | |
parent | 4de0bd4c5c9eec6dd71cac87b91e736944896c22 (diff) | |
download | rtmux-367b4e4e0f1d78589398cddb609b33be870af30c.tar.gz rtmux-367b4e4e0f1d78589398cddb609b33be870af30c.tar.bz2 rtmux-367b4e4e0f1d78589398cddb609b33be870af30c.zip |
Change message log to be per server rather than per client and include
every command that is run.
Diffstat (limited to 'server.c')
-rw-r--r-- | server.c | 35 |
1 files changed, 35 insertions, 0 deletions
@@ -51,6 +51,9 @@ static struct event server_ev_accept; struct cmd_find_state marked_pane; +static u_int message_next; +struct message_list message_log; + static int server_loop(void); static void server_send_exit(void); static void server_accept(int, short, void *); @@ -195,6 +198,7 @@ server_start(struct tmuxproc *client, int flags, struct event_base *base, TAILQ_INIT(&clients); RB_INIT(&sessions); key_bindings_init(); + TAILQ_INIT(&message_log); gettimeofday(&start_time, NULL); @@ -483,3 +487,34 @@ server_child_stopped(pid_t pid, int status) } job_check_died(pid, status); } + +/* Add to message log. */ +void +server_add_message(const char *fmt, ...) +{ + struct message_entry *msg, *msg1; + char *s; + va_list ap; + u_int limit; + + va_start(ap, fmt); + xvasprintf(&s, fmt, ap); + va_end(ap); + + log_debug("message: %s", s); + + msg = xcalloc(1, sizeof *msg); + gettimeofday(&msg->msg_time, NULL); + msg->msg_num = message_next++; + msg->msg = s; + TAILQ_INSERT_TAIL(&message_log, msg, entry); + + limit = options_get_number(global_options, "message-limit"); + TAILQ_FOREACH_SAFE(msg, &message_log, entry, msg1) { + if (msg->msg_num + limit >= message_next) + break; + free(msg->msg); + TAILQ_REMOVE(&message_log, msg, entry); + free(msg); + } +} |