Termcap

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 29. dubna 2016; kontroly vyžadují 6 úprav .

termcap (angl. term inal capability , vlastnosti terminálu ) - knihovna a databáze používaná na operačních systémech podobných Unixu. Umožňuje programům používat displej počítačového terminálu způsobem nezávislým na hardwaru, což značně zjednodušuje proces psaní přenosných textových aplikací. Bill Joy vytvořil první verzi knihovny termcap v roce 1978 [1] [2] pro operační systém BSD ; později byl portován do většiny unixových a unixových prostředí. Je známo, že návrh knihovny termcap byl ovlivněn návrhem databáze terminálů v dřívějším Inkompatibilním systému sdílení času . [3] Databáze termcap popisuje možnosti stovek různých terminálů. To umožňuje programům používat textový výstup nezávisle na typu terminálu. Textové editory vi a emacs používají termcap. Další programy naleznete v kategorii Termcap .

Zde jsou příklady polí obsažených v databázi:

Datový model

Databáze termcap se skládají z jednoho nebo více popisů terminálů.

Indexy

Každý popis musí obsahovat kanonický název terminálu. Může také obsahovat více aliasů. Tyto názvy se používají jako vyhledávací klíče v databázi termcap.

Hodnoty

Popis obsahuje jednu nebo více vlastností, které mají standardní názvy. Vlastnosti mohou být následujících typů: Boolean , Numeric a String . Knihovna termcap nemá předdefinovaný typ pro každou z vlastností, takže typ je určen na základě syntaxe:

Aplikace, které používají termcap, očekávají, že společné vlastnosti budou určitého typu a získávají požadované hodnoty z databáze termcap pomocí volání knihovny, která úspěšně vracejí hodnotu pouze v případě, že se očekávaný typ shoduje s typem nalezeným v databázi.

Hierarchie

Popisy lze vracet z databáze se změnami – přidáním, odebráním a předefinováním vlastností (například při změně velikosti obrazovky v emulátoru terminálu). Knihovna termcap vytvoří popis terminálu z požadovaného popisu, včetně odstranění nebo přepsání vlastností přijatých v době požadavku.

Model úložiště

Data termcap jsou uložena v textovém formátu čitelném pro člověka. Knihovna termcap může vyžadovat text ze souborů nebo proměnných prostředí.

Proměnné prostředí

Proměnná prostředí TERM obsahuje název typu terminálu.

Proměnná prostředí TERMCAP může obsahovat samotnou databázi termcap. Nejčastěji se používá k uložení popisu jednoho terminálu, který je nastaven emulátorem terminálu, aby poskytoval vlastnosti terminálu shellu a závislým programům.

Proměnná prostředí TERMPATH je podporována pozdějšími implementacemi termcap a obsahuje cestu k souborům termcap.

Plochý soubor

Původní (a nejběžnější) implementace knihovny termcap přebírá data z plochého textového souboru. Vyhledávání velkého souboru termcap, například většího než 500 kB, může být pomalé. Pro urychlení vyhledávání lze využít speciální utilitu, například reorder , která umístí na začátek souboru uživatelem nejčastěji používané záznamy.

Hašovaná databáze

Implementace knihovny termcap BSD-4.4 ukládají popisy terminálů v hašované databázi (například Berkeley DB verze 1.85). Ukládají se dva typy záznamů: aliasy, které ukazují na kanonické záznamy, a kanonické záznamy samotné. Obsah položky termcap je uložen jako prostý text.

Omezení a rozšíření

Původní implementace termcap byla navržena tak, aby měla nízkou paměť:

Pozdější implementace termcap obecně umožňují delší křestní jméno. Názvy vlastností však musí být dvoupísmenné ve všech implementacích.

Funkce tgetent použitá ke čtení popisu terminálu bere jako vstup adresu vyrovnávací paměti, jejíž velikost musí být dostatečně velká pro čtení dat (1024 bajtů). Pozdější implementace termcap mohou toto omezení zmírnit povolením nulového ukazatele jako parametru [4] nebo skrytím části, která se nevejde do vyrovnávací paměti, například prostřednictvím vlastnosti ZZ v implementaci termcap NetBSD . [5] Knihovna terminfo také emuluje rozhraní termcap, i když ve skutečnosti nepoužívá vyrovnávací paměť s pevnou velikostí.

Emulace rozhraní termcap v knihovně terminfo umožňuje uložit více položek bez omezení jejich pozice. Některé pozdější implementace termcap mohou mít také tuto vlastnost, ačkoli to obecně zůstává nezdokumentováno. [6]

Zastaralé vlastnosti

Speciální vlastnost "hz" byla přidána pro podporu terminálu Hazeltine 1500, který měl nešťastnou volbu znaku vlnovky ('~') jako začátku únikové sekvence. [7] Pro podporu tohoto terminálu jsem musel napsat speciální kód, který při výstupu textu s vlnovkami provedl speciální substituci, aby se zabránilo provádění neočekávaných řídicích příkazů. [8] Kromě toho zabíraly místo na obrazovce značky atributů (například podtržítka na začátku a na konci). {{{1}}}Komentáře ve zdrojovém kódu popisují tuto funkci frází "Hazeltine braindamage" ("Lískové poškození mozku"). [9] Vzhledem k tomu, že Hazeltine 1500 byl v 70. letech oblíbeným terminálem, {{{1}}}bylo důležité implementovat pro něj podporu v termcapu.

Viz také

Odkazy

  1. Peter H. Salus, „Historie Unixu je stejně tak o spolupráci jako o technologii“, Byte, říjen 1994 . Získáno 27. února 2015. Archivováno z originálu 25. února 2015.
  2. Kenneth CRC Arnold a Elan Amir, „Aktualizace obrazovky a optimalizace pohybu kurzoru: Balíček knihovny“ . Datum přístupu: 27. února 2015. Archivováno z originálu 28. září 2007.
  3. odeslání alt.sys.pdp10 . Získáno 27. února 2015. Archivováno z originálu 27. února 2015.
  4. Knihovna GNU Termcap . Datum přístupu: 1. března 2015. Archivováno z originálu 5. září 2015.
  5. Formát souboru termcap NetBSD . Datum přístupu: 1. března 2015. Archivováno z originálu 2. dubna 2015.
  6. Diskuse o termcapu ve vi . Datum přístupu: 1. března 2015. Archivováno z originálu 7. srpna 2011.
  7. - Manuálovátermcap(5)  stránka formátů souborů FreeBSD  
  8. Stallman, Richard M. The Termcap Library and Database, Second Edition . Gnu.org (1992). Získáno 17. 5. 2014. Archivováno z originálu 14. 3. 2015.
  9. termcap.src . Počítač Apple. Získáno 17. 5. 2014. Archivováno z originálu 18. 9. 2016.

Externí odkazy