(*
  (c) copyright 1988 by the Vrije Universiteit, Amsterdam, The Netherlands.
  See the copyright notice in the ACK home directory, in the file "Copyright".
*)
 
(* 
  Module:       Interface to termcap database
  From:         Unix manual chapter 3 
  Version:      $Header$ 
*)

(*
  Use this like the C-version. In this Modula-2 version, some of the buffers,
  that are explicit in the C-version, are hidden. These buffers are initialized
  by a call to Tgetent. The "ARRAY OF CHAR" parameters must be null-terminated.
  You can call them with a constant string argument, as these are always
  null-terminated in our Modula-2 implementation.
  Unlike the C version, this version takes care of UP, BC, PC, and ospeed
  automatically.
  If Tgetent is not called by the user, it is called by the module itself,
  using the TERM environment variable, or "dumb" if TERM does not exist.
*)

DEFINITION MODULE Termcap;

  TYPE	STRCAP;
	PUTPROC = PROCEDURE(CHAR);

  PROCEDURE Tgetent(name: ARRAY OF CHAR) : INTEGER;

  PROCEDURE Tgetnum(id: ARRAY OF CHAR): INTEGER;

  PROCEDURE Tgetflag(id: ARRAY OF CHAR): BOOLEAN;

  PROCEDURE Tgoto(cm: STRCAP; col, line: INTEGER): STRCAP;
  (* Result exists until next call to Tgoto *)

  PROCEDURE Tgetstr(id: ARRAY OF CHAR; VAR res: STRCAP) : BOOLEAN;
  (* Returns FALSE if capability does not exist;
     Result exists until next call to Tgetent.
  *)

  PROCEDURE Tputs(cp: STRCAP; affcnt: INTEGER; p: PUTPROC);

END Termcap.
