Termcap

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 29 april 2016; kontroller kräver 6 redigeringar .

termcap (eng. term inal capability , terminal properties ) - bibliotek och databas som används på Unix-liknande operativsystem. Det tillåter program att använda displayen på en datorterminal på ett hårdvaruoberoende sätt, vilket avsevärt förenklar processen att skriva bärbara textbaserade applikationer. Bill Joy skapade den första versionen av termcap-biblioteket 1978 [1] [2] för BSD- operativsystemet ; senare portades den till de flesta Unix- och Unix-liknande miljöer. Utformningen av termcap-biblioteket är känt för att ha påverkats av utformningen av terminaldatabasen i det tidigare Incompatible Timesharing System . [3] Termcap-databasen beskriver kapaciteten hos hundratals olika terminaler. Detta tillåter program att använda textutmatning oberoende av typen av terminal. Vi och emacs textredigerare använder termcap. Andra program finns i kategorin Termcap .

Här är exempel på fält som finns i databasen:

Datamodell

Termcap-databaserna består av en eller flera terminalbeskrivningar.

Index

Varje beskrivning måste innehålla terminalens kanoniska namn. Den kan också innehålla flera alias. Dessa namn används som söknycklar i termcap-databasen.

Värden

Beskrivningen innehåller en eller flera egenskaper som har standardnamn. Egenskaper kan vara av följande typer: Boolean , Numeric och String . Termcap-biblioteket har inte en fördefinierad typ för var och en av egenskaperna, så typen bestäms utifrån syntaxen:

Applikationer som använder termcap förväntar sig att gemensamma egenskaper är av en viss typ och hämtar de önskade värdena från termcap-databasen med hjälp av biblioteksanrop som endast framgångsrikt returnerar ett värde om den förväntade typen matchar den som finns i databasen.

Hierarki

Beskrivningar kan returneras från databasen med ändringar - lägga till, ta bort och omdefiniera egenskaper (till exempel när du ändrar skärmstorleken i en terminalemulator). Termcap-biblioteket skapar en terminalbeskrivning från den begärda beskrivningen, inklusive, ta bort eller åsidosätta de egenskaper som mottogs vid tidpunkten för begäran.

Lagringsmodell

Termcap-data lagras i läsbart textformat. Termcap-biblioteket kan begära text från filer eller miljövariabler.

Miljövariabler

Miljövariabeln TERM innehåller namnet på terminaltypen.

Miljövariabeln TERMCAP kan innehålla själva termcap-databasen. Det används oftast för att lagra en enda terminalbeskrivning, som ställs in av terminalemulatorn för att ge terminalens egenskaper till skalet och beroende program.

Miljövariabeln TERMPATH stöds av senare implementeringar av termcap och innehåller sökvägen till termcap-filerna.

Platt fil

Den ursprungliga (och vanligaste) implementeringen av termcap-biblioteket tar sina data från en platt textfil. Att söka i en stor termcap-fil, till exempel större än 500 KB, kan vara långsam. För att påskynda sökningen kan ett speciellt verktyg användas, till exempel reorder , som placerar de mest använda posterna av användaren i början av filen.

Hashed databas

BSD-4.4-implementationer av termcap-biblioteket lagrar terminalbeskrivningar i en hashad databas (till exempel Berkeley DB version 1.85). Två typer av poster lagras: alias som pekar på kanoniska poster och själva kanoniska poster. Innehållet i en termcap-post lagras i klartext.

Begränsningar och tillägg

Den ursprungliga implementeringen av termcap var designad för att ha lågt minne:

Senare implementeringar av termcap tillåter i allmänhet ett längre förnamn. Egendomsnamn måste dock bestå av två bokstäver i alla implementeringar.

Den tgetent- funktion som används för att läsa terminalbeskrivningen tar som indata adressen till en buffert vars storlek måste vara tillräckligt stor för att läsa data (1024 byte). Senare implementeringar av termcap kan lätta på denna begränsning genom att tillåta en noll-pekare som en parameter [4] eller genom att dölja den del som inte passar i bufferten, till exempel genom ZZ- egenskapen i NetBSD- implementeringen av termcap. [5] Terminfo - biblioteket emulerar också termcap-gränssnittet, även om det faktiskt inte använder en buffert med fast storlek.

Emulering av termcap-gränssnittet i terminfo-biblioteket låter dig lagra flera poster utan att begränsa deras position. Vissa senare implementeringar av termcap kan också ha denna funktion, även om den i allmänhet förblir odokumenterad. [6]

Utfasade egenskaper

Den speciella egenskapen "hz" lades till för att stödja Hazeltine 1500-terminalen, som hade ett olyckligt val av tilde-karaktären ('~') som början på en flyktsekvens. [7] För att stödja den här terminalen var jag tvungen att skriva en speciell kod som, när man matade ut text med tildes, gjorde en speciell ersättning för att undvika att exekvera oväntade kontrollkommandon. [8] Dessutom tog attributmarkörer (som start- och slutunderstreck) upp skärmutrymmet. {{{1}}}Kommentarer i källkoden beskriver denna funktion med frasen "Hazeltine hjärnskada" ("Hazeltine hjärnskada"). [9] Eftersom Hazeltine 1500 var en populär terminal på 1970- {{{1}}}talet var det viktigt att implementera stöd för den i termcap.

Se även

Länkar

  1. Peter H. Salus, "Unix historia handlar lika mycket om samarbete som det handlar om teknik", Byte, oktober 1994. . Hämtad 27 februari 2015. Arkiverad från originalet 25 februari 2015.
  2. Kenneth CRC Arnold och Elan Amir, "Skärmuppdatering och markörrörelseoptimering: Ett bibliotekspaket" . Datum för åtkomst: 27 februari 2015. Arkiverad från originalet den 28 september 2007.
  3. alt.sys.pdp10 inlägg . Hämtad 27 februari 2015. Arkiverad från originalet 27 februari 2015.
  4. GNU Termcap Library . Tillträdesdatum: 1 mars 2015. Arkiverad från originalet 5 september 2015.
  5. NetBSD termcap filformat . Datum för åtkomst: 1 mars 2015. Arkiverad från originalet 2 april 2015.
  6. Diskussion om termcap i vi . Tillträdesdatum: 1 mars 2015. Arkiverad från originalet den 7 augusti 2011.
  7. - FreeBSD -filformat mantermcap(5) -  sida  
  8. Stallman, Richard M. The Termcap Library and Database, andra upplagan . Gnu.org (1992). Hämtad 17 maj 2014. Arkiverad från originalet 14 mars 2015.
  9. termcap.src . Apple dator. Hämtad 17 maj 2014. Arkiverad från originalet 18 september 2016.

Externa länkar