The Tecla command-line editing library.

The tecla library provides UNIX and LINUX programs with interactive command line editing facilities, similar to those of the UNIX tcsh shell. In addition to simple command-line editing, it supports recall of previously entered command lines, TAB completion of file names or other tokens, and in-line wild-card expansion of filenames. The internal functions which perform file-name completion and wild-card expansion are also available externally for optional use by programs.

In addition, the library includes a path-searching module. This allows an application to provide completion and lookup of files located in UNIX style paths. Although not built into the line editor by default, it can easily be called from custom tab-completion callback functions. This was originally conceived for completing the names of executables and providing a way to look up their locations in the user's PATH environment variable, but it can easily be asked to look up and complete other types of files in any list of directories.

Note that special care has been taken to allow the use of this library in threaded programs. The option to enable this is discussed in the Makefile, and specific discussions of thread safety are presented in the included man pages.

The current version is version 1.6.2. This may be obtained from:

http://www.astro.caltech.edu/~mcs/tecla/libtecla-1.6.2.tar.gz

For the sake of automated scripts, the following URL always points to the latest version. Note that the version number can be found in the README file.

http://www.astro.caltech.edu/~mcs/tecla/libtecla.tar.gz

The library is distributed under a permissive non-copyleft free software license (the X11 license with the name of the copyright holder changed). This is compatible with, but not as restrictive as the GNU GPL.

Release notes

The list of major changes that accompany each new release can be found here.

Modifications

The gory details of changes in the latest and previous versions of the library can be found here.

Library documentation

The following are html versions of the libtecla man pages:

Portability

In principle, the standard version of the library should compile without any problems on any UNIX or UNIX like system. So far it has been reported to work on the following systems:
  Sun Solaris 2.5,2.6,7,8,9 with any of gcc, Sun C, or g++.
  Mandrake Linux 7.1 etc.., gcc
  Red Hat Linux 7 etc.., gcc
  Fedora Core 1, gcc
  Suse Linux 6.4, gcc
  IBM AIX 4.3.3, gcc
  HP-UX 10.20, HP-UX 11, gcc, c89
  FreeBSD, gcc
  Alpha OSF1, cc, gcc
  Mac OS X
  Cygwin (running under Windows)
  QNX
  NetBSD 1.6, 386, gcc
  SGI IRIX 6.5
  Linux in general
There haven't been many reports concerning the POSIX reentrant version, so the absence of any of the above from the following list of systems on which the reentrant version is known to work, shouldn't be taken as an indication that the reentrant version doesn't work.
  Sun Solaris 2.5,2.6,7,8,9 with any of gcc, Sun C, or g++.
  Mandrake Linux, gcc
  RedHat Linux, gcc
  Fedora Core, gcc
  SuSE Linux, gcc
  HP-UX 11, gcc
  IBM AIX 4.3.3, gcc
  Alpha OSF1, cc
  SGI IRIX 6.5
  Linux in general
The only system that is known to have issues with the reentrant version of the library is SCO UnixWare 7.1.1. The problem is in the system provided signal.h, which breaks when POSIX_C_SOURCE is defined. It has been reported that this can be "fixed" by editing signal.h.

If you compile the library on a system that isn't mentioned above, please send E-mail to mcs@astro.caltech.edu.


Martin Shepherd (11-Jun-2012)