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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
|
Compiling this package requires a fair bit of knowledge about your system.
There are no automatic configuration programmes or prepared configuration
files for different type of systems. You will need to edit the Makefile
to specify things like which compiler to use and any options it needs.
The file config.h needs to be edited to reflect the system you are
using and to enable and/or disable certain features.
Defines in config.h
===================
USE_ANSIC
Normally this will be defined automaticly if __STDC__ is defined, but
if your compile isn't truly ANSI C compliant you may need to undefine this.
USE_TERMIO
Define this if your system uses the termio tty driver. System III and
System V use termio.
USE_SGTTY
Define this if your system uses the "sgtty" tty driver. V7 Unix and BSD
use sgtty.
USE_WINSZ
If you defined USE_SGTTY you can define this if your system supports
SIGWINSZ and the accompaning ioctls. If this is defined the library
will get number of columns and lines from the tty driver not the
terminal description. BSD 4.3 supports SIGWINSZ. This will also work
if USE_TERMIO is defined on some hybrid System V machines such as Release 4.
Do not define both USE_TERMIO and USE_SGTTY. If your system supports both
you'd probably be better of defining USE_TERMIO. If your system supports
neither termio or sgtty you can leave USE_TERMIO and USE_SGTTY undefined,
but this is only recommended for use with micomputers.
USE_STRINGS
If you define this then the header file <strings.h> will be included
and BSD type string library assumed (index instead of strchr), otherwise
<string.h> will included. If you have a BSD type system define this.
If you have an ANSI C, System III, or System V type of system leave it
undefined.
USE_MYBSEARCH
If your system's C library doesn't include bsearch, define this.
Most System V systems have bsearch. However even your C library has this
function you still may want to define USE_MYBSEARCH, see USE_SHORT_BSEARCH
below. ("MYBSEARCH" is misnomer, I didn't write this routine.)
USE_SHORT_BSEARCH
If you define USE_MYBSEARCH you can define this so that the bsearch
routine that library uses the type short instead of size_t (usually long)
for it's arguments. This results a large speedup on 68000 based machines
and possibly a significant speedup on others as well. However on some CPU's
defining this will only make things slower.
USE_MYSTRTOK
If your system's C library doesn't include strtok, define this.
Most ANSI C, System III, and System V systems have this.
USE_MYQSORT
If your system's C library doesn't include qsort, define this.
All most all systems should have this function, if it doesn't complain
to your vendor. The qsort routine comes from the GNU Emacs distribution.
USE_MYMKDIR
Define this if your system doesn't have the mkdir library function call.
My routine simply calls the system command mkdir, you may have to
edit mkdir.c if the pathname of that command isn't "/bin/mkdir".
USE_MEMORY
If your system has a <memory.h> header define this. If USE_MEMORY
is not defined bcopy will used instead of memcpy.
USE_SMALLMEM
Use you can define use this to save some memory, but it doesn't
save much at moment, and will only slow the library down.
USE_FAKE_STDIO
If you define this then the library won't use the real stdio but a
fake one instead. This is for compatiblity with termcap and vi which
don't use stdio.
USE_DOPRNT
If you don't have a vfprintf function, but you have a _doprnt function
define this. If you don't have either than you can compile the library
but not the support programmes. System V has vfprintf and most Unixes
have a _doprnt (but probably not documented). BSD has released a freely
distributable vfprintf for BSD Unixes.
USE_UPBC_KLUDGE
Define this if you want the library's tgoto to work like termcap's tgoto
and avoid putting ^D, and \n into an output string by using the cursor up
and backspace strings.
USE_EXTERN_UPBC
If you defined USE_UPBC_KLUDGE you can define this so tgoto will,
like termcap's tgoto, get the cursor up and backspace strings from the
externs UP and BC instead from the library's internal record.
USE_LITOUT_KLUDGE
Don't define this. It's another kludge for tgoto.
If neither USE_UPBC_KLUDGE or USE_LITOUT_KLUDGE is defined then tgoto
won't worry about putting ^D, and \n in a string.
USE_PROTOTYPES
Define this if your compiler supports ANSI C style prototypes.
USE_STDLIB
Define this if your system has an <stdlib.h> header.
USE_STDARG
Define this if your system has an <stdarg.h> header. If this isn't
defined <varargs.h> will be included instead.
USE_STDDEF
Define this if your system has an <stddef.h> header. If this isn't
defined <sys/types.h> will be included instead.
typedef char *anyptr;
You should change the typedef to a type that any pointer can be assigned
to or from. ANSI C compilers can use "typedef void *anyptr", most
other compilers should use "typedef char *anyptr".
#define mysize_t unsigned
"mysize_t" needs to defined as the type of the size of an object, or
the type of the sizeof operator. Traditional usage is "unsigned", for
ANSI C you should define mysize_t as "size_t".
TERMCAPFILE
Define this to a string containing the default termcap file(s) to look
for terminal descriptions in. Multiple filenames should be seperated
by spaces and environment variables can be specfied by prefixing them
with dolar signs ($). eg:
#define TERMCAPFILE "$TERMCAPFILE $HOME/.termcap /etc/termcap"
TERMINFOSRC
Define this to a string containing the default terminfo source file to
look for terminal descriptions in.
TERMINFODIR
Define this as the directory containing the default terminfo database,
usually "/usr/lib/terminfo".
Any of TERMCAPFILE, TERMINFOSRC or TERMINFODIR can be left undefined.
defs.h
======
You may also need to edit defs.h and change the definitions of MAX_BUF,
MAX_LINE, and MAX_NAME. Unless you are seriously starved for memory I
don't recomend making them smaller.
cap_list
========
You can add new capabilities to the file cap_list. You must provide
a type, terminfo variable name, terminfo capname, and termcap name for
all capabilities and you must make sure they are all unique.
Making in the library
=====================
Once you've configured the package you can just type "make" and it
will build the library and the "term.h" header. You can enter
"make all" to make the library and the support programmes, tconv,
cap2info, tic, clear, tput and tset. If you want a profiled library
you can enter "make profiled". You can remove all the intermediate
files with "make clean". "make spotless" will remove the target
files as well.
Installing the library
======================
As for installing it, that's up to you. Depending on how much you
plan to use the libraries and whether or not you have termcap and/or
terminfo already you can install them "standard" places (ie. /usr/lib,
/usr/include, /usr/bin), in local directories, or just leave them in
the source directory. However if you are compiling programmes that
use terminfo and linking it with this library you must make sure that
this library's term.h file is included in your programme and not the
system supplied one.
|