summaryrefslogtreecommitdiffstats
path: root/window.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2019-12-12 14:33:47 +0000
committerThomas Adam <thomas@xteddy.org>2019-12-12 14:33:47 +0000
commit7922f4ee7bd4c18509c6774971fd007a4c5a10e3 (patch)
treecccfdd336c64b1b652a4b2333fa2efef0ba5edb3 /window.c
parent0d99519c3d3522e9281f8e0726e3d71fcf3e57f3 (diff)
parent5134666702ce972390f39e34bed9b60fe566263a (diff)
Merge branch 'obsd-master'
Diffstat (limited to 'window.c')
-rw-r--r--window.c27
1 files changed, 13 insertions, 14 deletions
diff --git a/window.c b/window.c
index 242ad48d..96632058 100644
--- a/window.c
+++ b/window.c
@@ -1608,31 +1608,28 @@ winlink_shuffle_up(struct session *s, struct winlink *wl)
}
static void
-window_pane_input_callback(struct client *c, int closed, void *data)
+window_pane_input_callback(struct client *c, __unused const char *path,
+ int error, int closed, struct evbuffer *buffer, void *data)
{
struct window_pane_input_data *cdata = data;
struct window_pane *wp;
- struct evbuffer *evb = c->stdin_data;
- u_char *buf = EVBUFFER_DATA(evb);
- size_t len = EVBUFFER_LENGTH(evb);
+ u_char *buf = EVBUFFER_DATA(buffer);
+ size_t len = EVBUFFER_LENGTH(buffer);
wp = window_pane_find_by_id(cdata->wp);
- if (wp == NULL || closed || c->flags & CLIENT_DEAD) {
+ if (wp == NULL || closed || error != 0 || c->flags & CLIENT_DEAD) {
if (wp == NULL)
c->flags |= CLIENT_EXIT;
- evbuffer_drain(evb, len);
-
- c->stdin_callback = NULL;
- server_client_unref(c);
+ evbuffer_drain(buffer, len);
cmdq_continue(cdata->item);
- free(cdata);
+ server_client_unref(c);
+ free(cdata);
return;
}
-
input_parse_buffer(wp, buf, len);
- evbuffer_drain(evb, len);
+ evbuffer_drain(buffer, len);
}
int
@@ -1651,6 +1648,8 @@ window_pane_start_input(struct window_pane *wp, struct cmdq_item *item,
cdata->item = item;
cdata->wp = wp->id;
- return (server_set_stdin_callback(c, window_pane_input_callback, cdata,
- cause));
+ c->references++;
+ file_read(c, "-", window_pane_input_callback, cdata);
+
+ return (0);
}