summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/fhandler.h
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2016-07-01 21:40:16 -0700
committerKaz Kylheku <kaz@kylheku.com>2016-07-01 23:53:28 -0700
commit023e7d13c458fbd874094d1d518b2169b123a8dc (patch)
treef7cbe260c3450e2b9a689aae83ab428601d72e4d /winsup/cygwin/fhandler.h
parent8a2e3542b55be5bc068a9260bb3373eb564a371c (diff)
downloadcygnal-023e7d13c458fbd874094d1d518b2169b123a8dc.tar.gz
cygnal-023e7d13c458fbd874094d1d518b2169b123a8dc.tar.bz2
cygnal-023e7d13c458fbd874094d1d518b2169b123a8dc.zip
Console: provide VT100-like end-of-line print behavior.
On the majority of VT100-like terminals, when you print a character in the last column, the cursor sits in a kind of "limbo", as if the cursor position were one column past the edge of the screen. Thus when a line feed is output next, the cursor is then at the start of the next line. The Win32 console write doesn't do this; the cursor position wraps to the start of the next line. If a newline is put out, it translates to an extra newline going to the next-next line. This spoils the behavior of programs which depend on the VT100 behavior. In this patch, the VT100 behavior is simulated as follows. A new flag in the dev_console structure is set when a character is output to the last column. This flag is then observed in order to discard a newline (or rather any character which is mapped mapped to the DWN action). * winsup/cygwin/fhandler.h (class dev_console): New boolean data member, eat_newline. This indicates that if a character is output which moves down to the next line, it should be discarded rather than sent to the console. * winsup/cygwin/fhandler_console.cc (fhandler_console::write_normal): Set the eat_newline flag if the text output ends up at column zero. Honor the eat_newline flag when processing a DWN character, and clear it when processing certain other control characters.
Diffstat (limited to 'winsup/cygwin/fhandler.h')
-rw-r--r--winsup/cygwin/fhandler.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h
index 94fe0f9db..21c71d702 100644
--- a/winsup/cygwin/fhandler.h
+++ b/winsup/cygwin/fhandler.h
@@ -1306,6 +1306,7 @@ class dev_console
bool iso_2022_G1;
bool alternate_charset_active;
bool metabit;
+ bool eat_newline;
char backspace_keycode;
char my_title_buf [TITLESIZE + 1];