diff options
author | Jason Rumney <jasonr@gnu.org> | 2005-07-06 21:36:31 +0000 |
---|---|---|
committer | Jason Rumney <jasonr@gnu.org> | 2005-07-06 21:36:31 +0000 |
commit | 3fb1d72bcb3c04a21f53e5e4ea10ddb4c43815e5 (patch) | |
tree | a8c510b1d012fff01e5448bae7af6f12a97768f9 /src/w32console.c | |
parent | 7ea8834e0885fe1fe4012ecb1cefd21a08db902f (diff) | |
download | emacs-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.c | 21 |
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); |