/MirOS/dist/jupp/joe-3.1jupp30.tgz
[alioth/jupp.git] / termcap.h
1 /* $MirOS: contrib/code/jupp/termcap.h,v 1.4 2010/04/08 15:31:04 tg Exp $ */
2 /*
3  *      TERMCAP/TERMINFO header file
4  *      Copyright
5  *              (C) 1992 Joseph H. Allen
6  *
7  *      This file is part of JOE (Joe's Own Editor)
8  */ 
9 #ifndef _JOE_TERMCAP_H
10 #define _JOE_TERMCAP_H 1
11  
12 #include "config.h"
13 #include "types.h"
14
15 /* CAP *getcap(char *s,int baud,void (*out)(void *outptr,char c),void *outptr);
16  *
17  * Get CAP entry for terminal named in 's'.  If 's' is zero, the name in
18  * the environment variable 'TERM' is used instead.  Space for the returned
19  * CAP is allocated from the heap using malloc.
20  *
21  * 'baud'   is the baud rate used for 'texec' to calculate number of pad chars
22  * 'out'    is the function 'texec' uses to output characters
23  * 'outptr' is the passed as the first arg to 'out'
24  *          the second arg contains the char to output
25  *
26  * This is how 'getcap' finds the entry:  First a list of file names is
27  * built.  If the environment variable 'TERMCAP' begins with a '/', it
28  * is used as the list of file names.  Otherwise, if the environment
29  * variable 'TERMPATH' is set, it is used as the list of file names.  If
30  * that isn't set, then the string TERMPATH defined above is appended
31  * to value of the 'HOME' environment variable, and that is used as the
32  * list of names (a '/' is placed between the value of the environment
33  * variable and the string).  If HOME isn't set, then TERMPATH alone is
34  * used as the list of file names (without prepending a '/').
35  *
36  * Now the contents of the environment variable 'TERMCAP' (if it's defined and
37  * if it doesn't begin with a '/') and the files from the above list are
38  * scanned for the terminal name.  The contents of the environment variable
39  * are scanned first, then the files are scanned in the order they appear in
40  * the named list.
41  *
42  * If the last part of a matching termcap entry is a 'tc=filename', then
43  * the current file is rewound and rescanned for the matching entry (and if
44  * it's not found, the next entry in the file name list is searched).  If
45  * a matching termcap entry in the TERMCAP environment variable ends with
46  * a 'tc=filename', then all of the files in the name list are searched.
47  *
48  * There is no limit on the size of the termcap entries.  No checking is
49  * done for self-refering 'tc=filename' links (so all of core will be
50  * allocated if there are any).
51  */
52 CAP *getcap PARAMS((unsigned char *name, unsigned int baudrate, void (*out) (unsigned char *, unsigned char), void *outptr));
53
54 /* CAP *setcap(CAP *cap,int baud,void (*out)(void *outptr,char c),void *outptr);
55  *
56  * Reset baud, out and outptr for a CAP
57  */
58 CAP *setcap PARAMS((CAP *cap, unsigned int baudrate, void (*out) (unsigned char *, unsigned char), void *outptr));
59
60 /* char *jgetstr(CAP *cap,char *name);
61  *
62  * Get value of string capability or return NULL if it's not found.  A fast
63  * binary search is used to find the capability.  The char * returned points into
64  * the buffer used to load the termcap entry.  It should not be modified or
65  * freed.
66  */
67 unsigned char *jgetstr PARAMS((CAP *cap, unsigned char *name));
68
69 /* int getflag(CAP *cap,char *name);
70  *
71  * Return true if the named capability is found in 'cap'.  A fast binary
72  * search is used to lookup the capability.
73  */
74 int getflag PARAMS((CAP *cap, unsigned char *name));
75
76 /* int getnum(CAP *cap,char *name);
77  *
78  * Return value of numeric capability or return -1 if it's not found.  A fast
79  * binary search is used to lookup the capability.
80  */
81 int getnum PARAMS((CAP *cap, unsigned char *name));
82
83 /* void rmcap(CAP *cap);
84  *
85  * Eliminate a CAP entry.
86  */
87 void rmcap PARAMS((CAP *cap));
88
89 /* void texec(CAP *cap,char *str,int l,int a0,int a1,int a2,int a3);
90
91    Execute and output a termcap string capability.
92
93    'cap' is the CAP returned by getcap which contains the baud rate and output
94    function.
95    
96    'str' is the string to execute.  If 'str'==NULL, nothing happens.
97    
98    'l' is the number of lines effected by this string.  For example, if you
99    use the clear to end of screen capability, the number of lines between
100    the current cursor position and the end of the screen should be
101    given here.
102
103    'a0' - 'a1' are the arguments for the string
104 */
105 void texec PARAMS((CAP *cap, unsigned char *s, int l, int a0, int a1, int a2, int a3));
106
107 /* int tcost(CAP *cap,char *str, int l, int a0, int a1, int a2, int a3);
108    Return cost in number of characters which need to be sent
109    to execute a termcap string capability.
110
111    'cap' is the CAP returned by getcap which contains the baud rate and output
112    functions.
113    
114    'str' is the string to execute.  If 'str'==NULL, tcost return 10000.
115    
116    'l' is the number of lines effected by this string.  Ex: if you
117    use the clear to end of screen capability, the number of lines between
118    the current cursor position and the end of the screen should be
119    given here.
120
121    'a0' - 'a3' are arguements passed to the string
122 */
123 int tcost PARAMS((CAP *cap, unsigned char *s, int l, int a0, int a1, int a2, int a3));
124
125 /* char *tcompile(CAP *cap,char *str,int a0,int a1,int a2,int a3);
126
127    Compile a string capability.  Returns a pointer to a variable length
128    string (see vs.h) containing the compiled string capability.
129    Pad characters are not placed in the string.
130 */
131 unsigned char *tcompile PARAMS((CAP *cap, unsigned char *s, int a0, int a1, int a2, int a3));
132
133 int tgetent PARAMS((char *, const char *));
134 int tgetflag PARAMS((char *));
135 int tgetnum PARAMS((char *));
136 int tputs PARAMS((const char *, int, int (*)(int)));
137 char *tgetstr PARAMS((char *, char **));
138 char *tgoto PARAMS((const char *, int, int));
139
140 #endif