INFOCMP(1M) INFOCMP(1M) НАЗВАНИЕ 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 Использовать длинные имена, перечисленные во вклю- чаемом файле . -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, в будущих версиях может не поддерживаться.