term(5) Formate de fiiere term(5) NUME term - descrierea terminalului compilata terminfo DESCRIERE tic(1) compileaza o descriere de tip terminal terminfo, iar setupterm(3X) o citete. O descriere compilata poate fi stocata intr-un fiier sau intr-o baza de date care poate conine numeroase astfel de descrieri. In plus, o descriere compilata poate fi intr-unul dintre cele doua formate: unul similar cu cel utilizat de System V i un format mai nou, extensibil, utilizat exclusiv de ncurses. Locaia de stocare Descrierile terminfo compilate sunt plasate in directorul /usr/share/terminfo. La compilarea bibliotecilor ncurses se selecteaza una dintre cele doua configuraii. directory tree Se utilizeaza o schema pe doua niveluri pentru a evita cautarea liniara intr-un director de sistem Unix de mari dimensiuni: /usr/share/terminfo/c/nume, unde nume este numele terminalului, iar c este primul caracter al lui nume. Astfel, descrierea compilata a tipului de terminal ,,act4" se gasete in fiierul /usr/share/terminfo/a/act4. Sinonimele pentru acelai terminal sunt implementate prin legaturi multiple catre acelai fiier compilat. hashed database Folosind API-ul bazei de date Berkeley, sunt stocate doua tipuri de inregistrari: datele terminfo in acelai format cu cel stocat intr-o structura arborescenta de directoare, avand ca cheie numele tipului principal al terminalului, precum i inregistrari care conin doar alias care fac trimitere la numele principal. Dei este conceput pentru a scrie in baze de date cu structura hash, ncurses poate totui citi baze de date terminfo organizate sub forma unui arbore de directoare, dar nu poate scrie intrari in acest arbore. Poate scrie (sau rescrie) intrari in baza de date cu structura hash. ncurses face distincia intre cele doua cazuri din variabilele de mediu TERMINFO i TERMINFO_DIRS, presupunand existena unui arbore de directoare pentru intrarile care corespund unui director existent i, in caz contrar, a unei baze de date cu tabele hash. Formatul de stocare vechi Formatul a fost ales astfel incat sa fie identic pe toate dispozitivele. Se presupune ca un octet are o laime de cel puin opt bii, dar nu se fac presupuneri cu privire la ordinea biilor sau la extinderea semnului. Fiierul este imparit in ase pari: (a) antet, (b) numele terminalelor, (c) fanioane booleene, (d) numere, (e) iruri, i (f) un tabel de iruri. Seciunea antet incepe fiierul. Aceasta seciune conine ase numere intregi scurte in formatul descris mai jos. Aceste numere intregi sunt (1) numarul magic (octal 0432); (2) dimensiunea, in octei, a seciunii numele terminalelor; (3) numarul de octei din seciunea fanioane booleene; (4) numarul de numere intregi scurte din seciunea numere; (5) numarul de decalaje(poziii) (numere intregi scurte) din seciunea iruri; (6) dimensinea, in octei, a tabelului de iruri. Funcionalitaile din seciunile fanioane booleene, numere i iruri sunt prezentate in aceeai ordine ca in fiierul de antet term.h. Numerele intregi scurte au semn, se incadreaza in intervalul de la -32768 la 32767 i sunt stocate in format little-endian. Numerele dintr-o descriere de terminal, indiferent daca sunt intrari in tabelul numere sau iruri, sunt numere intregi pozitive. Fanioanele booleene sunt tratate ca numere intregi pozitive de un octet. In fiecare caz, aceste numere intregi pozitive reprezinta o capacitate a terminalului. Compilatorul de terminale tic utilizeaza numere intregi negative pentru a gestiona situaiile in care o capacitate nu este disponibila: o Daca o capacitate este absenta din acest terminal, tic stocheaza valoarea -1 in tabelul corespunzator. Valoarea numarului intreg -1 este reprezentata de doi octei: 0377, 0377. Valorile booleene absente sunt reprezentate de octetul 0 (fals). o Daca o capacitate a fost anulata din acest terminal, tic stocheaza valoarea -2 in tabelul corespunzator. Valoarea numarului intreg -2 este reprezentata de doi octei: 0377, 0376. Valoarea booleana -2 este reprezentata de octetul 0376. o Alte valori negative nu sunt permise. Seciunea numele terminalelor urmeaza dupa antet. Aceasta conine prima linie a descrierii terminfo, enumerand diversele denumiri ale terminalului, separate prin caracterul ,,|". Seciunea numele terminalelor se incheie cu un caracter ASCII NUL. Seciunea fanioane booleene are un octet pentru fiecare fanion. Valorile booleene sunt fie 1, fie 0 (adevarat sau fals), in funcie de faptul daca terminalul accepta sau nu capacitatea data. Intre seciunea fanioane booleene i seciunea numere se va insera un octet nul, daca este necesar, pentru a se asigura ca seciunea numere incepe cu un octet par. Aceasta este o ramaia a arhitecturii cu adresare pe cuvinte a PDP-11, conceputa iniial pentru a evita erorile provocate de adresarea unui cuvant la o grania de octet impar. Toate numerele intregi de tip short sunt aliniate la o grania de cuvant de tip short. Seciunea numere este similara cu seciunea fanioane booleene . Fiecare capacitate ocupa doi octei i este stocata sub forma unui numar intreg scurt in format little-endian. Seciunea iruri este, de asemenea, similara. Fiecare capacitate este stocata sub forma unui numar intreg scurt. Valoarea capacitaii reprezinta un index in tabelul de iruri. tabelul de iruri este ultima seciune. Aceasta conine toate valorile capacitailor irurilor menionate in seciunea iruri. Fiecare ir este terminat cu caracterul nul. Caracterele speciale din notaia ^X sau \c sunt stocate in forma lor interpretata, nu in reprezentarea de afiare. Informaiile de completare $ i informaiile despre parametri %x sunt stocate intacte, in forma neinterpretata. Formatul de stocare extins Seciunea anterioara descrie formatul binar convenional terminfo. Cu cateva variaii minore ale poziiilor de alocare (vezi PORTABILITATE), acelai format binar este utilizat in toate sistemele Unix moderne. Fiecare sistem utilizeaza un set standard de tipuri de date booleene, numerice sau de tip ir de caractere. Bibliotecile i aplicaiile ncurses accepta formatul binar extins terminfo, permiand utilizatorilor sa defineasca capacitai care sunt incarcate in timpul rularii. Aceasta extensie este posibila datorita faptului ca celelalte implementari inceteaza sa mai citeasca datele terminfo atunci cand ajung la capatul dimensiunii specificate in antet. ncurses verifica dimensiunea i, daca aceasta depaete cea specificata in antet, continua sa analizeze conform propriei sale scheme. Mai intai, citete antetul extins (5 numere intregi scurte): (1) numarul de capacitai booleene extinse (2) numarul de capacitai numerice extinse (3) numarul de capacitai de iruri extinse (4) numarul de elemente din tabelul de iruri extins (5) dimensiunea tabelului de iruri extins, exprimata in octei Valorile de numarare i dimensiune pentru tabelul extins de iruri includ atat capacitatea extinsa nume, cat i capacitatea extinsa valoare. Pe baza numerelor i dimensiunilor, ncurses aloca tabele i citete datele pentru capacitaile extinse in aceeai ordine ca i informaiile din antet. Tabelul de iruri extins conine valori pentru capacitaile irurilor. Dupa aceste valori, tabelul conine, in ordine, denumirile fiecarei capacitai extinse: booleana, numerica i de ir. Prin stocarea descrierilor terminalelor in acest mod, ncurses poate oferi o baza de date utila pentru aplicaiile vechi, precum i date pentru aplicaiile care necesita mai multe informaii despre un tip de terminal decat se anticipase in X/Open Curses. Consultai user_caps(5) pentru o prezentare generala a modului in care ncurses utilizeaza aceste informaii extinse. Aplicaiile care manipuleaza date de terminal pot utiliza definiiile descrise in term_variables(3X), asociind numele lungi ale capacitailor cu elementele structurii TERMTYPE. Formatul extins pentru numere Uneori, numerele intregi cu semn de 16 bii nu sunt suficient de mari. ncurses 6.1 a introdus un nou format prin efectuarea unor modificari in formatul vechi: o un numar magic diferit (octal 01036) o schimbarea tipului pentru tabelul de numere de la intregi pe 16 bii cu semn la intregi pe 32 de bii cu semn. Pentru a asigura compatibilitatea, biblioteca pune la dispoziia utilizatorilor direci ai structurii TERMTYPE aceleai structuri de date ca i in formatele anterioare. Cu toate acestea, aceasta nu poate furniza apelanilor numerele extinse. Biblioteca utilizeaza o structura de date similara, dar ascunsa, TERMTYPE2, pentru a furniza date funciilor terminfo. FIIERE /usr/share/terminfo baza de date cu descrierea terminalului compilat PORTABILITATE setupterm Reinei ca este posibil ca setupterm sa atepte un set de capacitai diferit de cel prezent efectiv in fiier. Fie baza de date a fost actualizata de la recompilarea lui setupterm (ceea ce duce la apariia unor intrari suplimentare nerecunoscute in fiier), fie programul a fost recompilat mai recent decat a fost actualizata baza de date (ceea ce duce la lipsa unor intrari). Rutina setupterm trebuie sa fie pregatita pentru ambele posibilitai - de aceea sunt incluse numerele i dimensiunile. De asemenea, noile capacitai trebuie adaugate intotdeauna la sfaritul listelor de capacitai booleene, numerice i de tip ir. Formatul binar X/Open Curses nu specifica un format pentru baza de date terminfo. System V curses folosea o structura ierarhica de fiiere binare, cate unul pentru fiecare descriere de terminal. In ciuda utilizarii consecvente a numerelor in format little-endian i a formatului altfel intuitiv, nu este recomandabil sa te bazezi pe portabilitatea intrarilor binare terminfo intre versiunile comerciale de Unix. Problema este ca exista cel puin trei versiuni de terminfo (sub HP-UX, AIX i OSF/1), fiecare dintre ele divergand de System V terminfo dupa SVr1 i adaugand capacitai de extensie la tabelul de iruri care (in format binar) intra in conflict cu extensiile System V i X/Open Curses. Consultai terminfo(5) pentru o discuie detaliata a problemelor de compatibilitate a sursei terminfo. Aceasta implementare este, in mod implicit, compatibila cu formatul binar terminfo utilizat de Solaris curses, cu excepia catorva detalii mai puin utilizate in care s-a constatat ca acesta din urma nu corespundea cu X/Open Curses. Formatul utilizat de celelalte versiuni Unix poate fi adaptat prin compilarea ncurses cu diferite opiuni de configurare. Coduri magice Numarul magic dintr-un fiier binar terminfo este reprezentat de primii 16 bii (doi octei). Pe langa faptul ca sporete fiabilitatea verificarii de catre biblioteca a faptului ca un fiier este de tip terminfo, instrumente precum file(1) il utilizeaza i pentru a identifica formatul fiierului. System V a definit mai multe numere magice, cu 0433, 0435 ca capturi de ecran (vezi scr_dump(5)). Aceasta implementare folosete 01036 ca o continuare a acelei secvene, dar cu un octet de ordin superior diferit pentru a evita confuzia. Structura TERMTYPE Pentru aplicaiile vechi se ofera acces direct la structura TERMTYPE. Aplicaiile portabile ar trebui sa utilizeze tigetflag(3X) i funciile conexe pentru a citi capacitaile terminalului. Nume de terminale cu majuscule i minuscule amestecate Un numar redus de descrieri ale terminalelor utilizeaza caractere majuscule in denumirile lor. Daca sistemul de fiiere subiacent nu face diferena intre majuscule i minuscule, ncurses reprezinta ,,primul caracter" al denumirii terminalului utilizat ca nivel intermediar al unui arbore de directoare in format hexazecimal (cu doua caractere) Limite ncurses stocheaza descrierile terminalelor compilate in trei formate conexe, descrise in subseciunile o Formatul de stocare vechi, o Formatul de stocare extins i o Formatul extins pentru numere. Formatul de stocare vechi i formatul numeric extins se deosebesc prin tipurile de valori numerice pe care le pot stoca (de exemplu, numere intregi pe 16 bii faa de cele pe 32 de bii). Formatul de stocare extins introdus de ncurses 5.0 adauga date la oricare dintre aceste formate. Exista cateva restricii: o numarul total de intrari compilate nu poate depai 4096 de octei in formatul vechi. o numarul total de intrari compilate nu poate depai 32768 de octei in formatul extins. o campul ,,nume" nu poate depai 128 de octei. Intrarile compilate sunt limitate la 32768 de octei, deoarece decalajele din tabelul de iruri utilizeaza numere intregi de doi octei. Formatul vechi ar fi putut admite intrari de 32768 de octei, dar era limitat la cei 4096 de octei ai unei pagini de memorie virtuala. EXEMPLE Iata o scurta descriere a modelului Lear-Siegler ADM-3, un terminal vechi, popular, dei destul de rudimentar. adm3a|lsi adm3a, am, cols#80, lines#24, bel=^G, clear=\032$<1>, cr=^M, cub1=^H, cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, home=^^, ind=^J, Urmeaza o captura hexazecimala a descrierii sale de terminal compilate (in formatul vechi). 0000 1a 01 10 00 02 00 03 00 82 00 31 00 61 64 6d 33 ........ ..1.adm3 0010 61 7c 6c 73 69 20 61 64 6d 33 61 00 00 01 50 00 a|lsi ad m3a...P. 0020 ff ff 18 00 ff ff 00 00 02 00 ff ff ff ff 04 00 ........ ........ 0030 ff ff ff ff ff ff ff ff 0a 00 25 00 27 00 ff ff ........ ..%.'... 0040 29 00 ff ff ff ff 2b 00 ff ff 2d 00 ff ff ff ff ).....+. ..-..... 0050 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 0060 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 0070 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 0080 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 0090 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 00a0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 00b0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 00c0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 00d0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 00e0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 00f0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 0100 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 0110 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 0120 ff ff ff ff ff ff 2f 00 07 00 0d 00 1a 24 3c 31 ....../. .....$<1 0130 3e 00 1b 3d 25 70 31 25 7b 33 32 7d 25 2b 25 63 >..=%p1% {32}%+%c 0140 25 70 32 25 7b 33 32 7d 25 2b 25 63 00 0a 00 1e %p2%{32} %+%c.... 0150 00 08 00 0c 00 0b 00 0a 00 ........ . AUTORI Thomas E. Dickey formatul extins terminfo pentru ncurses 5.0 suport pentru baze de date cu tabele hash pentru ncurses 5.6 suport pentru numere extinse pentru ncurses 6.1 Eric S. Raymond formatul vechi documentat terminfo (cel utilizat de pcurses). CONSULTAI I curses(3X), curs_terminfo(3X), terminfo(5), user_caps(5) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . ncurses 6.6 16 august 2025 term(5)