@ -784,12 +784,15 @@ ttyread(void)
}
}
void
void
ttywrite ( const char * s , size_t n )
ttywrite ( const char * s , size_t n , int may_echo )
{
{
fd_set wfd , rfd ;
fd_set wfd , rfd ;
ssize_t r ;
ssize_t r ;
size_t lim = 256 ;
size_t lim = 256 ;
if ( may_echo & & IS_SET ( MODE_ECHO ) )
twrite ( s , n , 1 ) ;
/*
/*
* Remember that we are using a pty , which might be a modem line .
* Remember that we are using a pty , which might be a modem line .
* Writing too much will clog the line . That ' s why we are doing this
* Writing too much will clog the line . That ' s why we are doing this
@ -840,14 +843,6 @@ write_error:
die ( " write error on tty: %s \n " , strerror ( errno ) ) ;
die ( " write error on tty: %s \n " , strerror ( errno ) ) ;
}
}
void
ttysend ( char * s , size_t n )
{
ttywrite ( s , n ) ;
if ( IS_SET ( MODE_ECHO ) )
twrite ( s , n , 1 ) ;
}
void
void
ttyresize ( int tw , int th )
ttyresize ( int tw , int th )
{
{
@ -1570,7 +1565,7 @@ csihandle(void)
break ;
break ;
case ' c ' : /* DA -- Device Attributes */
case ' c ' : /* DA -- Device Attributes */
if ( csiescseq . arg [ 0 ] = = 0 )
if ( csiescseq . arg [ 0 ] = = 0 )
ttywrite ( vtiden , strlen ( vtiden ) ) ;
ttywrite ( vtiden , strlen ( vtiden ) , 0 ) ;
break ;
break ;
case ' C ' : /* CUF -- Cursor <n> Forward */
case ' C ' : /* CUF -- Cursor <n> Forward */
case ' a ' : /* HPR -- Cursor <n> Forward */
case ' a ' : /* HPR -- Cursor <n> Forward */
@ -1698,7 +1693,7 @@ csihandle(void)
if ( csiescseq . arg [ 0 ] = = 6 ) {
if ( csiescseq . arg [ 0 ] = = 6 ) {
len = snprintf ( buf , sizeof ( buf ) , " \033 [%i;%iR " ,
len = snprintf ( buf , sizeof ( buf ) , " \033 [%i;%iR " ,
term . c . y + 1 , term . c . x + 1 ) ;
term . c . y + 1 , term . c . x + 1 ) ;
ttywrite ( buf , len ) ;
ttywrite ( buf , len , 0 ) ;
}
}
break ;
break ;
case ' r ' : /* DECSTBM -- Set Scrolling Region */
case ' r ' : /* DECSTBM -- Set Scrolling Region */
@ -1916,7 +1911,7 @@ iso14755(const Arg *arg)
( * e ! = ' \n ' & & * e ! = ' \0 ' ) )
( * e ! = ' \n ' & & * e ! = ' \0 ' ) )
return ;
return ;
ttysend ( uc , utf8encode ( utf32 , uc ) ) ;
ttywrite ( uc , utf8encode ( utf32 , uc ) , 1 ) ;
}
}
void
void
@ -2129,7 +2124,7 @@ tcontrolcode(uchar ascii)
case 0x99 : /* TODO: SGCI */
case 0x99 : /* TODO: SGCI */
break ;
break ;
case 0x9a : /* DECID -- Identify Terminal */
case 0x9a : /* DECID -- Identify Terminal */
ttywrite ( vtiden , strlen ( vtiden ) ) ;
ttywrite ( vtiden , strlen ( vtiden ) , 0 ) ;
break ;
break ;
case 0x9b : /* TODO: CSI */
case 0x9b : /* TODO: CSI */
case 0x9c : /* TODO: ST */
case 0x9c : /* TODO: ST */
@ -2201,7 +2196,7 @@ eschandle(uchar ascii)
}
}
break ;
break ;
case ' Z ' : /* DECID -- Identify Terminal */
case ' Z ' : /* DECID -- Identify Terminal */
ttywrite ( vtiden , strlen ( vtiden ) ) ;
ttywrite ( vtiden , strlen ( vtiden ) , 0 ) ;
break ;
break ;
case ' c ' : /* RIS -- Reset to inital state */
case ' c ' : /* RIS -- Reset to inital state */
treset ( ) ;
treset ( ) ;