НАЗВАНИЕ
infocmp - сравнение или печать информации о характеристиках терминалов, хранящейся в базе данных terminfo
СИНТАКСИС
infocmp [-d] [-c] [-n] [-I] [-L] [-C] [-r] [-u] [-s [d] [i] [l] [c]] [- [-w ширина] [-A каталог] [-B каталог] [терминал ...]
ОПИСАНИЕ
Утилита infocmp используется для сравнения элементов
базы данных terminfo(4), для перезаписи элемента
terminfo, определяемого по значению ключевого поля
use=, а также для вывода в различных форматах скомпилированного описания характеристик терминалов [см.
term(4)]. Во всех случаях сначала печатаются булевы поля, затем числовые, а затем поля, содержащие цепочки символов.
Терминалы задаются своими именами.
Подразумеваемые опции
Если опции не указаны, подразумевается опция -I. При
этом, если указано несколько терминалов, подразумевается еще и опция -d.
Опции сравнения [-d] [-c] [-n]
Утилита infocmp сравнивает описание характеристик первого указанного терминала с остальными указанными терминалами. Если какая-либо из характеристик присутствует
только у одного из терминалов, возвращается значение,
зависящее от типа характеристики: F для булевой, -1 для
числовой, NULL для характеристики, описываемой цепочкой
символов.
-d | Напечатать список характеристик, по которым терминалы различаются. Если есть два описания для одного и того же терминала или для похожих терминалов, утилита infocmp покажет разницу между ними. Обычно это требуется, если два человека составили описания одного и того же терминала и желательно выявить различия между описаниями. |
---|---|
-c | Напечатать список характеристик, являющихся общими для двух терминалов. Характеристики, которых нет, игнорируются. Эту опцию можно использовать для быстрой проверки того, стоит ли применять опцию -u. |
-n | Напечатать список характеристик, отсутствующих у заданных терминалов. Если терминалы не указаны, дважды используется значение переменной окружения TERM. Опция -n позволяет быстро узнать, не осталась ли какая-нибудь характеристика за пределами рассмотрения. |
Опции получения исходного листинга [-I] [-L] [-C] [-r]
Опции -I, -L, -C используются для выдачи исходного листинга характеристик каждого из указанных терминалов.
-I | Использовать имена terminfo(4). |
---|---|
-L | Использовать длинные имена, перечисленные во включаемом файле <term.h>. |
-C | Использовать имена termcap [см. terminfo(4)]. |
-r | Преобразовывать все характеристики к виду termcap; применяется вместе с опцией -C. |
Если терминалы не указаны, используется значение переменной окружения TERM.
Текст, сгенерированный по опции -C, можно без переделок использовать как элемент базы данных termcap, однако не исключена ситуация, когда некоторые параметризованные цепочки символов к формату termcap привести не удалось. Утилита infocmp пытается преобразовать всю параметризованную информацию; то, что преобразовать не удалось, особо помечается в выводе и делается комментарием. Подобные фрагменты следует редактировать вручную.
Вся информация о заполнителях цепочек символов собирается вместе и помещается в начало цепочки, как этого требует termcap. Обязательные заполнители (заканчивающиеся символом /) становятся при этом необязательными.
Все переменные termcap, которые не поддерживаются в terminfo, но могут быть вычислены по другим переменным terminfo, будут включены в число результатов. Преобразуются не все компоненты terminfo, а только те, которые присутствовали в termcap. Использование опции -r снимает это ограничение и приводит к выводу всех характеристик в виде termcap.
Отметим, что поскольку информация о заполнителях выносится в начало, не все характеристики выводятся, обязательное заполнение не поддерживается, а цепочки termcap не обладают гибкостью цепочек terminfo, иногда оказывается невозможным преобразовать характеристику terminfo, описываемую цепочкой символов, в эквивалентную характеристику termcap. Если, впоследствии, преобразовать описание из формата termcap обратно в формат terminfo, не обязательно получится то, с чего начинали.
Ниже приводятся некоторые параметризованные цепочки terminfo, их эквиваленты в termcap и типы терминалов, использующих эти последовательности:
Terminfo | Termcap | Терминалы |
---|---|---|
%p1%c | %. | adm |
%p1%d | %d | hp, ANSI, vt100 |
%p1%'x'%+%c | %+x | concept |
%i | %i | ANSI, vt100 |
%p1%?%'x'%>%t%p1%'y'%+%; | %>xy | concept |
%p2 выводится раньше %p1 | %r | hp |
Опция use= [-u]
-u | Сгенерировать описание в формате terminfo первого из перечисленных терминалов относительно описаний остальных терминалов. Описание генерируется путем анализа различий первого терминала и других указанных терминалов и генерации описания, в котором используются поля use=. Таким образом можно включить в описание терминала фрагменты, общие для группы терминалов. Еще одно применение опции -u: если описания сходных терминалов составлялись в разное время или разными людьми, утилита infocmp покажет, что нужно сделать, чтобы получить описание одного терминала относительно другого. |
---|
Если какая-либо характеристика отсутствует у первого терминала, но какой-либо из остальных терминалов ею обладает, то при печати такая характеристика помечается символом @. Значение, соответствующее характеристике, печатается, если это значение имеется в описании первого терминала и отсутствует во всех остальных описаниях или не совпадает с первым из тех описаний остальных терминалов, в которых оно присутствует.
Порядок, в котором указываются остальные имена терминалов, существен. Поскольку компилятор terminfo-описаний tic(1M) обрабатывает все характеристики слева направо, указание двух полей use=, которые содержат различные значения для одной и той же характеристики, приведет к различным результатам при изменении порядка элементов. Утилита infocmp отмечает все обнаруженные противоречия такого сорта.
С другой стороны, указание какой-либо характеристики после соответствующего ей поля use= приводит к тому, что это указание игнорируется. Использование утилиты infocmp для воссоздания описания может быть хорошей проверкой корректности исходного описания.
Еще одной ошибкой, вызывающей возрастание времени компиляции, является употребление избыточных полей use=. Утилита infocmp помечает такие поля.
Остальные опции [-s [d] [i] [l] [c]] [-v] [-V] [-1] [-w ширина]
-s | Отсортировать поля каждого типа в соответствии с
порядком, определяемым следующим аргументом:
d - оставить поля в том порядке, в каком они хранятся в базе данных terminfo; i - отсортировать по terminfo-имени; l - отсортировать по длинному C-имени; c - отсортировать по termcap-имени. Из четырех перечисленных аргументов должен быть задан ровно один. Если опция -s не указана, поля каждого типа сортируются по terminfo-имени, но если указана опция -C, сортировка производится по termcap-имени, а если указана опция -L, то по длинному C-имени. |
---|---|
-v | Во время работы программы выводить в стандартный протокол трассировочную информацию. |
-V | Вывести в стандартный протокол версию программы и завершиться. |
-1 | Печатать поля по одному в строке. Без этой опции в строке печатается несколько полей, максимальная ширина по умолчанию - 60 символов. |
-w ширина | Установить ширину вывода. |
Изменение базы данных [-A каталог] [-B каталог]
Место, где находится скомпилированная база данных
terminfo(4), определяется по переменной окружения
TERMINFO. Если эта переменная не определена или в указанной базе данных терминал не найден, используется
системная база данных (обычно /usr/lib/terminfo). Опции
-A и -B служат для изменения описанного порядка. Опция
-A определяет базу данных для первого терминала, а опция -B определяет базу данных для остальных терминалов.
Таким образом можно сравнивать описания терминалов с
одинаковыми именами, хранящиеся в разных базах данных
(например, описания одного и того же терминала, созданные разными людьми). Если опции -A и -B не заданы,
сравниваемые терминалы должны иметь различные имена.
ФАЙЛЫ
/usr/lib/terminfo/?/* Скомпилированная база данных описаний терминалов.
ДИАГНОСТИКА
СМ. ТАКЖЕ
captoinfo(1M), tic(1M).
curses(3X), term(4), terminfo(4) в Справочнике программиста.
ПРИМЕЧАНИЯ
База данных termcap, использовавшаяся в ранних версиях
ОС UNIX, в будущих версиях может не поддерживаться.