diff options
Diffstat (limited to 'window.c')
-rw-r--r-- | window.c | 31 |
1 files changed, 12 insertions, 19 deletions
@@ -586,9 +586,19 @@ window_pane_spawn(struct window_pane *wp, const char *cmd, const char *shell, void window_pane_read_callback(unused struct bufferevent *bufev, void *data) { - struct window_pane *wp = data; + struct window_pane *wp = data; + char *new_data; + size_t new_size; + + new_size = EVBUFFER_LENGTH(wp->event->input) - wp->pipe_off; + if (wp->pipe_fd != -1 && new_size > 0) { + new_data = EVBUFFER_DATA(wp->event->input); + bufferevent_write(wp->pipe_event, new_data, new_size); + } - window_pane_parse(wp); + input_parse(wp); + + wp->pipe_off = EVBUFFER_LENGTH(wp->event->input); } /* ARGSUSED */ @@ -727,23 +737,6 @@ window_pane_reset_mode(struct window_pane *wp) } void -window_pane_parse(struct window_pane *wp) -{ - char *data; - size_t new_size; - - new_size = EVBUFFER_LENGTH(wp->event->input) - wp->pipe_off; - if (wp->pipe_fd != -1 && new_size > 0) { - data = EVBUFFER_DATA(wp->event->input); - bufferevent_write(wp->pipe_event, data, new_size); - } - - input_parse(wp); - - wp->pipe_off = EVBUFFER_LENGTH(wp->event->input); -} - -void window_pane_key(struct window_pane *wp, struct client *c, int key) { struct window_pane *wp2; |