table of contents
- bookworm-backports 1:4.27.0-1~bpo12+1
- testing 1:4.27.0-1
- unstable 1:4.27.0-1
MAGIC(5) | File Formats Manual | MAGIC(5) |
NAZWA¶
magic
— plik
wzorców magicznych polecenia file
OPIS¶
This manual page documents the format of magic files as used by the file(1) command, version 5.44. The file(1) command identifies the type of a file using, among other tests, a test for whether the file contains certain “magic patterns”. The database of these “magic patterns” is usually located in a binary file in /usr/share/misc/magic.mgc or a directory of source text magic pattern fragment files in /usr/share/misc/magic. The database specifies what patterns are to be tested for, what message or MIME type to print if a particular pattern is found, and additional information to extract from the file.
Format plików z fragmentami źródeł służącymi do zbudowania tej bazy danych jest następujący: Każdy wiersz pliku fragmentarycznego 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 wartością bajtową, 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 przesunięcie (w bajtach)
względem początku pliku, przy którym należy
szukać testowanych danych. Przesunięcie może
być liczbą ujemną, jeśli jest:
- Pierwszym bezpośrednim przesunięciem wpisu magicznego (na poziomie kontynuacji 0), wówczas jest interpretowane jako przesunięcie liczone od końca pliku. Działa to tylko, gdy dostępny jest deskryptor danego pliku i jest to zwykły plik.
- Przesunięcie kontynuacji względem końca
ostatniego pola wyższego poziomu
(
&
).
type
- Typ testowanych danych. Dopuszczalne wartości to:
byte
- Wartość jednobajtowa.
short
- Wartość dwubajtowa w natywnej kolejności bajtów tego komputera.
long
- Wartość czterobajtowa w natywnej kolejności bajtów tego komputera.
quad
- Wartość ośmiobajtowa w natywnej kolejności bajtów tego komputera.
float
- 32-bitowa liczba zmiennoprzecinkowa o pojedynczej precyzji IEEE, w natywnej dla tego komputera kolejności bajtów.
double
- 64-bitowa liczba zmiennoprzecinkowa o podwójnej precyzji IEEE, w natywnej dla tego komputera kolejności bajtów.
string
- Łańcuch bajtów. Po określeniu typu
łańcucha może opcjonalnie wystąpić
opcja /<szerokość> oraz opcjonalnie zestaw flag
/[bCcftTtWw]*. Szerokość ogranicza liczbę
znaków do skopiowania. Zero oznacza wszystkie znaki.
Obsługiwane są poniższe flagi:
- b
- Wymusza test pliku binarnego.
- C
- Używa dopasowania niewrażliwego na wielkość wielkich liter: wielkie litery w magii dopasują zarówno małe jak i wielkie litery w celu, natomiast małe litery w magii dopasują jedynie małe litery w celu.
- c
- Używa dopasowania niewrażliwego na wielkość małych liter: małe litery w magii dopasują zarówno małe jak i wielkie litery w celu, natomiast wielkie litery w magii dopasują jedynie wielkie litery w celu. Aby uzyskać dopasowanie całkowicie niewrażliwe na wielkość liter, należy podać zarówno „c” jak i „C”.
- f
- Wymaga, aby dopasowany łańcuch był pełnym słowem, a nie dopasowaniem części słowa.
- T
- Przycina łańcuch, tzn. początkowe i końcowe białe znaki
- t
- Wymusza test pliku tekstowego
- W
- Kompaktuje białe znaki w celu, który musi
zawierać przynajmniej jeden biały znak. Jeśli
magia ma
n
kolejnych białych znaków, cel musi mieć przynajmniejn
kolejnych białych znaków, aby zostać dopasowanym. - w
- Traktuje każdą spację w magii jako opcjonalną. Jest ona usuwana przed wypisaniem łańcucha.
pstring
- Łańcuch w stylu Pascala, gdzie pierwszy bajt/liczba typu
short/liczba typu int jest interpretowany jako
długość bez znaku. Domyślną
długością jest bajt i można go
określić jako modyfikator. Obsługiwane są
następujące modyfikatory:
- B
- Długość bajtu (domyślnie).
- H
- Długość 2 bajtów big endian.
- h
- Długość 2 bajtów little endian.
- L
- Długość 4 bajtów big endian.
- l
- Długość 4 bajtów little endian.
- J
- Długość zawierająca się w swej liczebności.
date
- Czterobajtowa wartość, interpretowana jako data uniksowa.
qdate
- Ośmiobajtowa wartość, interpretowana jako data uniksowa.
ldate
- Czterobajtowa wartość, interpretowana jako data w stylu uniksowym, ale interpretowana jako czas lokalny, a nie UTC.
qldate
- Ośmiobajtowa wartość, interpretowana jako data w stylu uniksowym, ale interpretowana jako czas lokalny, a nie UTC.
qwdate
- Ośmiobajtowa wartość interpretowana jako data w stylu windowsowym.
beid3
- 32-bitowa długość ID3 w kolejności bajtów big-endian
beshort
- Wartość dwubajtowa w kolejności bajtów big-endian.
belong
- Wartość czterobajtowa w kolejności bajtów big-endian.
bequad
- Wartość ośmiobajtowa w kolejności bajtów big-endian.
befloat
- 32-bitowa liczba zmiennoprzecinkowa o pojedynczej precyzji IEEE, w kolejności bajtów big-endian.
bedouble
- 64-bitowa liczba zmiennoprzecinkowa o podwójnej precyzji IEEE, w kolejności bajtów big-endian.
bedate
- Czterobajtowa wartość w kolejności bajtów big-endian, interpretowana jako data uniksowa.
beqdate
- Ośmiobajtowa wartość w kolejności bajtów big-endian, interpretowana jako data uniksowa.
beldate
- Czterobajtowa wartość w kolejności bajtów big-endian, interpretowana jako data w stylu uniksowym, ale interpretowana jako czas lokalny, a nie UTC.
beqldate
- Ośmiobajtowa wartość w kolejności bajtów big-endian, interpretowana jako data w stylu uniksowym, ale interpretowana jako czas lokalny, a nie UTC.
beqwdate
- Ośmiobajtowa wartość w kolejności bajtów big-endian, interpretowana jako data w stylu windowsowym.
bestring16
- Dwubajtowy łańcuch unikodu (UCS16), w kolejności bajtów big-endian.
leid3
- 32-bitowa długość ID3 w kolejności bajtów little-endian
leshort
- Wartość dwubajtowa w kolejności bajtów little-endian.
lelong
- Wartość czterobajtowa w kolejności bajtów little-endian.
lequad
- Wartość ośmiobajtowa w kolejności bajtów little-endian.
lefloat
- 32-bitowa liczba zmiennoprzecinkowa o pojedynczej precyzji IEEE, w kolejności bajtów little-endian.
ledouble
- 64-bitowa liczba zmiennoprzecinkowa o podwójnej precyzji IEEE, w kolejności bajtów little-endian.
ledate
- Czterobajtowa wartość w kolejności bajtów little-endian, interpretowana jako data uniksowa.
leqdate
- Ośmiobajtowa wartość w kolejności bajtów little-endian, interpretowana jako data uniksowa.
leldate
- Czterobajtowa wartość w kolejności bajtów little-endian, interpretowana jako data w stylu uniksowym, ale interpretowana jako czas lokalny, a nie UTC.
leqldate
- Ośmiobajtowa wartość w kolejności bajtów little-endian, interpretowana jako data w stylu uniksowym, ale interpretowana jako czas lokalny, a nie UTC.
leqwdate
- Ośmiobajtowa wartość w kolejności bajtów little-endian, interpretowana jako data w stylu windowsowym.
lestring16
- Dwubajtowy łańcuch unikodu (UCS16), w kolejności bajtów little-endian.
melong
- Wartość czterobajtowa w kolejności bajtów middle-endian (PDP-11).
medate
- Czterobajtowa wartość w kolejności bajtów middle-endian (PDP-11), interpretowana jako data uniksowa.
meldate
- Czterobajtowa wartość w kolejności bajtów middle-endian (PDP-11), interpretowana jako data w stylu uniksowym, ale interpretowana jako czas lokalny, a nie UTC.
indirect
- Poczynając od podanego przesunięcia, sprawdza ponownie
bazę danych magii. Przesunięcie magii
indirect
jest domyślnie przesunięciem absolutnym w pliku, ale można podać/r
aby wskazać, że przesunięcie jest względne wobec początku wpisu. name
- Definiuje „nazwane” wystąpienie magii,
które można wywołać z innego wpisu magii
use
, jak wywołanie podfunkcji. Przesunięcia nazwanych wystąpień bezpośrednich magii są względem przesunięcia poprzednio dopasowanego wpisu, natomiast niebezpośrednie przesunięcia są liczone względem początku pliku, jak zwykle. Nazwane wpisy magii są zawsze dopasowywane. use
- Rekurencyjne wywołuje nazwaną magię
poczynając od bieżącego przesunięcia.
Jeśli nazwa odniesienia rozpoczyna się od
^
, to zamieniana jest kolejność bajtów magii; jeśli magia wspominała np.leshort
, jest traktowana jakobeshort
i na odwrót. Jest to przydatne, aby uniknąć duplikowania reguł dla różnych kolejności bajtów. regex
- Wyrażenie regularne w składni rozszerzonych
wyrażeń regularnych POSIX (jak egrep). Przetworzenie
wyrażeń regularnych może zająć
wykładniczo więcej czasu i ciężko
przewidzieć ich wydajność, zatem odradza
się ich używania. W środowiskach produkcyjnych
należy uważnie sprawdzić ich
wydajność. Należy też ograniczyć
rozmiar łańcucha do przeszukania, podając
/<długość>
, aby uniknąć problemów z wydajnością przy skanowaniu długich plików. Po określeniu typu można opcjonalnie dodać/[c][s][l]
. Flaga „c” czyni dopasowanie niewrażliwym na wielkość znaków, natomiast „s” aktualizuje przesunięcie na początek przesunięcia dopasowania, zamiast jego koniec. Modyfikator „l” zmienia limit długości, aby oznaczał on liczbę wierszy zamiast liczbę bajtów. Wiersze są rozgraniczane przez ogranicznik zależny od platformy. Gdy poda się liczbę wierszy, obliczana jest też niejawnie liczba bajtów zakładając, że każdy wiersz ma 80 znaków. Jeśli nie poda się liczby bajtów ani wierszy, wyszukiwanie jest automatycznie ograniczane do 8KiB.^
i$
dopasowują początek i koniec poszczególnych wierszy, a nie początek i koniec pliku. search
- Dosłowny łańcuch szukany od podanego
przesunięcia. Można korzystać z tych samych flag
modyfikujących jak przy wzorcach łańcuchowych.
Wyszukiwane wyrażenie musi zawierać zakres w postaci
/liczba,
tj. liczbę pozycji, na której dokonane będą próby dopasowania, zaczynając od początkowego przesunięcia. Jest to właściwe przy wyszukiwaniu większych wyrażeń binarnych z różnymi przesunięciami, korzystając z cytowania znaków specjalnych za pomocą\
. Kolejność modyfikatorów i liczb nie ma znaczenia. default
- Zaprojektowane do użycia z testem x (zawsze
prawdziwym); nie ma typu. Dopasowuje, gdy inne testy na tym poziomie
kontynuacji nic wcześniej nie dopasowały. Za
pomocą testu
clear
można wyczyścić dopasowane testy dla poziomu kontynuacji. clear
- Ten test jest zawsze prawdziwy i czyści flagę
dopasowania dla danego poziomu kontynuacji. Zaprojektowany do
użycia z testem
default
. der
- Przetwarza plik jako plik certyfikatu DER. Pole testowe
służy jako typ der, który musi być
dopasowany. Występują następujące typy
DER:
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
. Po typach tych może wystąpić opcjonalny rozmiar numeryczny, który oznacza szerokość pola w bajtach. guid
- Globalnie unikalny identyfikator (ang. Globally Unique Identifier – GUID), przetwarzany i wypisywany jako XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX. Jest to format łańcuchowy.
offset
- Jest to wartość typu quad wskazująca aktualne
przesunięcie pliku. Może służyć do
określenia rozmiaru pliku lub bufora magicznego.
Przykładowe wpisy magiczne:
-0 offset x ten plik ma %lld bajtów -0 offset <=100 musi mieć więcej niż 100 \ bajtów, a ma tylko %lld
octal
- Łańcuch oznaczający liczbę ósemkową.
Ze względu ma kompatybilność z Single
UNIX Standard, określenia typu
dC
i d1
są
równoważne byte
, określenia
typu uC
i u1
są
równoważne ubyte
, określenia
typu dS
i d2
są
równoważne short
, określenia
typu uS
i u2
są
równoważne ushort
, określenia
typu dI
, dL
, i
d4
są równoważne
long
, określenia typu
uI
, uL
, i
u4
są równoważne
ulong
, określenie typu
d8
jest równoważne
quad
, określenie typu
u8
jest równoważne
uquad
, a określenie typu
s
jest równoważne
string
. Dodatkowo określenie typu
dQ
jest równoważne
quad
, a określenie typu
uQ
jest równoważne
uquad
.
Każdy wzorzec magiczny najwyższego poziomu (poniżej wyjaśniono znaczenie poziomów) jest klasyfikowany jako tekstowy lub binarny, w zależności od użytego typu. Typy „regex” i „search” są klasyfikowane jako tekstowe, chyba że we wzorcu użyto znaków niedrukowalnych. Wszystkie inne testy są klasyfikowane jako binarne. Wzorzec najwyższego poziomu uważa się za test tekstowy, jeśli wszystkie jego wzorce są wzorcami tekstowymi; w innym przypadku jest uważany za wzorzec binarny. Przy dopasowywaniu pliku, jako pierwsze próbowane są wzorce binarne; jeśli żaden nie zostanie dopasowany, a plik wygląda na tekstowy, to określane jest jego kodowanie i próbowane są wzorce tekstowe.
Po typach numerycznych może opcjonalnie
wystąpić &
i wartość
numeryczna aby określić, że wartość ma
być zsumowana (AND) z wartością numeryczną przed
dokonaniem jakiegokolwiek porównania. Wstawienie
u
przed typem oznacza, że uszeregowane
porównania mają być dokonywane bez względu na
znak.
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 nowego wiersza).
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 ~
, określający, że podana
wartość ma zostać zanegowana przed przetestowaniem.
x
, określa, że pasować
może dowolna wartość. Jeśli znak operacji jest
pominięty, używany jest =
. Operatory
&
, ^
i
~
nie działają z liczbami
zmiennoprzecinkowymi i typu double. Operator !
określa, że wiersz zostanie dopasowany jeśli test
nie powiedzie
się.
Wartości numeryczne są podawane w postaci zgodnej z
językiem C, np. 13
to liczba
dziesiętna, 013
to liczba ósemkowa, a
0x13
to liczba szesnastkowa.
Operacje numeryczne nie są przeprowadzane na typach daty; wartość numeryczna jest zamiast tego interpretowana jako przesunięcie.
Dla wartości łańcuchowych,
łańcuch z pliku musi odpowiadać podanemu
łańcuchowi. 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 niepustego łańcucha
(zwykle używane do późniejszego wypisania
łańcucha), stosując >\0
(ponieważ wszystkie łańcuchy są większe
od łańcucha zerowego).
Daty są traktowane jako wartości numeryczne w odpowiedniej wewnętrznej reprezentacji.
Specjalny test x zawsze daje prawdę.
Komunikat do wypisania, jeśli porównanie powiedzie się.
Jeśli łańcuch zawiera określenie formatu
printf(3), to wartość z pliku (po dokonaniu
ewentualnego podanego przekształcenia) jest wypisywana
korzystając z komunikatu jako łańcucha formatu.
Jeśli łańcuch zaczyna się od „\b”,
wypisywany komunikat jest resztą łańcucha bez dodanej
przed nim spacji: wielokrotne dopasowania są zwykle rozdzielone
pojedynczą spacją.
Twórcę i typ APPLE w formacie 4+4 znaków można podać jako:
!:apple CREATYPE
Typ MIME jest podawany w osobnym wierszu, który musi wystąpić jako następny niepusty wiersz niebędący komentarzem po wierszu magii identyfikującym typ pliku; ma on następujący format:
!:mime TYPMIME
tj. dosłowny łańcuch “!:mime”, po którym następuje typ MIME.
W osobnym wierszu można podać opcjonalną siłę, która odnosi się do aktualnego opisu magii; korzysta z następującego formatu:
!:strength ARG WARTOŚĆ
Argumentem ARG
może być:
+
, -
,
*
lub /
; natomiast
WARTOŚĆ
jest stałą z
przedziału 0-255. Na aktualnie obliczonej domyślnej sile magii
przeprowadzane jest działanie podane w argumencie, którego
drugim elementem jest podana stała.
Niektóre formaty pliku zawierają dodatkowe informacje, które będą wypisane razem z typem pliku lub wymagają dodatkowych testów aby określić prawdziwy typ pliku. Te dodatkowe testy są wprowadzane za pomocą jednego lub wielu znaków > poprzedzających przesunięcie. Liczba znaków > w wierszu określa poziom testu; wiersz bez > na początku jest na poziomie 0. Testy są ułożone w hierarchii drzewiastej: jeśli test w wierszu na poziomie n powiedzie się, wykonywane są wszystkie kolejne testy na poziomie n+1, a komunikaty są wypisywane jeśli testy powiodą się, do momentu pojawienia się wiersza na poziomie n (lub niższym). W przypadku bardziej złożonych plików, można używać pustych komunikatów, aby uzyskać efektywną składnię „jeżeli/to”, w następującej postaci:
0 string MZ >0x18 leshort <0x40 MS-DOS executable >0x18 leshort >0x3f extended PC executable (e.g., MS Windows)
Offsets do not need to be constant, but can also be read from the file being examined. If the first character following the last > is a ( then the string after the parenthesis is interpreted as an indirect offset. That means that the number after the parenthesis is used as an offset in the file. The value at that offset is read, and is used again as an offset in the file. Indirect offsets are of the form: (( x [[.,][bBcCeEfFgGhHiIlmsSqQ]][+-][ y ]). The value of x is used as an offset in the file. A byte, id3 length, short or long is read at that offset depending on the [bBcCeEfFgGhHiIlmsSqQ] type specifier. The value is treated as signed if “”, is specified or unsigned if “”. is specified. The capitalized types interpret the number as a big endian value, whereas the small letter versions interpret the number as a little endian value; the m type interprets the number as a middle endian (PDP-11) value. To that number the value of y is added and the result is used as an offset in the file. The default type if one is not specified is long. The following types are recognized:
Typ | Skrót od | Kol. baj. Rozmiar | |
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 |
m | Middle | Middle | 4 |
o | Octal | Tekstowa | Zmienny |
q | Quad | Little | 8 |
Q | Quad | Big | 8 |
W ten sposób można sprawdzić struktury o zmiennej długości:
# MS Windows executables are also valid MS-DOS executables 0 string MZ >0x18 leshort <0x40 MZ executable (MS-DOS) # skip the whole block below if it is not an extended executable >0x18 leshort >0x3f >>(0x3c.l) string PE\0\0 PE executable (MS-Windows) >>(0x3c.l) string LX\0\0 LX executable (OS/2)
Ten sposób ma swoje wady: trzeba się upewnić, że na końcu coś się wypisze albo użytkownicy mogą otrzymać puste wyjście (np. gdy w powyższym przykładzie nie jest to ani PE\0\0 ani LE\0\0).
Jeśli nie da się bezpośrednio zastosować tego niebezpośredniego przesunięcia, możliwe są proste obliczenia: dołączenie [+-*/%&|^]liczba wewnątrz nawiasów pozwala na modyfikację wartości odczytanej z pliku, zanim zostanie użyta jako przesunięcie:
# MS Windows executables are also valid MS-DOS executables 0 string MZ # sometimes, the value at 0x18 is less that 0x40 but there's still an # extended executable, simply appended to the file >0x18 leshort <0x40 >>(4.s*512) leshort 0x014c COFF executable (MS-DOS, DJGPP) >>(4.s*512) leshort !0x014c MZ executable (MS-DOS)
Czasem dokładne przesunięcie nie jest znane, ponieważ zależy ono od długości lub pozycji (tam gdzie wcześniej używano przesunięć niebezpośrednich) poprzednich pól. Można podać przesunięcie względem końca ostatniego pola wyższego poziomu za pomocą ‘&’ stosowanego jako przedrostek przesunięcia:
0 string MZ >0x18 leshort >0x3f >>(0x3c.l) string PE\0\0 PE executable (MS-Windows) # immediately following the PE signature is the CPU type >>>&0 leshort 0x14c for Intel 80386 >>>&0 leshort 0x184 for DEC Alpha
Przesunięcia niebezpośrednie i względne można łączyć:
0 string MZ >0x18 leshort <0x40 >>(4.s*512) leshort !0x014c MZ executable (MS-DOS) # if it's not COFF, go back 512 bytes and add the offset taken # from byte 2/3, which is yet another way of finding the start # of the extended executable >>>&(2.s-514) string LE LE executable (MS Windows VxD driver)
Lub na odwrót:
0 string MZ >0x18 leshort >0x3f >>(0x3c.l) string LE\0\0 LE executable (MS-Windows) # at offset 0x80 (-4, since relative offsets start at the end # of the up-level match) inside the LE header, we find the absolute # offset to the code area, where we look for a specific signature >>>(&0x7c.l+0x26) string UPX \b, UPX compressed
Lub podać oba!
0 string MZ >0x18 leshort >0x3f >>(0x3c.l) string LE\0\0 LE executable (MS-Windows) # at offset 0x58 inside the LE header, we find the relative offset # to a data area where we look for a specific signature >>>&(&0x54.l-3) string UNACE \b, ACE self-extracting archive
Jeśli w pliku zachodzi konieczność radzenia sobie z duetami przesunięcie/długość, z samego pliku można pobrać nawet drugą wartość w wyrażeniu w nawiasie, za pomocą kolejnego zestawu nawiasów. Proszę zauważyć, że to dodatkowe przesunięcie niebezpośrednie jest zawsze względem początku głównego przesunięcia niebezpośredniego.
0 string MZ >0x18 leshort >0x3f >>(0x3c.l) string PE\0\0 PE executable (MS-Windows) # search for the PE section called ".idata"... >>>&0xf4 search/0x140 .idata # ...and go to the end of it, calculated from start+length; # these are located 14 and 10 bytes after the section name >>>>(&0xe.l+(-4)) string PK\3\4 \b, ZIP self-extracting archive
Jeśli ma się listę znanych wartości na określonym poziomie kontynuacji i chce się udostępnić domyślny przypadek w postaci przełącznikowej:
# clear that continuation level match >18 clear >18 lelong 1 one >18 lelong 2 two >18 default x # print default match >>18 lelong x unmatched 0x%x
ZOBACZ TAKŻE¶
file(1) - polecenie odczytujące ten plik.
USTERKI¶
Formaty long
,
belong
, lelong
,
melong
, short
,
beshort
i leshort
nie
zależą od długość typów danych C
short
i long
na platformie,
choć Single UNIX Specification implikuje,
że zależą. Jednak ponieważ OS X Mountain Lion
przeszedł zestaw walidacji Single UNIX
Specification i dostarcza wersję file(1) w
której brak jest zależności od rozmiarów
typów danych C oraz która jest zbudowana dla środowiska
64-bitowego, w którym long
ma 8
bajtów, a nie 4, być może zestaw walidujący nie
sprawdza czy np. long
odnosi się to elementu
o tym samym rozmiarze, co typ danych C long
.
Prawdopodobnie powinny występować nazwy
type
takie jak int8
,
uint8
, int16
,
uint16
, int32
,
uint32
, int64
i
uint64
oraz warianty o określonej
kolejności bajtów tychże, aby było jasne,
że typy te mają określoną
szerokość.
TŁUMACZENIE¶
Tłumaczenie niniejszej strony podręcznika: Przemek Borys <pborys@dione.ids.pl>, Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl> i Michał Kułach <michal.kulach@gmail.com>
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net
October 9, 2022 | Debian |