summaryrefslogtreecommitdiffstats
path: root/usr.bin/tmux/input.c
diff options
context:
space:
mode:
authornicm <nicm@openbsd.org>2019-05-07 10:25:15 +0000
committernicm <nicm@openbsd.org>2019-05-07 10:25:15 +0000
commitfb601f47628f53c9efd501afe203098d66389be9 (patch)
treebcfd7a4a2bba28a5e9f9cfb8f5aa5ee72ae7d688 /usr.bin/tmux/input.c
parentAdd support for std::filesystem. We're already installing the (diff)
downloadwireguard-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.c27
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). */