From 2f6b8d232f1dd3cc919d905e626a204a922ce60a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Mon, 15 Jul 2019 15:42:00 +0200 Subject: [PATCH] vt: add vt_to_slave() --- vt.c | 21 +++++++++++++++++++++ vt.h | 1 + 2 files changed, 22 insertions(+) diff --git a/vt.c b/vt.c index 4d04f4ba..92caea3f 100644 --- a/vt.c +++ b/vt.c @@ -2,6 +2,7 @@ #include #include +#include #include #define LOG_MODULE "vt" @@ -973,3 +974,23 @@ 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 0e85a75b..302dc6dc 100644 --- a/vt.h +++ b/vt.h @@ -6,6 +6,7 @@ #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)