1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
-- Topal: GPG/GnuPG and Alpine/Pine integration
-- Copyright (C) 2001--2008 Phillip J. Brooke
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License version 3 as
-- published by the Free Software Foundation.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
with Ada.Text_IO;
with Interfaces.C;
with Misc; use Misc;
package body Echo is
pragma Linker_Options("ada-echo-c.o");
function C_Set_Echo return Interfaces.C.int;
pragma Import(C, C_Set_Echo, "setecho");
function C_No_Echo return Interfaces.C.int;
pragma Import(C, C_No_Echo, "noechoT");
procedure Set_Echo is
Result : Interfaces.C.Int;
use type Interfaces.C.Int;
begin
Debug("Setting echo; input will be echoed");
Result := C_Set_Echo;
if Result /= 0 then
raise Operation_Failed;
end if;
exception
when others =>
Ada.Text_IO.Put_Line(Ada.Text_IO.Standard_Error,
"Exception raised in Echo.Set_Echo");
raise;
end Set_Echo;
procedure Clear_Echo is
Result : Interfaces.C.Int;
use type Interfaces.C.Int;
begin
Debug("Clearing echo; no input will be echoed");
Result := C_No_Echo;
if Result /= 0 then
raise Operation_Failed;
end if;
exception
when others =>
Ada.Text_IO.Put_Line(Ada.Text_IO.Standard_Error,
"Exception raised in Echo.Clear_Echo");
raise;
end Clear_Echo;
end Echo;
|