MAGIC(5) File Formats Manual MAGIC(5) NUME magic - fiier de model magic al comenzii <> DESCRIERE Aceasta pagina de manual documenteaza formatul fiierelor magice utilizat de comanda file(1), versiunea 5.46. Comanda file(1) identifica tipul unui fiier folosind, printre alte teste, un test pentru a verifica daca fiierul conine anumite ",,modele magice"". Baza de date a acestor ",,modele magice"" se afla de obicei intr-un fiier binar din /usr/share/file/misc/magic.mgc sau intr-un director de fiiere de fragmente de modele magice din textul sursa din /usr/share/file/misc/magic. Baza de date specifica ce modele trebuie testate, ce mesaj sau tip MIME trebuie afiat daca se gasete un anumit model i informaii suplimentare care trebuie extrase din fiier. Formatul fiierelor de fragmente sursa care sunt utilizate pentru crearea acestei baze de date este urmatorul: Fiecare linie a unui fiier de fragmente specifica un test care urmeaza sa fie efectuat. Un test compara datele care incep la o anumita poziie in fiier cu o valoare de octet, un ir de caractere sau o valoare numerica. Daca testul reuete, se imprima un mesaj. Linia este formata din urmatoarele campuri: poziia Un numar care specifica poziia (in octei) in fiier a datelor care urmeaza sa fie testate. Aceasta poziie poate fi un numar negativ daca este: o Prima poziie directa a intrarii magice (la nivelul de continuare 0), caz in care este interpretata ca o poziie de la sfaritul fiierului, mergand inapoi. Acest lucru funcioneaza numai atunci cand este disponibil un descriptor de fiier pentru fiier i acesta este un fiier obinuit. o O poziie de continuare in raport cu sfaritul ultimului camp de nivel superio. (&). Daca poziia incepe cu simbolul "+", atunci toate poziiile sunt interpretate ca fiind de la inceputul fiierului (implicit). tipul Tipul de date care urmeaza sa fie testate. Valorile posibile sunt: byte O valoare de un octet. short O valoare de doi octei in ordinea nativa de octei a acestei maini. long O valoare de patru octei in ordinea nativa de octei a acestei maini. quad O valoare de opt octei in ordinea nativa de octei a acestei maini. float Un numar cu virgula mobila IEEE pe 32 de bii, cu precizie simpla, in ordinea nativa a octeilor acestei maini. double Un numar cu virgula mobila IEEE pe 64 de bii, cu precizie dubla, in ordinea nativa a octeilor acestei maini. string Un ir de octei. Specificarea tipului de ir poate fi urmata opional de o opiune /(laimea) i opional de un set de fanioane /[bCcftTtWw]*. Laimea limiteaza numarul de caractere care urmeaza sa fie copiate. Zero inseamna toate caracterele. Sunt acceptate urmatoarele fanioane: b Foreaza testarea fiierelor binare. C Utilizeaza potrivirea insensibila la majuscule: caracterele in majuscule din magic se potrivesc atat cu caracterele in minuscule, cat i cu cele in majuscule din inta, in timp ce caracterele in minuscule din magic se potrivesc numai cu caracterele in majuscule din inta. c Utilizai potrivirea insensibila la minuscule: caracterele cu minuscule din magic se potrivesc atat cu caracterele in minuscule, cat i cu cele in majuscule din inta, in timp ce caracterele in majuscule din magic se potrivesc numai cu caracterele in majuscule din inta. Pentru a realiza o potrivire completa insensibila la majuscule, specificai atat "c", cat i "C". f Solicita ca irul de caractere potrivit sa fie un cuvant complet, nu un cuvant parial potrivit. T Decupeaza irul de caractere, adica spaiile albe anterioare i posterioare t Foreaza testarea fiierelor text. W Spaiu alb compact in inta, care trebuie sa conina cel puin un caracter de spaiu alb. Daca magia are n spaii goale consecutive, inta trebuie sa aiba cel puin n spaii goale consecutive pentru a se potrivi. w Trateaza fiecare spaiu liber din magic ca un spaiu liber opional. Acesta este ters inainte ca irul sa fie imprimat. pstring Un ir in stil Pascal in care primul octet/short/int este interpretat ca lungimea fara semn. Lungimea implicita este octetul i poate fi specificata ca modificator. Sunt acceptate urmatoarele modificatoare: B O lungime de un octet (implicit). H O lungime big endian de 2 octei. h O lungime little endian de 2 octei. L O lungime big endian de 4 octei. l O lungime little endian de 4 octei. J Lungimea se include pe sine in calculul sau. irul nu se termina cu NUL. "J" este utilizata mai degraba decat cea mai valoroasa "I" deoarece acest tip de lungime este o caracteristica a formatului JPEG. date O valoare de patru octei interpretata ca o data UNIX. qdate O valoare de opt octei interpretata ca o data UNIX. ldate O valoare de patru octei interpretata ca o data in stil UNIX, dar interpretata ca ora locala i nu ca UTC. qldate O valoare de opt octei interpretata ca o data in stil UNIX, dar interpretata ca ora locala i nu ca UTC. qwdate O valoare de opt octei interpretata ca o data in stilul Windows. msdosdate O valoare de doua octei interpretata ca data in stilul FAT/DOS. msdostime O valoare de doua octei interpretata ca ora in stilul FAT/DOS. beid3 O lungime ID3 de 32 de bii in ordinea octeilor big-endian. beshort O valoare de doi octei in ordinea octeilor big-endian. belong O valoare de patru octei in ordinea octeilor big-endian. bequad O valoare de opt octei in ordinea octeilor big-endian. befloat Un numar cu virgula mobila IEEE pe 32 de bii, cu precizie simpla, in ordinea octeilor big-endian. bedouble Un numar cu virgula mobila IEEE pe 64 de bii, cu precizie simpla, in ordinea octeilor big-endian. bedate O valoare de patru octei in ordinea octeilor big-endian, interpretata ca o data Unix. beqdate O valoare de opt octei in ordinea octeilor big-endian, interpretata ca o data Unix. beldate O valoare de patru octei in ordinea octeilor big-endian, interpretata ca o data in stil UNIX, dar interpretata ca ora locala in loc cat UTC. beqldate O valoare de opt octei in ordinea octeilor big-endian, interpretata ca o data in stil UNIX, dar interpretata ca ora locala in loc cat UTC. beqwdate O valoare de opt octei in ordinea octeilor big-endian, interpretata ca o data in stilul Windows. bemsdosdate O valoare de doi octei in ordinea octeilor big-endian, interpretata ca data in stilul FAT/DOS. bemsdostime O valoare de doi octei in ordinea octeilor big-endian, interpretata ca ora in stilul FAT/DOS. bestring16 Un ir Unicode (UCS16) de doi octei in ordinea octeilor big-endian. leid3 O lungime ID3 de 32 de bii in ordinea octeilor little-endian. leshort O valoare de doi octei in ordinea octeilor little-endian. lelong O valoare de patru octei in ordinea octeilor little-endian. lequad O valoare de opt octei in ordinea octeilor little-endian. lefloat Un numar cu virgula mobila IEEE pe 32 de bii, cu precizie simpla, in ordinea octeilor little-endian. ledouble Un numar cu virgula mobila IEEE pe 64 de bii, cu precizie dubla, in ordinea octeilor little-endian. ledate O valoare de patru octei in ordinea octeilor little-endian, interpretata ca o data UNIX. leqdate O valoare de opt octei in ordinea octeilor little-endian, interpretata ca o data UNIX. leldate O valoare de patru octei in ordinea octeilor little-endian, interpretata ca o data in stil UNIX, dar interpretata ca ora locala in loc de ora UTC. leqldate O valoare de opt octei in ordinea octeilor little-endian, interpretata ca o data in stil UNIX, dar interpretata ca ora locala in loc de ora UTC. leqwdate O valoare de opt octei in ordinea octeilor little-endian, interpretata ca o data in stilul Windows. lemsdosdate O valoare de doi octei in ordinea octeilor big-endian, interpretata ca data in stilul FAT/DOS. lemsdostime O valoare de doi octei in ordinea octeilor big-endian, interpretata ca ora in stilul FAT/DOS. lestring16 Un ir Unicode (UCS16) de doi octei in ordinea octeilor little-endian. melong O valoare de patru octei in ordinea octeilor middle-endian (PDP-11). medate O valoare de patru octei in ordinea octeilor middle-endian (PDP-11), interpretata ca o data UNIX. meldate O valoare de patru octei in ordinea octeilor middle-endian (PDP-11), interpretata ca o data in stil UNIX, dar interpretata ca ora locala in loc de ora UTC. indirect Incepand de la poziia data, se consulta din nou baza de date a magiei. Poziia magiei indirect este implicit absoluta in fiier, dar se poate specifica /r pentru a indica faptul ca poziia este relativa de la inceputul intrarii. name Definete o instana magica "named" (numita) care poate fi apelata de la o alta intrare magica use, ca un apel de subrutina. Poziiile magice directe ale instanei numite sunt relative la poziia intrarii corespondente anterioare, dar poziiile indirecte sunt relative la inceputul fiierului, ca de obicei. Intrarile magice numite se potrivesc intotdeauna. use Apeleaza recursiv magia numita incepand de la poziia curenta. Daca numele referinei incepe cu ^, atunci endianness- ul magiei este schimbat; daca magia numita leshort, de exemplu, aceasta este tratata ca beshort i viceversa. Acest lucru este util pentru a evita dublarea regulilor pentru diferite endianness-uri. regex O potrivire a expresiei regulate in sintaxa POSIX extinsa a expresiei regulate (precum egrep). Procesarea expresiilor regulate poate dura un timp exponenial, iar performana lor este greu de prevazut, astfel incat utilizarea lor este descurajata. Atunci cand sunt utilizate in medii de producie, performana lor trebuie verificata cu atenie. Dimensiunea irului de caractere de cautat trebuie, de asemenea, limitata prin specificarea /, pentru a evita problemele de performana in scanarea fiierelor lungi. Specificarea tipului poate fi, de asemenea, urmata opional de /[c][s][l]. Fanionul "c" face ca potrivirea sa fie insensibila la majuscule, in timp ce fanionul "s" actualizeaza poziial la poziia de inceput a potrivirii, in loc de cea de la sfarit. Modificatorul "l", schimba limita de lungime in numar de linii in loc de un numar de octei. Liniile sunt delimitate de delimitatorul de linie nativ al platformelor. Atunci cand se specifica un numar de linii, se calculeaza i un numar implicit de octei, presupunand ca fiecare linie are o lungime de 80 de caractere. Daca nu este specificat nici un numar de octei, nici un numar de linii, cautarea este limitata automat la 8Kio. ^ i $ se potrivesc cu inceputul i sfaritul liniilor individuale, respectiv, nu cu inceputul i sfaritul fiierului. search O cautare literala de ir de caractere incepand de la poziia data. Se pot utiliza aceleai fanioane modificatoare ca pentru modelele de ir de caractere. Expresia de cautare trebuie sa conina intervalul sub forma /de numar care este numarul de poziii la care se va incerca potrivirea, incepand de la poziia de pornire. Aceasta este potrivita pentru cautarea in expresii binare mai mari cu poziii variabile, utilizand eludarile \ pentru caracterele speciale. Ordinea modificatorului i a numarului nu este relevanta. default Acesta este destinat a fi utilizat cu testul x (care este intotdeauna adevarat) i nu are tip. Se potrivete atunci cand niciun alt test la acel nivel de continuare nu s-a potrivit inainte. tergerea testelor potrivite pentru un nivel de continuare se poate face folosind testul clear. clear Acest test este intotdeauna adevarat i terge fanionul de potrivire pentru nivelul de continuare respectiv. Este destinat a fi utilizat impreuna cu testul default. der Analizeaza fiierul ca pe un fiier de certificat DER. Campul de testare este utilizat ca un tip DER care trebuie sa fie comparat. Tipurile DER sunt: eoc, bool, int, bit_str, octet_str, null, obj_id, obj_desc, ext, real, enum, embed, utf8_str, rel_oid, time, res2, seq, set, num_str, prt_str, t61_str, vid_str, ia5_str, utc_time, gen_time, gr_str, vis_str, gen_str, univ_str, char_str, bmp_str, date, tod, datetime, duration, oid-iri, rel-oid-iri. Aceste tipuri pot fi urmate de o dimensiune numerica opionala, care indica laimea campului in octei. guid Un identificator unic global, analizat i imprimat ca XXXXXXXX-XXXX-XXXX-XXXX- XXXXXXXXXXXX. Formatul sau este un ir de caractere. poziia Aceasta este o valoare cvadrupla care indica poziia curenta a fiierului. Aceasta poate fi utilizata pentru a determina dimensiunea fiierului sau a tamponului magic. De exemplu, intrarile magice: -0 offset x acest fiier are %lld octei -0 offset <=100 trebuie sa fie mai mare de 100 de octei \ i este de doar %lld de octei octal Un ir reprezentand un numar octal. Pentru compatibilitate cu standardul Unix unic (Single UNIX Standard), specificatorii de tip dC i d1 sunt echivaleni cu byte, specificatorii de tip uC i u1 sunt echivaleni cu ubyte, specificatorii de tip dS i d2 sunt echivaleni cu short, specificatorii de tip uS i u2 sunt echivaleni cu ushort, specificatorii de tip dI, dL, i d4 sunt echivaleni cu long, specificatorii de tip uI, uL, i u4 sunt echivaleni cu ulong, specificatorul de tip d8 este echivalent cu quad, specificatorul de tip u8 este echivalent cu uquad, iar specificatorul de tip s este echivalent cu string. In plus, specificatorul de tip dQ este echivalent cu quad, iar specificatorul de tip uQ este echivalent cu uquad. Fiecare model magic de nivel superior (a se vedea mai jos pentru o explicaie a nivelurilor) este clasificat ca text sau binar in funcie de tipurile utilizate. Tipurile "regex" i "search" sunt clasificate ca teste text, cu excepia cazului in care in model sunt utilizate caractere neimprimabile. Toate celelalte teste sunt clasificate ca binare. Un model de nivel superior este considerat a fi un test text atunci cand toate modelele sale sunt modele text; altfel, este considerat a fi un model binar. La potrivirea unui fiier, se incearca mai intai modelele binare; daca nu se gasete nicio potrivire, iar fiierul arata ca un text, se determina codificarea acestuia i se incearca modelele text. Tipurile numerice pot fi urmate opional de & i de o valoare numerica, pentru a specifica faptul ca valoarea trebuie sa fie evaluata cu operatorul logic AND cu valoarea numerica inainte de efectuarea oricarei comparaii. Preadaugarea unui u la tip indica faptul ca comparaiile ordonate trebuie sa fie fara semn. test Valoarea care urmeaza sa fie comparata cu valoarea din fiier. Daca tipul este numeric, aceasta valoare este specificata in format C; daca este un ir de caractere, este specificata ca un ir de caractere C cu eludarile obinuite permise (de exemplu, \n pentru linie noua). Valorile numerice pot fi precedate de un caracter care indica operaia care urmeaza sa fie efectuata. Acesta poate fi =, pentru a specifica faptul ca valoarea din fiier trebuie sa fie egala cu valoarea specificata, <, pentru a specifica faptul ca valoarea din fiier trebuie sa fie mai mica decat valoarea specificata, >, pentru a specifica faptul ca valoarea din fiier trebuie sa fie mai mare decat valoarea specificata, &, pentru a specifica faptul ca valoarea din fiier trebuie sa aiba activai toi biii care sunt activai in valoarea specificata, ^, pentru a specifica faptul ca valoarea din fiier trebuie sa fi eliminat oricare dintre biii care sunt activai in valoarea specificata sau ~, valoarea specificata dupa este negata inainte de testare. x, pentru a specifica ca orice valoare se va potrivi. Daca caracterul este omis, se presupune ca este =. Operatorii &, ^ i ~ nu funcioneaza cu numere cu virgula flotanta i numere de precizie dubla. Operatorul ! specifica faptul ca linia se potrivete daca testul nu reuete. Valorile numerice sunt specificate in format C; de exemplu, 13 este zecimal, 013 este octal, iar 0x13 este hexazecimal. Operaiile numerice nu sunt efectuate pe tipuri de date, in schimb valoarea numerica este interpretata ca un decalaj. Pentru valorile ir de caractere, irul din fiier trebuie sa corespunda irului specificat. Operatorii =, < i > (dar nu i &) pot fi aplicai irurilor de caractere. Lungimea utilizata pentru potrivire este cea a argumentului irului de caractere din fiierul magic. Aceasta inseamna ca o linie se poate potrivi cu orice ir nevid (utilizat de obicei pentru a imprima apoi irul), cu >\0 (deoarece toate irurile nevid sunt mai mari decat irul gol). Datele sunt tratate ca valori numerice in reprezentarea interna respectiva. Testul special x este intotdeauna evaluat ca fiind ,,true" (adevarat). message Mesajul care urmeaza sa fie afiat daca comparaia reuete. Daca irul conine o specificaie de format printf(3), valoarea din fiier (cu orice mascare specificata) este imprimata folosind mesajul ca ir de format. Daca irul de caractere incepe cu "\b", mesajul imprimat este restul irului de caractere, fara niciun spaiu alb adaugat inainte de acesta: in mod normal, potrivirile multiple sunt separate de un singur spaiu. Creatorul i tipul unui APPLE cu 4+4 caractere APPLE pot fi specificate ca: !:apple CREATYPE O lista de extensii de nume de fiiere des intalnite, separate prin bara oblica, poate fi specificata ca: !:ext ext[/ext...] adica irul literal "!:ext" urmat de o lista de extensii des intalnite; de exemplu pentru imagini JPEG: !:ext jpeg/jpg/jpe/jfif Un tip MIME este dat pe o linie separata, care trebuie sa fie urmatoarea linie fara spaiu liber sau comentariu dupa linia magica care identifica tipul de fiier, i are urmatorul format: !:mime MIMETYPE adica irul literal "!:mime" urmat de tipul MIME. Un punct forte opional poate fi furnizat pe o linie separata, care se refera la descrierea magica curenta folosind urmatorul format: !:strength OPERAND VALOARE Operandul OPERAND poate fi: +, -, * sau /, iar VALOARE este o constanta intre 0 i 255. Aceasta constanta este aplicata folosind operandul specificat la puterea magica implicita calculata in prezent. Unele formate de fiiere conin informaii suplimentare care trebuie afiate impreuna cu tipul de fiier sau necesita teste suplimentare pentru a determina adevaratul tip de fiier. Aceste teste suplimentare sunt introduse de unul sau mai multe caractere > care preced poziia. Numarul de > de pe linie indica nivelul testului; o linie fara > la inceput este considerata a fi la nivelul 0. Testele sunt aranjate intr-o ierarhie arborescenta: daca testul de pe o linie de la nivelul n reuete, toate testele urmatoare de la nivelul n+1 sunt efectuate, iar mesajele afiate daca testele reuesc, pana cand apare o linie cu nivelul n (sau mai puin). Pentru fiiere mai complexe, se pot utiliza mesaje goale pentru a obine doar efectul ,,if/then", in felul urmator: 0 string MZ >0x18 uleshort <0x40 MS-DOS executable >0x18 uleshort >0x3f extended PC executable (e.g., MS Windows) Decalajele nu trebuie sa fie constante, ci pot fi citite i din fiierul examinat. Daca primul caracter dupa ultimul > este un ( atunci irul de caractere de dupa paranteza este interpretat ca un decalaj indirect. Aceasta inseamna ca numarul de dupa paranteza este utilizat ca un decalaj in fiier. Valoarea de la acel decalaj este citita i este utilizata din nou ca decalaj in fiier. Decalajele indirecte sunt de forma: (x [[.,][bBcCeEfFgGhHiIlmosSqQ]][+-][ y ]). Valoarea lui x este utilizata ca decalaj in fiier. Un octet, o lungime id3, un numar scurt sau lung este citit la acel decalaj, in funcie de specificatorul de tip [bBcCeEfFgGhHiIlLmsSqQ]. Valoarea este tratata ca avand semn daca se specifica "," sau fara semn daca se specifica ".". Tipurile cu majuscule interpreteaza numarul ca o valoare big endian, in timp ce versiunile cu litere mici interpreteaza numarul ca o valoare little endian; tipul m interpreteaza numarul ca o valoare middle endian (PDP-11). La acest numar se adauga valoarea y, iar rezultatul este utilizat ca decalaj in fiier. Tipul implicit daca nu este specificat unul este long. Sunt recunoscute urmatoarele tipuri: Tip Sy Mnemonic Sy Endian Sy Dim. bcBC Byte/Char N/A 1 efg Double Little 8 EFG Double Big 8 hs Half/Short Little 2 HS Half/Short Big 2 i ID3 Little 4 I ID3 Big 4 l Long Little 4 L Long Big 4 m Middle Middle 4 o Octal Textual Variable q Quad Little 8 Q Quad Big 8 In acest fel se pot examina structuri de lungime variabila: # Executabilele MS Windows sunt de asemenea executabile MS-DOS valide 0 string MZ >0x18 uleshort <0x40 MZ executable (MS-DOS) # sare peste intregul bloc de mai jos daca nu este un executabil extins >0x18 uleshort >0x3f >>(0x3c.l) string PE\0\0 PE executable (MS-Windows) >>(0x3c.l) string LX\0\0 LX executable (OS/2) Aceasta strategie de examinare are un dezavantaj: trebuie sa va asigurai ca in cele din urma se imprima ceva, altfel utilizatorii pot obine o ieire goala (cum ar fi atunci cand nu exista nici PE\0\0, nici LE\0\0 in exemplul de mai sus). Daca acest decalaj indirect nu poate fi utilizata direct, sunt posibile calcule simple: adaugarea [+-*/%&|^]numar intre paranteze permite modificarea valorii citite din fiier inainte ca aceasta sa fie utilizata ca decalaj: # Executabilele MS Windows sunt de asemenea executabile MS-DOS valide 0 string MZ # uneori, valoarea de la 0x18 este mai mica decat 0x40, dar exista inca un # executabil extins, adaugat pur i simplu la fiier >0x18 uleshort <0x40 >>(4.s*512) leshort 0x014c COFF executable (MS-DOS, DJGPP) >>(4.s*512) leshort !0x014c MZ executable (MS-DOS) Uneori nu cunoatei decalajul exact, deoarece acesta depinde de lungimea sau de poziia (in cazul in care a fost utilizata indirecta anterior) campurilor precedente. Putei specifica un decalaj relativ la sfaritul ultimului camp de nivel superior folosind `&' ca prefix al decalajului: 0 string MZ >0x18 uleshort >0x3f >>(0x3c.l) string PE\0\0 PE executable (MS-Windows) # imediat dupa semnatura PE este tipul de CPU >>>&0 leshort 0x14c for Intel 80386 >>>&0 leshort 0x8664 for x86-64 >>>&0 leshort 0x184 for DEC Alpha Decalajele indirecte i relative pot fi combinate: 0 string MZ >0x18 uleshort <0x40 >>(4.s*512) leshort !0x014c MZ executable (MS-DOS) # daca nu este COFF, merge inapoi cu 512 octei i adauga # decalajul luat de la octetul 2/3, care este un alt mod de a # gasi inceputul executabilului extins >>>&(2.s-514) string LE LE executable (MS Windows VxD driver) Sau invers: 0 string MZ >0x18 uleshort >0x3f >>(0x3c.l) string LE\0\0 LE executable (MS-Windows) # la decalajul 0x80 (-4, deoarece decalajele relative incep de la # sfaritul potrivirii nivelului superior) in interiorul antetului LE, # gasim decalajul absolut catre zona de cod, unde cautam o semnatura specifica >>>(&0x7c.l+0x26) string UPX \b, UPX compressed Sau chiar amandoua! 0 string MZ >0x18 uleshort >0x3f >>(0x3c.l) string LE\0\0 LE executable (MS-Windows) # la decalajul 0x58 in interiorul antetului LE, gasim decalajul relativ # catre o zona de date in care cautam o semnatura specifica >>>&(&0x54.l-3) string UNACE \b, ACE self-extracting archive Daca trebuie sa avei de-a face cu perechi decalaj/lungime in fiierul dvs., chiar i a doua valoare dintr-o expresie in paranteze poate fi preluata din fiierul insui, utilizand un alt set de paranteze. Reinei ca acest decalaj indirect suplimentar este intotdeauna relativ la inceputul decalajului indirect principal. 0 string MZ >0x18 uleshort >0x3f >>(0x3c.l) string PE\0\0 PE executable (MS-Windows) # cauta seciunea PE numita ,,.idata"... >>>&0xf4 search/0x140 .idata # ...i merge la sfaritul acesteia, calculat de la start+lungime; # acestea sunt situate la 14 i 10 octei dupa numele seciunii >>>>(&0xe.l+(-4)) string PK\3\4 \b, ZIP self-extracting archive Daca avei o lista de valori cunoscute la un anumit nivel de continuare i dorii sa furnizai un caz implicit de tip comutator: # curaa aceasta continuare a nivelului de potrivire >18 clear x >18 lelong 1 one >18 lelong 2 two >18 default x # imprima potrivirea implicita >>18 lelong x unmatched 0x%x CONSULTAI I file(1) - comanda care citete acest fiier. ERORI Formatele long, belong, lelong, melong, short, beshort i leshort nu depind de lungimea tipurilor de date C short i long de pe platforma, chiar daca specificaia unica UNIX implica acest lucru. Cu toate acestea, deoarece OS X Mountain Lion a trecut de suita de validare a specificaiei unice UNIX i furnizeaza o versiune a file(1) in care acestea nu depind de dimensiunile tipurilor de date C i care este construita pentru un mediu pe 64 de bii in care long are 8 octei in loc de 4 octei, probabil ca suita de validare nu testeaza daca, de exemplu, long se refera la un element cu aceeai dimensiune ca tipul de date C long. Probabil ca ar trebui sa existe nume de tip int8, uint8, int16, uint16, int32, uint32, int64 i uint64, precum i variante ale acestora cu ordinea octeilor specificata, pentru a fi mai clar ca aceste tipuri au laimile specificate. 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: https://www.gnu.org/licenses/gpl-3.0.html 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 translation-team-ro@lists.sourceforge.net Linux 6.13.7-arch1-1 27 noiembrie 2024 Linux 6.13.7-arch1-1