INFOCMP(1M) INFOCMP(1M)
НАЗВАНИЕ
infocmp - сравнение или печать информации о характерис-
тиках терминалов, хранящейся в базе данных terminfo
СИНТАКСИС
infocmp [-d][-c][-n][-I][-L][-C][-r][-u][-s [d][i][l][c]][-v][-V][-1]
[-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 Использовать длинные имена, перечисленные во вклю-
чаемом файле .
-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/?/* Скомпилированная база данных
описаний терминалов.
ДИАГНОСТИКА
malloc is out of space!
Программе не хватило памяти для обработки всех
описаний. Запустите утилиту infocmp несколько раз,
указывая меньшее число терминалов.
use= order dependency found
Значение в относительном описании одного терминала
не совпадает со значением в относительном описании
другого терминала.
'use=терминал' did not add anything for the description
Использование относительного описания не добавляет
терминалу никаких новых характеристик.
must have at least two terminal names for a comparison
to be done
Опции -u, -d и -c требуют указания как минимум
двух терминалов.
СМ. ТАКЖЕ
captoinfo(1M), tic(1M).
curses(3X), term(4), terminfo(4) в Справочнике програм-
миста.
ПРИМЕЧАНИЯ
База данных termcap, использовавшаяся в ранних версиях
ОС UNIX, в будущих версиях может не поддерживаться.
|