emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r104076: src/sysdep.c (get_tty_size)


From: Juanma Barranquero
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r104076: src/sysdep.c (get_tty_size) [WINDOWSNT]: Implement.
Date: Mon, 02 May 2011 05:57:02 +0200
User-agent: Bazaar (2.3.1)

------------------------------------------------------------
revno: 104076
fixes bug(s): http://debbugs.gnu.org/8596
committer: Juanma Barranquero <address@hidden>
branch nick: trunk
timestamp: Mon 2011-05-02 05:57:02 +0200
message:
  src/sysdep.c (get_tty_size) [WINDOWSNT]: Implement.
modified:
  src/ChangeLog
  src/sysdep.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2011-05-02 02:49:06 +0000
+++ b/src/ChangeLog     2011-05-02 03:57:02 +0000
@@ -1,5 +1,9 @@
 2011-05-02  Juanma Barranquero  <address@hidden>
 
+       * sysdep.c (get_tty_size) [WINDOWSNT]: Implement.  (Bug#8596)
+
+2011-05-02  Juanma Barranquero  <address@hidden>
+
        * gnutls.c (Qgnutls_log_level, Qgnutls_code, Qgnutls_anon)
        (Qgnutls_x509pki, Qgnutls_e_interrupted, Qgnutls_e_again)
        (Qgnutls_e_invalid_session, Qgnutls_e_not_ready_for_handshake)

=== modified file 'src/sysdep.c'
--- a/src/sysdep.c      2011-05-01 08:52:17 +0000
+++ b/src/sysdep.c      2011-05-02 03:57:02 +0000
@@ -1125,8 +1125,7 @@
 void
 get_tty_size (int fd, int *widthp, int *heightp)
 {
-
-#ifdef TIOCGWINSZ
+#if defined TIOCGWINSZ
 
   /* BSD-style.  */
   struct winsize size;
@@ -1139,8 +1138,7 @@
       *heightp = size.ws_row;
     }
 
-#else
-#ifdef TIOCGSIZE
+#elif defined TIOCGSIZE
 
   /* SunOS - style.  */
   struct ttysize size;
@@ -1153,16 +1151,28 @@
       *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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]