version 1.245, 2019/11/28 09:45:16 |
version 1.246, 2019/12/12 11:39:56 |
|
|
} |
} |
|
|
static void |
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_input_data *cdata = data; |
struct window_pane *wp; |
struct window_pane *wp; |
struct evbuffer *evb = c->stdin_data; |
u_char *buf = EVBUFFER_DATA(buffer); |
u_char *buf = EVBUFFER_DATA(evb); |
size_t len = EVBUFFER_LENGTH(buffer); |
size_t len = EVBUFFER_LENGTH(evb); |
|
|
|
wp = window_pane_find_by_id(cdata->wp); |
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) |
if (wp == NULL) |
c->flags |= CLIENT_EXIT; |
c->flags |= CLIENT_EXIT; |
evbuffer_drain(evb, len); |
|
|
|
c->stdin_callback = NULL; |
evbuffer_drain(buffer, len); |
server_client_unref(c); |
|
|
|
cmdq_continue(cdata->item); |
cmdq_continue(cdata->item); |
free(cdata); |
|
|
|
|
server_client_unref(c); |
|
free(cdata); |
return; |
return; |
} |
} |
|
|
input_parse_buffer(wp, buf, len); |
input_parse_buffer(wp, buf, len); |
evbuffer_drain(evb, len); |
evbuffer_drain(buffer, len); |
} |
} |
|
|
int |
int |
|
|
cdata->item = item; |
cdata->item = item; |
cdata->wp = wp->id; |
cdata->wp = wp->id; |
|
|
return (server_set_stdin_callback(c, window_pane_input_callback, cdata, |
c->references++; |
cause)); |
file_read(c, "-", window_pane_input_callback, cdata); |
|
|
|
return (0); |
} |
} |