* fhandler.h (class dev_console): Flag for expanded control sequence.
* fhandler_console.cc (char_command): Supporting cursor style modes.
This commit is contained in:
		@@ -1,3 +1,8 @@
 | 
			
		||||
2013-01-11  Thomas Wolff  <towo@towo.net>
 | 
			
		||||
 | 
			
		||||
	* fhandler.h (class dev_console): Flag for expanded control sequence.
 | 
			
		||||
	* fhandler_console.cc (char_command): Supporting cursor style modes.
 | 
			
		||||
 | 
			
		||||
2013-01-10  Corinna Vinschen  <corinna@vinschen.de>
 | 
			
		||||
 | 
			
		||||
	* path.h (path_conv::fs_type): New method.
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
/* fhandler.h
 | 
			
		||||
 | 
			
		||||
   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
 | 
			
		||||
   2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Red Hat, Inc.
 | 
			
		||||
   2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Red Hat, Inc.
 | 
			
		||||
 | 
			
		||||
This file is part of Cygwin.
 | 
			
		||||
 | 
			
		||||
@@ -1246,6 +1246,7 @@ class dev_console
 | 
			
		||||
  unsigned rarg;
 | 
			
		||||
  bool saw_question_mark;
 | 
			
		||||
  bool saw_greater_than_sign;
 | 
			
		||||
  bool saw_space;
 | 
			
		||||
  bool vt100_graphics_mode_G0;
 | 
			
		||||
  bool vt100_graphics_mode_G1;
 | 
			
		||||
  bool iso_2022_G1;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
/* fhandler_console.cc
 | 
			
		||||
 | 
			
		||||
   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
 | 
			
		||||
   2006, 2008, 2009, 2010, 2011, 2012 Red Hat, Inc.
 | 
			
		||||
   2006, 2008, 2009, 2010, 2011, 2012, 2013 Red Hat, Inc.
 | 
			
		||||
 | 
			
		||||
This file is part of Cygwin.
 | 
			
		||||
 | 
			
		||||
@@ -1510,6 +1510,31 @@ fhandler_console::char_command (char c)
 | 
			
		||||
	   }
 | 
			
		||||
       dev_state.set_color (get_output_handle ());
 | 
			
		||||
      break;
 | 
			
		||||
    case 'q': /* Set cursor style (DECSCUSR) */
 | 
			
		||||
      if (dev_state.saw_space)
 | 
			
		||||
	{
 | 
			
		||||
	    CONSOLE_CURSOR_INFO console_cursor_info;
 | 
			
		||||
	    GetConsoleCursorInfo (get_output_handle (), & console_cursor_info);
 | 
			
		||||
	    switch (dev_state.args_[0])
 | 
			
		||||
	      {
 | 
			
		||||
		case 0: /* blinking block */
 | 
			
		||||
		case 1: /* blinking block (default) */
 | 
			
		||||
		case 2: /* steady block */
 | 
			
		||||
		  console_cursor_info.dwSize = 100;
 | 
			
		||||
		  SetConsoleCursorInfo (get_output_handle (), & console_cursor_info);
 | 
			
		||||
		  break;
 | 
			
		||||
		case 3: /* blinking underline */
 | 
			
		||||
		case 4: /* steady underline */
 | 
			
		||||
		  console_cursor_info.dwSize = 10;	/* or Windows default 25? */
 | 
			
		||||
		  SetConsoleCursorInfo (get_output_handle (), & console_cursor_info);
 | 
			
		||||
		  break;
 | 
			
		||||
		default: /* use value as percentage */
 | 
			
		||||
		  console_cursor_info.dwSize = dev_state.args_[0];
 | 
			
		||||
		  SetConsoleCursorInfo (get_output_handle (), & console_cursor_info);
 | 
			
		||||
		  break;
 | 
			
		||||
	      }
 | 
			
		||||
	}
 | 
			
		||||
      break;
 | 
			
		||||
    case 'h':
 | 
			
		||||
    case 'l':
 | 
			
		||||
      if (!dev_state.saw_question_mark)
 | 
			
		||||
@@ -1525,6 +1550,17 @@ fhandler_console::char_command (char c)
 | 
			
		||||
	}
 | 
			
		||||
      switch (dev_state.args_[0])
 | 
			
		||||
	{
 | 
			
		||||
	case 25: /* Show/Hide Cursor (DECTCEM) */
 | 
			
		||||
	  {
 | 
			
		||||
	    CONSOLE_CURSOR_INFO console_cursor_info;
 | 
			
		||||
	    GetConsoleCursorInfo (get_output_handle (), & console_cursor_info);
 | 
			
		||||
	    if (c == 'h')
 | 
			
		||||
	      console_cursor_info.bVisible = TRUE;
 | 
			
		||||
	    else
 | 
			
		||||
	      console_cursor_info.bVisible = FALSE;
 | 
			
		||||
	    SetConsoleCursorInfo (get_output_handle (), & console_cursor_info);
 | 
			
		||||
	    break;
 | 
			
		||||
	  }
 | 
			
		||||
	case 47:   /* Save/Restore screen */
 | 
			
		||||
	  if (c == 'h') /* save */
 | 
			
		||||
	    {
 | 
			
		||||
@@ -1752,7 +1788,7 @@ fhandler_console::char_command (char c)
 | 
			
		||||
	  __small_sprintf (buf, "\033[%d;%dR", y + 1, x + 1);
 | 
			
		||||
	  puts_readahead (buf);
 | 
			
		||||
	  break;
 | 
			
		||||
    default:
 | 
			
		||||
      default:
 | 
			
		||||
	  goto bad_escape;
 | 
			
		||||
	}
 | 
			
		||||
      break;
 | 
			
		||||
@@ -2026,6 +2062,7 @@ fhandler_console::write (const void *vsrc, size_t len)
 | 
			
		||||
	      dev_state.state_ = gotsquare;
 | 
			
		||||
	      dev_state.saw_question_mark = false;
 | 
			
		||||
	      dev_state.saw_greater_than_sign = false;
 | 
			
		||||
	      dev_state.saw_space = false;
 | 
			
		||||
	      for (dev_state.nargs_ = 0; dev_state.nargs_ < MAXARGS; dev_state.nargs_++)
 | 
			
		||||
		dev_state.args_[dev_state.nargs_] = 0;
 | 
			
		||||
	      dev_state.nargs_ = 0;
 | 
			
		||||
@@ -2092,6 +2129,12 @@ fhandler_console::write (const void *vsrc, size_t len)
 | 
			
		||||
	      if (dev_state.nargs_ >= MAXARGS)
 | 
			
		||||
		dev_state.nargs_--;
 | 
			
		||||
	    }
 | 
			
		||||
	  else if (*src == ' ')
 | 
			
		||||
	    {
 | 
			
		||||
	      src++;
 | 
			
		||||
	      dev_state.saw_space = true;
 | 
			
		||||
	      dev_state.state_ = gotcommand;
 | 
			
		||||
	    }
 | 
			
		||||
	  else
 | 
			
		||||
	    {
 | 
			
		||||
	      dev_state.state_ = gotcommand;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user