MAGIC(5)

NOM
magic - Fichier de motifs magiques de la commande file(1)

DESCRIPTION
Cette page de manuel décrit le format des fichiers magiques utilisés par la commande file(1) version 5.46. La commande file(1) identifie le type d’un fichier en testant, entre autres, si le fichier contient certains « motifs magiques ». La base de données de ces « motifs magiques » se trouve en général dans un fichier binaire pointé par /usr/share/file/misc/magic.mgc ou dans le dossier /usr/share/misc/magic qui contient les fichiers texte source de motifs magiques. La base de données spécifie les motifs qui doivent être testés, le message ou le type MIME à afficher si un motif particulier est trouvé et des informations supplémentaires à extraire du fichier.

Le format des multiples fichiers source utilisés pour construire la base de données est le suivant : chaque ligne d’un fichier spécifie un test à effectuer. Chaque test compare les données situées à un certain décalage dans le fichier avec une valeur d’octet, une chaîne ou une valeur numérique. Si le test est positif, un message est affiché. Une ligne contient les champs suivants :

décalage
    Un nombre spécifiant le décalage (en octets) dans le fichier auquel se trouvent les données à tester. Ce décalage peut être un nombre négatif :
    •   s’il s’agit du premier décalage direct de l’entrée magique (au niveau de continuation 0), auquel cas il sera interprété comme un décalage depuis la fin du fichier en allant en arrière. Cela ne fonctionne que si le fichier est un fichier normal et possède un descripteur de fichier.
    •   s’il s’agit d’un décalage de continuation relatif à la fin du dernier champ de niveau supérieur ().
    Si le décalage commence par le symbole « + », tous les décalages seront interprétés par rapport au début du fichier (comportement par défaut).

type
    Le type des données à tester. Les valeurs possibles sont :

    byte
        Une valeur sur un octet.

    short
        Une valeur sur deux octets dans l’ordre des octets natif de la machine utilisée.

    long
        Une valeur sur quatre octets dans l’ordre des octets natif de la machine utilisée.

    quad
        Une valeur sur huit octets dans l’ordre des octets natif de la machine utilisée.

    float
        Un nombre en virgule flottante de l’IEEE en simple précision sur 32 bits dans l’ordre des octets natif de la machine utilisée.

    double
        Un nombre en virgule flottante IEEE en double précision sur 64 bits dans l’ordre des octets natif de la machine utilisée.

    string
        Une chaîne d’octets. La spécification du type string peut être suivie d’une option /<taille> et d’un jeu de symboles /[bCcftTtWw]*. La taille limite le nombre de caractères à copier. Zéro signifie tous les caractères. Les symboles valables sont les suivants :
        b   Forcer un test de fichier binaire.
        C   Utiliser une recherche de correspondance insensible à la casse pour les caractères du motif en capitales : les caractères du motif en capitales correspondront aux caractères en minuscules ou en capitales de la cible, alors que les caractères du motif en minuscules ne correspondront qu’aux caractères en capitales de la cible.
        c   Utiliser une recherche de correspondance insensible à la casse pour les caractères du motif en minuscules : les caractères du motif en minuscules correspondront aux caractères en minuscules ou en capitales de la cible, alors que les caractères du motif en capitales ne correspondront qu’aux caractères en capitales de la cible. Pour une recherche de correspondance totalement insensible à la casse, spécifiez les deux symboles « c » et « C ».
        f   La chaîne mise en correspondance doit être un mot entier, pas une portion de mot.
        T   Rogner la chaîne, c’est-à-dire supprimer les blancs au début et à la fin.
        t   Forcer le test de fichier texte.
        W   Compacter les blancs dans la cible qui doit contenir au moins un caractère blanc. Si le motif contient n blancs consécutifs, la cible devra contenir au moins n blancs consécutifs pour correspondre.
        w   Traiter chaque blanc comme un blanc optionnel. Il sera supprimé avant l’affichage de la chaîne.

    pstring
        Une chaîne de style Pascal où le premier byte/short/int est interprété comme la longueur non signée. La longueur par défaut est sur un octet et peut être spécifiée à l’aide d’un modificateur. Les modificateurs pris en charge sont les suivants :
        B   Une longueur sur 1 octet (par défaut).
        H   Une longueur sur 2 octets gros-boutistes.
        h   Une longueur sur 2 octets petit-boutistes.
        L   Une longueur sur 4 octets gros-boutistes.
        l   Une longueur sur 4 octets petit-boutistes.
        J   Le champ longueur est inclus dans la longueur totale.
        La chaîne n’est pas terminée par un caractère NULL. « J » est préféré à « I », car ce type de longueur est propre au format JPEG.

    date
        Une valeur sur 4 octets interprétée comme une date de style UNIX.

    qdate
        Une valeur sur 8 octets interprétée comme une date de style UNIX.

    ldate
        Une valeur sur 4 octets interprétée comme une date de style UNIX, mais en heure locale au lieu de UTC.

    qldate
        Une valeur sur 8 octets interprétée comme une date de style UNIX, mais en heure locale au lieu de UTC.

    qwdate
        Une valeur sur 8 octets interprétée comme une date de style Windows.

    msdosdate
        Une valeur sur 2 octets interprétée comme une date de style FAT/DOS.

    msdostime
        Une valeur sur 2 octets interprétée comme une heure de style FAT/DOS.

    beid3
        Une longueur ID3 sur 32 bits dans l’ordre gros-boutiste.

    beshort
        Une valeur sur 2 octets dans l’ordre gros-boutiste.

    belong
        Une valeur sur 4 octets dans l’ordre gros-boutiste.

    bequad
        Une valeur sur 8 octets dans l’ordre gros-boutiste.

    befloat
        Un nombre en virgule flottante de l’IEEE en simple précision sur 32 bits en ordre gros-boutiste.

    bedouble
        Un nombre en virgule flottante de l’IEEE en double précision sur 64 bits en ordre gros-boutiste.

    bedate
        Une valeur sur 4 octets dans l’ordre gros-boutiste interprétée comme une date de style UNIX.

    beqdate
        Une valeur sur 8 octets dans l’ordre gros-boutiste interprétée comme une date de style UNIX.

    beldate
        Une valeur sur 4 octets dans l’ordre gros-boutiste interprétée comme une date de style UNIX, mais en heure locale au lieu de UTC.

    beqldate
        Une valeur sur 8 octets dans l’ordre gros-boutiste interprétée comme une date de style UNIX, mais en heure locale au lieu de UTC.

    beqwdate
        Une valeur sur 8 octets dans l’ordre gros-boutiste interprétée comme une date de style Windows.

    bemsdosdate
        Une valeur sur 2 octets dans l’ordre gros-boutiste interprétée comme une date de style FAT/DOS.

    bemsdostime
        Une valeur sur 2 octets dans l’ordre gros-boutiste interprétée comme une heure de style FAT/DOS.

    bestring16
        Une chaîne unicode de caractères sur 2 octets (UCS16) dans l’ordre gros-boutiste.

    leid3
        Une longueur ID3 sur 32 bits dans l’ordre petit-boutiste.

    leshort
        Une valeur sur 2 octets dans l’ordre petit-boutiste.

    lelong
        Une valeur sur 4 octets dans l’ordre petit-boutiste.

    lequad
        Une valeur sur 8 octets dans l’ordre petit-boutiste.

    lefloat
        Un nombre en virgule flottante de l’IEEE en simple précision sur 32 bits en ordre petit-boutiste.

    ledouble
        Un nombre en virgule flottante de l’IEEE en double précision sur 64 bits en ordre petit-boutiste.

    ledate
        Une valeur sur 4 octets dans l’ordre petit-boutiste interprétée comme une date de style UNIX.

    leqdate
        Une valeur sur 8 octets dans l’ordre petit-boutiste interprétée comme une date de style UNIX.

    leldate
        Une valeur sur 4 octets dans l’ordre petit-boutiste interprétée comme une date de style UNIX, mais en heure locale au lieu de UTC.

    leqldate
        Une valeur sur 8 octets dans l’ordre petit-boutiste interprétée comme une date de style UNIX, mais en heure locale au lieu de UTC.

    leqwdate
        Une valeur sur 8 octets dans l’ordre petit-boutiste interprétée comme une date de style Windows.

    lemsdosdate
        Une valeur sur 2 octets dans l’ordre gros-boutiste interprétée comme une date de style FAT/DOS.

    lemsdostime
        Une valeur sur 2 octets dans l’ordre gros-boutiste interprétée comme une heure de style FAT/DOS.

    lestring16
        Une chaîne unicode à caractères sur 2 octets (UCS16) dans l’ordre petit-boutiste.

    melong
        Une valeur sur 4 octets dans l’ordre mi-boutiste (PDP-11).

    medate
        Une valeur sur 4 octets dans l’ordre mi-boutiste (PDP-11) interprétée comme une date de style UNIX.

    meldate
        Une valeur sur 4 octets dans l’ordre mi-boutiste interprétée comme une date de style UNIX, mais en heure locale au lieu de UTC.

    indirect
        Consulter à nouveau la base de données magique à partir du décalage donné. Le décalage du magique indirect est par défaut absolu dans le fichier, mais il est possible d’indiquer qu’il est relatif au début de l’entrée en spécifiant /r.

    name
        Définition d’une instance magique « nommée » qui pourra être appelée depuis une autre entrée magique « use », comme une sous-routine. Les décalages magiques directs d’une instance nommée sont relatifs au décalage de l’entrée qui correspond précédente, mais les décalages indirects sont relatifs au début du fichier, comme c’est le plus souvent le cas. Les entrées magiques nommées correspondent toujours.

    use Appel récursif du magique nommé en débutant au décalage actuel. Si le nom du magique référencé est préfixé d’un « ^ », le boutisme (endianness) est inversé ; par exemple, si le magic mentionne leshort, il sera traité comme beshort, et vice-versa. Cela permet d’éviter de dupliquer les règles pour différents boutismes.

    regex
        Une correspondance d’expression rationnelle dans la syntaxe des expressions rationnelles POSIX étendue (comme egrep(1)). Le traitement des expressions rationnelles peut prendre un temps considérable et leurs performances sont difficiles à prévoir ; leur utilisation est donc déconseillée. Pour une utilisation en production, leurs performances doivent être vérifiées avec soin. La taille de la chaîne à rechercher doit aussi être limitée en spécifiant /<taille> pour éviter des problèmes de performances lors du parcours de grands fichiers. La spécification du type peut aussi être suivie de /[c][s][l]. Le symbole « c » indique une recherche de correspondance insensible à la casse, alors que le symbole « s » définit le décalage au décalage du début des données qui correspondent au lieu de la fin. Le modificateur « l » fait que la limite de taille exprime un nombre de lignes au lieu d’un nombre d’octets. Les lignes sont délimitées par le délimiteur de ligne natif de la plateforme. Si un nombre de lignes est spécifié, un nombre implicite d’octets est aussi calculé en supposant que chaque ligne a une taille de 80 caractères. Si aucun nombre d’octets ou de lignes n’est spécifié, la recherche sera automatiquement limitée à 8 Kio. « ^ » et « $ » ne correspondent pas au début et à la fin du fichier, mais au début et à la fin de lignes individuelles, respectivement.

    search
        Une recherche de chaîne littérale à partir du décalage donné. Les symboles modificateurs sont les mêmes que ceux utilisés pour les motifs de type string. L’expression de recherche doit contenir l’étendue de recherche sous la forme /nombre, c’est-à-dire le nombre de positions auxquelles une correspondance positive est recherchée, à partir du décalage de départ. Ce type convient pour les recherches de grandes expressions binaires avec des décalages variables et utilisant des échappements \ pour les caractères spéciaux. L’ordre des symboles modificateurs et du nombre n’a pas d’importance.

    default
        Cette valeur n’a pas de type et doit être utilisée avec le test x (qui renvoie toujours vrai). Elle correspond lorsqu’aucun autre test n’a déjà correspondu à ce niveau de continuation. Pour effacer ces tests correspondant pour un niveau de continuation, utiliser le test clear.

    clear
        Ce test renvoie toujours vrai et efface le symbole de correspondance pour ce niveau de continuation. Il est à utiliser avec le test default.

    der Parcourir le fichier en le considérant comme un fichier de certificat DER. Le champ test est utilisé comme un type DER qui doit faire l’objet d’une recherche de correspondance. Les types DER sont : 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 et rel-oid-iri. Ces types peuvent être suivis d’une valeur numérique qui indique la taille du champ en octets.

    guid
        Un identificateur globalement unique analysé et affiché comme XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX. Son format est une chaîne.

    décalage
        C’est une valeur sur 8 octets indiquant le décalage actuel dans le fichier. Elle permet de déterminer la taille du fichier ou du tampon magique. Par exemple, les entrées magiques :

            -0	offset	x	ce fichier a une taille de %lld octets
            -0	offset	<=100	doit être supérieur à 100 \
                octets et ne fait que %lld

    octal
        Une chaîne représentant un nombre octal.

    À des fins de compatibilité avec le « Single UNIX Standard », les spécificateurs de type dC et d1 sont équivalents à byte, les spécificateurs uC et u1 sont équivalents à ubyte, les spécificateurs dS et d2 sont équivalents à short, les spécificateurs uS et u2 sont équivalents à ushort, les spécificateurs dI, dL et d4 sont équivalents à long, les spécificateurs uI, uL et u4 sont équivalents à ulong, le spécificateur d8 est équivalent à quad, le spécificateur u8 est équivalent à uquad et le spécificateur s est équivalent à string. En outre, le spécificateur dQ est équivalent à quad et le spécificateur uQ est équivalent à uquad.

    Chaque motif magique du niveau le plus haut (voir ci-après pour une explication à propos des niveaux) est classé comme de type texte ou binaire en fonction des types utilisés. Les types “regex” et “search” sont classés comme tests de type texte, à moins que des caractères non imprimables ne soient utilisés dans le motif. Tous les autres tests sont classés comme binaires. Un motif du niveau le plus haut est considéré comme texte de test lorsque tous ses motifs sont de type texte ; dans le cas contraire, il est considéré comme motif binaire. Lors de la recherche du type d’un fichier, les motifs binaires sont essayés en premier ; si aucune correspondance n’est trouvée et si le contenu du fichier ressemble à du texte, son encodage est déterminé et les motifs de type texte sont recherchés.

    Les types numériques peuvent être suivis de et d’une valeur numérique pour indiquer que la valeur doit être combinée à l’aide d’un ET logique avec la valeur numérique avant d’effectuer toute comparaison. Préfixer le type avec un u indique que les comparaisons ordonnées doivent être non signées.

test
    La valeur à comparer avec la valeur issue du fichier. Si le type est numérique, cette valeur est spécifiée au format C ; si le type est une chaîne, cette valeur est spécifiée comme une chaîne C avec les échappements habituellement permis (par exemple \n pour une nouvelle ligne).

    Les valeurs numériques peuvent être préfixées d’un caractère indiquant l’opération à exécuter. Il peut s’agir de = pour indiquer que la valeur issue du fichier doit être égale à la valeur spécifiée, pour indiquer que la valeur issue du fichier doit être inférieure à la valeur spécifiée, pour indiquer que la valeur issue du fichier doit être supérieure à la valeur spécifiée, pour indiquer que tous les bits de la valeur issue du fichier qui correspondent aux bits à 1 de la valeur spécifiée doivent être à 1, ^ pour indiquer que tous les bits de la valeur issue du fichier qui correspondent aux bits à 1 de la valeur spécifiée doivent être à 0, ~ pour indiquer que la valeur qui suit doit être inversée ou x pour indiquer que toute valeur correspondra.Si aucun caractère n’est indiqué, il est supposé être =. Les opérateurs, ^ et ~ ne fonctionnent pas avec les nombres en virgule flottante et ceux en double précision. L’opérateur! spécifie que la ligne correspond si le test échoue.

    Les valeurs numériques sont spécifiées au format C ; par exemple, 13 est décimal, 013 est octal et 0x13 est hexadécimal.

    Les types date ne font pas l’objet d’opérations numériques ; à la place, la valeur numérique est interprétée comme un décalage.

    Pour les valeurs de type chaîne, la chaîne du fichier doit correspondre à la chaîne spécifiée. Les opérateurs =, et (mais pas) peuvent s’appliquer aux chaînes. La taille utilisée pour la recherche de correspondance est celle de l’argument chaîne dans le fichier magique. Cela signifie qu’une ligne peut correspondre à toute chaîne non vide (en général utilisée ensuite pour afficher la chaîne) avec \0 (car toute chaîne non vide est supérieure à la chaîne vide).

    Les dates sont traitées comme des valeurs numériques selon leur représentation interne.

    Le test spécial x renvoie toujours vrai.

message
    Le message à afficher si la correspondance est positive. Si la chaîne contient une spécification de format de type printf(3), la valeur issue du fichier (à laquelle aura été appliqué tout masque spécifié) est affichée en utilisant le message comme chaîne de format. Si la chaîne commence par « \b », le message affiché est le reste de la chaîne sans espace ajoutée avant : plusieurs correspondances sont normalement séparées par des espaces uniques.

Les type et créateur APPLE de caractères APPLE 4+4 peuvent être spécifiés sous la forme :

    !:apple	CREATYPE

Une liste d’extensions de nom de fichier couramment rencontrées séparées par des barres obliques peut être spécifiée sous la forme :

    !:ext	ext[/ext...]

autrement dit, la chaîne littérale « !:ext » suivie d’une liste d’extensions couramment rencontrées séparées par des barres obliques ; par exemple, pour les images JPEG :

    !:ext jpeg/jpg/jpe/jfif

Un type MIME est indiqué sur une ligne séparée qui doit être la première ligne ni vide, ni de commentaire après la ligne magique qui identifie le type de fichier, et possède le format suivant :

    !:mime	TYPE_MIME

autrement dit, la chaîne littérale « !:mime » suivie du type MIME.

Une force peut être indiquée sur une ligne séparée qui fait référence à la description magique actuelle et utilise le format suivant :

    !:strength OP VALEUR

L’opérateur OP peut être +, -, * ou / et VALUE est une constante entre 0 et 255. Cette constante est appliquée à la force magique par défaut actuellement calculée en utilisant l’opérateur spécifié.

Certains formats de fichier contiennent des informations supplémentaires qui doivent être affichées avec le type de fichier ou qui impliquent des tests supplémentaires pour déterminer le véritable type du fichier. Ces tests supplémentaires sont introduits par un ou plusieurs caractères qui précèdent le décalage. Le nombre de sur la ligne indique le niveau du test ; une ligne sans au début est considérée comme étant de niveau 0. Les tests sont organisés selon une hiérarchie arborescente : si le test sur une ligne de niveau n réussit, tous les tests suivants de niveau n+1 sont effectués, et les messages affichés si les tests réussissent, jusqu’à ce qu’une ligne de niveau n (ou moins) apparaisse. Pour des fichiers plus complexes, il est possible d’utiliser des messages vides juste pour obtenir l’effet « si/alors » de la façon suivante :

    0      string    MZ
    0x18  uleshort  0x40   MS-DOS executable
    0x18  uleshort  0x3f   extended PC executable (e.g., MS Windows)

Les décalages ne doivent pas forcément être constants, mais peuvent aussi être lus depuis le fichier en cours d’examen. Si le premier caractère suivant le dernier est un (, la chaîne après la parenthèse est interprétée comme un décalage indirect. Cela signifie que le nombre après la parenthèse est utilisé comme décalage dans le fichier. Les décalages indirects sont de la forme : (x [[.,][bBcCeEfFgGhHiIlmosSqQ]][+-][ y ]). La valeur de x est utilisée comme décalage dans le fichier. En fonction du spécificateur de type [bBcCeEfFgGhHiIlLmsSqQ], la valeur lue à ce décalage sera un octet, un id3 length, un short ou un long. La valeur est considérée comme signée si « , » est spécifié ou comme non signée si « . » est spécifié. Les types en capitale interprètent le nombre comme une valeur gros-boutiste, alors que les types en minuscule l’interprètent comme une valeur petit-boutiste ; le type m interprète le nombre comme une valeur mi-boutiste (PDP-11). La valeur de y est ajoutée à ce nombre et le résultat est utilisé comme décalage dans le fichier. Si aucun type n’est spécifié, le type par défaut est long. Les types reconnus sont les suivants :
Type Mnémonique Boutisme Taille
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

De cette manière, les structures de longueur variable peuvent être examinées :

    # Les exécutables MS Windows sont aussi des exécutables MS-DOS valables
    0           string   MZ
    0x18       uleshort 0x40  MZ executable (MS-DOS)
    # sauter tout le bloc suivant si ce n’est pas un exécutable étendu
    0x18       uleshort 0x3f
    (0x3c.l)  string   PE\0\0 PE executable (MS-Windows)
    (0x3c.l)  string   LX\0\0 LX executable (OS/2)

Cette stratégie d’examen a un inconvénient : vous devez vous assurer que quelque chose sera finalement affiché, sinon les utilisateurs pourront obtenir une sortie vide (comme s’il n’y avait ni PE\0\0, ni LE\0\0 dans l’exemple précédent).

Si ce décalage indirect ne peut pas être utilisé directement, des opérations simples sont possibles : ajouter [+-*/%|^]nombre à la fin du contenu des parenthèses permet de modifier la valeur lue depuis le fichier avant qu’elle ne soit utilisée comme décalage :

    # Les exécutables MS Windows sont aussi des exécutables MS-DOS valables
    0           string   MZ
    # parfois, la valeur à 0x18 est inférieure à celle à 0x40, mais il y a
    # encore un exécutable étendu simplement ajouté à la fin du fichier
    0x18       uleshort 0x40
    (4.s*512) leshort  0x014c  COFF executable (MS-DOS, DJGPP)
    (4.s*512) leshort  !0x014c MZ executable (MS-DOS)

Parfois, le décalage exact n’est pas connu, car il dépend de la taille et de la position des champs précédents (quand une indirection a été utilisée auparavant). Il est possible de spécifier un décalage relatif à la fin du dernier champ de plus haut niveau en préfixant le décalage avec « & » :

    0           string   MZ
    0x18       uleshort 0x3f
    (0x3c.l)  string   PE\0\0    PE executable (MS-Windows)
    # le type de CPU suit immédiatement la signature PE
    0       leshort  0x14c     for Intel 80386
    0       leshort  0x8664    for x86-64
    0       leshort  0x184     for DEC Alpha

Les décalages indirects et relatifs peuvent être combinés :

    0             string   MZ
    0x18         uleshort 0x40
    (4.s*512)   leshort  !0x014c MZ executable (MS-DOS)
    # si ce n’est pas COFF, revenir en arrière de 512 octets et ajouter
    # le décalage pris depuis l’octet 2/3, ce qui constitue une autre
    # manière de trouver le début de l’exécutable étendu
    (2.s-514) string   LE      LE executable (MS Windows VxD driver)

Ou l’autre manière :

    0                 string   MZ
    0x18             uleshort 0x3f
    (0x3c.l)        string   LE\0\0  LE executable (MS-Windows)
    # au décalage 0x80 (-4, car les décalages relatifs commencent à la fin
    # de la correspondance de plus haut niveau) dans l’en-tête LE, on trouve
    # le décalage absolu vers la zone de données où nous recherchons
    # une signature spécifique
    (0x7c.l+0x26) string   UPX     \b, UPX compressed

Ou même les deux !

    0                string   MZ
    0x18            uleshort 0x3f
    (0x3c.l)       string   LE\0\0 LE executable (MS-Windows)
    # au décalage 0x58 dans l’en-tête LE, on trouve le décalage relatif
    # vers une zone de données où nous recherchons une signature spécifique
    (0x54.l-3)  string   UNACE  \b, ACE self-extracting archive

Si vous avez affaire à des paires décalage/taille dans votre fichier, même la seconde valeur dans une expression entre parenthèses peut être obtenue depuis le fichier lui-même en utilisant un autre jeu de parenthèses. Notez que ce décalage indirect supplémentaire est toujours relatif au début du décalage indirect principal.

    0                 string       MZ
    0x18             uleshort     0x3f
    (0x3c.l)        string       PE\0\0 PE executable (MS-Windows)
    # recherche de la section PE appelée ".idata"...
    0xf4          search/0x140 .idata
    # ... et aller à la fin de celle-ci calculé à partir de début+taille ;
    # ceux-là sont situés 14 et 10 octets après le nom de section
    (0xe.l+(-4)) string       PK\3\4 \b, ZIP self-extracting archive

Si vous avez une liste de valeurs connues à un niveau de continuation particulier, et si vous voulez prévoir une liste de cas avec défaut de style switch :

    # supprimer la correspondance de ce niveau de continuation
    18	clear	x
    18	lelong	1	one
    18	lelong	2	two
    18	default	x
    # afficher la correspondance par défaut
    18	lelong	x	unmatched 0x%x

VOIR AUSSI
file(1) — la commande qui lit ce fichier.

BOGUES
Les formats long, belong, lelong, melong, short, beshort et leshort ne dépendent pas de la taille des types de données C short et long sur la plateforme, bien que la Single UNIX Specification stipule le contraire. Cependant, étant donné que OS X Mountain Lion a réussi la suite de validation de la Single UNIX Specification et fournit une version de file(1) dans laquelle ils ne dépendent pas des tailles des types de données C et qui est compilée pour un environnement sur 64 bits dans lequel long est sur 8 octets au lieu de 4, la suite de validation ne vérifie probablement pas si, par exemple, long fait référence à un item de la même taille que le type de données C long. Il serait ici souhaitable de disposer des noms de type int8, uint8, int16, uint16, int32, uint32, int64 et uint64 et de leurs variantes avec boutisme différent pour indiquer plus clairement que ces types ont les tailles spécifiées.

TRADUCTION
La traduction française de cette page de manuel a été créée par Lucien Gentis <lucien.gentis@univ-lorraine.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3: https://www.gnu.org/licenses/gpl-3.0.html concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.