@ -356,6 +356,8 @@ static void strparse(void);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  void  strreset ( void ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  int  tattrset ( int ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  void  tprinter ( char  * s ,  size_t  len ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  void  tdumpline ( int ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  void  tclearregion ( int ,  int ,  int ,  int ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  void  tcursor ( int ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  void  tdeletechar ( int ) ;  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -470,7 +472,7 @@ static STREscape strescseq;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  int  cmdfd ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  pid_t  pid ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  Selection  sel ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  int  iofd ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  int  iofd  =  STDOUT_FILENO  ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  char  * * opt_cmd  =  NULL ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  char  * opt_io  =  NULL ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  char  * opt_title  =  NULL ;  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -1985,6 +1987,8 @@ csihandle(void) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							switch ( csiescseq . arg [ 0 ] )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							case  0 :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							case  1 :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								tdumpline ( term . c . y ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							case  4 :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								term . mode  & =  ~ MODE_PRINT ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								break ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -2265,6 +2269,31 @@ strreset(void) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						memset ( & strescseq ,  0 ,  sizeof ( strescseq ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					void  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					tprinter ( char  * s ,  size_t  len )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						if ( iofd  ! =  - 1  & &  xwrite ( iofd ,  s ,  len )  <  0 )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							fprintf ( stderr ,  " Error writing in %s:%s \n " ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								opt_io ,  strerror ( errno ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							close ( iofd ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							iofd  =  - 1 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					void  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					tdumpline ( int  n )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						Glyph  * bp ,  * end ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						bp  =  & term . line [ n ] [ 0 ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						end  =  & bp [ term . col - 1 ] ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						while ( end  >  bp  & &  ! strcmp ( "   " ,  end - > c ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							- - end ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						if ( bp  ! =  end  | |  strcmp ( bp - > c ,  "   " ) )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							for (  ; bp  < =  end ;  + + bp )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								tprinter ( bp - > c ,  strlen ( bp - > c ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						tprinter ( " \n " ,  1 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					void  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					tputtab ( bool  forward )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						uint  x  =  term . c . x ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -2346,14 +2375,8 @@ tputc(char *c, int len) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							width  =  wcwidth ( u8char ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						if ( IS_SET ( MODE_PRINT )  & &  iofd  ! =  - 1 )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							if ( xwrite ( iofd ,  c ,  len )  <  0 )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								fprintf ( stderr ,  " Error writing in %s:%s \n " ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									opt_io ,  strerror ( errno ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								close ( iofd ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								iofd  =  - 1 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						if ( IS_SET ( MODE_PRINT ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							tprinter ( c ,  len ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						/*   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						 *  STR  sequences  must  be  checked  before  anything  else