aboutsummaryrefslogtreecommitdiff
path: root/goldfishterm/simple.cc
diff options
context:
space:
mode:
Diffstat (limited to 'goldfishterm/simple.cc')
-rw-r--r--goldfishterm/simple.cc34
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