This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Ada: Text_Io.Get_Immediate() is blocking

Gerrit P. Haase wrote:

Hallo Martin,

Am Dienstag, 7. September 2004 um 16:01 schriebst du:

I'm working with ADA and Windows2000/Cygwin.

A call to Text_Io.Get_Immediate() should return even if there is no input waiting. I have no problems with Linux, but trying to shift Software to Windows brings me into trouble: If there is no input waiting, the call is blocking.

Here is a simple example:
(Save it as "keyboardtest.adb" and call "gnatmake keyboardtest".)
with Text_Io;
procedure Keyboardtest is
Char : Character := ' ';
Key_Pressed : Boolean := False;
Text_Io.Get_Immediate(Char, Key_Pressed);
if Key_Pressed then
Text_Io.Put_Line("[" & Char & "]");
end if;
end Keyboardtest;

With Linux (gcc version 3.2.3, GNAT Pro 5.02a) this program terminates
immediately which is the correct behaviour. With Win2000/Cygwin it waits
until a key is pressed, prints out the key and then terminates.

"gcc -v" says:
Reading specs from /usr/lib/gcc-lib/i686-pc-cygwin/3.3.1/specs
Configured with: /GCC/gcc-3.3.1-3/configure --with-gcc --with-gnu-ld
--with-gnu-as --prefix=/usr --exec-prefix=/u
sr --sysconfdir=/etc --libdir=/usr/lib --libexecdir=/usr/sbin --mandir=/usr/share/man --infodir=/usr/share/info -
-enable-languages=c,ada,c++,f77,pascal,java,objc --enable-libgcj --enable-threads=posix --with-system-zlib --enab
le-nls --without-included-gettext --enable-interpreter --enable-sjlj-exceptions --disable-version-specific-runtim
e-libs --enable-shared --disable-win32-registry --enable-java-gc=boehm
--disable-hash-synchronization --verbose -
-target=i686-pc-cygwin --host=i686-pc-cygwin --build=i686-pc-cygwin
Thread model: posix
gcc version 3.3.1 (cygming special)

"gnat" says:
GNAT 3.3.1 (cygming special) Copyright 1996-2002 Free Software Foundation, Inc.

Do you know any solution or workaround? Thank you!!!

Please upgrade to gcc-3.3.3 or try the test release gcc-3.4
(experimental button in setup.exe installer).


Okay, I updated to gcc-3.3.3 but nothing changed: Text_Io.Get_Immediate() is still blocking.
I'm a bit stuck as this function is the only way in ADA to get keyboard input nonblocking.

Thanks for further help!

-- Unsubscribe info: Problem reports: Documentation: FAQ:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]