Terminfo

A terminfo egy olyan könyvtár és adatbázis , amely lehetővé teszi a programok számára, hogy a terminál megjelenítését eszközfüggetlen stílusban használják. Mark Horton 1981-1982 között készítette el a terminfo könyvtár első verzióját a termcap továbbfejlesztett változataként . [1] Fejlesztések a következők:

A terminfo könyvtár bekerült a UNIX System V 2. kiadásába, és hamarosan a terminálleírások System V-ben a termcap felett (amelyet a BSD továbbra is használt) előnyben részesített formává vált. [2] Ezt a viselkedést Pavel Curtis 1982-1984 -ben tovább implementálta a pcurses -ben , és elérhető volt más UNIX -megvalósításokban, beleértve Mark Horton kiegészítéseit is. [3] A részletek a comp.sources.unix hírcsoportban találhatók , 1986. december. [négy]

A terminfo adatbázis több száz különböző terminálkijelző jellemzőit tudja leírni. Ez lehetővé teszi a programok számára, hogy a terminál típusától függetlenül használják a szövegkimenetet.

Példák a funkciókra:

Adatmodell

A termcap adatbázisok egy vagy több terminálleírásból állnak.

Indexek

Minden leírásnak tartalmaznia kell a terminál kanonikus nevét. Több álnevet is tartalmazhat. Ezek a nevek keresési kulcsként használatosak a termcap adatbázisban.

Értékek

A leírás egy vagy több olyan tulajdonságot tartalmaz, amelyek szabványos névvel rendelkeznek. A tulajdonságok a következő típusúak lehetnek: Boolean , Numeric és String . A termcap könyvtárnak nincs előre meghatározott típusa az egyes tulajdonságokhoz, ezért a típus a szintaxis alapján kerül meghatározásra:

A terminfo-t használó alkalmazások elvárják, hogy a tulajdonságok egy bizonyos típusúak legyenek, és a kívánt értékeket a terminfo adatbázisból olyan könyvtárhívások segítségével kapják meg, amelyek csak akkor adnak vissza értéket, ha a várt típus megegyezik az adatbázisban találhatóval.

A termcaphez hasonlóan néhány karakterlánc karakterisztikája escape szekvencia , amelyet a billentyűzet speciális billentyűinek megnyomásával lehet elküldeni a gazdagépnek. A többi tulajdonság az alkalmazásból a terminálra küldhető karakterláncok. Az utóbbi esetben a terminfo könyvtár (mint a termcap) arra szolgál, hogy az alkalmazás paramétereit behelyettesítse az elküldött karakterláncba. Ezek a függvények egy verem alapú kifejezéselemzőt biztosítanak, amelyet eredetileg a kimeneti karakterlánc hosszának minimalizálására használtak, és amely különféle opcionális paramétereket (például színkilépési szekvenciákat) tartalmazhat. Ezzel szemben a termcap könyvtár minimális hasznos műveletsort biztosít, amely kompatibilis a legtöbb terminállal.

Hierarchia

A terminfoleírások két definíció egyesítésével, tulajdonságok hozzáadásával, eltávolításával vagy újradefiniálásával állnak össze. Az adattárolási modelltől függetlenül a terminfo könyvtár külső eszköz (például tic ) által összeállított adatok felhasználásával adja vissza a kért leírást.

Tárolási modell

A terminfo adatok bináris fájlként vannak tárolva , ami megnehezíti a szerkesztését, mint a termcap . A tulajdonságok külön táblázatokban vannak tárolva a logikai, numerikus és karakterlánc-értékekhez. Ezt a sémát Mark Horton fejlesztette ki, és a rendelkezésre álló nevek készletében lévő néhány eltéréstől eltekintve a terminfo legtöbb megvalósításában használatos. [5] Az X/Open specifikáció nem határozza meg a lefordított terminálleírás formátumát, és még csak nem is említi a tic vagy infocmp segédprogramokat . [6] [7] Mivel a lefordított terminfo leírások nem tartalmaznak metaadatokat , amelyek meghatároznák, hogy egy adott tulajdonság melyik index alá tartozik, nem feltétlenül kompatibilisek az implementációk között. Mivel azonban a legtöbb megvalósítás ugyanazt az általános táblaszerkezetet használja (beleértve a fejléc- és adatmezőméreteket), lehetőség van automatikusan egyedi terminfo-könyvtárak létrehozására, amelyek képesek a megvalósítás-specifikus adatokat olvasni. Például az ncurses kompatibilis a terminfo számos különböző megvalósításának adattárolási formátumával. [nyolc]

Fa szerkezete

A terminfo könyvtár eredeti (és legelterjedtebb) megvalósítása fastruktúrából olvas adatokat . A terminfo-ban a terminálleírás nevének első karaktere az elérési út összetevője, a teljes képzésű név pedig a fájlnév. Ez segít gyorsabban keresni a megfelelő leírást, mint a termcapben.

Kivonatolt adatbázis

Egyes terminfo-megvalósítások a terminálleírásokat kivonatolt adatbázisban tárolják (például a Berkeley DB 1.85-ös verziója). [9] [10] Kétféle rekordot tárolnak: az álneveket, amelyek a kanonikus rekord elérési útjára mutatnak, és a tulajdonképpeni kanonikus rekordokat, amelyek a tulajdonságok teljes készletét tartalmazzák.

Korlátozások és kiterjesztések

Az Open Group terminfo korlátokat (minimum garantált értékeket) állít be, amelyek csak a forrásfájlra vonatkoznak. [11] [12] E korlátozások közül kettő különösen érdekes:

A 14 karakteres korlát a nagyon régi fájlrendszerekkel való kompatibilitásra vonatkozik, amelyek nem képesek hosszabb fájlneveket megjeleníteni. Míg az ilyen fájlrendszerek általában elavultak, magukat a korlátokat az 1980-as évek végén dokumentálták, és még nem vizsgálták felül.

A felső numerikus határ 32767 a maximális pozitív előjelű 16 bites érték. A terminfo bejegyzés tartalmazhat negatív számokat a hiányzó vagy hiányzó értékek jelzésére.

A termcap -től eltérően a terminfo nyers és lefordított ábrázolással rendelkezik. A lefordított nézetre vonatkozó megkötéseket a specifikáció nem tartalmazza. A legtöbb megvalósítás azonban a tic -re (terminálinformációs fordító) hivatkozik, amelynek lefordított leírása nem haladhatja meg a 4096 bájtot.

Lásd még

Linkek

  1. Horton, Mark. USENIX konferencia anyaga. – Boston, MA: USENIX. - T. 1982 nyár . - S. 79-91 .
  2. fa.info-terms levelezőlista megjegyzései a termcap/terminfo-hoz 1985-ben . Letöltve: 2015. március 3. Az eredetiből archiválva : 2015. március 18..
  3. pcurses shar fájl 1986-ból, amely a változástörténetet mutatja (downlink) . Archiválva az eredetiből 2007. szeptember 27-én. 
  4. pcurses teljes könyvelés .
  5. Thomas E. Dickey. term - az összeállított terminus fájl formátuma (2006. december 17.). Letöltve: 2015. március 3. Az eredetiből archiválva : 2015. április 2.
  6. X/Open Curses, 4. kiadás, 2. verzió – Hivatkozási oldalak . The Open Group (1997). Letöltve: 2015. március 3. Az eredetiből archiválva : 2010. június 20.
  7. Parancsok és segédprogramok 5. kiadás – Hivatkozási oldalak . The Open Group (1997). Letöltve: 2015. március 3. Az eredetiből archiválva : 2010. június 20.
  8. Thomas E. Dickey. Az ncurses 5.3 meghirdetése (2002. október 12.). Letöltve: 2015. március 3. Az eredetiből archiválva : 2014. november 11..
  9. Todd C. Miller. OpenBSD read_bsd_terminfo.c modul (1999).
  10. Thomas E. Dickey. Az ncurses 5.6 meghirdetése (2006. december 17.). Letöltve: 2015. március 3. Az eredetiből archiválva : 2015. március 8.
  11. A korlátozások többsége az X/Open és az Open Software Foundation beolvadása előtt volt érvényben , ezért sok forrás hivatkozik az X/Openre .
  12. Terminfo-forrás formátum (BOVÍTOTT ÁTOK) - Garantált minimális határértékek . The Open Group (1997). Letöltve: 2015. március 3. Az eredetiből archiválva : 2009. december 17..

Külső linkek