This is the mail archive of the
cygwin-patches@cygwin.com
mailing list for the Cygwin project.
Re: a bug in restoring the console.
- To: cygwin-patches at cygwin dot com
- Subject: Re: a bug in restoring the console.
- From: Christopher Faylor <cgf at redhat dot com>
- Date: Mon, 3 Sep 2001 18:06:05 -0400
- References: <s1szo8c6p0y.fsf@jaist.ac.jp>
- Reply-To: cygwin-patches at cygwin dot com
Corinna, it sounds like this should go in 1.3.3. What do you think?
cgf
On Tue, Sep 04, 2001 at 04:41:01AM +0900, Kazuhiro Fujieda wrote:
>I succeeded to enjoy the feature saving/restoring the console
>with less and the latest termcap, but found a bug on NT4/Win2k.
>
>Less can't restore the previous screen properly when it starts
>on the down-scrollable console window. It can scroll the console
>buffer. When it terminates, the sequence restoring the cursor
>included in `te' scrolls back and breaks the restored screen.
>
>It is triggered by the wrong implementation of the feature
>saving/restoring the cursor position. It shouldn't save the
>position of the console buffer, but the cursor position.
>
>The following patch corrects the implementation and can solve my
>problem.
>
>2001-09-04 Kazuhiro Fujieda <fujieda@jaist.ac.jp>
>
> * fhandler_console.cc (fhandler_console::char_command): Save the cursor
> position relative to the top of the window.
> * fhandler_cc (fhandler_console::write): Ditto.
>
>Index: fhandler_console.cc
>===================================================================
>RCS file: /cvs/src/src/winsup/cygwin/fhandler_console.cc,v
>retrieving revision 1.57
>diff -u -p -r1.57 fhandler_console.cc
>--- fhandler_console.cc 2001/08/07 05:15:59 1.57
>+++ fhandler_console.cc 2001/09/03 19:38:00
>@@ -1306,9 +1306,10 @@ fhandler_console::char_command (char c)
> break;
> case 's': /* Save cursor position */
> cursor_get (&savex, &savey);
>+ savey -= info.winTop;
> break;
> case 'u': /* Restore cursor position */
>- cursor_set (FALSE, savex, savey);
>+ cursor_set (TRUE, savex, savey);
> break;
> case 'I': /* TAB */
> cursor_get (&x, &y);
>@@ -1543,12 +1544,13 @@ fhandler_console::write (const void *vsr
> }
> else if (*src == '8') /* Restore cursor position */
> {
>- cursor_set (FALSE, savex, savey);
>+ cursor_set (TRUE, savex, savey);
> state_ = normal;
> }
> else if (*src == '7') /* Save cursor position */
> {
> cursor_get (&savex, &savey);
>+ savey -= info.winTop;
> state_ = normal;
> }
> else if (*src == 'R')
>
>____
> | AIST Kazuhiro Fujieda <fujieda@jaist.ac.jp>
> | HOKURIKU Center for Information Science
>o_/ 1990 Japan Advanced Institute of Science and Technology
--
cgf@cygnus.com Red Hat, Inc.
http://sources.redhat.com/ http://www.redhat.com/