diff options
Diffstat (limited to 'goldfishterm/simple.cc')
-rw-r--r-- | goldfishterm/simple.cc | 34 |
1 files changed, 7 insertions, 27 deletions
diff --git a/goldfishterm/simple.cc b/goldfishterm/simple.cc index 88ceef0..0afa08f 100644 --- a/goldfishterm/simple.cc +++ b/goldfishterm/simple.cc @@ -14,9 +14,7 @@ #include "goldfishterm/simple.h" -#include <stdlib.h> #include <termios.h> -#include <unistd.h> #include <stdexcept> #include <vector> @@ -33,22 +31,6 @@ namespace { using ::goldfishterm_internal::InterpretStringCapability; using ::goldfishterm_internal::InterpretStringCapabilityInput; -termios StdoutTermios() { - termios tty; - if (tcgetattr(STDOUT_FILENO, &tty) < 0) { - throw std::system_error(errno, std::system_category(), "tcgetattr"); - } - return tty; -} - -absl::string_view TerminalNameFromEnvironment() { - const char* name = getenv("TERM"); - if (name == nullptr) { - throw std::runtime_error("TERM unset"); - } - return name; -} - StringCapability CursorVisibilityCapability(CursorVisibility v) { switch (v) { case CursorVisibility::kInvisible: @@ -64,14 +46,12 @@ StringCapability CursorVisibilityCapability(CursorVisibility v) { } // namespace -SimpleTerminalOutput::SimpleTerminalOutput() - : SimpleTerminalOutput(StdoutTermios()) {} - -SimpleTerminalOutput::SimpleTerminalOutput(const termios& tty) - : terminfo_( - TerminfoEntry::FromSystemDatabase(TerminalNameFromEnvironment())) { - baud_ = cfgetospeed(&tty); -} +SimpleTerminalOutput::SimpleTerminalOutput(absl::string_view terminal_name, + const termios& tty, + std::ostream& out) + : terminfo_(TerminfoEntry::FromSystemDatabase(terminal_name)), + baud_(cfgetospeed(&tty)), + out_(out) {} void SimpleTerminalOutput::SetCursorVisibility(CursorVisibility v) { return Emit(CursorVisibilityCapability(v)); @@ -86,7 +66,7 @@ void SimpleTerminalOutput::Emit( std::move(parameters), /*baud=*/baud_, /*lines_affected=*/1)) .terms, - std::cout); + out_); } } // namespace goldfishterm |