Collect handling of wpixput and wpbuf into a helper class.
Replace direct access to a pair of co-dependent variables by calls to methods of a class that encapsulates their relation. Also replace C #define by C++ class constant.
This commit is contained in:
		
				
					committed by
					
						 Corinna Vinschen
						Corinna Vinschen
					
				
			
			
				
	
			
			
			
						parent
						
							d4bcecb3e9
						
					
				
				
					commit
					b0f78f15b7
				
			| @@ -59,17 +59,28 @@ static struct fhandler_base::rabuf_t con_ra; | |||||||
|  |  | ||||||
| /* Write pending buffer for ESC sequence handling | /* Write pending buffer for ESC sequence handling | ||||||
|    in xterm compatible mode */ |    in xterm compatible mode */ | ||||||
| #define WPBUF_LEN 256 |  | ||||||
| static unsigned char wpbuf[WPBUF_LEN]; |  | ||||||
| static int wpixput; |  | ||||||
| static unsigned char last_char; | static unsigned char last_char; | ||||||
|  |  | ||||||
| static inline void | /* simple helper class to accumulate output in a buffer | ||||||
| wpbuf_put (unsigned char x) |    and send that to the console on request: */ | ||||||
|  | static class write_pending_buffer | ||||||
| { | { | ||||||
|   if (wpixput < WPBUF_LEN) | private: | ||||||
|     wpbuf[wpixput++] = x; |   static const size_t WPBUF_LEN = 256u; | ||||||
| } |   unsigned char buf[WPBUF_LEN]; | ||||||
|  |   size_t ixput; | ||||||
|  | public: | ||||||
|  |   inline void put (unsigned char x) | ||||||
|  |   { | ||||||
|  |     if (ixput < WPBUF_LEN) | ||||||
|  |       buf[ixput++] = x; | ||||||
|  |   } | ||||||
|  |   inline void empty () { ixput = 0u; } | ||||||
|  |   inline void send (HANDLE &handle, DWORD *wn = NULL) | ||||||
|  |   { | ||||||
|  |     WriteConsoleA (handle, buf, ixput, wn, 0); | ||||||
|  |   } | ||||||
|  | } wpbuf; | ||||||
|  |  | ||||||
| static void | static void | ||||||
| beep () | beep () | ||||||
| @@ -2030,10 +2041,10 @@ fhandler_console::char_command (char c) | |||||||
| 	  break; | 	  break; | ||||||
| #endif | #endif | ||||||
| 	case 'b': /* REP */ | 	case 'b': /* REP */ | ||||||
| 	  wpbuf_put (c); | 	  wpbuf.put (c); | ||||||
| 	  if (wincap.has_con_esc_rep ()) | 	  if (wincap.has_con_esc_rep ()) | ||||||
| 	    /* Just send the sequence */ | 	    /* Just send the sequence */ | ||||||
| 	    WriteConsoleA (get_output_handle (), wpbuf, wpixput, &wn, 0); | 	    wpbuf.send (get_output_handle (), &wn); | ||||||
| 	  else if (last_char && last_char != '\n') | 	  else if (last_char && last_char != '\n') | ||||||
| 	    for (int i = 0; i < con.args[0]; i++) | 	    for (int i = 0; i < con.args[0]; i++) | ||||||
| 	      WriteConsoleA (get_output_handle (), &last_char, 1, &wn, 0); | 	      WriteConsoleA (get_output_handle (), &last_char, 1, &wn, 0); | ||||||
| @@ -2041,9 +2052,9 @@ fhandler_console::char_command (char c) | |||||||
| 	case 'r': /* DECSTBM */ | 	case 'r': /* DECSTBM */ | ||||||
| 	  con.scroll_region.Top = con.args[0] ? con.args[0] - 1 : 0; | 	  con.scroll_region.Top = con.args[0] ? con.args[0] - 1 : 0; | ||||||
| 	  con.scroll_region.Bottom = con.args[1] ? con.args[1] - 1 : -1; | 	  con.scroll_region.Bottom = con.args[1] ? con.args[1] - 1 : -1; | ||||||
| 	  wpbuf_put (c); | 	  wpbuf.put (c); | ||||||
| 	  /* Just send the sequence */ | 	  /* Just send the sequence */ | ||||||
| 	  WriteConsoleA (get_output_handle (), wpbuf, wpixput, &wn, 0); | 	  wpbuf.send (get_output_handle (), &wn); | ||||||
| 	  break; | 	  break; | ||||||
| 	case 'L': /* IL */ | 	case 'L': /* IL */ | ||||||
| 	  if (wincap.has_con_broken_il_dl ()) | 	  if (wincap.has_con_broken_il_dl ()) | ||||||
| @@ -2067,8 +2078,8 @@ fhandler_console::char_command (char c) | |||||||
| 			       y + 1 - con.b.srWindow.Top, | 			       y + 1 - con.b.srWindow.Top, | ||||||
| 			       srBottom + 1 - con.b.srWindow.Top); | 			       srBottom + 1 - con.b.srWindow.Top); | ||||||
| 	      WriteConsoleA (get_output_handle (), buf, strlen (buf), &wn, 0); | 	      WriteConsoleA (get_output_handle (), buf, strlen (buf), &wn, 0); | ||||||
| 	      wpbuf_put ('T'); | 	      wpbuf.put ('T'); | ||||||
| 	      WriteConsoleA (get_output_handle (), wpbuf, wpixput, &wn, 0); | 	      wpbuf.send (get_output_handle (), &wn); | ||||||
| 	      __small_sprintf (buf, "\033[%d;%dr", | 	      __small_sprintf (buf, "\033[%d;%dr", | ||||||
| 			       srTop + 1 - con.b.srWindow.Top, | 			       srTop + 1 - con.b.srWindow.Top, | ||||||
| 			       srBottom + 1 - con.b.srWindow.Top); | 			       srBottom + 1 - con.b.srWindow.Top); | ||||||
| @@ -2079,9 +2090,9 @@ fhandler_console::char_command (char c) | |||||||
| 	    } | 	    } | ||||||
| 	  else | 	  else | ||||||
| 	    { | 	    { | ||||||
| 	      wpbuf_put (c); | 	      wpbuf.put (c); | ||||||
| 	      /* Just send the sequence */ | 	      /* Just send the sequence */ | ||||||
| 	      WriteConsoleA (get_output_handle (), wpbuf, wpixput, &wn, 0); | 	      wpbuf.send (get_output_handle (), &wn); | ||||||
| 	    } | 	    } | ||||||
| 	  break; | 	  break; | ||||||
| 	case 'M': /* DL */ | 	case 'M': /* DL */ | ||||||
| @@ -2095,8 +2106,8 @@ fhandler_console::char_command (char c) | |||||||
| 			       y + 1 - con.b.srWindow.Top, | 			       y + 1 - con.b.srWindow.Top, | ||||||
| 			       srBottom + 1 - con.b.srWindow.Top); | 			       srBottom + 1 - con.b.srWindow.Top); | ||||||
| 	      WriteConsoleA (get_output_handle (), buf, strlen (buf), &wn, 0); | 	      WriteConsoleA (get_output_handle (), buf, strlen (buf), &wn, 0); | ||||||
| 	      wpbuf_put ('S'); | 	      wpbuf.put ('S'); | ||||||
| 	      WriteConsoleA (get_output_handle (), wpbuf, wpixput, &wn, 0); | 	      wpbuf.send (get_output_handle (), &wn); | ||||||
| 	      __small_sprintf (buf, "\033[%d;%dr", | 	      __small_sprintf (buf, "\033[%d;%dr", | ||||||
| 			       srTop + 1 - con.b.srWindow.Top, | 			       srTop + 1 - con.b.srWindow.Top, | ||||||
| 			       srBottom + 1 - con.b.srWindow.Top); | 			       srBottom + 1 - con.b.srWindow.Top); | ||||||
| @@ -2107,13 +2118,13 @@ fhandler_console::char_command (char c) | |||||||
| 	    } | 	    } | ||||||
| 	  else | 	  else | ||||||
| 	    { | 	    { | ||||||
| 	      wpbuf_put (c); | 	      wpbuf.put (c); | ||||||
| 	      /* Just send the sequence */ | 	      /* Just send the sequence */ | ||||||
| 	      WriteConsoleA (get_output_handle (), wpbuf, wpixput, &wn, 0); | 	      wpbuf.send (get_output_handle (), &wn); | ||||||
| 	    } | 	    } | ||||||
| 	  break; | 	  break; | ||||||
| 	case 'J': /* ED */ | 	case 'J': /* ED */ | ||||||
| 	  wpbuf_put (c); | 	  wpbuf.put (c); | ||||||
| 	  if (con.args[0] == 3 && wincap.has_con_broken_csi3j ()) | 	  if (con.args[0] == 3 && wincap.has_con_broken_csi3j ()) | ||||||
| 	    { /* Workaround for broken CSI3J in Win10 1809 */ | 	    { /* Workaround for broken CSI3J in Win10 1809 */ | ||||||
| 	      CONSOLE_SCREEN_BUFFER_INFO sbi; | 	      CONSOLE_SCREEN_BUFFER_INFO sbi; | ||||||
| @@ -2131,7 +2142,7 @@ fhandler_console::char_command (char c) | |||||||
| 	    } | 	    } | ||||||
| 	  else | 	  else | ||||||
| 	    /* Just send the sequence */ | 	    /* Just send the sequence */ | ||||||
| 	    WriteConsoleA (get_output_handle (), wpbuf, wpixput, &wn, 0); | 	    wpbuf.send (get_output_handle (), &wn); | ||||||
| 	  break; | 	  break; | ||||||
| 	case 'h': /* DECSET */ | 	case 'h': /* DECSET */ | ||||||
| 	case 'l': /* DECRST */ | 	case 'l': /* DECRST */ | ||||||
| @@ -2139,9 +2150,9 @@ fhandler_console::char_command (char c) | |||||||
| 	    con.screen_alternated = true; | 	    con.screen_alternated = true; | ||||||
| 	  else | 	  else | ||||||
| 	    con.screen_alternated = false; | 	    con.screen_alternated = false; | ||||||
| 	  wpbuf_put (c); | 	  wpbuf.put (c); | ||||||
| 	  /* Just send the sequence */ | 	  /* Just send the sequence */ | ||||||
| 	  WriteConsoleA (get_output_handle (), wpbuf, wpixput, &wn, 0); | 	  wpbuf.send (get_output_handle (), &wn); | ||||||
| 	  if (con.saw_question_mark) | 	  if (con.saw_question_mark) | ||||||
| 	    { | 	    { | ||||||
| 	      bool need_fix_tab_position = false; | 	      bool need_fix_tab_position = false; | ||||||
| @@ -2159,15 +2170,15 @@ fhandler_console::char_command (char c) | |||||||
| 	      con.scroll_region.Top = 0; | 	      con.scroll_region.Top = 0; | ||||||
| 	      con.scroll_region.Bottom = -1; | 	      con.scroll_region.Bottom = -1; | ||||||
| 	    } | 	    } | ||||||
| 	  wpbuf_put (c); | 	  wpbuf.put (c); | ||||||
| 	  /* Just send the sequence */ | 	  /* Just send the sequence */ | ||||||
| 	  WriteConsoleA (get_output_handle (), wpbuf, wpixput, &wn, 0); | 	  wpbuf.send (get_output_handle (), &wn); | ||||||
| 	  break; | 	  break; | ||||||
| 	default: | 	default: | ||||||
| 	  /* Other escape sequences */ | 	  /* Other escape sequences */ | ||||||
| 	  wpbuf_put (c); | 	  wpbuf.put (c); | ||||||
| 	  /* Just send the sequence */ | 	  /* Just send the sequence */ | ||||||
| 	  WriteConsoleA (get_output_handle (), wpbuf, wpixput, &wn, 0); | 	  wpbuf.send (get_output_handle (), &wn); | ||||||
| 	  break; | 	  break; | ||||||
| 	} | 	} | ||||||
|       return; |       return; | ||||||
| @@ -2874,7 +2885,7 @@ do_print: | |||||||
| 	  break; | 	  break; | ||||||
| 	case ESC: | 	case ESC: | ||||||
| 	  con.state = gotesc; | 	  con.state = gotesc; | ||||||
| 	  wpbuf_put (*found); | 	  wpbuf.put (*found); | ||||||
| 	  break; | 	  break; | ||||||
| 	case DWN: | 	case DWN: | ||||||
| 	  cursor_get (&x, &y); | 	  cursor_get (&x, &y); | ||||||
| @@ -2989,7 +3000,7 @@ fhandler_console::write (const void *vsrc, size_t len) | |||||||
| 	case gotesc: | 	case gotesc: | ||||||
| 	  if (*src == '[')		/* CSI Control Sequence Introducer */ | 	  if (*src == '[')		/* CSI Control Sequence Introducer */ | ||||||
| 	    { | 	    { | ||||||
| 	      wpbuf_put (*src); | 	      wpbuf.put (*src); | ||||||
| 	      con.state = gotsquare; | 	      con.state = gotsquare; | ||||||
| 	      memset (con.args, 0, sizeof con.args); | 	      memset (con.args, 0, sizeof con.args); | ||||||
| 	      con.nargs = 0; | 	      con.nargs = 0; | ||||||
| @@ -3005,13 +3016,13 @@ fhandler_console::write (const void *vsrc, size_t len) | |||||||
| 		  /* For xterm mode only */ | 		  /* For xterm mode only */ | ||||||
| 		  DWORD n; | 		  DWORD n; | ||||||
| 		  /* Just send the sequence */ | 		  /* Just send the sequence */ | ||||||
| 		  wpbuf_put (*src); | 		  wpbuf.put (*src); | ||||||
| 		  WriteConsoleA (get_output_handle (), wpbuf, wpixput, &n, 0); | 		  wpbuf.send (get_output_handle (), &n); | ||||||
| 		} | 		} | ||||||
| 	      else if (con.savex >= 0 && con.savey >= 0) | 	      else if (con.savex >= 0 && con.savey >= 0) | ||||||
| 		cursor_set (false, con.savex, con.savey); | 		cursor_set (false, con.savex, con.savey); | ||||||
| 	      con.state = normal; | 	      con.state = normal; | ||||||
| 	      wpixput = 0; | 	      wpbuf.empty(); | ||||||
| 	    } | 	    } | ||||||
| 	  else if (*src == '7')		/* DECSC Save cursor position */ | 	  else if (*src == '7')		/* DECSC Save cursor position */ | ||||||
| 	    { | 	    { | ||||||
| @@ -3020,13 +3031,13 @@ fhandler_console::write (const void *vsrc, size_t len) | |||||||
| 		  /* For xterm mode only */ | 		  /* For xterm mode only */ | ||||||
| 		  DWORD n; | 		  DWORD n; | ||||||
| 		  /* Just send the sequence */ | 		  /* Just send the sequence */ | ||||||
| 		  wpbuf_put (*src); | 		  wpbuf.put (*src); | ||||||
| 		  WriteConsoleA (get_output_handle (), wpbuf, wpixput, &n, 0); | 		  wpbuf.send (get_output_handle (), &n); | ||||||
| 		} | 		} | ||||||
| 	      else | 	      else | ||||||
| 		cursor_get (&con.savex, &con.savey); | 		cursor_get (&con.savex, &con.savey); | ||||||
| 	      con.state = normal; | 	      con.state = normal; | ||||||
| 	      wpixput = 0; | 	      wpbuf.empty(); | ||||||
| 	    } | 	    } | ||||||
| 	  else if (wincap.has_con_24bit_colors () && !con_is_legacy | 	  else if (wincap.has_con_24bit_colors () && !con_is_legacy | ||||||
| 		   && wincap.has_con_broken_il_dl () && *src == 'M') | 		   && wincap.has_con_broken_il_dl () && *src == 'M') | ||||||
| @@ -3048,14 +3059,14 @@ fhandler_console::write (const void *vsrc, size_t len) | |||||||
| 				     buf, strlen (buf), &n, 0); | 				     buf, strlen (buf), &n, 0); | ||||||
| 		    } | 		    } | ||||||
| 		  /* Substitute "CSI Ps T" */ | 		  /* Substitute "CSI Ps T" */ | ||||||
| 		  wpbuf_put ('['); | 		  wpbuf.put ('['); | ||||||
| 		  wpbuf_put ('T'); | 		  wpbuf.put ('T'); | ||||||
| 		} | 		} | ||||||
| 	      else | 	      else | ||||||
| 		wpbuf_put (*src); | 		wpbuf.put (*src); | ||||||
| 	      WriteConsoleA (get_output_handle (), wpbuf, wpixput, &n, 0); | 	      wpbuf.send (get_output_handle (), &n); | ||||||
| 	      con.state = normal; | 	      con.state = normal; | ||||||
| 	      wpixput = 0; | 	      wpbuf.empty(); | ||||||
| 	    } | 	    } | ||||||
| 	  else if (wincap.has_con_24bit_colors () && !con_is_legacy) | 	  else if (wincap.has_con_24bit_colors () && !con_is_legacy) | ||||||
| 	    { | 	    { | ||||||
| @@ -3067,28 +3078,28 @@ fhandler_console::write (const void *vsrc, size_t len) | |||||||
| 	      /* ESC sequences below (e.g. OSC, etc) are left to xterm | 	      /* ESC sequences below (e.g. OSC, etc) are left to xterm | ||||||
| 		 emulation in xterm compatible mode, therefore, are not | 		 emulation in xterm compatible mode, therefore, are not | ||||||
| 		 handled and just sent them. */ | 		 handled and just sent them. */ | ||||||
| 	      wpbuf_put (*src); | 	      wpbuf.put (*src); | ||||||
| 	      /* Just send the sequence */ | 	      /* Just send the sequence */ | ||||||
| 	      DWORD n; | 	      DWORD n; | ||||||
| 	      WriteConsoleA (get_output_handle (), wpbuf, wpixput, &n, 0); | 	      wpbuf.send (get_output_handle (), &n); | ||||||
| 	      con.state = normal; | 	      con.state = normal; | ||||||
| 	      wpixput = 0; | 	      wpbuf.empty(); | ||||||
| 	    } | 	    } | ||||||
| 	  else if (*src == ']')		/* OSC Operating System Command */ | 	  else if (*src == ']')		/* OSC Operating System Command */ | ||||||
| 	    { | 	    { | ||||||
| 	      wpbuf_put (*src); | 	      wpbuf.put (*src); | ||||||
| 	      con.rarg = 0; | 	      con.rarg = 0; | ||||||
| 	      con.my_title_buf[0] = '\0'; | 	      con.my_title_buf[0] = '\0'; | ||||||
| 	      con.state = gotrsquare; | 	      con.state = gotrsquare; | ||||||
| 	    } | 	    } | ||||||
| 	  else if (*src == '(')		/* Designate G0 character set */ | 	  else if (*src == '(')		/* Designate G0 character set */ | ||||||
| 	    { | 	    { | ||||||
| 	      wpbuf_put (*src); | 	      wpbuf.put (*src); | ||||||
| 	      con.state = gotparen; | 	      con.state = gotparen; | ||||||
| 	    } | 	    } | ||||||
| 	  else if (*src == ')')		/* Designate G1 character set */ | 	  else if (*src == ')')		/* Designate G1 character set */ | ||||||
| 	    { | 	    { | ||||||
| 	      wpbuf_put (*src); | 	      wpbuf.put (*src); | ||||||
| 	      con.state = gotrparen; | 	      con.state = gotrparen; | ||||||
| 	    } | 	    } | ||||||
| 	  else if (*src == 'M')		/* Reverse Index (scroll down) */ | 	  else if (*src == 'M')		/* Reverse Index (scroll down) */ | ||||||
| @@ -3096,7 +3107,7 @@ fhandler_console::write (const void *vsrc, size_t len) | |||||||
| 	      con.fillin (get_output_handle ()); | 	      con.fillin (get_output_handle ()); | ||||||
| 	      scroll_buffer_screen (0, 0, -1, -1, 0, 1); | 	      scroll_buffer_screen (0, 0, -1, -1, 0, 1); | ||||||
| 	      con.state = normal; | 	      con.state = normal; | ||||||
| 	      wpixput = 0; | 	      wpbuf.empty(); | ||||||
| 	    } | 	    } | ||||||
| 	  else if (*src == 'c')		/* RIS Full Reset */ | 	  else if (*src == 'c')		/* RIS Full Reset */ | ||||||
| 	    { | 	    { | ||||||
| @@ -3107,17 +3118,17 @@ fhandler_console::write (const void *vsrc, size_t len) | |||||||
| 	      cursor_set (false, 0, 0); | 	      cursor_set (false, 0, 0); | ||||||
| 	      clear_screen (cl_buf_beg, cl_buf_beg, cl_buf_end, cl_buf_end); | 	      clear_screen (cl_buf_beg, cl_buf_beg, cl_buf_end, cl_buf_end); | ||||||
| 	      con.state = normal; | 	      con.state = normal; | ||||||
| 	      wpixput = 0; | 	      wpbuf.empty(); | ||||||
| 	    } | 	    } | ||||||
| 	  else if (*src == 'R')		/* ? */ | 	  else if (*src == 'R')		/* ? */ | ||||||
| 	    { | 	    { | ||||||
| 	      con.state = normal; | 	      con.state = normal; | ||||||
| 	      wpixput = 0; | 	      wpbuf.empty(); | ||||||
| 	    } | 	    } | ||||||
| 	  else | 	  else | ||||||
| 	    { | 	    { | ||||||
| 	      con.state = normal; | 	      con.state = normal; | ||||||
| 	      wpixput = 0; | 	      wpbuf.empty(); | ||||||
| 	    } | 	    } | ||||||
| 	  src++; | 	  src++; | ||||||
| 	  break; | 	  break; | ||||||
| @@ -3126,19 +3137,19 @@ fhandler_console::write (const void *vsrc, size_t len) | |||||||
| 	    { | 	    { | ||||||
| 	      if (con.nargs < MAXARGS) | 	      if (con.nargs < MAXARGS) | ||||||
| 		con.args[con.nargs] = con.args[con.nargs] * 10 + *src - '0'; | 		con.args[con.nargs] = con.args[con.nargs] * 10 + *src - '0'; | ||||||
| 	      wpbuf_put (*src); | 	      wpbuf.put (*src); | ||||||
| 	      src++; | 	      src++; | ||||||
| 	    } | 	    } | ||||||
| 	  else if (*src == ';') | 	  else if (*src == ';') | ||||||
| 	    { | 	    { | ||||||
| 	      wpbuf_put (*src); | 	      wpbuf.put (*src); | ||||||
| 	      src++; | 	      src++; | ||||||
| 	      if (con.nargs < MAXARGS) | 	      if (con.nargs < MAXARGS) | ||||||
| 		con.nargs++; | 		con.nargs++; | ||||||
| 	    } | 	    } | ||||||
| 	  else if (*src == ' ') | 	  else if (*src == ' ') | ||||||
| 	    { | 	    { | ||||||
| 	      wpbuf_put (*src); | 	      wpbuf.put (*src); | ||||||
| 	      src++; | 	      src++; | ||||||
| 	      con.saw_space = true; | 	      con.saw_space = true; | ||||||
| 	      con.state = gotcommand; | 	      con.state = gotcommand; | ||||||
| @@ -3151,7 +3162,7 @@ fhandler_console::write (const void *vsrc, size_t len) | |||||||
| 	    con.nargs++; | 	    con.nargs++; | ||||||
| 	  char_command (*src++); | 	  char_command (*src++); | ||||||
| 	  con.state = normal; | 	  con.state = normal; | ||||||
| 	  wpixput = 0; | 	  wpbuf.empty(); | ||||||
| 	  break; | 	  break; | ||||||
| 	case gotrsquare: | 	case gotrsquare: | ||||||
| 	  if (isdigit (*src)) | 	  if (isdigit (*src)) | ||||||
| @@ -3162,7 +3173,7 @@ fhandler_console::write (const void *vsrc, size_t len) | |||||||
| 	    con.state = eatpalette; | 	    con.state = eatpalette; | ||||||
| 	  else | 	  else | ||||||
| 	    con.state = eattitle; | 	    con.state = eattitle; | ||||||
| 	  wpbuf_put (*src); | 	  wpbuf.put (*src); | ||||||
| 	  src++; | 	  src++; | ||||||
| 	  break; | 	  break; | ||||||
| 	case eattitle: | 	case eattitle: | ||||||
| @@ -3174,13 +3185,13 @@ fhandler_console::write (const void *vsrc, size_t len) | |||||||
| 		if (*src == '\007' && con.state == gettitle) | 		if (*src == '\007' && con.state == gettitle) | ||||||
| 		  set_console_title (con.my_title_buf); | 		  set_console_title (con.my_title_buf); | ||||||
| 		con.state = normal; | 		con.state = normal; | ||||||
| 		wpixput = 0; | 		wpbuf.empty(); | ||||||
| 	      } | 	      } | ||||||
| 	    else if (n < TITLESIZE) | 	    else if (n < TITLESIZE) | ||||||
| 	      { | 	      { | ||||||
| 		con.my_title_buf[n++] = *src; | 		con.my_title_buf[n++] = *src; | ||||||
| 		con.my_title_buf[n] = '\0'; | 		con.my_title_buf[n] = '\0'; | ||||||
| 		wpbuf_put (*src); | 		wpbuf.put (*src); | ||||||
| 	      } | 	      } | ||||||
| 	    src++; | 	    src++; | ||||||
| 	    break; | 	    break; | ||||||
| @@ -3188,13 +3199,13 @@ fhandler_console::write (const void *vsrc, size_t len) | |||||||
| 	case eatpalette: | 	case eatpalette: | ||||||
| 	  if (*src == '\033') | 	  if (*src == '\033') | ||||||
| 	    { | 	    { | ||||||
| 	      wpbuf_put (*src); | 	      wpbuf.put (*src); | ||||||
| 	      con.state = endpalette; | 	      con.state = endpalette; | ||||||
| 	    } | 	    } | ||||||
| 	  else if (*src == '\a') | 	  else if (*src == '\a') | ||||||
| 	    { | 	    { | ||||||
| 	      con.state = normal; | 	      con.state = normal; | ||||||
| 	      wpixput = 0; | 	      wpbuf.empty(); | ||||||
| 	    } | 	    } | ||||||
| 	  src++; | 	  src++; | ||||||
| 	  break; | 	  break; | ||||||
| @@ -3204,14 +3215,14 @@ fhandler_console::write (const void *vsrc, size_t len) | |||||||
| 	  else | 	  else | ||||||
| 	    /* Sequence error (abort) */ | 	    /* Sequence error (abort) */ | ||||||
| 	    con.state = normal; | 	    con.state = normal; | ||||||
| 	  wpixput = 0; | 	  wpbuf.empty(); | ||||||
| 	  src++; | 	  src++; | ||||||
| 	  break; | 	  break; | ||||||
| 	case gotsquare: | 	case gotsquare: | ||||||
| 	  if (*src == ';') | 	  if (*src == ';') | ||||||
| 	    { | 	    { | ||||||
| 	      con.state = gotarg1; | 	      con.state = gotarg1; | ||||||
| 	      wpbuf_put (*src); | 	      wpbuf.put (*src); | ||||||
| 	      if (con.nargs < MAXARGS) | 	      if (con.nargs < MAXARGS) | ||||||
| 		con.nargs++; | 		con.nargs++; | ||||||
| 	      src++; | 	      src++; | ||||||
| @@ -3226,7 +3237,7 @@ fhandler_console::write (const void *vsrc, size_t len) | |||||||
| 		con.saw_greater_than_sign = true; | 		con.saw_greater_than_sign = true; | ||||||
| 	      else if (*src == '!') | 	      else if (*src == '!') | ||||||
| 		con.saw_exclamation_mark = true; | 		con.saw_exclamation_mark = true; | ||||||
| 	      wpbuf_put (*src); | 	      wpbuf.put (*src); | ||||||
| 	      /* ignore any extra chars between [ and first arg or command */ | 	      /* ignore any extra chars between [ and first arg or command */ | ||||||
| 	      src++; | 	      src++; | ||||||
| 	    } | 	    } | ||||||
| @@ -3239,7 +3250,7 @@ fhandler_console::write (const void *vsrc, size_t len) | |||||||
| 	  else | 	  else | ||||||
| 	    con.vt100_graphics_mode_G0 = false; | 	    con.vt100_graphics_mode_G0 = false; | ||||||
| 	  con.state = normal; | 	  con.state = normal; | ||||||
| 	  wpixput = 0; | 	  wpbuf.empty(); | ||||||
| 	  src++; | 	  src++; | ||||||
| 	  break; | 	  break; | ||||||
| 	case gotrparen:	/* Designate G1 Character Set (ISO 2022) */ | 	case gotrparen:	/* Designate G1 Character Set (ISO 2022) */ | ||||||
| @@ -3248,7 +3259,7 @@ fhandler_console::write (const void *vsrc, size_t len) | |||||||
| 	  else | 	  else | ||||||
| 	    con.vt100_graphics_mode_G1 = false; | 	    con.vt100_graphics_mode_G1 = false; | ||||||
| 	  con.state = normal; | 	  con.state = normal; | ||||||
| 	  wpixput = 0; | 	  wpbuf.empty(); | ||||||
| 	  src++; | 	  src++; | ||||||
| 	  break; | 	  break; | ||||||
| 	} | 	} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user