aboutsummaryrefslogtreecommitdiff
path: root/readline
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2006-02-23 18:14:43 +0000
committerDaniel Jacobowitz <drow@false.org>2006-02-23 18:14:43 +0000
commitd4fdc52404ae433252cfe18001452951ab899157 (patch)
tree4f6f90700ef24488358ce3d2fd2b1f41619ee6db /readline
parent19a7219fd198b980a70cdbdc158b96cd5446e7f3 (diff)
downloadgdb-d4fdc52404ae433252cfe18001452951ab899157.zip
gdb-d4fdc52404ae433252cfe18001452951ab899157.tar.gz
gdb-d4fdc52404ae433252cfe18001452951ab899157.tar.bz2
* readline/terminal.c (_rl_get_screen_size): Get console size from
the Windows API when compiling with MinGW.
Diffstat (limited to 'readline')
-rw-r--r--readline/ChangeLog.gdb5
-rw-r--r--readline/terminal.c19
2 files changed, 24 insertions, 0 deletions
diff --git a/readline/ChangeLog.gdb b/readline/ChangeLog.gdb
index 7105ea3..28cb1f2 100644
--- a/readline/ChangeLog.gdb
+++ b/readline/ChangeLog.gdb
@@ -1,3 +1,8 @@
+2005-02-10 Denis Pilat <denis.pilat@st.com>
+
+ * readline/terminal.c (_rl_get_screen_size): Get console size from
+ the Windows API when compiling with MinGW.
+
2005-07-25 Mark Mitchell <mark@codesourcery.com>
* input.c (rl_getc): Use getch to read console input on
diff --git a/readline/terminal.c b/readline/terminal.c
index 06bc8e9..ce45d28 100644
--- a/readline/terminal.c
+++ b/readline/terminal.c
@@ -70,6 +70,11 @@
#include "rlshell.h"
#include "xmalloc.h"
+#if defined (__MINGW32__)
+# include <windows.h>
+# include <wincon.h>
+#endif
+
#define CUSTOM_REDISPLAY_FUNC() (rl_redisplay_function != rl_redisplay)
#define CUSTOM_INPUT_FUNC() (rl_getc_function != rl_getc)
@@ -209,6 +214,20 @@ _rl_get_screen_size (tty, ignore_env)
}
#endif /* TIOCGWINSZ */
+ /* For MinGW, we get the console size from the Windows API. */
+#if defined (__MINGW32__)
+ HANDLE hConOut = GetStdHandle (STD_OUTPUT_HANDLE);
+ if (hConOut != INVALID_HANDLE_VALUE)
+ {
+ CONSOLE_SCREEN_BUFFER_INFO scr;
+ if (GetConsoleScreenBufferInfo (hConOut, &scr))
+ {
+ _rl_screenwidth = scr.dwSize.X;
+ _rl_screenheight = scr.srWindow.Bottom - scr.srWindow.Top + 1;
+ }
+ }
+#endif
+
#if defined (__EMX__)
_emx_get_screensize (&_rl_screenwidth, &_rl_screenheight);
#endif