From fbd4b5f6df8512fbc82af50d91ff61814ef84087 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Thu, 21 Feb 2013 11:45:22 +0100 Subject: [PATCH] libc_terminal: Support for dup2 and TIOCGWINSZ --- libports/src/lib/libc_terminal/plugin.cc | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/libports/src/lib/libc_terminal/plugin.cc b/libports/src/lib/libc_terminal/plugin.cc index 0c1817ea72..ffa2876ef4 100644 --- a/libports/src/lib/libc_terminal/plugin.cc +++ b/libports/src/lib/libc_terminal/plugin.cc @@ -142,8 +142,7 @@ namespace { /** * Constructor */ - Plugin() - { } + Plugin() { } bool supports_stat(const char *path) { @@ -298,7 +297,7 @@ namespace { } } - int ioctl(Libc::File_descriptor *, int request, char *argp) + int ioctl(Libc::File_descriptor *fd, int request, char *argp) { struct termios *t = (struct termios*)argp; switch (request) { @@ -310,9 +309,23 @@ namespace { return 0; case TIOCSETAF: return 0; + case TIOCGWINSZ: + { + ::winsize *winsize = (::winsize *)argp; + Terminal::Session::Size terminal_size = context(fd)->size(); + winsize->ws_row = terminal_size.lines(); + winsize->ws_col = terminal_size.columns(); + return 0; + } } return -1; } + + int dup2(Libc::File_descriptor *fd, Libc::File_descriptor *new_fd) + { + new_fd->context = fd->context; + return new_fd->libc_fd; + } }; } /* unnamed namespace */