Terminfo

terminfo je knihovna a databáze , která umožňuje programům používat displej terminálu způsobem nezávislým na zařízení. Mark Horton vytvořil první verzi knihovny terminfo v letech 1981-1982 jako vylepšenou verzi termcap . [1] Mezi vylepšení patří:

Knihovna terminfo byla zahrnuta do UNIX System V Release 2 a brzy se stala preferovanou formou pro ukládání popisů terminálů v System V před termcapem (který BSD nadále používal). [2] Toto chování bylo dále implementováno v pcurses v letech 1982-1984 Pavlem Curtisem a bylo dostupné v jiných implementacích UNIX , včetně dodatků Marka Hortona. [3] Podrobnosti lze nalézt v diskusní skupině comp.sources.unix , prosinec 1986. [čtyři]

Databáze terminfo může popisovat charakteristiky stovek různých terminálových displejů. To umožňuje programům používat textový výstup nezávisle na typu terminálu.

Příklady funkcí:

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í terminfo, očekávají vlastnosti určitého typu a získávají požadované hodnoty z databáze terminfo pomocí volání knihovny, která úspěšně vrátí hodnotu pouze v případě, že se očekávaný typ shoduje s typem nalezeným v databázi.

Stejně jako u termcap jsou některé charakteristiky řetězců escape sekvencemi , které lze odeslat hostiteli stisknutím speciálních kláves na klávesnici. Ostatní vlastnosti jsou řetězce, které lze do terminálu odeslat z aplikace. V druhém případě slouží knihovna terminfo (jako termcap) pro dosazení parametrů aplikace do zaslaného řetězce. Tyto funkce poskytují analyzátor výrazů založený na zásobníku , který byl původně používán k minimalizaci délky výstupního řetězce, který může obsahovat různé volitelné parametry (například sekvence escape barev). Naproti tomu knihovna termcap poskytuje minimální sadu užitečných operací, které jsou kompatibilní s většinou terminálů.

Hierarchie

Popisy Terminfo se skládají ze sloučení dvou definic, přidání, odebrání nebo předefinování vlastností. Bez ohledu na model ukládání dat vrací knihovna terminfo požadovaný popis pomocí dat sestavených externím nástrojem (jako je tic ).

Model úložiště

Data terminfo jsou uložena jako binární soubor , takže je obtížnější je upravovat než termcap . Vlastnosti jsou uloženy v samostatných tabulkách pro booleovské, číselné a řetězcové hodnoty. Toto schéma vyvinul Mark Horton a až na některé rozdíly v sadě dostupných jmen se používá ve většině implementací terminfo. [5] Specifikace X/Open nedefinuje formát zkompilovaného popisu terminálu a nezmiňuje se ani o utilitách tic nebo infocmp . [6] [7] Protože kompilované popisy terminfo neobsahují metadata určující, pod který index konkrétní vlastnost spadá, nemusí být nutně kompatibilní napříč implementacemi. Protože však většina implementací používá stejnou obecnou strukturu tabulek (včetně velikosti záhlaví a datových polí), je možné automaticky generovat vlastní knihovny terminfo, které mohou číst data specifická pro implementaci. Například ncurses je kompatibilní s formátem ukládání dat několika různých implementací terminfo. [osm]

Stromová struktura

Původní (a nejběžnější) implementace knihovny terminfo čte data ze stromové struktury. V terminfo je první znak názvu popisu terminálu použit jako komponenta cesty a plně kvalifikovaný název je použit jako název souboru. To vám pomůže najít správný popis rychleji než v termcapu.

Hašovaná databáze

Některé implementace terminfo ukládají popisy terminálů v hašované databázi (například Berkeley DB verze 1.85). [9] [10] Ukládají se dva typy záznamů: aliasy, které ukazují na cestu ke kanonickému záznamu, a vlastní kanonické záznamy obsahující úplnou sadu vlastností.

Omezení a rozšíření

Otevřená skupina nastavuje limity terminfo (minimální garantované hodnoty), které se vztahují pouze na zdrojový soubor. [11] [12] Dvě z těchto omezení jsou zvláště zajímavá:

Limit 14 znaků je určen pro kompatibilitu s velmi starými systémy souborů, které nemohou zobrazovat delší názvy souborů. Zatímco takové souborové systémy jsou obvykle zastaralé, samotné limity byly zdokumentovány koncem 80. let a dosud nebyly revidovány.

Horní číselný limit 32767 je maximální 16bitová hodnota s kladným znaménkem . Záznam terminfo může obsahovat záporná čísla představující chybějící nebo chybějící hodnoty.

Na rozdíl od termcap má terminfo nezpracovanou a zkompilovanou reprezentaci. Omezení pro kompilovaný pohled nejsou ve specifikaci uvedeny. Většina implementací však odkazuje na tic (překladač terminálových informací), jehož kompilované popisy nemohou přesáhnout 4 096 bajtů.

Viz také

Odkazy

  1. Horton, Mark. Sborník konference USENIX. — Boston, MA: USENIX. - T. Léto 1982 . - S. 79-91 .
  2. komentáře konferencí fa.info-terms k termcap/terminfo v roce 1985 . Získáno 3. března 2015. Archivováno z originálu dne 18. března 2015.
  3. pcurses shar soubor z roku 1986 zobrazující historii změn (downlink) . Archivováno z originálu 27. září 2007. 
  4. zajistí kompletní odeslání .
  5. Thomas E. Dickey. termín - formát sestaveného souboru termínů (17. prosince 2006). Získáno 3. března 2015. Archivováno z originálu dne 2. dubna 2015.
  6. X/Open Curses, Vydání 4 Verze 2 – Referenční stránky . Otevřená skupina (1997). Získáno 3. března 2015. Archivováno z originálu dne 20. června 2010.
  7. Příkazy a nástroje 5. vydání - Referenční stránky . Otevřená skupina (1997). Získáno 3. března 2015. Archivováno z originálu dne 20. června 2010.
  8. Thomas E. Dickey. Vyhlášení ncurses 5.3 (12. října 2002). Získáno 3. března 2015. Archivováno z originálu 11. listopadu 2014.
  9. Todd C. Miller. Modul OpenBSD read_bsd_terminfo.c (1999).
  10. Thomas E. Dickey. Vyhlášení ncurses 5.6 (17. prosince 2006). Získáno 3. března 2015. Archivováno z originálu dne 8. března 2015.
  11. Většina těchto omezení platila před sloučením X/Open a Open Software Foundation do The Open Group , takže mnoho zdrojů odkazuje na X/Open .
  12. Zdrojový formát Terminfo (ENHANCED CURSES) – Minimální zaručené limity . Otevřená skupina (1997). Získáno 3. března 2015. Archivováno z originálu 17. prosince 2009.

Externí odkazy