PREV UP NEXT ne's manual

Chapter 9: Portability Problems

This chapter is devoted to the description of the (hopefully very few) problems that could arise when porting ne to another version of UN*X. Compatibility within the Amiga family of computers is complete, so there are no problems in recompiling ne for a different processor or architecture in this case.

The fact that only POSIX calls have been used (see Motivations and Design) should guarantee that on POSIX-compliant systems a recompilation should suffice. Unfortunately, terminfo has not been standardized by IEEE, so that different calls could be available. The necessary calls are setupterm(), fixterm(), resetterm(), tparm() and tputs(). The other terminfo functions are never used.

If terminfo is not available, the source files `info2cap.c' and `info2cap.h' map terminfo calls on termcap calls. The complete GNU termcap sources are distributed with ne, so no library at all is needed in order to use them. You just have to compile using as makefile `Makefile.termcap'. Should you need comprehensive information on GNU termcap, you can find the distribution files on any ftp site which distributes the GNU archives. I should note that the GNU termcap manual is definitely the best manual ever written about terminal databases.

There are, however, some details which are not specified by POSIX, or are specified with insufficient precision. The places of the source where such details come to the light are evidenced by the `PORTABILITY PROBLEM' string, which is followed by a complete explanation of problem.

For instance, there is no standard way of printing extended ASCII characters (i.e., characters whose code is smaller than 32 or greater than 126). On many system, these characters have to be filtered and replaced with something printable: the default behaviour is to add 64 to all characters under 32 (so that control characters will translate to the respective letter) and to visualize all characters between 126 and 160 as a question mark (this works particularly well with ISO Latin 1). If your system has a more powerful display, you may want to change the DECONTROL() macro defined in `term.c' which takes a character variable as an argument, and transforms it into a printable character.

Note that it is perfectly possible that some system features not standardized by POSIX interfere with ne's usage of the I/O stream. Such problems should be attached locally, by using the system facilities, rather than by #ifdef'ing horribly the source code. An example is given in Hints and Tricks.


Contact:
vigna@dsi.unimi.it - about ne
bela@www.emerson.emory.edu - about these pages