X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=Ada95%2Fsamples%2Fncurses2-slk_test.adb;h=755542c315471cc6cbee5a8f1432726120a479ef;hp=77ca2843fa68a98a13b821ecc0fbe3a50f32ca38;hb=746490c7ab9f66c7521c500684e65eca223c551c;hpb=46722468f47c2b77b3987729b4bcf2321cccfd01;ds=sidebyside diff --git a/Ada95/samples/ncurses2-slk_test.adb b/Ada95/samples/ncurses2-slk_test.adb index 77ca2843..755542c3 100644 --- a/Ada95/samples/ncurses2-slk_test.adb +++ b/Ada95/samples/ncurses2-slk_test.adb @@ -7,7 +7,7 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- Copyright (c) 2000-2011,2018 Free Software Foundation, Inc. -- -- -- -- Permission is hereby granted, free of charge, to any person obtaining a -- -- copy of this software and associated documentation files (the -- @@ -35,7 +35,8 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.1 $ +-- $Revision: 1.10 $ +-- $Date: 2018/07/07 23:30:32 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with ncurses2.util; use ncurses2.util; @@ -46,13 +47,13 @@ with Interfaces.C; with Terminal_Interface.Curses.Aux; procedure ncurses2.slk_test is - procedure myGet (Win : in Window := Standard_Window; + procedure myGet (Win : Window := Standard_Window; Str : out Ada.Strings.Unbounded.Unbounded_String; - Len : in Integer := -1); + Len : Integer := -1); - procedure myGet (Win : in Window := Standard_Window; + procedure myGet (Win : Window := Standard_Window; Str : out Ada.Strings.Unbounded.Unbounded_String; - Len : in Integer := -1) + Len : Integer := -1) is use Ada.Strings.Unbounded; use Interfaces.C; @@ -63,18 +64,18 @@ procedure ncurses2.slk_test is Len : int) return int; pragma Import (C, Wgetnstr, "wgetnstr"); - Txt : char_array (0 .. 10); + -- FIXME: how to construct "(Len > 0) ? Len : 80"? + Ask : constant Interfaces.C.size_t := Interfaces.C.size_t'Val (Len + 80); + Txt : char_array (0 .. Ask); + begin Txt (0) := Interfaces.C.char'First; - if Wgetnstr (Win, Txt, 8) = Curses_Err then + if Wgetnstr (Win, Txt, Txt'Length) = Curses_Err then raise Curses_Exception; end if; Str := To_Unbounded_String (To_Ada (Txt, True)); end myGet; - - use Int_IO; - use Ada.Strings.Unbounded; c : Key_Code; @@ -158,7 +159,7 @@ begin when 'x' | 'q' => exit; -- the C version needed a goto, ha ha - -- breaks exit the case not the loop because fall-throuh + -- breaks exit the case not the loop because fall-through -- happens in C! when others => Beep;