@ -70,8 +70,9 @@ char *argv0;  
															
														 
														
													
														
															
																 
																 
																# define LEN(a)     (sizeof(a)  /  sizeof(a)[0])  
																 
																 
																# define LEN(a)     (sizeof(a)  /  sizeof(a)[0])  
															
														 
														
													
														
															
																 
																 
																# define DEFAULT(a, b)     (a) = (a) ? (a) : (b)  
																 
																 
																# define DEFAULT(a, b)     (a) = (a) ? (a) : (b)  
															
														 
														
													
														
															
																 
																 
																# define BETWEEN(x, a, b)  ((a) <= (x) && (x) <= (b))  
																 
																 
																# define BETWEEN(x, a, b)  ((a) <= (x) && (x) <= (b))  
															
														 
														
													
														
															
																 
																 
																# define ISCONTROLC0(c) (BETWEEN((uchar) (c), 0, 0x1f))  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																# define ISCONTROLC1(c) (BETWEEN((uchar) (c), 0x80, 0x9f))  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																# define ISCONTROLC0(c) (BETWEEN(c, 0, 0x1f))  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																# define ISCONTROLC1(c) (BETWEEN(c, 0x80, 0x9f))  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																# define ISCONTROL(c) (ISCONTROLC0(c) || ISCONTROLC1(c))  
															
														 
														
													
														
															
																 
																 
																# define LIMIT(x, a, b)    (x) = (x) < (a) ? (a) : (x) > (b) ? (b) : (x)  
																 
																 
																# define LIMIT(x, a, b)    (x) = (x) < (a) ? (a) : (x) > (b) ? (b) : (x)  
															
														 
														
													
														
															
																 
																 
																# define ATTRCMP(a, b) ((a).mode != (b).mode || (a).fg != (b).fg || (a).bg != (b).bg)  
																 
																 
																# define ATTRCMP(a, b) ((a).mode != (b).mode || (a).fg != (b).fg || (a).bg != (b).bg)  
															
														 
														
													
														
															
																 
																 
																# define IS_SET(flag) ((term.mode & (flag)) != 0)  
																 
																 
																# define IS_SET(flag) ((term.mode & (flag)) != 0)  
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -402,7 +403,6 @@ static void ttyread(void);  
															
														 
														
													
														
															
																 
																 
																static  void  ttyresize ( void ) ;  
																 
																 
																static  void  ttyresize ( void ) ;  
															
														 
														
													
														
															
																 
																 
																static  void  ttysend ( char  * ,  size_t ) ;  
																 
																 
																static  void  ttysend ( char  * ,  size_t ) ;  
															
														 
														
													
														
															
																 
																 
																static  void  ttywrite ( const  char  * ,  size_t ) ;  
																 
																 
																static  void  ttywrite ( const  char  * ,  size_t ) ;  
															
														 
														
													
														
															
																 
																 
																static  inline  bool  iscontrol ( char ) ;  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																static  void  xdraws ( char  * ,  Glyph ,  int ,  int ,  int ,  int ) ;  
																 
																 
																static  void  xdraws ( char  * ,  Glyph ,  int ,  int ,  int ,  int ) ;  
															
														 
														
													
														
															
																 
																 
																static  void  xhints ( void ) ;  
																 
																 
																static  void  xhints ( void ) ;  
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -2300,17 +2300,12 @@ tputtab(int n) {  
															
														 
														
													
														
															
																 
																 
																	tmoveto ( x ,  term . c . y ) ;   
																 
																 
																	tmoveto ( x ,  term . c . y ) ;   
															
														 
														
													
														
															
																 
																 
																}  
																 
																 
																}  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																static  inline  bool  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																iscontrol ( char  c )  {  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	return  ISCONTROLC0 ( c )  | |  ISCONTROLC1 ( c ) ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																}  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																void  
																 
																 
																void  
															
														 
														
													
														
															
																 
																 
																techo ( char  * buf ,  int  len )  {  
																 
																 
																techo ( char  * buf ,  int  len )  {  
															
														 
														
													
														
															
																 
																 
																	for ( ;  len  >  0 ;  buf + + ,  len - - )  {   
																 
																 
																	for ( ;  len  >  0 ;  buf + + ,  len - - )  {   
															
														 
														
													
														
															
																 
																 
																		char  c  =  * buf ;   
																 
																 
																		char  c  =  * buf ;   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																		if ( iscontrol ( c ) )  {  /* control code */   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																		if ( ISCONTROL ( c ) )  {  /* control code */   
															
														 
														
													
														
															
																 
																 
																			if ( c  &  0x80 )  {   
																 
																 
																			if ( c  &  0x80 )  {   
															
														 
														
													
														
															
																 
																 
																				c  & =  0x7f ;   
																 
																 
																				c  & =  0x7f ;   
															
														 
														
													
														
															
																 
																 
																				tputc ( " ^ " ,  1 ) ;   
																 
																 
																				tputc ( " ^ " ,  1 ) ;   
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -2439,16 +2434,17 @@ tputc(char *c, int len) {  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																	if ( len  = =  1 )  {   
																 
																 
																	if ( len  = =  1 )  {   
															
														 
														
													
														
															
																 
																 
																		width  =  1 ;   
																 
																 
																		width  =  1 ;   
															
														 
														
													
														
															
																 
																 
																		ascii  =  * c ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																		unicodep  =  ascii  =  * c ;   
															
														 
														
													
														
															
																 
																 
																	}  else  {   
																 
																 
																	}  else  {   
															
														 
														
													
														
															
																 
																 
																		utf8decode ( c ,  & unicodep ,  UTF_SIZ ) ;   
																 
																 
																		utf8decode ( c ,  & unicodep ,  UTF_SIZ ) ;   
															
														 
														
													
														
															
																 
																 
																		width  =  wcwidth ( unicodep ) ;   
																 
																 
																		width  =  wcwidth ( unicodep ) ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																		control  =  ISCONTROLC1 ( unicodep ) ;   
															
														 
														
													
														
															
																 
																 
																		ascii  =  unicodep ;   
																 
																 
																		ascii  =  unicodep ;   
															
														 
														
													
														
															
																 
																 
																	}   
																 
																 
																	}   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																	control  =  iscontrol ( ascii )  & &  width  = =  1 ;   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																	if ( IS_SET ( MODE_PRINT ) )   
																 
																 
																	if ( IS_SET ( MODE_PRINT ) )   
															
														 
														
													
														
															
																 
																 
																		tprinter ( c ,  len ) ;   
																 
																 
																		tprinter ( c ,  len ) ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																	control  =  ISCONTROL ( unicodep ) ;   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																	/*   
																 
																 
																	/*   
															
														 
														
													
														
															
																 
																 
																	 *  STR  sequence  must  be  checked  before  anything  else   
																 
																 
																	 *  STR  sequence  must  be  checked  before  anything  else   
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -2460,7 +2456,7 @@ tputc(char *c, int len) {  
															
														 
														
													
														
															
																 
																 
																		if ( width  = =  1  & &   
																 
																 
																		if ( width  = =  1  & &   
															
														 
														
													
														
															
																 
																 
																		   ( ascii  = =  ' \a '  | |  ascii  = =  030  | |   
																 
																 
																		   ( ascii  = =  ' \a '  | |  ascii  = =  030  | |   
															
														 
														
													
														
															
																 
																 
																		    ascii  = =  032   | |  ascii  = =  033  | |   
																 
																 
																		    ascii  = =  032   | |  ascii  = =  033  | |   
															
														 
														
													
														
															
																 
																 
																		    ISCONTROLC1 ( ascii ) ) )  {   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																		    ISCONTROLC1 ( unicodep ) ) )  {   
															
														 
														
													
														
															
																 
																 
																			term . esc  & =  ~ ESC_STR ;   
																 
																 
																			term . esc  & =  ~ ESC_STR ;   
															
														 
														
													
														
															
																 
																 
																			term . esc  | =  ESC_STR_END ;   
																 
																 
																			term . esc  | =  ESC_STR_END ;   
															
														 
														
													
														
															
																 
																 
																		}  else  if ( strescseq . len  +  len  <  sizeof ( strescseq . buf )  -  1 )  {   
																 
																 
																		}  else  if ( strescseq . len  +  len  <  sizeof ( strescseq . buf )  -  1 )  {