version 1.161, 2017/02/03 21:01:02 |
version 1.162, 2017/02/09 12:09:33 |
|
|
void |
void |
status_message_set(struct client *c, const char *fmt, ...) |
status_message_set(struct client *c, const char *fmt, ...) |
{ |
{ |
struct timeval tv; |
struct timeval tv; |
struct message_entry *msg, *msg1; |
va_list ap; |
va_list ap; |
int delay; |
int delay; |
|
u_int limit; |
|
|
|
limit = options_get_number(global_options, "message-limit"); |
|
|
|
status_message_clear(c); |
status_message_clear(c); |
|
|
va_start(ap, fmt); |
va_start(ap, fmt); |
xvasprintf(&c->message_string, fmt, ap); |
xvasprintf(&c->message_string, fmt, ap); |
va_end(ap); |
va_end(ap); |
|
|
msg = xcalloc(1, sizeof *msg); |
server_client_add_message(c, "%s", c->message_string); |
msg->msg_time = time(NULL); |
|
msg->msg_num = c->message_next++; |
|
msg->msg = xstrdup(c->message_string); |
|
TAILQ_INSERT_TAIL(&c->message_log, msg, entry); |
|
|
|
TAILQ_FOREACH_SAFE(msg, &c->message_log, entry, msg1) { |
|
if (msg->msg_num + limit >= c->message_next) |
|
break; |
|
free(msg->msg); |
|
TAILQ_REMOVE(&c->message_log, msg, entry); |
|
free(msg); |
|
} |
|
|
|
delay = options_get_number(c->session->options, "display-time"); |
delay = options_get_number(c->session->options, "display-time"); |
if (delay > 0) { |
if (delay > 0) { |