summaryrefslogtreecommitdiff
path: root/src/w32console.c
diff options
context:
space:
mode:
authorJason Rumney <jasonr@gnu.org>2005-07-06 21:36:31 +0000
committerJason Rumney <jasonr@gnu.org>2005-07-06 21:36:31 +0000
commit3fb1d72bcb3c04a21f53e5e4ea10ddb4c43815e5 (patch)
treea8c510b1d012fff01e5448bae7af6f12a97768f9 /src/w32console.c
parent7ea8834e0885fe1fe4012ecb1cefd21a08db902f (diff)
downloademacs-3fb1d72bcb3c04a21f53e5e4ea10ddb4c43815e5.tar.gz
(initialize_w32_display): Detect when the console
dimensions are insane, and default to 80x25 instead. (w32_use_full_screen_buffer): default to NIL.
Diffstat (limited to 'src/w32console.c')
-rw-r--r--src/w32console.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/w32console.c b/src/w32console.c
index 70578f58c6b..0ebda179667 100644
--- a/src/w32console.c
+++ b/src/w32console.c
@@ -635,7 +635,24 @@ initialize_w32_display (void)
meta_key = 1;
char_attr_normal = info.wAttributes;
- if (w32_use_full_screen_buffer)
+ /* Determine if the info returned by GetConsoleScreenBufferInfo
+ is realistic. Old MS Telnet servers used to only fill out
+ the dwSize portion, even modern one fill the whole struct with
+ garbage when using non-MS telnet clients. */
+ if ((w32_use_full_screen_buffer
+ && (info.dwSize.Y < 20 || info.dwSize.Y > 100
+ || info.dwSize.X < 40 || info.dwSize.X > 200))
+ || (!w32_use_full_screen_buffer
+ && (info.srWindow.Bottom - info.srWindow.Top < 20
+ || info.srWindow.Bottom - info.srWindow.Top > 100
+ || info.srWindow.Right - info.srWindow.Left < 40
+ || info.srWindow.Right - info.srWindow.Left > 100)))
+ {
+ FRAME_LINES (SELECTED_FRAME ()) = 25;
+ SET_FRAME_COLS (SELECTED_FRAME (), 80);
+ }
+
+ else if (w32_use_full_screen_buffer)
{
FRAME_LINES (SELECTED_FRAME ()) = info.dwSize.Y; /* lines per page */
SET_FRAME_COLS (SELECTED_FRAME (), info.dwSize.X); /* characters per line */
@@ -691,7 +708,7 @@ This is desirable when running Emacs over telnet, and is the default.
A value of nil means use the current console window dimensions; this
may be preferrable when working directly at the console with a large
scroll-back buffer. */);
- w32_use_full_screen_buffer = 1;
+ w32_use_full_screen_buffer = 0;
defsubr (&Sset_screen_color);
defsubr (&Sset_cursor_size);