diff options
Diffstat (limited to 'bsp/libwrap/sys/write.c')
-rw-r--r-- | bsp/libwrap/sys/write.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/bsp/libwrap/sys/write.c b/bsp/libwrap/sys/write.c new file mode 100644 index 0000000..d00eb17 --- /dev/null +++ b/bsp/libwrap/sys/write.c @@ -0,0 +1,29 @@ +/* See LICENSE of license details. */ + +#include <stdint.h> +#include <errno.h> +#include <unistd.h> +#include <sys/types.h> + +#include "platform.h" +#include "stub.h" + +ssize_t __wrap_write(int fd, const void* ptr, size_t len) +{ + const uint8_t * current = (const char *)ptr; + + if (isatty(fd)) { + for (size_t jj = 0; jj < len; jj++) { + while (UART0_REG(UART_REG_TXFIFO) & 0x80000000) ; + UART0_REG(UART_REG_TXFIFO) = current[jj]; + + if (current[jj] == '\n') { + while (UART0_REG(UART_REG_TXFIFO) & 0x80000000) ; + UART0_REG(UART_REG_TXFIFO) = '\r'; + } + } + return len; + } + + return _stub(EBADF); +} |