termcap


termcap (англ. terminal capability, свойства терминала) – библиотека и база данных, используемая на Unix-подобных операционных системах. Она позволяет программам использовать дисплей компьютерного терминала аппаратно независимо, что очень упрощает процесс написания переносимых консольных приложений. Билл Джой создал первую версию библиотеки termcap в 1978 году [1],[2] для операционной системы BSD; в дальнейшем она была портирована под большинство Unix- и Unix-подобных окружений. Известно, что на дизайн библиотеки termcap повлиял дизайн базы данных терминалов в более ранней Incompatible Timesharing System [3]. База данных termcap описывает возможности сотен различных терминалов. Это позволяет программам использовать текстовый вывод, не зависящий от типа терминала. Текстовые редакторы vi и emacs используют termcap.

Каждое описание должно содержать каноническое имя терминала. Оно может также содержать несколько псевдонимов. Эти названия используются как ключи для поиска в базе termcap.

Описание содержит одно или несколько свойств, которые имеют стандартные имена. Свойства могут иметь следующие типы: логический, числовой и строковый. Библиотека termcap не имеет предопределенного типа для каждого из свойств, поэтому тип определяется исходя из синтаксиса:

Приложения, использующие termcap, ожидают, что распространенные свойства будут иметь определенный тип, и получают нужные значения из базы данных termcap, используя библиотечные вызовы, которые успешно возвращают значение только при совпадении ожидаемого типа с найденным в базе.

Описания могут возвращаться из базы данных с изменениями: добавлением, удалением и переопределением свойств (например, при изменении размера экрана в эмуляторе терминала). Библиотека termcap создает описание терминала из запрошенного описания, включая, удаляя или переопределяя свойства, полученные на момент запроса.

Данные termcap хранятся в текстовом виде, удобном для изменения человеком. Библиотека termcap может запрашивать текст из файлов или переменных окружения.