Update to ncurses-6.0
Change-Id: I98ab2ea8a5e13cca9f8b7cf6277b9b14a4da4299
diff --git a/Ada95/samples/sample-explanation.adb b/Ada95/samples/sample-explanation.adb
index 12a8deb..a2d1822 100644
--- a/Ada95/samples/sample-explanation.adb
+++ b/Ada95/samples/sample-explanation.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2004,2006 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2011,2014 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,8 +35,8 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control
--- $Revision: 1.20 $
--- $Date: 2006/06/25 14:30:22 $
+-- $Revision: 1.27 $
+-- $Date: 2014/09/13 19:10:18 $
-- Binding Version 01.00
------------------------------------------------------------------------------
-- Poor mans help system. This scans a sequential file for key lines and
@@ -58,7 +58,7 @@
Help_Keys : constant String := "HELPKEYS";
In_Help : constant String := "INHELP";
- File_Name : constant String := "explain.msg";
+ File_Name : constant String := "explain.txt";
F : File_Type;
type Help_Line;
@@ -73,8 +73,8 @@
Line : String_Access;
end record;
- procedure Explain (Key : in String;
- Win : in Window);
+ procedure Explain (Key : String;
+ Win : Window);
procedure Release_String is
new Ada.Unchecked_Deallocation (String,
@@ -86,14 +86,16 @@
function Search (Key : String) return Help_Line_Access;
procedure Release_Help (Root : in out Help_Line_Access);
- procedure Explain (Key : in String)
+ function Check_File (Name : String) return Boolean;
+
+ procedure Explain (Key : String)
is
begin
Explain (Key, Null_Window);
end Explain;
- procedure Explain (Key : in String;
- Win : in Window)
+ procedure Explain (Key : String;
+ Win : Window)
is
-- Retrieve the text associated with this key and display it in this
-- window. If no window argument is passed, the routine will create
@@ -126,7 +128,7 @@
Add (W, Key);
Add (W, " not found.");
Add (W, Character'Val (10));
- Add (W, "Press the Function key labelled 'Quit' key to continue.");
+ Add (W, "Press the Function key labeled 'Quit' key to continue.");
end Unknown_Key;
procedure Redo
@@ -135,9 +137,9 @@
begin
if Top_Line /= null then
for L in 0 .. (Height - 1) loop
- Add (W, L, 0, H.Line.all);
- exit when H.Next = null;
- H := H.Next;
+ Add (W, L, 0, H.all.Line.all);
+ exit when H.all.Next = null;
+ H := H.all.Next;
end loop;
else
Unknown_Key;
@@ -181,12 +183,12 @@
L : Line_Position := 0;
begin
loop
- Add (W, L, 0, C.Line.all);
+ Add (W, L, 0, C.all.Line.all);
L := L + 1;
- exit when C.Next = null or else L = Height;
- C := C.Next;
+ exit when C.all.Next = null or else L = Height;
+ C := C.all.Next;
end loop;
- if C.Next /= null then
+ if C.all.Next /= null then
pragma Assert (L = Height);
More := True;
else
@@ -248,20 +250,20 @@
if K in Special_Key_Code'Range then
case K is
when Key_Cursor_Down =>
- if Current.Next /= null then
+ if Current.all.Next /= null then
Move_Cursor (W, Height - 1, 0);
Scroll (W, 1);
- Current := Current.Next;
- Top_Line := Top_Line.Next;
- Add (W, Current.Line.all);
+ Current := Current.all.Next;
+ Top_Line := Top_Line.all.Next;
+ Add (W, Current.all.Line.all);
end if;
when Key_Cursor_Up =>
- if Top_Line.Prev /= null then
+ if Top_Line.all.Prev /= null then
Move_Cursor (W, 0, 0);
Scroll (W, -1);
- Top_Line := Top_Line.Prev;
- Current := Current.Prev;
- Add (W, Top_Line.Line.all);
+ Top_Line := Top_Line.all.Prev;
+ Current := Current.all.Prev;
+ Add (W, Top_Line.all.Line.all);
end if;
when QUIT_CODE => exit;
when others => null;
@@ -319,8 +321,10 @@
Outer :
loop
exit Outer when not Next_Line;
- if Last = (1 + Key'Length) and then Key = Buffer (2 .. Last)
- and then Buffer (1) = '#' then
+ if Last = (1 + Key'Length)
+ and then Key = Buffer (2 .. Last)
+ and then Buffer (1) = '#'
+ then
loop
exit when not Next_Line;
exit when Buffer (1) = '#';
@@ -330,8 +334,8 @@
Release_Help (Root);
Root := Current;
else
- Tail.Next := Current;
- Current.Prev := Tail;
+ Tail.all.Next := Current;
+ Current.all.Prev := Tail;
end if;
Tail := Current;
end loop;
@@ -347,8 +351,8 @@
begin
loop
exit when Root = null;
- Next := Root.Next;
- Release_String (Root.Line);
+ Next := Root.all.Next;
+ Release_String (Root.all.Line);
Release_Help_Line (Root);
Root := Next;
end loop;
@@ -360,7 +364,7 @@
Explain (Context);
end Explain_Context;
- procedure Notepad (Key : in String)
+ procedure Notepad (Key : String)
is
H : constant Help_Line_Access := Search (Key);
T : Help_Line_Access := H;
@@ -371,7 +375,7 @@
begin
if H /= null then
loop
- T := T.Next;
+ T := T.all.Next;
exit when T = null;
N := N + 1;
end loop;
@@ -391,9 +395,9 @@
P := New_Panel (W);
T := H;
loop
- Add (W, L + 1, 1, T.Line.all, Integer (Columns - 2));
+ Add (W, L + 1, 1, T.all.Line.all, Integer (Columns - 2));
L := L + 1;
- T := T.Next;
+ T := T.all.Next;
exit when T = null;
end loop;
T := H;
@@ -403,6 +407,26 @@
end if;
end Notepad;
+ function Check_File (Name : String) return Boolean is
+ The_File : File_Type;
+ begin
+ Open (The_File, In_File, Name);
+ Close (The_File);
+ return True;
+ exception
+ when Name_Error =>
+ return False;
+ end Check_File;
+
begin
- Open (F, In_File, File_Name);
+ if Check_File ("/usr/share/AdaCurses/" & File_Name) then
+ Open (F, In_File, "/usr/share/AdaCurses/" & File_Name);
+ elsif Check_File (File_Name) then
+ Open (F, In_File, File_Name);
+ else
+ Put_Line (Standard_Error,
+ "The file explain.txt was not found in the current directory."
+ );
+ raise Name_Error;
+ end if;
end Sample.Explanation;