diff --git a/csi.c b/csi.c index a7892e9a..a5e19290 100644 --- a/csi.c +++ b/csi.c @@ -325,7 +325,7 @@ csi_dispatch(struct terminal *term, uint8_t final) case 0: { switch (final) { case 'c': - vt_to_slave(term, "\033[?6c", 5); + term_to_slave(term, "\033[?6c", 5); break; case 'd': { @@ -690,7 +690,7 @@ csi_dispatch(struct terminal *term, uint8_t final) snprintf(reply, sizeof(reply), "\x1b[%d;%dR", term->cursor.row + 1, term->cursor.col + 1); - vt_to_slave(term, reply, strlen(reply)); + term_to_slave(term, reply, strlen(reply)); break; } @@ -910,7 +910,7 @@ csi_dispatch(struct terminal *term, uint8_t final) */ char reply[32]; snprintf(reply, sizeof(reply), "\033[?%u;2$y", param); - vt_to_slave(term, reply, strlen(reply)); + term_to_slave(term, reply, strlen(reply)); break; } @@ -965,7 +965,7 @@ csi_dispatch(struct terminal *term, uint8_t final) break; } - vt_to_slave(term, "\033[>41;347;0c", 12); + term_to_slave(term, "\033[>41;347;0c", 12); break; } diff --git a/input.c b/input.c index bee51244..40cfa613 100644 --- a/input.c +++ b/input.c @@ -258,7 +258,7 @@ keyboard_key(void *data, struct wl_keyboard *wl_keyboard, uint32_t serial, info->keypad_keys_mode != term->keypad_keys_mode) continue; - vt_to_slave(term, info->seq, strlen(info->seq)); + term_to_slave(term, info->seq, strlen(info->seq)); found_map = true; term_reset_view(term); @@ -314,14 +314,14 @@ keyboard_key(void *data, struct wl_keyboard *wl_keyboard, uint32_t serial, char reply[1024]; snprintf(reply, sizeof(reply), "\x1b[27;%d;%d~", modify_param, sym); - vt_to_slave(term, reply, strlen(reply)); + term_to_slave(term, reply, strlen(reply)); } else { if (effective_mods & alt) - vt_to_slave(term, "\x1b", 1); + term_to_slave(term, "\x1b", 1); - vt_to_slave(term, buf, count); + term_to_slave(term, buf, count); } term_reset_view(term); diff --git a/osc.c b/osc.c index e860edcd..6b86be03 100644 --- a/osc.c +++ b/osc.c @@ -78,7 +78,7 @@ from_clipboard_cb(const char *text, size_t size, void *user) assert(chunk != NULL); assert(strlen(chunk) == 4); - vt_to_slave(term, chunk, 4); + term_to_slave(term, chunk, 4); free(chunk); ctx->idx = 0; @@ -98,7 +98,7 @@ from_clipboard_cb(const char *text, size_t size, void *user) char *chunk = base64_encode((const uint8_t *)t, left / 3 * 3); assert(chunk != NULL); assert(strlen(chunk) % 4 == 0); - vt_to_slave(term, chunk, strlen(chunk)); + term_to_slave(term, chunk, strlen(chunk)); free(chunk); } @@ -120,9 +120,9 @@ osc_from_clipboard(struct terminal *term, const char *source) if (src == 0) return; - vt_to_slave(term, "\033]52;", 5); - vt_to_slave(term, &src, 1); - vt_to_slave(term, ";", 1); + term_to_slave(term, "\033]52;", 5); + term_to_slave(term, &src, 1); + term_to_slave(term, ";", 1); struct clip_context ctx = { .term = term, @@ -141,10 +141,10 @@ osc_from_clipboard(struct terminal *term, const char *source) if (ctx.idx > 0) { char res[4]; base64_encode_final(ctx.buf, ctx.idx, res); - vt_to_slave(term, res, 4); + term_to_slave(term, res, 4); } - vt_to_slave(term, "\033\\", 2); + term_to_slave(term, "\033\\", 2); } static void @@ -343,7 +343,7 @@ osc_dispatch(struct terminal *term) char reply[32]; snprintf(reply, sizeof(reply), "\033]4;%u;rgb:%02x/%02x/%02x\033\\", idx, r, g, b); - vt_to_slave(term, reply, strlen(reply)); + term_to_slave(term, reply, strlen(reply)); break; } @@ -377,7 +377,7 @@ osc_dispatch(struct terminal *term) reply, sizeof(reply), "\033]%u;rgb:%02x/%02x/%02x\033\\", param, r, g, b); - vt_to_slave(term, reply, strlen(reply)); + term_to_slave(term, reply, strlen(reply)); break; } diff --git a/selection.c b/selection.c index d2ed7354..6490fb06 100644 --- a/selection.c +++ b/selection.c @@ -533,7 +533,7 @@ static void from_clipboard_cb(const char *data, size_t size, void *user) { struct terminal *term = user; - vt_to_slave(term, data, size); + term_to_slave(term, data, size); } void @@ -544,12 +544,12 @@ selection_from_clipboard(struct terminal *term, uint32_t serial) return; if (term->bracketed_paste) - vt_to_slave(term, "\033[200~", 6); + term_to_slave(term, "\033[200~", 6); text_from_clipboard(term, serial, &from_clipboard_cb, term); if (term->bracketed_paste) - vt_to_slave(term, "\033[201~", 6); + term_to_slave(term, "\033[201~", 6); } bool @@ -675,12 +675,12 @@ selection_from_primary(struct terminal *term) return; if (term->bracketed_paste) - vt_to_slave(term, "\033[200~", 6); + term_to_slave(term, "\033[200~", 6); text_from_primary(term, &from_clipboard_cb, term); if (term->bracketed_paste) - vt_to_slave(term, "\033[201~", 6); + term_to_slave(term, "\033[201~", 6); } #if 0 diff --git a/terminal.c b/terminal.c index 2a362b70..98a5bcee 100644 --- a/terminal.c +++ b/terminal.c @@ -768,6 +768,26 @@ term_reset(struct terminal *term, bool hard) term_damage_all(term); } +bool +term_to_slave(struct terminal *term, const void *_data, size_t len) +{ + const uint8_t *data = _data; + size_t left = len; + + while (left > 0) { + ssize_t ret = write(term->ptmx, data, left); + if (ret < 0) { + LOG_ERRNO("failed to write to client"); + return false; + } + + data += ret; + left -= ret; + } + + return true; +} + void term_damage_rows(struct terminal *term, int start, int end) { @@ -1056,7 +1076,7 @@ term_focus_in(struct terminal *term) { if (!term->focus_events) return; - vt_to_slave(term, "\033[I", 3); + term_to_slave(term, "\033[I", 3); } void @@ -1064,7 +1084,7 @@ term_focus_out(struct terminal *term) { if (!term->focus_events) return; - vt_to_slave(term, "\033[O", 3); + term_to_slave(term, "\033[O", 3); } static int @@ -1138,7 +1158,7 @@ report_mouse_click(struct terminal *term, int encoded_button, int row, int col, return; } - vt_to_slave(term, response, strlen(response)); + term_to_slave(term, response, strlen(response)); } static void diff --git a/terminal.h b/terminal.h index 11571519..22eff5a9 100644 --- a/terminal.h +++ b/terminal.h @@ -303,6 +303,7 @@ bool term_shutdown(struct terminal *term); int term_destroy(struct terminal *term); void term_reset(struct terminal *term, bool hard); +bool term_to_slave(struct terminal *term, const void *data, size_t len); void term_damage_rows(struct terminal *term, int start, int end); void term_damage_rows_in_view(struct terminal *term, int start, int end); diff --git a/vt.c b/vt.c index a2ac1faf..41524857 100644 --- a/vt.c +++ b/vt.c @@ -1015,23 +1015,3 @@ vt_from_slave(struct terminal *term, const uint8_t *data, size_t len) } } } - -bool -vt_to_slave(struct terminal *term, const void *_data, size_t len) -{ - const uint8_t *data = _data; - size_t left = len; - - while (left > 0) { - ssize_t ret = write(term->ptmx, data, left); - if (ret < 0) { - LOG_ERRNO("failed to write to client"); - return false; - } - - data += ret; - left -= ret; - } - - return true; -} diff --git a/vt.h b/vt.h index 302dc6dc..0e85a75b 100644 --- a/vt.h +++ b/vt.h @@ -6,7 +6,6 @@ #include "terminal.h" void vt_from_slave(struct terminal *term, const uint8_t *data, size_t len); -bool vt_to_slave(struct terminal *term, const void *data, size_t len); static inline int vt_param_get(const struct terminal *term, size_t idx, int default_value)