file — Dateityp bestimmen
SYNOPSIS
file [-bcdEhiklLNnprsSvzZ0] [--apple] [--exclude-quiet] [--extension] [--mime-encoding]
[--mime-type] [-e testname] [-F separator] [-f namefile] [-m magicfiles] [-P name=value]
file ...
file -C [-m magicfiles]
file [--help]
DESCRIPTION
Diese Manpage dokumentiert Version 5.46 des Befehls file.
file testet jedes Argument, um es zu klassifizieren. Es gibt drei Tests, die in dieser Reihenfolge durchgeführt werden: Dateisystemtests, Magietests und Sprachtests. Der erste Test, der erfolgreich ist, führt dazu, dass der Dateityp ausgegeben wird.
Der ausgegebene Typ enthält normalerweise eines der Wörter „text“ (die Datei enthält nur druckbare Zeichen und einige gängige Steuerzeichen und ist wahrscheinlich sicher für die Anzeige in einem ASCII-Terminal), „ausführbar“ (die Datei enthält das Ergebnis der Kompilierung eines Programms in einer Form, die von einem UNIX-Kernel oder einem anderen Betriebssystem verstanden wird) oder „Daten“, was alles andere bedeutet (Daten sind in der Regel „binär“ oder nicht druckbar). Ausnahmen sind bekannte Dateiformate (Core-Dateien, Tar-Archive), die bekanntermaßen binäre Daten enthalten. Achten Sie bei der Änderung von Magic-Dateien oder dem Programm selbst darauf, diese Schlüsselwörter beizubehalten. Benutzer müssen darauf vertrauen können, dass alle lesbaren Dateien in einem Verzeichnis das Wort „text“ enthalten. Tun Sie nicht wie Berkeley und ändern Sie „Shell-Befehle Text“ in „Shell-Skript“.
Die Dateisystemtests basieren auf der Prüfung des Ergebnisses eines Systemaufrufs stat(2). Das Programm prüft, ob die Datei leer ist oder ob es sich um eine spezielle Datei handelt. Alle bekannten Dateitypen, die für das ausgeführte System relevant sind (Sockets, symbolische Links oder benannte Pipes (FIFOs) auf den Systemen, die diese implementieren), werden intuitiv erkannt, wenn sie in der Systemheaderdatei <sys/stat.h> definiert sind.
Die Magietests werden verwendet, um Dateien mit Daten in bestimmten festen Formaten zu überprüfen. Das kanonische Beispiel dafür ist eine binäre ausführbare Datei (kompiliertes Programm) im a.out-Format, deren Format in <elf.h>, <a.out.h> und möglicherweise <exec.h> im Standard-Include-Verzeichnis definiert ist. Diese Dateien haben eine „Magische Zahl“, die an einer bestimmten Stelle in der Nähe des Dateiendes gespeichert ist, die das UNIX-Betriebssystem darüber informiert, dass es sich bei der Datei um eine binäre ausführbare Datei handelt und um welche Art von Datei es sich handelt. Das Konzept einer „Magischen Zahl“ wurde auf Datendateien erweitert. Jede Datei mit einer invarianten Kennung an einer kleinen, festen Position in der Datei kann in der Regel auf diese Weise beschrieben werden. Die Informationen, die diese Dateien identifizieren, werden aus /etc/magic und der kompilierten Magic-Datei /usr/share/misc/magic.mgc oder den Dateien im Verzeichnis /usr/share/misc/magic gelesen, falls die kompilierte Datei nicht vorhanden ist. Darüber hinaus wird, falls $HOME/.magic.mgc oder $HOME/.magic vorhanden ist, diese Datei anstelle der System-Magic-Dateien verwendet.
Wenn eine Datei nicht mit einem der Einträge in der Magic-Datei übereinstimmt, wird geprüft, ob es sich um eine Textdatei handelt. ASCII, ISO-8859-x und nicht-ISO-8-Bit-erweiterte ASCII-Zeichensätze (wie sie auf Macintosh- und IBM-PC-Systemen verwendet werden), UTF-8-codierte Unicode- und UTF-16-codierte Unicode-Zeichensätze sowie EBCDIC-Zeichensätze können anhand der unterschiedlichen Bereiche und Sequenzen von Bytes unterschieden werden, die den druckbaren Text in jedem Satz darstellen. Wenn eine Datei einen dieser Tests besteht, wird ihr Zeichensatz gemeldet. ASCII-, ISO-8859-x-, UTF-8- und erweiterte ASCII-Dateien werden als „Text“ identifiziert, da sie auf fast jedem Terminal größtenteils lesbar sein werden; UTF-16- und EBCDIC-Dateien werden nur als „Zeichendaten“ bezeichnet, da sie zwar Text enthalten, dieser jedoch übersetzt werden muss, bevor er gelesen werden kann.
Darüber hinaus versucht die Datei, weitere Merkmale von Textdateien zu bestimmen. Wenn die Zeilen einer Datei durch CR, CRLF oder NEL anstelle des Unix-Standard-LF abgeschlossen werden, wird dies gemeldet. Dateien, die eingebettete Escape-Sequenzen oder Überdruck enthalten, werden ebenfalls identifiziert.
Sobald die Datei den in einer Textdatei verwendeten Zeichensatz bestimmt hat, versucht sie, die Sprache zu bestimmen, in der die Datei geschrieben ist. Die Sprachtests suchen nach bestimmten Zeichenketten (siehe
Jede Datei, die nicht als in einem der oben aufgeführten Zeichensätze geschriebene Datei identifiziert werden kann, wird einfach als „Daten“ bezeichnet.
OPTIONEN
--apple
Bewirkt, dass der Befehl file den Dateityp und den Erstellercode ausgibt, wie er von älteren MacOS-Versionen verwendet wird. Der Code besteht aus acht Buchstaben, wobei der erste den Dateityp und der letzte den Ersteller beschreibt. Diese Option funktioniert nur für Dateiformate, für die eine Apple-Format-Ausgabe definiert ist.
-b, --brief
Unterdrückt das Anhängen von Dateinamen an die Ausgabezeilen (Kurzmodus).
-C, --compile
Schreibt eine Magic.mgc-Ausgabedatei, die eine vorab geparste Version der Magic-Datei oder des Verzeichnisses enthält.
-c, --checking-printout
Bewirkt eine Prüfausgabe der geparsten Form der Magic-Datei. Dies wird normalerweise in Verbindung mit der Option -m verwendet, um eine neue Magic-Datei zu debuggen, bevor sie installiert wird.
-d
Gibt interne Debugging-Informationen nach stderr aus.
-E
Bei Dateisystemfehlern (Datei nicht gefunden usw.) wird anstelle der Fehlerbehandlung als reguläre Ausgabe, wie es POSIX vorschreibt, eine Fehlermeldung ausgegeben und das Programm beendet.
-e, --exclude testname
Schließt den Test mit dem Namen testname von der Liste der Tests aus, die zur Bestimmung des Dateityps verwendet werden. Gültige Testnamen sind:
apptype EMX-Anwendungstyp (nur unter EMX).
ascii Verschiedene Arten von Textdateien (dieser Test versucht, die Textkodierung zu erraten, unabhängig von der Einstellung der Option „encoding“).
encoding Verschiedene Textkodierungen für Soft-Magic-Tests.
tokens Wird aus Gründen der Abwärtskompatibilität ignoriert.
cdf Gibt Details von Compound Document Files aus.
compress Prüft komprimierte Dateien und untersucht diese.
csv Prüft Comma Separated Value-Dateien.
elf Gibt ELF-Datei-Details aus, vorausgesetzt, Soft-Magic-Tests sind aktiviert und das ELF-Magic wird gefunden.
json Untersucht JSON-Dateien (RFC-7159), indem diese auf die Einhaltung der Spezifikation geprüft werden.
soft Greift auf Magic-Dateien zu.
simh Untersucht SIMH-Banddateien.
tar Untersucht Tar-Dateien, indem die Prüfsumme des 512-Byte-Tar-Headers überprüft wird. Das Ausschließen dieses Tests kann eine detailliertere Inhaltsbeschreibung ermöglichen, indem die Soft-Magic-Methode verwendet wird.
text Ein Synonym für „ascii“.
--exclude-quiet
Wie --exclude, ignoriert aber Tests, die die Datei nicht kennt. Dies ist für die Kompatibilität mit älteren Versionen von file vorgesehen.
--extension
Gibt eine durch Schrägstriche getrennte Liste der gültigen Erweiterungen für den gefundenen Dateityp aus.
-F, --separator separator
Verwendet die angegebene Zeichenkette als Trennzeichen zwischen dem Dateinamen und dem Dateiergebnis. Standardmäßig ist dies „:“.
-f, --files-from namefile
Liest die Namen der zu untersuchenden Dateien aus der Datei namefile (eine pro Zeile), bevor die Argumentliste verarbeitet wird. Entweder namefile oder mindestens ein Dateiname-Argument muss vorhanden sein; um die Standardeingabe zu testen, verwenden Sie „-“ als Dateiname-Argument. Beachten Sie, dass namefile entpackt wird und die eingeschlossenen Dateinamen verarbeitet werden, wenn diese Option gefunden wird, bevor weitere Optionen verarbeitet werden. Dies ermöglicht die Verarbeitung mehrerer Dateilisten mit unterschiedlichen Befehlszeilenargumenten bei einem einzigen Aufruf von file. Wenn Sie also die Trennzeichen festlegen möchten, müssen Sie dies tun, bevor Sie die Liste der Dateien angeben, z. B.: „-F @ -f namefile“ anstelle von: „-f namefile -F @“.
-h, --no-dereference
Diese Option bewirkt, dass symbolische Links nicht aufgelöst werden (auf Systemen, die symbolische Links unterstützen). Dies ist die Standardeinstellung, wenn die Umgebungsvariable POSIXLY_CORRECT nicht definiert ist.
-i, --mime
Verursacht, dass der Befehl file MIME-Typ-Zeichenketten anstelle der traditionelleren, für Menschen lesbaren Zeichenketten ausgibt. Er kann also „text/plain; charset=us-ascii“ anstelle von „ASCII-Text“ ausgeben.
--mime-type, --mime-encoding
Wie -i, aber nur das angegebene Element (oder die angegebenen Elemente) wird ausgegeben.
-k, --keep-going
Nicht beim ersten Treffer stoppen, sondern fortfahren. Nachfolgende Treffer werden mit der Zeichenkette „\012-“ versehen. (Wenn Sie eine neue Zeile wünschen, siehe die Option -r). Das Magic-Muster mit der höchsten Stärke (siehe die Option -l) steht zuerst.
-l, --list
Zeigt eine Liste von Mustern und deren Stärke an, sortiert absteigend nach der „magic(5)-Stärke“, die für das Abgleichen verwendet wird (siehe auch die Option -k).
-L, --dereference
Diese Option bewirkt, dass symbolische Links aufgelöst werden, ähnlich wie die gleichnamige Option in ls(1) (auf Systemen, die symbolische Links unterstützen). Dies ist die Standardeinstellung, wenn die Umgebungsvariable POSIXLY_CORRECT definiert ist.
-m, --magic-file magicfiles
Gibt eine alternative Liste von Dateien und Verzeichnissen an, die Magic-Daten enthalten. Dies kann ein einzelner Eintrag oder eine durch Doppelpunkte getrennte Liste sein. Wenn eine kompilierte Magic-Datei neben einer Datei oder einem Verzeichnis gefunden wird, wird diese stattdessen verwendet.
-N, --no-pad
Verhindert das Auffüllen von Dateinamen, damit sie in der Ausgabe ausgerichtet werden.
-n, --no-buffer
Erzwingt, dass stdout nach der Überprüfung jeder Datei geleert wird. Dies ist nur dann nützlich, wenn eine Liste von Dateien überprüft wird. Es ist für Programme gedacht, die die Ausgabe des Dateityps von einer Pipe erhalten möchten.
-p, --preserve-date
Auf Systemen, die utime(3) oder utimes(2) unterstützen, wird versucht, die Zugriffszeit von Dateien, die analysiert werden, beizubehalten, um vorzutäuschen, dass die Datei nicht gelesen wurde.
-P, --parameter name=value
Legt verschiedene Parametergrenzwerte fest.
Name Standard Erläuterung bytes 1M maximale Anzahl von Bytes, die aus der Datei gelesen werden elf_notes 256 maximale Anzahl der verarbeiteten ELF-Notizen elf_phnum 2K maximale Anzahl der verarbeiteten ELF-Programmabschnitte elf_shnum 32K maximale Anzahl der verarbeiteten ELF-Abschnitte elf_shsize 128MB maximale Größe des verarbeiteten ELF-Abschnitts encoding 65K maximale Anzahl von Bytes zur Bestimmung der Kodierung indir 50 Rekursionsgrenze für indirekte Magic name 100 Nutzungsgrenze für Namens-/Nutzungs-Magic regex 8K Längenbegrenzung für Regex-Suchen
-r, --raw
Übersetzt keine nicht druckbaren Zeichen in \ooo. Normalerweise übersetzt file nicht druckbare Zeichen in ihre oktale Darstellung.
-s, --special-files
Normalerweise versucht file nur, den Typ von Argumentdateien zu lesen und zu bestimmen, die stat(2) als normale Dateien meldet. Dies verhindert Probleme, da das Lesen von Spezialdateien seltsame Konsequenzen haben kann. Die Angabe der Option -s bewirkt, dass file auch Argumentdateien liest, die Block- oder Zeichenspezialdateien sind. Dies ist nützlich, um die Dateisystemtypen der Daten in rohen Festplattenpartitionen zu bestimmen, die Block-Spezialdateien sind. Diese Option bewirkt auch, dass file die von stat(2) gemeldete Dateigröße ignoriert, da diese auf einigen Systemen eine Größe von Null für rohe Festplattenpartitionen meldet.
-S, --no-sandbox
Auf Systemen, auf denen libseccomp (https://github.com/seccomp/libseccomp) verfügbar ist, deaktiviert die Option -S die Sandbox, die standardmäßig aktiviert ist. Diese Option ist erforderlich, damit file externe Dekomprimierungsprogramme ausführen kann, d. h. wenn die Option -z angegeben ist und die integrierten Dekomprimierer nicht verfügbar sind. Auf Systemen, auf denen keine Sandbox verfügbar ist, hat diese Option keine Auswirkung.
Hinweis: Diese Debian-Version der Datei wurde ohne Seccomp-Unterstützung erstellt, daher hat diese Option keine Wirkung.
-v, --version
Gibt die Version des Programms aus und beendet das Programm.
-z, --uncompress
Versucht, komprimierte Dateien zu öffnen.
-Z, --uncompress-noreport
Versucht, komprimierte Dateien zu öffnen, meldet aber keine Informationen über den Inhalt, sondern nur über die Komprimierung.
-0, --print0
Gibt ein Nullzeichen ‚\0‘ nach dem Ende des Dateinamens aus. Nützlich, um die Ausgabe mit [cut]({filename}../../cut)(1) zu verarbeiten.
Dies hat keinen Einfluss auf das Trennzeichen, das weiterhin ausgegeben wird.
Wenn diese Option mehr als einmal wiederholt wird, gibt file nur den Dateinamen gefolgt von einem NUL, dann die Beschreibung (oder ERROR: Text) und schließlich ein zweites NUL für jeden Eintrag aus.
--help
Gibt eine Hilfemeldung aus und beendet das Programm.
UMWELT
Die Umgebungsvariable MAGIC kann verwendet werden, um den Standarddateinamen für die Magic-Datei festzulegen. Wenn diese Variable gesetzt ist, versucht file nicht, die Datei $HOME/.magic zu öffnen. File fügt der Variablen „.mgc“ hinzu, falls erforderlich. Die Umgebungsvariable POSIXLY_CORRECT steuert (auf Systemen, die symbolische Links unterstützen), ob file versucht, symbolische Links zu verfolgen oder nicht. Wenn sie gesetzt ist, verfolgt file den symbolischen Link, andernfalls tut es dies nicht. Dies wird auch durch die Optionen -L und -h gesteuert.
DATEIEN
/usr/share/misc/magic.mgc Standard kompilierte Liste der Magic-Daten.
/usr/share/misc/magic Verzeichnis mit Standard-Magic-Dateien.
RÜCKGABESTATUS
File gibt 0 zurück, wenn die Operation erfolgreich war, oder einen Wert größer als 0, wenn ein Fehler aufgetreten ist. Die folgenden Fehler verursachen diagnostische Meldungen, haben aber keinen Einfluss auf den Rückgabewert des Programms (wie POSIX vorschreibt), es sei denn, -E ist angegeben:
Eine Datei kann nicht gefunden werden.
Es besteht keine Berechtigung zum Lesen einer Datei.
Der Dateityp kann nicht bestimmt werden.
BEISPIELE
$ file file.c file /dev/{wd0a,hda}
file.c: C program text
file: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
dynamically linked (uses shared libs), stripped
/dev/wd0a: block special (0/0)
/dev/hda: block special (3/0)
$ file -s /dev/wd0{b,d}
/dev/wd0b: data
/dev/wd0d: x86 boot sector
$ file -s /dev/hda{,1,2,3,4,5,6,7,8,9,10}
/dev/hda: x86 boot sector
/dev/hda1: Linux/i386 ext2 filesystem
/dev/hda2: x86 boot sector
/dev/hda3: x86 boot sector, extended partition table
/dev/hda4: Linux/i386 ext2 filesystem
/dev/hda5: Linux/i386 swap file
/dev/hda6: Linux/i386 swap file
/dev/hda7: Linux/i386 swap file
/dev/hda8: Linux/i386 swap file
/dev/hda9: empty
/dev/hda10: empty
$ file -i file.c file /dev/{wd0a,hda}
file.c: text/x-c
file: application/x-executable
/dev/hda: application/x-not-regular-file
/dev/wd0a: application/x-not-regular-file
SIEHE AUCH
hexdump(1), od(1), strings(1), magic(5)
KONFORMITÄT MIT STANDARDS
Es wird angenommen, dass dieses Programm die System V Interface Definition von FILE(CMD) übertrifft, soweit dies anhand der darin enthaltenen vagen Sprache festgestellt werden kann. Sein Verhalten ist größtenteils kompatibel mit dem System V-Programm mit dem gleichen Namen. Diese Version kennt jedoch mehr Magic-Daten, sodass sie in vielen Fällen eine andere (aber genauere) Ausgabe erzeugt.
Der wesentliche Unterschied zwischen dieser Version und System V besteht darin, dass diese Version alle Leerzeichen als Trennzeichen behandelt, sodass Leerzeichen in Musterstrings maskiert werden müssen. Zum Beispiel:
>10 string language impress (imPRESS data)
in einer vorhandenen Magic-Datei müsste zu
>10 string language\ impress (imPRESS data)
geändert werden.
Darüber hinaus muss in dieser Version, wenn ein Musterstring einen Backslash enthält, dieser maskiert werden. Zum Beispiel:
0 string \begindata Andrew Toolkit document
in einer vorhandenen Magic-Datei müsste zu
0 string \\begindata Andrew Toolkit document
geändert werden.
Die SunOS-Versionen 3.2 und höher von Sun Microsystems enthalten einen Befehl file, der von der System-V-Version abgeleitet ist, jedoch einige Erweiterungen aufweist. Diese Version unterscheidet sich nur
in geringem Umfang von Suns Version. Sie enthält die Erweiterung des Operators &, der beispielsweise wie folgt verwendet wird:
>16 long&0x7fffffff >0 not stripped
SICHERHEIT
Auf Systemen, auf denen libseccomp (https://github.com/seccomp/libseccomp) verfügbar ist, wird file so ausgeführt, dass es die Systemaufrufe auf die für den Betrieb des Programms notwendigen beschränkt.
Diese
Durchsetzung bietet jedoch keine zusätzlichen Sicherheitsvorteile, wenn file aufgefordert wird, Eingabedateien zu dekomprimieren und externe Programme mit der Option -z auszuführen. Um die
Ausführung externer Dekomprimierungsprogramme zu ermöglichen, muss die Sandbox-Funktion mithilfe der Option -S deaktiviert werden.
MAGIC-VERZEICHNIS
Die Einträge in der Magic-Datei wurden aus verschiedenen Quellen, hauptsächlich von USENET, gesammelt und von verschiedenen Autoren beigetragen. Christos Zoulas (Adresse unten) wird zusätzliche oder korrigierte Einträge in der Magic-Datei sammeln. Eine Zusammenstellung der Einträge in der Magic-Datei wird in regelmäßigen Abständen verteilt.
Die Reihenfolge der Einträge in der Magic-Datei ist von Bedeutung. Je nachdem, welches System Sie verwenden, kann die Reihenfolge, in der sie zusammengefügt werden, falsch sein.
HISTORIE
Es gab einen Befehl file in jedem UNIX seit mindestens Research Version 4 (Manpage datiert November 1973). Die System-V-Version führte eine wesentliche Änderung ein: die externe Liste der Magictypen. Dies
verlangsamte das Programm geringfügig, machte es aber viel flexibler.
Dieses Programm, das auf der System-V-Version basiert, wurde von Ian Darwin ⟨_⟩ geschrieben, ohne den Quellcode anderer zu betrachten.
John Gilmore überarbeitete den Code umfassend und machte ihn besser als die erste Version. Geoff Collyer fand mehrere Mängel und stellte einige Einträge für die Magic-Datei bereit. Beiträge zum Operator &
von Rob McMahon, ⟨_⟩, 1989.
Guy Harris, ⟨_⟩, nahm von 1993 bis heute viele Änderungen vor.
Die primäre Entwicklung und Wartung von 1990 bis heute durch Christos Zoulas ⟨_⟩.
Geändert von Chris Lowth ⟨_⟩, 2000: Behandlung der Option -i, um MIME-Typ-Strings auszugeben, wobei eine alternative Magic-Datei und eine interne Logik verwendet werden.
Geändert von Eric Fischer ⟨_\⟩, Juli 2000, um Zeichencodes zu identifizieren und zu versuchen, die Sprachen von Nicht-ASCII-Dateien zu erkennen.
Geändert von Reuben Thomas ⟨_\⟩, 2007-2011, um die MIME-Unterstützung zu verbessern, MIME- und Nicht-MIME-Magie zusammenzuführen, Verzeichnisse sowie magische Dateien zu unterstützen, viele Fehler zu beheben, viele Magie-Dateien zu aktualisieren und zu korrigieren, das Build-System zu verbessern, die Dokumentation zu verbessern und die Python-Bindungen in reinem Python neu zu schreiben.
Die Liste der Personen, die zum Verzeichnis „magic“ (Magie-Dateien) beigetragen haben, ist zu lang, um sie hier aufzulisten. Sie wissen, wer Sie sind; danke. Viele Mitwirkende sind in den Quelldateien aufgeführt.
RECHTLICHER HINWEIS
Copyright (c) Ian F. Darwin, Toronto, Kanada, 1986-1999. Geschützt durch das Standard-Copyright der Berkeley Software Distribution; siehe die Datei COPYING in der Quellverteilung.
Die Dateien tar.h und is_tar.c wurden von John Gilmore aus seinem Public-Domain-tar(1)-Programm erstellt und fallen nicht unter die oben genannte Lizenz.
FEHLER
Bitte melden Sie Fehler und senden Sie Patches an den Fehler-Tracker unter https://bugs.astron.com/ oder an die Mailingliste unter ⟨_\⟩ (besuchen Sie zuerst https://mailman.astron.com/mailman/listinfo/file, um sich anzumelden).
ZU TUN
Die Ausgabe so korrigieren, dass keine Tests für die MIME- und APPLE-Flags an vielen Stellen erforderlich sind, und dass die eigentliche Ausgabe nur an einer Stelle erfolgt. Dies erfordert ein Design. Vorschlag: Mögliche Ausgaben in eine Liste einfügen und dann am Ende den zuletzt eingefügten Wert (hoffentlich den spezifischsten) auswählen oder einen Standardwert verwenden, wenn die Liste leer ist. Dies sollte die Auswertung nicht verlangsamen.
Die Handhabung von MAGIC_CONTINUE und das Einfügen von \012- zwischen den Einträgen sind umständlich und kompliziert; refaktorisieren und zentralisieren.
Ein Teil der Kodierungslogik ist in encoding.c fest codiert und kann in die Magie-Dateien verschoben werden, wenn wir eine Annotation vom Typ „!:charset“ hätten.
Setzen Sie die Behebung aller Magie-Fehler fort. Eine gute Quelle ist Debian BTS.
Beliebig lange Zeichenketten speichern, z. B. für %s-Muster, damit diese ausgegeben werden können. Behebt Debian-Fehler #271672. Dies kann erreicht werden, indem Zeichenketten in einem Zeichenkettenpool gespeichert und der Zeichenkettenpool am Ende der Magie-Datei gespeichert wird. Alle Zeichenkettenzeiger werden dann in relative Offsets vom Zeichenkettenpool konvertiert.
Syntax für relative Offsets nach aktuellem Level hinzufügen (Debian-Fehler #466037).
Sicherstellen, dass file -ki funktioniert, d. h. mehrere MIME-Typen ausgibt.
Eine ZIP-Bibliothek hinzufügen, damit wir in Office2007-Dokumente hineinschauen können, um weitere Details über deren Inhalt auszugeben.
Eine Option hinzufügen, um URLs für die Quellen der Dateibeschreibungen auszugeben.
Skript-Suchen kombinieren und eine Möglichkeit hinzufügen, ausführbare Namen MIME-Typen zuzuordnen (z. B. einen magischen Wert vom Typ „!:mime“ haben, der dazu führt, dass die resultierende Zeichenkette in einer Tabelle nachgeschlagen wird). Dadurch würde vermieden, dass die gleiche Magie für jeden neuen Hash-Bang-Interpreter wiederholt hinzugefügt wird.
Wenn eine Dateideskriptor verfügbar ist, können wir den Puffer überspringen und anpassen, anstatt die aktuelle, umständliche Pufferverwaltung durchzuführen.
- Korrigieren Sie „name“ und „use“, um zur Kompilierzeit auf Konsistenz zu prüfen (doppelte „name“, „use“, die auf ein undefiniertes „name“ verweist). Machen Sie „name“/„use“ effizienter, indem Sie eine sortierte Liste der Namen führen.
- Behandeln Sie ^ als Sonderfall, um die Endianness im Parser umzukehren, sodass es nicht escaped werden muss, und dokumentieren Sie dies.
- Wenn die intern in der Datei angegebenen Offsets die Puffergröße (Variable HOWMANY in file.h) überschreiten, werden wir nicht zu diesem Offset springen, sondern aufgeben. Es wäre besser, wenn die Pufferverwaltung durchgeführt würde, wenn der Dateideskriptor verfügbar ist, sodass wir uns in der Datei bewegen können. Man muss jedoch vorsichtig sein, da dies Leistungs- und damit Sicherheitsauswirkungen hat, da man die Dinge durch wiederholtes Suchen verlangsamen kann.
- Es gibt jetzt Unterstützung für die Verwendung separater Puffer und das Definieren von Offsets vom Ende der Datei aus, aber die interne Pufferverwaltung muss noch überarbeitet werden.
VERFÜGBARKEIT
Sie können die neueste Version des ursprünglichen Autors per anonymem FTP unter ftp.astron.com im Verzeichnis /pub/file/file-X.YZ.tar.gz abrufen.