source: trunk/minix/lib/ack/libm2/Termcap.mod@ 20

Last change on this file since 20 was 9, checked in by Mattia Monga, 14 years ago

Minix 3.1.2a

File size: 2.2 KB
RevLine 
[9]1(*
2 (c) copyright 1988 by the Vrije Universiteit, Amsterdam, The Netherlands.
3 See the copyright notice in the ACK home directory, in the file "Copyright".
4*)
5
6(*
7 Module: Interface to termcap database
8 From: Unix manual chapter 3
9 Version: $Header: /cvsup/minix/src/lib/ack/libm2/Termcap.mod,v 1.1 2005/10/10 15:27:46 beng Exp $
10*)
11
12(*$R-*)
13IMPLEMENTATION MODULE Termcap;
14
15 IMPORT XXTermcap;
16 FROM SYSTEM IMPORT ADR, ADDRESS;
17 FROM Unix IMPORT isatty;
18 FROM Arguments IMPORT
19 GetEnv;
20
21 TYPE STR = ARRAY[1..32] OF CHAR;
22 STRCAP = POINTER TO STR;
23
24 VAR Buf, Buf1 : ARRAY [1..1024] OF CHAR;
25 BufCnt : INTEGER;
26
27 PROCEDURE Tgetent(name: ARRAY OF CHAR) : INTEGER;
28 VAR i: INTEGER;
29 x: STRCAP;
30 BEGIN
31 i := XXTermcap.tgetent(ADR(Buf), ADR(name));
32 BufCnt := 1;
33 IF isatty(1) THEN
34 ELSE
35 (* This used to be something returned by gtty(). To increase
36 * portability we forget about old terminals needing delays.
37 * (kjb)
38 *)
39 XXTermcap.ospeed := 0;
40 END;
41 IF i > 0 THEN
42 IF Tgetstr("pc", x) THEN
43 XXTermcap.PC := x^[1];
44 ELSE XXTermcap.PC := 0C;
45 END;
46 IF Tgetstr("up", x) THEN ; END; XXTermcap.UP := x;
47 IF Tgetstr("bc", x) THEN ; END; XXTermcap.BC := x;
48 END;
49 RETURN i;
50 END Tgetent;
51
52 PROCEDURE Tgetnum(id: ARRAY OF CHAR): INTEGER;
53 BEGIN
54 RETURN XXTermcap.tgetnum(ADR(id));
55 END Tgetnum;
56
57 PROCEDURE Tgetflag(id: ARRAY OF CHAR): BOOLEAN;
58 BEGIN
59 RETURN XXTermcap.tgetflag(ADR(id)) = 1;
60 END Tgetflag;
61
62 PROCEDURE Tgoto(cm: STRCAP; col, line: INTEGER): STRCAP;
63 BEGIN
64 RETURN XXTermcap.tgoto(cm, col, line);
65 END Tgoto;
66
67 PROCEDURE Tgetstr(id: ARRAY OF CHAR; VAR res: STRCAP) : BOOLEAN;
68 VAR a, a2: ADDRESS;
69 b: CARDINAL;
70 BEGIN
71 a := ADR(Buf1[BufCnt]);
72 a2 := XXTermcap.tgetstr(ADR(id), ADR(a));
73 res := a2;
74 IF a2 = NIL THEN
75 RETURN FALSE;
76 END;
77 b := a - a2;
78 INC(BufCnt, b);
79 RETURN TRUE;
80 END Tgetstr;
81
82 PROCEDURE Tputs(cp: STRCAP; affcnt: INTEGER; p: PUTPROC);
83 BEGIN
84 XXTermcap.tputs(cp, affcnt, XXTermcap.PUTPROC(p));
85 END Tputs;
86
87 PROCEDURE InitTermcap;
88 VAR Bf: STR;
89 BEGIN
90 IF GetEnv("TERM", Bf) = 0 THEN
91 Bf := "dumb";
92 END;
93 IF Tgetent(Bf) <= 0 THEN
94 END;
95 END InitTermcap;
96
97BEGIN
98 InitTermcap;
99END Termcap.
Note: See TracBrowser for help on using the repository browser.