Jump to content

Термининформо

Terminfo — это библиотека и база данных , которая позволяет программам использовать дисплейные терминалы независимо от устройства. Мэри Энн Хортон реализовала первую библиотеку terminfo в 1981–1982 годах как улучшение по сравнению с termcap . [1] Улучшения включают в себя

  • более быстрый доступ к сохраненным описаниям терминалов, [ нужна ссылка ]
  • более длинные и понятные названия возможностей терминала и
  • общая оценка выражения для строк, отправляемых на терминал.

Terminfo был включен в UNIX System V Release 2 и вскоре стал предпочтительной формой описания терминала в System V, а не termcap (который BSD продолжала использовать). [2] Это было имитировано в pcurses в 1982–1984 годах Павлом Кертисом и было доступно в других реализациях UNIX , адаптируя или включая исправления Мэри Хортон. [3] Для получения дополнительной информации обратитесь к публикации на comp.sources.unix группа новостей от декабря 1986 г. [4]

База данных terminfo может описывать возможности сотен различных терминалов отображения. Это позволяет внешним программам иметь возможность вывода символов на экран независимо от типа терминала.

Некоторые конфигурации:

  • Количество строк на экране
  • Моно режим; подавлять цвет
  • Используйте видимый звонок вместо звукового сигнала

Модель данных

[ редактировать ]

Базы данных Terminfo состоят из одного или нескольких описаний терминалов.

Каждое описание должно содержать каноническое имя терминала. Он также может содержать один или несколько псевдонимов имени терминала. Каноническое имя или псевдонимы — это ключи, по которым библиотека осуществляет поиск в базе данных terminfo.

Значения данных

[ редактировать ]

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

  • строковые возможности имеют знак "=" между именем возможности и ее значением,
  • числовые возможности имеют «#» между именем возможности и ее значением, и
  • Логические возможности не имеют связанного значения (они всегда истинны , если они указаны).

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

Как и в случае с termcap , некоторые строковые возможности представляют собой escape-последовательности , которые можно отправить на хост, нажав специальные клавиши на клавиатуре. Другие возможности представляют собой строки, которые могут быть отправлены приложением на терминал. В последнем случае библиотека terminfo (как и библиотека termcap) выполняет подстановку параметров приложения в отправляемую строку. Эти функции предоставляют анализатор выражений на основе стека , который в основном используется для минимизации количества символов, отправляемых для управляющих последовательностей, которые имеют дополнительные параметры, такие как SGR (выбрать графическое представление) . Библиотеки termcap, напротив, предоставляют ограниченный набор операций, которые полезны для большинства терминалов.

Иерархия

[ редактировать ]

Описания Terminfo могут быть созданы путем включения содержимого одного описания в другое, исключения возможностей из включенного описания или переопределения или добавления возможностей. Независимо от того, какая модель хранения используется, библиотека terminfo возвращает описание терминала из запрошенного описания, используя данные, скомпилированные с помощью автономного инструмента (например, tic ).

Модель хранения

[ редактировать ]

Данные Terminfo хранятся в виде двоичного файла , что делает их менее простыми для изменения, чем termcap . Данные могут быть получены с помощью библиотеки terminfo из файлов, в которых они хранятся. Сами данные организованы в виде таблиц для логических, числовых и строковых возможностей соответственно. Это схема, разработанная Мэри Хортон, и, за исключением некоторых различий в доступных именах, она используется в большинстве реализаций terminfo. [5] X/Open не определяет формат скомпилированного описания терминала. Фактически, здесь даже не упоминаются распространенные утилиты tic или infocmp . [6] [7] Поскольку скомпилированные записи terminfo не содержат метаданных, идентифицирующих индексы в таблицах, которым назначена каждая возможность, они не обязательно совместимы между реализациями. Однако, поскольку большинство реализаций используют одну и ту же общую структуру таблицы (включая размеры заголовков и элементов данных), можно автоматически создавать специальные библиотеки terminfo, которые могут считывать данные для данной реализации. Например, ncurses может быть построен так, чтобы соответствовать данным terminfo для нескольких других реализаций. [8]

Дерево каталогов

[ редактировать ]

Исходная (и наиболее распространенная) реализация библиотеки terminfo извлекает данные из каталогов иерархии . Используя первый символ имени описания терминала в качестве одного из компонентов пути, а имя описания терминала в качестве имени извлекаемого файла, библиотека terminfo обычно превосходит поиск по большому файлу termcap. [ нужна ссылка ]

Хешированная база данных

[ редактировать ]

Некоторые реализации terminfo хранят описание терминала в хешированной базе данных (например, Berkeley DB версии 1.85). [9] [10] В них хранятся записи двух типов: псевдонимы, указывающие на каноническую запись, и сама каноническая запись, содержащая данные о возможностях терминала.

Ограничения и расширения

[ редактировать ]

Open Group документирует ограничения для terminfo (минимальные гарантированные значения), которые применяются только к исходному файлу. [11] [12] Два из них представляют особый интерес:

  • Максимум 14 символов для псевдонимов терминалов
  • Максимум 32 767 для числовых величин

Ограничение в 14 символов касается очень старых файловых систем, которые могут представлять имена файлов не длиннее этого. Хотя эти файловые системы в целом устарели, эти ограничения были зафиксированы в документации конца 1980-х годов и с тех пор не пересматривались.

Ограничение в 32 767 предназначено для положительных значений в со знаком , дополненном до двух 16-битном значении . Запись terminfo может использовать отрицательные числа для обозначения отмененных или отсутствующих значений.

В отличие от termcap , terminfo имеет как исходное, так и скомпилированное представление. Ограничения для скомпилированного представления не указаны. Однако в документации большинства реализаций для tic (компилятора информации о терминале) отмечается, что размер скомпилированных записей не может превышать 4096 байт.

См. также

[ редактировать ]
  1. ^ Хортон, Марк. «Новые проклятия и пакет Terminfo». Материалы конференции USENIX . Лето 1982 г. Бостон, Массачусетс: USENIX: 79–91.
  2. ^ « Комментарии в списке рассылки fa.info-terms на termcap/terminfo в 1985 году» .
  3. ^ « pcurses Общий файл за 1986 год, показывающий историю изменений» . Архивировано из оригинала 27 сентября 2007 г.
  4. ^ « Pcurses завершила публикацию» .
  5. ^ Томас Э. Дики (17 декабря 2006 г.). "term - формат скомпилированного файла терминов" .
  6. ^ «X/Open Curses, выпуск 4, версия 2 — справочные страницы» . Открытая группа. 1997.
  7. ^ «Команды и утилиты, выпуск 5 — Справочные страницы» . Открытая группа. 1997.
  8. ^ Томас Э. Дики (12 октября 2002 г.). «Анонсируем ncurses 5.3» .
  9. ^ Тодд С. Миллер (1999). «Модуль OpenBSD read_bsd_terminfo.c» .
  10. ^ Томас Э. Дики (17 декабря 2006 г.). «Анонсируем ncurses 5.6» .
  11. ^ Большая часть этого была сделана до того, как X/Open объединилась с Open Software Foundation и образовала The Open Group , следовательно, существует много источников, в которых упоминается X/Open .
  12. ^ «Формат исходного кода Terminfo (ENHANCED CURSES) — минимальные гарантированные пределы» . Открытая группа. 1997.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 785311231f1ef039adc9a5c4aa06080b__1708456740
URL1:https://arc.ask3.ru/arc/aa/78/0b/785311231f1ef039adc9a5c4aa06080b.html
Заголовок, (Title) документа по адресу, URL1:
Terminfo - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)