diff options
author | 2019-05-07 10:25:15 +0000 | |
---|---|---|
committer | 2019-05-07 10:25:15 +0000 | |
commit | fb601f47628f53c9efd501afe203098d66389be9 (patch) | |
tree | bcfd7a4a2bba28a5e9f9cfb8f5aa5ee72ae7d688 /usr.bin/tmux/input.c | |
parent | Add support for std::filesystem. We're already installing the (diff) | |
download | wireguard-openbsd-fb601f47628f53c9efd501afe203098d66389be9.tar.xz wireguard-openbsd-fb601f47628f53c9efd501afe203098d66389be9.zip |
Do not use evbuffer_add_buffer because it is destructive and doesn't
work in newer libevent.
Diffstat (limited to 'usr.bin/tmux/input.c')
-rw-r--r-- | usr.bin/tmux/input.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/usr.bin/tmux/input.c b/usr.bin/tmux/input.c index 27123b74a49..b831734b01e 100644 --- a/usr.bin/tmux/input.c +++ b/usr.bin/tmux/input.c @@ -1,4 +1,4 @@ -/* $OpenBSD: input.c,v 1.151 2019/05/03 20:44:24 nicm Exp $ */ +/* $OpenBSD: input.c,v 1.152 2019/05/07 10:25:15 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com> @@ -874,18 +874,27 @@ input_set_state(struct window_pane *wp, const struct input_transition *itr) void input_parse(struct window_pane *wp) { + struct evbuffer *evb = wp->event->input; + + input_parse_buffer(wp, EVBUFFER_DATA(evb), EVBUFFER_LENGTH(evb)); + evbuffer_drain(evb, EVBUFFER_LENGTH(evb)); +} + +/* Parse given input. */ +void +input_parse_buffer(struct window_pane *wp, u_char *buf, size_t len) +{ struct input_ctx *ictx = wp->ictx; struct screen_write_ctx *sctx = &ictx->ctx; const struct input_transition *itr; - struct evbuffer *evb = wp->event->input; - u_char *buf; - size_t len, off; + size_t off = 0; - if (EVBUFFER_LENGTH(evb) == 0) + if (len == 0) return; window_update_activity(wp->window); wp->flags |= PANE_CHANGED; + notify_input(wp, buf, len); /* * Open the screen. Use NULL wp if there is a mode set as don't want to @@ -897,12 +906,6 @@ input_parse(struct window_pane *wp) screen_write_start(sctx, NULL, &wp->base); ictx->wp = wp; - buf = EVBUFFER_DATA(evb); - len = EVBUFFER_LENGTH(evb); - off = 0; - - notify_input(wp, evb); - log_debug("%s: %%%u %s, %zu bytes: %.*s", __func__, wp->id, ictx->state->name, len, (int)len, buf); @@ -950,8 +953,6 @@ input_parse(struct window_pane *wp) /* Close the screen. */ screen_write_stop(sctx); - - evbuffer_drain(evb, len); } /* Split the parameter list (if any). */ |