Jump to content

Срок действия

Termcap ( возможности терминала ) — это устаревшая программная библиотека и база данных , используемая на Unix-подобных компьютерах, которая позволяет программам использовать компьютерные терминалы с дисплеем независимым от устройства способом, что значительно упрощает процесс написания портативных приложений с текстовым режимом . На смену ей пришла база данных terminfo, используемая ncurses, tput и другими программами.

Билл Джой написал первую библиотеку termcap в 1978 году. [1] [2] для Berkeley Unix операционной системы ; с тех пор он был портирован на большинство Unix и Unix-подобных сред, даже на OS-9 . [3] Сообщается, что на дизайн Джоя повлиял дизайн хранилища данных терминала в более ранней Inсовместимой системе разделения времени . [4] [ нужен лучший источник ] [ сомнительно обсудить ]

База данных termcap может описывать возможности сотен различных дисплейных терминалов. Это позволяет программам иметь символьный вывод на экран, независимо от типа терминала. Экранные текстовые редакторы, такие как vi и Emacs, являются примерами программ, которые могут использовать termcap. Другие программы перечислены в категории Termcap .

Примеры того, что описывает база данных:

  • сколько столбцов в ширину отображается на дисплее
  • какую строку отправить, чтобы переместить курсор в произвольную позицию (в том числе как кодировать номера строк и столбцов)
  • как прокрутить экран вверх на одну или несколько строк
  • сколько отступов необходимо для такой операции прокрутки.

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

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

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

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

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

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

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

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

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

Иерархия

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

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

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

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

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

Переменные среды

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

Переменная TERM среды содержит имя типа терминала.

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

Переменная среды TERMPATH поддерживается новыми реализациями termcap и определяет путь поиска файлов termcap.

Плоский файл

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

Исходная (и наиболее распространенная) реализация библиотеки termcap извлекает данные из простого текстового файла. Поиск большого файла termcap, например 500 КБ, может быть медленным. Для повышения производительности используется такая утилита, как переупорядочение , которая помещает наиболее часто используемые записи в начало файла.

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

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

Реализации termcap на базе 4.4BSD хранят описание терминала в хешированной базе данных (например, что-то вроде Berkeley DB версии 1.85). В них хранятся записи двух типов: псевдонимы, указывающие на каноническую запись, и сама каноническая запись. Текст записи termcap сохраняется буквально.

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

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

Исходная реализация termcap была спроектирована так, чтобы использовать мало памяти:

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

Более новые реализации интерфейса termcap обычно не требуют двухсимвольного имени в начале записи.

Имена возможностей по-прежнему состоят из двух символов во всех реализациях.

Функция tgetent, используемая для чтения описания терминала, использует буфер, размер которого должен быть достаточно большим для данных, и предполагается, что он составляет 1024 символа. Новые реализации интерфейса termcap могут ослабить это ограничение, разрешив использование нулевого указателя вместо фиксированного буфера. [5] или скрывая данные, которые не подходят, например, с помощью функции ZZ в termcap NetBSD . [6] Интерфейс библиотеки terminfo также эмулирует интерфейс termcap и фактически не использует буфер фиксированного размера.

Эмуляция termcap в библиотеке terminfo позволяет включать несколько других записей без ограничения позиции. Несколько других новых реализаций библиотеки termcap также могут предоставлять эту возможность, хотя она недостаточно документирована. [7]

Устаревшие функции

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

Специальная возможность, возможность «hz», была определена специально для поддержки терминала Hazeltine 1500 , который имел неудачную особенность использования символа тильды ASCII («~») в качестве средства введения управляющей последовательности. [8] [ обсуждать ] Для поддержки этого терминала код, использующий базу данных, должен был не только знать об использовании тильды для введения определенных управляющих последовательностей, но также должен был знать, как заменить любые тильды в отображаемом тексте другим печатным символом, поскольку тильда в тексте будет интерпретировано терминалом как начало управляющей последовательности, что приведет к отсутствию текста и искажению экрана. [9] Кроме того, маркеры атрибутов (например, начало и конец подчеркивания) сами занимали место на экране. [ нужна ссылка ] Комментарии в исходном коде базы данных часто называют это «повреждением мозга Hazeltine». [10] Поскольку Hazeltine 1500 был широко используемым терминалом в конце 1970-х годов, [ нужна ссылка ] было важно, чтобы приложения могли справиться с его ограничениями.

См. также

[ редактировать ]
  1. ^ Питер Х. Салус, «История Unix связана не только с технологиями, но и с сотрудничеством», Byte, октябрь 1994 г.
  2. ^ Кеннет CRC Арнольд и Элан Амир, «Обновление экрана и оптимизация движения курсора: библиотечный пакет»
  3. ^ Джоэл Мэтью Хегберг (ноябрь 1994 г.). «Решение Termcap, часть I» . ОС-9/ОСК Ответы! . Проверено 26 апреля 2021 г.
  4. ^ Марк Криспин (7 октября 1998 г.). «Re: Консольные команды KL» . Группа новостей : alt.sys.pdp10 .
  5. ^ Библиотека GNU Termcap
  6. ^ Формат файла termcap NetBSD
  7. ^ Обсуждение termcap в vi
  8. ^ termcap(5) BSD по форматам файлов Руководство
  9. ^ Столлман, Ричард М. (1992). «Библиотека и база данных Termcap, второе издание» . Gnu.org . Проверено 17 мая 2014 г.
  10. ^ "termcap.src" . Компьютер Apple . Проверено 17 мая 2014 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 7edd6942362ecc51149cad235a9499a3__1703015340
URL1:https://arc.ask3.ru/arc/aa/7e/a3/7edd6942362ecc51149cad235a9499a3.html
Заголовок, (Title) документа по адресу, URL1:
Termcap - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)