From: Juanma Barranquero Date: Mon, 2 May 2011 03:57:02 +0000 (+0200) Subject: src/sysdep.c (get_tty_size) [WINDOWSNT]: Implement. X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~150 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=e16e55d4a02105b03434e1434e1a13562503d0f2;p=emacs.git src/sysdep.c (get_tty_size) [WINDOWSNT]: Implement. Fixes: debbugs:8596 --- diff --git a/src/ChangeLog b/src/ChangeLog index 2137c133f54..1231099fff3 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2011-05-02 Juanma Barranquero + + * sysdep.c (get_tty_size) [WINDOWSNT]: Implement. (Bug#8596) + 2011-05-02 Juanma Barranquero * gnutls.c (Qgnutls_log_level, Qgnutls_code, Qgnutls_anon) diff --git a/src/sysdep.c b/src/sysdep.c index ea9a25cc6e7..462e03879c6 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -1125,8 +1125,7 @@ tabs_safe_p (int fd) void get_tty_size (int fd, int *widthp, int *heightp) { - -#ifdef TIOCGWINSZ +#if defined TIOCGWINSZ /* BSD-style. */ struct winsize size; @@ -1139,8 +1138,7 @@ get_tty_size (int fd, int *widthp, int *heightp) *heightp = size.ws_row; } -#else -#ifdef TIOCGSIZE +#elif defined TIOCGSIZE /* SunOS - style. */ struct ttysize size; @@ -1153,16 +1151,28 @@ get_tty_size (int fd, int *widthp, int *heightp) *heightp = size.ts_lines; } -#else -#ifdef MSDOS +#elif defined WINDOWSNT + + CONSOLE_SCREEN_BUFFER_INFO info; + if (GetConsoleScreenBufferInfo (GetStdHandle (STD_OUTPUT_HANDLE), &info)) + { + *widthp = info.srWindow.Right - info.srWindow.Left + 1; + *heightp = info.srWindow.Bottom - info.srWindow.Top + 1; + } + else + *widthp = *heightp = 0; + +#elif defined MSDOS + *widthp = ScreenCols (); *heightp = ScreenRows (); + #else /* system doesn't know size */ + *widthp = 0; *heightp = 0; + #endif -#endif /* not SunOS-style */ -#endif /* not BSD-style */ } /* Set the logical window size associated with descriptor FD