25#ifndef MYSQLHARNESS_TTY_INCLUDED
26#define MYSQLHARNESS_TTY_INCLUDED
28#include "harness_export.h"
41class HARNESS_EXPORT
Tty {
49 static fd_type fd_from_stream(std::ostream &os);
50 static fd_type fd_from_stream(std::istream &is);
56 }
catch (
const std::system_error &) {
71 }
catch (
const std::system_error &) {
83 static constexpr const size_t kEcho = ENABLE_ECHO_INPUT;
84 static constexpr const size_t kExtendedFlags = ENABLE_EXTENDED_FLAGS;
85 static constexpr const size_t kInsertMode = ENABLE_INSERT_MODE;
86 static constexpr const size_t kLineInput = ENABLE_LINE_INPUT;
87 static constexpr const size_t kMouseInput = ENABLE_MOUSE_INPUT;
88 static constexpr const size_t kProcessedInput = ENABLE_PROCESSED_INPUT;
89 static constexpr const size_t kQuickEditMode = ENABLE_QUICK_EDIT_MODE;
90 static constexpr const size_t kWindowInput = ENABLE_WINDOW_INPUT;
91#if VER_PRODUCTBUILD >= 10011
93 static constexpr const size_t kVirtualTerminalInput =
94 ENABLE_VIRTUAL_TERMINAL_INPUT;
99 static constexpr const size_t kProcessedOutput =
100 ENABLE_PROCESSED_OUTPUT;
101 static constexpr const size_t kWrapAtEolOutput =
102 ENABLE_WRAP_AT_EOL_OUTPUT;
103#if VER_PRODUCTBUILD >= 10011
105 static constexpr const size_t kVirtualTerminalProcessing =
106 ENABLE_VIRTUAL_TERMINAL_PROCESSING;
107 static constexpr const size_t kDisableNewlineAutoReturn =
108 DISABLE_NEWLINE_AUTO_RETURN;
109 static constexpr const size_t kLvbGridWorldwide =
110 ENABLE_LVB_GRID_WORLDWIDE;
119 static constexpr const size_t kGenerateSignal = ISIG;
120 static constexpr const size_t kCanonicalMode = ICANON;
123 static constexpr const size_t kConvertCase = XCASE;
125 static constexpr const size_t kEcho =
ECHO;
126 static constexpr const size_t kEchoWithErase = ECHOE;
127 static constexpr const size_t kEchoWithKill = ECHOK;
128 static constexpr const size_t kEchoWithNewline = ECHONL;
129 static constexpr const size_t kEchoWithControl = ECHOCTL;
130 static constexpr const size_t kEchoWithPrint = ECHOPRT;
131 static constexpr const size_t kEchoWithKillEares = ECHOKE;
133 static constexpr const size_t kOutputFlushed = FLUSHO;
134 static constexpr const size_t kNoFlush = NOFLSH;
135 static constexpr const size_t kToStop = TOSTOP;
136 static constexpr const size_t kPending = PENDIN;
137 static constexpr const size_t kExtendedInputProcessing = IEXTEN;
143 static constexpr const size_t kBaudSpeedMask = CBAUD;
147 static constexpr const size_t kBaudSpeedMaskExtra = CBAUDEX;
151 static constexpr const size_t kInputBaudSpeedMaskExtra = CIBAUDEX;
153 static constexpr const size_t kCharacterSizeMask = CSIZE;
154 static constexpr const size_t kTwoStopBits = CSTOPB;
155 static constexpr const size_t kEnableReceiver = CREAD;
156 static constexpr const size_t kParityCheckGenerator = PARENB;
157 static constexpr const size_t kParityOdd = PARODD;
158 static constexpr const size_t kHangupOnClose = HUPCL;
159 static constexpr const size_t kIgnoreControlLines = CLOCAL;
161 static constexpr const size_t kBlockOutputNonCurrentShellLayer = LOBLK;
165 static constexpr const size_t kInputSpeedMask = CIBAUD;
169 static constexpr const size_t kStickParity = CMSPAR;
173 static constexpr const size_t kEnableSoftFlowControl = CRTSXOFF;
175 static constexpr const size_t kEnableHardFlowControl = CRTSCTS;
179 static constexpr const size_t kOutputProcessing = OPOST;
180 static constexpr const size_t kMapNewlineCarriageReturn = ONLCR;
183 static constexpr const size_t kMapLowercaseUppercase = OLCUC;
185 static constexpr const size_t kMapCarriageReturnNewline = OCRNL;
186 static constexpr const size_t kNoOutputCarriageReturnOnColumnZero =
188 static constexpr const size_t kNoOutputCarriageReturn = ONLRET;
191 static constexpr const size_t kSendFillCharacter = OFILL;
195 static constexpr const size_t kFillCharacterIsDelete = OFDEL;
199 static constexpr const size_t kNewlineDelayMask = NLDLY;
203 static constexpr const size_t kCarriangeReturnDelayMask = CRDLY;
205 static constexpr const size_t kHorizontalTabDelayMask = TABDLY;
208 static constexpr const size_t kBackspaceDelayMask = BSDLY;
212 static constexpr const size_t kVerticalTabDelayMask = VTDLY;
216 static constexpr const size_t kFormfeedDelayMask = FFDLY;
221 static constexpr const size_t kIgnoreBreak = IGNBRK;
222 static constexpr const size_t kBreakInt = BRKINT;
223 static constexpr const size_t kIgnoreParityError = IGNPAR;
224 static constexpr const size_t kParityErrorMark = PARMRK;
225 static constexpr const size_t kInputParityChecking = INPCK;
226 static constexpr const size_t kStripCharacter = ISTRIP;
227 static constexpr const size_t kMapNewlineCarriageReturn = INLCR;
228 static constexpr const size_t kIgnoreCarriageReturn = IGNCR;
229 static constexpr const size_t kMapCarriageReturnNewline = ICRNL;
232 static constexpr const size_t kMapUppercaseLowercase = IUCLC;
234 static constexpr const size_t kStartStopOutputControl = IXON;
235 static constexpr const size_t kAnyCharacterRestartOutput = IXANY;
236 static constexpr const size_t kStartStopInputControl = IXOFF;
237 static constexpr const size_t kEchoBellOnInputLong = IMAXBEL;
240 static constexpr const size_t kInputIsUtf8 = IUTF8;
264 bool is_saved_{
false};
Tty(fd_type fd)
Definition: tty.h:52
Tty & operator=(const Tty &)=delete
fd_type fd_
Definition: tty.h:262
state_type state_
Definition: tty.h:263
int fd_type
Definition: tty.h:43
void restore_attrs()
Definition: tty.h:253
termios state_type
Definition: tty.h:47
~Tty()
restore the state of the Tty if we changed it.
Definition: tty.h:67
#define ECHO
Definition: lexyy.cc:1051
#define window_size
Definition: log_event.cc:161