version 1.149, 2013/03/21 18:44:47 |
version 1.150, 2013/03/22 10:29:31 |
|
|
if (tcsetattr(tty->fd, TCSANOW, &tty->tio) == -1) |
if (tcsetattr(tty->fd, TCSANOW, &tty->tio) == -1) |
return; |
return; |
|
|
setblocking(tty->fd, 1); |
|
|
|
tty_raw(tty, tty_term_string2(tty->term, TTYC_CSR, 0, ws.ws_row - 1)); |
tty_raw(tty, tty_term_string2(tty->term, TTYC_CSR, 0, ws.ws_row - 1)); |
if (tty_use_acs(tty)) |
if (tty_use_acs(tty)) |
tty_raw(tty, tty_term_string(tty->term, TTYC_RMACS)); |
tty_raw(tty, tty_term_string(tty->term, TTYC_RMACS)); |
|
|
tty_raw(tty, "\033[?1000l"); |
tty_raw(tty, "\033[?1000l"); |
|
|
tty_raw(tty, tty_term_string(tty->term, TTYC_RMCUP)); |
tty_raw(tty, tty_term_string(tty->term, TTYC_RMCUP)); |
|
|
|
setblocking(tty->fd, 1); |
} |
} |
|
|
void |
void |
|
|
void |
void |
tty_raw(struct tty *tty, const char *s) |
tty_raw(struct tty *tty, const char *s) |
{ |
{ |
write(tty->fd, s, strlen(s)); |
ssize_t n, slen; |
|
u_int i; |
|
|
|
slen = strlen(s); |
|
for (i = 0; i < 5; i++) { |
|
n = write(tty->fd, s, slen); |
|
if (n >= 0) { |
|
s += n; |
|
slen -= n; |
|
if (slen == 0) |
|
break; |
|
} else if (n == -1 && errno != EAGAIN) |
|
break; |
|
usleep(100); |
|
} |
} |
} |
|
|
void |
void |