Provided by: manpages-pl_20060617-3_all bug

NAZWA

       magic - plik liczb magicznych polecenia file

OPIS

       Ta  strona  podręcznika  systemowego  opisuje  format pliku magicznego,
       używanego  przez  polecenie  file(1)  w  wersji  3.37.  Polecenie  file
       rozpoznaje  typ  pliku,  korzystając  (poza  innymi  metodami) z testu,
       polegającego na sprawdzeniu, czy plik  nie  rozpoczyna  się  od  pewnej
       liczby  magicznej.   Plik  /usr/share/misc/magic  określa  jakie liczby
       sprawdzać i jakie komunikaty drukować w wypadku znalezienia  określonej
       liczby  magicznej  oraz  dodatkowe  dane,  które  mają zostać pobrane z
       pliku.

       Każdy wiersz pliku określa test, które ma być wykonany. Test  porównuje
       dane, rozpoczynające się przy określonym przesunięciu względem początku
       pliku z 1, 2 lub 4-bajtową wartością numeryczną  lub  łańcuchem.  Jeśli
       test  zakończy  się pomyślnie, wypisywany jest komunikat. Wiersz składa
       się z następujących pól:

       offset   Liczba, określająca w bajtach przesunięcie  względem  początku
                pliku, przy którym należy szukać testowanych danych.

       typ      Typ testowanych danych. Dopuszczalne wartości to:

                byte     Wartość jednobajtowa.

                short    Wartość dwubajtowa (w większości systemów) w natywnej
                         kolejności bajtów maszyny.

                long     Wartość  czterobajtowa  (w  większości  systemów)   w
                         natywnej kolejności bajtów maszyny.

                string   Łańcuch  bajtów.  Po  specyfikacji typu łańcucha może
                         opcjonalnie   wystąpić   /[Bbc]*.   Znacznik    ,,B''
                         kondensuje  białe  znaki  w testowanym tekście, który
                         musi zawierać co najmniej  jeden  biały  znak.  Jeśli
                         liczba magiczna zawiera "n" kolejnych białych znaków,
                         to aby nastąpiło dopasowanie,  testowany  tekst  musi
                         zawierać  co  najmniej  "n" kolejnych białych znaków.
                         Znacznik  ,,b''   powoduje   traktowanie   wszystkich
                         białych  znaków w testowanym tekście jako opcjonalne.
                         Wreszcie,   znacznik   ,,c''   określa    dopasowanie
                         ignorujące  wielkość  liter:  małe  litery  w liczbie
                         magicznej pasują zarówno do małych, jak i do wielkich
                         liter  w  testowanym  tekście,  podczas  gdy  wielkie
                         litery w liczbie magicznej pasują tylko  do  wielkich
                         liter.

                date     Czterobajtowa   wartość,   interpretowana  jako  data
                         uniksowa.

                ldate    Czterobajtowa wartość,  interpretowana  jako  data  w
                         stylu   uniksowym,   ale   interpretowana  jako  czas
                         lokalny, a nie UTC.

                beshort  Wartość  dwubajtowa   (w   większości   systemów)   w
                         grubokońcej (big-endian) kolejności bajtów.

                belong   Wartość   czterobajtowa  (w  większości  systemów)  w
                         grubokońcej kolejności bajtów.

                bedate   Wartość  czterobajtowa  (w  większości  systemów)   w
                         grubokońcej  kolejności  bajtów,  interpretowana jako
                         data uniksowa.

                leshort  Wartość  dwubajtowa   (w   większości   systemów)   w
                         ostrokońcej (little-endian) kolejności bajtów.

                lelong   Wartość   czterobajtowa  (w  większości  systemów)  w
                         ostrokońcej kolejności bajtów.

                ledate   Wartość  czterobajtowa  (w  większości  systemów)   w
                         ostrokońcej  kolejności  bajtów,  interpretowana jako
                         data uniksowa.

                leldate  Wartość  czterobajtowa  (w  większości  systemów)   w
                         ostrokońcej  kolejności  bajtów,  interpretowana jako
                         data w stylu uniksowym, ale interpretowana jako  czas
                         lokalny, a nie UTC.

       Typy  numeryczne  mogą  występować  w  parze  z  (następującym po nich)
       znakiem & i wartością numeryczną wskazującą, że  dana  wartość  ma  być
       poddana  operacji  AND  z  zadaną wartością numeryczną przed dokonaniem
       porównania. Poprzedzenie typu przez u wskazuje, że  porównane  wartości
       powinny być bez znaku.

       test   Wartość, które ma być porównywana z wartością z pliku. Jeśli typ
              jest numeryczny, to wartość jest podawana w  postaci  zgodnej  z
              językiem  C. Jeśli typ jest łańcuchowy, to wartość jest podawana
              jako łańcuch języka C z dozwolonymi znakami specjalnymi (np.  \n
              dla nowej linii).

              Wartości  numeryczne  mogą być poprzedzone znakami określającymi
              operację, jaka ma zostać wykonana. Znakiem operacji może być  =,
              określający,  że  wartość  z  pliku  musi  się  równać  wartości
              podanej, <, określający, że wartość z pliku musi być mniejsza od
              podanej,  >, określający, że wartość z pliku musi być większa od
              podanej, &, określający, że wartość z pliku musi mieć  wszystkie
              bity,  które są ustawione w podanej wartości, ^, określający, że
              wartość z pliku musi mieć wyzerowane wszystkie  bity,  które  są
              ustawione  w  podanej  wartości,  lub x, określający, że pasować
              może  dowolna  wartość.  Jeśli  znak  operacji  jest  pominięty,
              używany jest =.

              Wartości  numeryczne są podawane w postaci zgodnej z językiem C,
              np.  13 to liczba dziesiętna, 013 to liczba  ósemkowa,  0x13  to
              liczba szesnastkowa.

              Dla wartości łańcuchowych łańcuch bajtów z pliku musi odpowiadać
              podanemu łańcuchowi bajtów.  Do  łańcuchów  mogą  być  stosowane
              operatory   =,  <  i  >  (lecz  nie  &).   Długość,  używana  do
              porównywania  jest  długością  argumentu  łańcuchowego  z  pliku
              magicznego.  Znaczy  to,  że wiersz można dopasować do dowolnego
              łańcucha i wypisać go, stosując >\0 (ponieważ wszystkie łańcuchy
              są większe od łańcucha zerowego).

       komunikat
              Komunikat,  wypisywany  po  pomyślnym dopasowaniu. Jeśli łańcuch
              zawiera specyfikację formatu printf(3) to wartość z  pliku  jest
              wypisywana  (po  odpowiednim  maskowaniu) przy użyciu komunikatu
              jako łańcucha formatującego.

       Niektóre formaty  plików  zawierają  dodatkowe  dane,  które  mają  być
       wypisane razem z danym typem pliku. Wiersz, rozpoczynający się od znaku
       > oznacza dodatkowe testy i komunikaty. Liczba > w linii określa poziom
       testu;  wiersz  bez  >  jest na poziomie 0. Każdy wiersz w poziomie n+1
       jest pod kontrolą wiersza w poziomie n, poprzedzającego go najbliżej  w
       pliku  magicznym.   Jeśli  test  wiersza  na  poziomie n się powiedzie,
       dokonywane będą dalsze testy  na  poziomach  n+1.   Proces  ten  kończy
       następny wiersz na poziomie n.  Jeśli pierwszy znak za ostatnim > to (,
       to łańcuch za nawiasem jest interpretowany jako pośrednie przesunięcie.
       Znaczy  to, że liczba po nawiasie służy jako przesunięcie w pliku. Przy
       tym  przesunięciu  odczytywana  jest  wartość  używana  następnie  jako
       przesunięcie    w    pliku.    Przesunięcia   pośrednie   są   postaci:
       (x[.[bslBSL]][+-][y]).  Wartość x  jest  używana  jako  przesunięcie  w
       pliku.  Następnie  przy tym przesunięciu odczytywany jest z niego bajt,
       słowo lub podwójne słowo,  zależnie  od  specyfikatora  typu  [bslBSL].
       Wielkie  litery oznaczają liczby jako wartości grubokońce (big-endian),
       podczas gdy małe litery oznaczaja wartości (ostrokońce)  little-endian.
       Do  liczby tej dodawana jest wartość y, a wynik służy jako przesunięcie
       w pliku. Domyślnym typem przesunięcia jest long.

       Czasami dokładne przesunięcie nie jest znane, gdyż może ono zależeć  od
       długości  poprzednich  pól.  Można  podać  przesunięcie  względem końca
       ostatniego pola wyższego poziomu (oczywiście  można  to  wykonać  tylko
       przy  testach  na podpoziomach, tj. testach rozpoczynających się od >).
       Takie względne przesunięcie podawane jest za  pomocą  przedrostka  &  w
       przesunięcia.

BŁĘDY

       Formaty  long,  belong, lelong, short, beshort, leshort, date, bedate i
       ledate zależą od systemu; może powinny być podawane jako liczba  bajtów
       (2B, 4B, itd), gdyż rozpoznawane pliki zwykle pochodzą z systemu, gdzie
       długości są niezmienne.

       Nie  ma  (obecnie)  obsługi  dla  korzystania  z  danych  o  określonej
       końcowości (endianness) przy przesunięciach pośrednich.

ZOBACZ TAKŻE

       file(1) - polecenie, która czyta ten plik.

INFORMACJE O TŁUMACZENIU

       Powyższe   tłumaczenie   pochodzi   z   nieistniejącego   już  Projektu
       Tłumaczenia Manuali i moe nie by aktualne. W razie zauważenia  różnic
       między powyższym opisem a rzeczywistym zachowaniem opisywanego programu
       lub funkcji, prosimy o zapoznanie się z oryginalną  (angielską)  wersją
       strony podręcznika.

                               Ogólnie dostępne                       MAGIC(5)