-/* $OpenBSD: status.c,v 1.174 2018/01/01 11:03:54 nicm Exp $ */
+/* $OpenBSD: status.c,v 1.175 2018/02/05 08:21:54 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
struct session *s = c->session;
struct timeval tv;
- evtimer_del(&c->status_timer);
+ evtimer_del(&c->status.timer);
if (s == NULL)
return;
tv.tv_sec = options_get_number(s->options, "status-interval");
if (tv.tv_sec != 0)
- evtimer_add(&c->status_timer, &tv);
+ evtimer_add(&c->status.timer, &tv);
log_debug("client %p, status interval %d", c, (int)tv.tv_sec);
}
{
struct session *s = c->session;
- if (event_initialized(&c->status_timer))
- evtimer_del(&c->status_timer);
+ if (event_initialized(&c->status.timer))
+ evtimer_del(&c->status.timer);
else
- evtimer_set(&c->status_timer, status_timer_callback, c);
+ evtimer_set(&c->status.timer, status_timer_callback, c);
if (s != NULL && options_get_number(s->options, "status"))
status_timer_callback(-1, 0, c);
int larrow, rarrow;
/* Delete the saved status line, if any. */
- if (c->old_status != NULL) {
- screen_free(c->old_status);
- free(c->old_status);
- c->old_status = NULL;
+ if (c->status.old_status != NULL) {
+ screen_free(c->status.old_status);
+ free(c->status.old_status);
+ c->status.old_status = NULL;
}
/* No status line? */
style_apply(&stdgc, s->options, "status-style");
/* Create the target screen. */
- memcpy(&old_status, &c->status, sizeof old_status);
- screen_init(&c->status, c->tty.sx, lines, 0);
- screen_write_start(&ctx, NULL, &c->status);
+ memcpy(&old_status, &c->status.status, sizeof old_status);
+ screen_init(&c->status.status, c->tty.sx, lines, 0);
+ screen_write_start(&ctx, NULL, &c->status.status);
for (offset = 0; offset < lines * c->tty.sx; offset++)
screen_write_putc(&ctx, &stdgc, ' ');
screen_write_stop(&ctx);
draw:
/* Begin drawing. */
- screen_write_start(&ctx, NULL, &c->status);
+ screen_write_start(&ctx, NULL, &c->status.status);
/* Draw the left string and arrow. */
screen_write_cursormove(&ctx, 0, 0);
free(left);
free(right);
- if (grid_compare(c->status.grid, old_status.grid) == 0) {
+ if (grid_compare(c->status.status.grid, old_status.grid) == 0) {
screen_free(&old_status);
return (0);
}
status_message_clear(c);
- if (c->old_status == NULL) {
- c->old_status = xmalloc(sizeof *c->old_status);
- memcpy(c->old_status, &c->status, sizeof *c->old_status);
- screen_init(&c->status, c->tty.sx, 1, 0);
+ if (c->status.old_status == NULL) {
+ c->status.old_status = xmalloc(sizeof *c->status.old_status);
+ memcpy(c->status.old_status, &c->status.status,
+ sizeof *c->status.old_status);
+ screen_init(&c->status.status, c->tty.sx, 1, 0);
}
va_start(ap, fmt);
c->tty.flags &= ~(TTY_NOCURSOR|TTY_FREEZE);
c->flags |= CLIENT_REDRAW; /* screen was frozen and may have changed */
- screen_reinit(&c->status);
+ screen_reinit(&c->status.status);
}
/* Clear status line message after timer expires. */
if (c->tty.sx == 0 || c->tty.sy == 0)
return (0);
- memcpy(&old_status, &c->status, sizeof old_status);
+ memcpy(&old_status, &c->status.status, sizeof old_status);
lines = status_line_size(c->session);
if (lines <= 1) {
lines = 1;
- screen_init(&c->status, c->tty.sx, 1, 0);
+ screen_init(&c->status.status, c->tty.sx, 1, 0);
} else
- screen_init(&c->status, c->tty.sx, lines, 0);
+ screen_init(&c->status.status, c->tty.sx, lines, 0);
len = screen_write_strlen("%s", c->message_string);
if (len > c->tty.sx)
style_apply(&gc, s->options, "message-style");
- screen_write_start(&ctx, NULL, &c->status);
+ screen_write_start(&ctx, NULL, &c->status.status);
screen_write_cursormove(&ctx, 0, 0);
for (offset = 0; offset < lines * c->tty.sx; offset++)
screen_write_putc(&ctx, &gc, ' ');
screen_write_nputs(&ctx, len, &gc, "%s", c->message_string);
screen_write_stop(&ctx);
- if (grid_compare(c->status.grid, old_status.grid) == 0) {
+ if (grid_compare(c->status.status.grid, old_status.grid) == 0) {
screen_free(&old_status);
return (0);
}
status_message_clear(c);
status_prompt_clear(c);
- if (c->old_status == NULL) {
- c->old_status = xmalloc(sizeof *c->old_status);
- memcpy(c->old_status, &c->status, sizeof *c->old_status);
- screen_init(&c->status, c->tty.sx, 1, 0);
+ if (c->status.old_status == NULL) {
+ c->status.old_status = xmalloc(sizeof *c->status.old_status);
+ memcpy(c->status.old_status, &c->status.status,
+ sizeof *c->status.old_status);
+ screen_init(&c->status.status, c->tty.sx, 1, 0);
}
c->prompt_string = format_expand_time(ft, msg, t);
c->tty.flags &= ~(TTY_NOCURSOR|TTY_FREEZE);
c->flags |= CLIENT_REDRAW; /* screen was frozen and may have changed */
- screen_reinit(&c->status);
+ screen_reinit(&c->status.status);
}
/* Update status line prompt with a new prompt string. */
if (c->tty.sx == 0 || c->tty.sy == 0)
return (0);
- memcpy(&old_status, &c->status, sizeof old_status);
+ memcpy(&old_status, &c->status.status, sizeof old_status);
lines = status_line_size(c->session);
if (lines <= 1) {
lines = 1;
- screen_init(&c->status, c->tty.sx, 1, 0);
+ screen_init(&c->status.status, c->tty.sx, 1, 0);
} else
- screen_init(&c->status, c->tty.sx, lines, 0);
+ screen_init(&c->status.status, c->tty.sx, lines, 0);
len = screen_write_strlen("%s", c->prompt_string);
if (len > c->tty.sx)
if (start > c->tty.sx)
start = c->tty.sx;
- screen_write_start(&ctx, NULL, &c->status);
+ screen_write_start(&ctx, NULL, &c->status.status);
screen_write_cursormove(&ctx, 0, 0);
for (offset = 0; offset < lines * c->tty.sx; offset++)
screen_write_putc(&ctx, &gc, ' ');
screen_write_cell(&ctx, &cursorgc);
}
}
- if (c->status.cx < screen_size_x(&c->status) && c->prompt_index >= i)
+ if (c->status.status.cx < screen_size_x(&c->status.status) &&
+ c->prompt_index >= i)
screen_write_putc(&ctx, &cursorgc, ' ');
finished:
screen_write_stop(&ctx);
- if (grid_compare(c->status.grid, old_status.grid) == 0) {
+ if (grid_compare(c->status.status.grid, old_status.grid) == 0) {
screen_free(&old_status);
return (0);
}