Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Mark Mitchell <mark@codesourcery.com>
To: bug-readline@gnu.org
Cc: gdb-patches@sources.redhat.com
Subject: PATCH: Use getche on Win32
Date: Mon, 09 May 2005 20:42:00 -0000	[thread overview]
Message-ID: <200505092015.j49KFoPw028903@sethra.codesourcery.com> (raw)


[This is the penultimate GDB-on-MinGW patch.]

Windows console semantics are different from UNIX.  If we just use
"read" to read what the user's typing, we end up blocking until a
newline is available, and even then there are some oddities.  The
easiest thing seems to be to use the special "getche" (short for "get
character with echo") routine which does the right thing.

Reviews?

--
Mark Mitchell
CodeSourcery, LLC
mark@codesourcery.com

2005-05-09  Mark Mitchell  <mark@codesourcery.com>

	* readline/input.c (rl_getc): Use getche to read console input on
	Windows.

Index: input.c
===================================================================
RCS file: /cvs/src/src/readline/input.c,v
retrieving revision 1.5
retrieving revision 1.5.60.1
diff -c -5 -p -r1.5 -r1.5.60.1
*** input.c	8 Dec 2002 22:31:37 -0000	1.5
--- input.c	5 Apr 2005 17:53:04 -0000	1.5.60.1
*************** rl_getc (stream)
*** 422,431 ****
--- 422,438 ----
    int result;
    unsigned char c;
  
    while (1)
      {
+ #ifdef __MINGW32__
+       /* On Windows, use a special routine to read a single character
+ 	 from the console.  (Otherwise, no characters are available
+ 	 until the user hits the return key.)  */
+       if (isatty (fileno (stream)))
+ 	  return getche ();
+ #endif
        result = read (fileno (stream), &c, sizeof (unsigned char));
  
        if (result == sizeof (unsigned char))
  	return (c);
  


             reply	other threads:[~2005-05-09 20:18 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-05-09 20:42 Mark Mitchell [this message]
2005-05-10  6:01 ` Eli Zaretskii
2005-05-10 11:45   ` Mark Mitchell
2005-05-10 20:05     ` Eli Zaretskii
2005-05-10 20:26       ` Mark Mitchell
2005-05-10 20:31         ` Eli Zaretskii
2005-05-10 20:49           ` Daniel Jacobowitz
2005-05-10 21:41             ` Christopher Faylor
2005-05-11  6:55               ` Christopher Faylor
2005-05-11  7:13                 ` Eli Zaretskii
2005-05-11  7:17                   ` Mark Mitchell
2005-05-11  7:21                 ` MinGW build instructions (was: PATCH: Use getche on Win32) Eli Zaretskii
2005-05-11  7:29                   ` MinGW build instructions Mark Mitchell
2005-05-11  7:53                     ` Eli Zaretskii
2005-05-11 18:45                     ` Christopher Faylor
2005-05-11 19:05                       ` Eli Zaretskii
2005-05-11 19:58                         ` Christopher Faylor
2005-05-11 23:16                           ` Eli Zaretskii
2005-05-11  6:56             ` PATCH: Use getche on Win32 Mark Mitchell
2005-05-11 13:42               ` Eli Zaretskii
2005-05-13 11:42                 ` Mark Mitchell
2005-05-13 15:18                   ` Eli Zaretskii
2005-05-11  7:07             ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200505092015.j49KFoPw028903@sethra.codesourcery.com \
    --to=mark@codesourcery.com \
    --cc=bug-readline@gnu.org \
    --cc=gdb-patches@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox