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 will be included and BSD type string library assumed (index instead of strchr), otherwise 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 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 header. USE_STDARG Define this if your system has an header. If this isn't defined will be included instead. USE_STDDEF Define this if your system has an header. If this isn't defined 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.