TCSASOFT
while (tcsetattr(input, TCSAFLUSH|TCSASOFT, &oterm) == -1 &&
(void)tcsetattr(input, TCSAFLUSH|TCSASOFT, &term);
if (opt & TCSASOFT) {
switch (opt & ~TCSASOFT) {
(void) tcsetattr(fileno(stdin), TCSAFLUSH|TCSASOFT, &term);
(void) tcsetattr(fileno(stdin), TCSAFLUSH|TCSASOFT, &term);
(void) tcsetattr(tty, TCSASOFT | TCSADRAIN, &s);
if (tcsetattr(0, TCSASOFT | TCSADRAIN, &oldtty) == -1) {
if (tcsetattr(0, TCSASOFT | TCSADRAIN, &newtty) == -1) {
TCSASOFT | TCSADRAIN, &clp->orig);
(void)tcsetattr(STDIN_FILENO, TCSASOFT | TCSADRAIN, &t);
(void)tcsetattr(STDIN_FILENO, TCSADRAIN | TCSASOFT, &clp->orig);
TCSASOFT | TCSADRAIN, &term2);
TCSASOFT | TCSADRAIN, &clp->vi_enter);
(void)tcsetattr(STDIN_FILENO, TCSASOFT | TCSADRAIN, &term1);
(void)tcsetattr(STDIN_FILENO, TCSADRAIN | TCSASOFT, &clp->orig);
if (tcsetattr(STDIN_FILENO, TCSASOFT | TCSADRAIN, &clp->vi_enter)) {
fast: if (tcsetattr(STDIN_FILENO, TCSADRAIN | TCSASOFT, &clp->ex_enter)) {