25#ifndef MYSQLHARNESS_TTY_INCLUDED
26#define MYSQLHARNESS_TTY_INCLUDED
28#include "harness_export.h"
40class HARNESS_EXPORT
Tty {
48 static fd_type fd_from_stream(std::ostream &os);
49 static fd_type fd_from_stream(std::istream &is);
55 }
catch (
const std::system_error &) {
70 }
catch (
const std::system_error &) {
82 static constexpr const size_t kEcho = ENABLE_ECHO_INPUT;
83 static constexpr const size_t kExtendedFlags = ENABLE_EXTENDED_FLAGS;
84 static constexpr const size_t kInsertMode = ENABLE_INSERT_MODE;
85 static constexpr const size_t kLineInput = ENABLE_LINE_INPUT;
86 static constexpr const size_t kMouseInput = ENABLE_MOUSE_INPUT;
87 static constexpr const size_t kProcessedInput = ENABLE_PROCESSED_INPUT;
88 static constexpr const size_t kQuickEditMode = ENABLE_QUICK_EDIT_MODE;
89 static constexpr const size_t kWindowInput = ENABLE_WINDOW_INPUT;
90#if VER_PRODUCTBUILD >= 10011
92 static constexpr const size_t kVirtualTerminalInput =
93 ENABLE_VIRTUAL_TERMINAL_INPUT;
98 static constexpr const size_t kProcessedOutput =
99 ENABLE_PROCESSED_OUTPUT;
100 static constexpr const size_t kWrapAtEolOutput =
101 ENABLE_WRAP_AT_EOL_OUTPUT;
102#if VER_PRODUCTBUILD >= 10011
104 static constexpr const size_t kVirtualTerminalProcessing =
105 ENABLE_VIRTUAL_TERMINAL_PROCESSING;
106 static constexpr const size_t kDisableNewlineAutoReturn =
107 DISABLE_NEWLINE_AUTO_RETURN;
108 static constexpr const size_t kLvbGridWorldwide =
109 ENABLE_LVB_GRID_WORLDWIDE;
118 static constexpr const size_t kGenerateSignal = ISIG;
119 static constexpr const size_t kCanonicalMode = ICANON;
122 static constexpr const size_t kConvertCase = XCASE;
124 static constexpr const size_t kEcho =
ECHO;
125 static constexpr const size_t kEchoWithErase = ECHOE;
126 static constexpr const size_t kEchoWithKill = ECHOK;
127 static constexpr const size_t kEchoWithNewline = ECHONL;
128 static constexpr const size_t kEchoWithControl = ECHOCTL;
129 static constexpr const size_t kEchoWithPrint = ECHOPRT;
130 static constexpr const size_t kEchoWithKillEares = ECHOKE;
132 static constexpr const size_t kOutputFlushed = FLUSHO;
133 static constexpr const size_t kNoFlush = NOFLSH;
134 static constexpr const size_t kToStop = TOSTOP;
135 static constexpr const size_t kPending = PENDIN;
136 static constexpr const size_t kExtendedInputProcessing = IEXTEN;
142 static constexpr const size_t kBaudSpeedMask = CBAUD;
146 static constexpr const size_t kBaudSpeedMaskExtra = CBAUDEX;
150 static constexpr const size_t kInputBaudSpeedMaskExtra = CIBAUDEX;
152 static constexpr const size_t kCharacterSizeMask = CSIZE;
153 static constexpr const size_t kTwoStopBits = CSTOPB;
154 static constexpr const size_t kEnableReceiver = CREAD;
155 static constexpr const size_t kParityCheckGenerator = PARENB;
156 static constexpr const size_t kParityOdd = PARODD;
157 static constexpr const size_t kHangupOnClose = HUPCL;
158 static constexpr const size_t kIgnoreControlLines = CLOCAL;
160 static constexpr const size_t kBlockOutputNonCurrentShellLayer = LOBLK;
164 static constexpr const size_t kInputSpeedMask = CIBAUD;
168 static constexpr const size_t kStickParity = CMSPAR;
172 static constexpr const size_t kEnableSoftFlowControl = CRTSXOFF;
174 static constexpr const size_t kEnableHardFlowControl = CRTSCTS;
178 static constexpr const size_t kOutputProcessing = OPOST;
179 static constexpr const size_t kMapNewlineCarriageReturn = ONLCR;
182 static constexpr const size_t kMapLowercaseUppercase = OLCUC;
184 static constexpr const size_t kMapCarriageReturnNewline = OCRNL;
185 static constexpr const size_t kNoOutputCarriageReturnOnColumnZero =
187 static constexpr const size_t kNoOutputCarriageReturn = ONLRET;
190 static constexpr const size_t kSendFillCharacter = OFILL;
194 static constexpr const size_t kFillCharacterIsDelete = OFDEL;
198 static constexpr const size_t kNewlineDelayMask = NLDLY;
202 static constexpr const size_t kCarriangeReturnDelayMask = CRDLY;
204 static constexpr const size_t kHorizontalTabDelayMask = TABDLY;
207 static constexpr const size_t kBackspaceDelayMask = BSDLY;
211 static constexpr const size_t kVerticalTabDelayMask = VTDLY;
215 static constexpr const size_t kFormfeedDelayMask = FFDLY;
220 static constexpr const size_t kIgnoreBreak = IGNBRK;
221 static constexpr const size_t kBreakInt = BRKINT;
222 static constexpr const size_t kIgnoreParityError = IGNPAR;
223 static constexpr const size_t kParityErrorMark = PARMRK;
224 static constexpr const size_t kInputParityChecking = INPCK;
225 static constexpr const size_t kStripCharacter = ISTRIP;
226 static constexpr const size_t kMapNewlineCarriageReturn = INLCR;
227 static constexpr const size_t kIgnoreCarriageReturn = IGNCR;
228 static constexpr const size_t kMapCarriageReturnNewline = ICRNL;
231 static constexpr const size_t kMapUppercaseLowercase = IUCLC;
233 static constexpr const size_t kStartStopOutputControl = IXON;
234 static constexpr const size_t kAnyCharacterRestartOutput = IXANY;
235 static constexpr const size_t kStartStopInputControl = IXOFF;
236 static constexpr const size_t kEchoBellOnInputLong = IMAXBEL;
239 static constexpr const size_t kInputIsUtf8 = IUTF8;
263 bool is_saved_{
false};
Tty(fd_type fd)
Definition: tty.h:51
Tty & operator=(const Tty &)=delete
fd_type fd_
Definition: tty.h:261
state_type state_
Definition: tty.h:262
int fd_type
Definition: tty.h:42
void restore_attrs()
Definition: tty.h:252
termios state_type
Definition: tty.h:46
~Tty()
restore the state of the Tty if we changed it.
Definition: tty.h:66
#define ECHO
Definition: lexyy.cc:1051
#define window_size
Definition: log_event.cc:157