diff options
Diffstat (limited to 'src/user/lib/fwik/io/Term.cpp')
-rw-r--r-- | src/user/lib/fwik/io/Term.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/user/lib/fwik/io/Term.cpp b/src/user/lib/fwik/io/Term.cpp new file mode 100644 index 0000000..1c6db66 --- /dev/null +++ b/src/user/lib/fwik/io/Term.cpp @@ -0,0 +1,51 @@ +#include <IO/Term.h> + +Term::Term(const Node &n) : Node(n) { + _init(); +} + +Term::Term(FILE f) : Node(f) { + _init(); +} + +Term::Term(char* filename, int mode) : Node(filename, mode) { + _init(); +} + +void Term::_init() { + if (info.type & FT_TERMINAL) { + w = info.size >> 16; + h = info.size & 0xFFFF; + } else { + valid = false; + } + hist.str = 0; + hist.max = 12; +} + +Term::~Term() { + //TODO : free readline history +} + +void Term::print(char *s) { + libc::fprint(fd, s); +} + +void Term::printf(char* fmt, ...) { + va_list ap; + va_start(ap, fmt); + libc::vfprintf(fd, fmt, ap); + va_end(ap); +} + +void Term::vprintf(char* fmt, va_list ap) { + libc::vfprintf(fd, fmt, ap); +} + +char* Term::readln() { + return libc::freadln(fd); +} + +char *Term::readline() { + return libc::freadline(fd, &hist); +} |