file —
Bestimmt
den Dateityp
file
[
-bcdEhiklLNnprsSvzZ0]
[
--apple]
[
--exclude-quiet]
[
--extension]
[
--mime-encoding]
[
--mime-type]
[
-e Testname]
[
-F Trenner]
[
-f Namensdatei]
[
-m Magic-Dateien]
[
-P Name=Wert]
file
... file -C
[
-m
Magic-Dateien]
file
[
-
-help]
Diese Handbuchseite dokumentiert Version 5.44 des Befehls
file.
file überprüft jedes Argument, um es
einzusortieren. Es gibt drei Arten von Tests, die in dieser Reihenfolge
ausgeführt werden: Dateisystemtests, magische Tests und Sprachtests.
Der
erste erfolgreiche Test führt zur
Ausgabe des Dateityps.
Der ausgegebene Typ wird normalerweise eines der Worte
text (die Datei enthält nur darstellbare
Zeichen und ein paar typische Steuerzeichen und kann wahrscheinlich problemlos
auf einem
ASCII
-Terminal gelesen werden),
executable (die Datei enthält das Ergebnis
einer Kompilierung eines Programms in eine Form, die von einem UNIX -Kernel
oder einem anderen verstanden werden kann) oder
data, das alles andere bedeutet (Daten sind
normalerweise »binär« oder nicht darstellbar), enthalten.
Ausnahmen sind gut bekannte Dateiformate (Core-Dateien, TAR-Archive), die
bekanntermaßen binäre Daten enthalten. Wenn Sie magische Dateien
oder das Programm selbst verändern, stellen Sie sicher, dass Sie
»diese Schlüsselwörter
erhalten«. Benutzer verlassen sich darauf, dass für alle im
Verzeichnis lesbaren Dateien das Wort »text« ausgegeben wird.
Machen Sie es nicht wie Berkeley, die »shell commands text« in
»shell script« änderten.
Die Dateisystemtests basieren auf der Untersuchung der Rückgabe des
Systemaufrufs
stat(2). Das Programm prüft,
ob die Datei leer ist oder ob sie eine Art von besonderer Datei ist.
Sämtliche bekannten und für Ihr betriebenes System geeignete
Dateien (Sockets, symbolische Links oder benannte Pipes (FIFOs), auf den
Systemen, auf denen diese implementiert sind) werden intuitiv erfasst, falls
Sie in der System-Header-Datei
<sys/stat.h>
definiert sind.
Die magischen Tests werden verwandt, um auf Dateien zu prüfen, deren
Daten in einem bestimmten, festen Format vorliegen. Das kanonische Beispiel
hierfür ist das ausführbare Programm (kompiliertes Programm) in
einer
a.out
-Datei, dessen Format in
<elf.h>,
<a.out.h> und
möglicherweise
<exec.h> im
Standard-Einbindeverzeichnis definiert ist. Diese Dateien haben eine
»magische Zahl«, die an einem bestimmten Ort nahe des Anfangs
der Datei gespeichert ist und die dem UNIX -Betriebssystem mitteilt, dass die
Datei ein ausführbares Programm ist und welches der mehreren Typen
davon es ist. Das Konzept der »magischen Zahlen« wurde auf
Erweiterungen zu Datendateien angewandt. Jede Datei mit einem invarianten
Kennzeichner bei einem kleinen, festen Versatz in die Datei kann normalerweise
auf diese Art beschrieben werden. Die Information, die diese Dateien
identifiziert, wird aus /etc/magic und der kompilierten magischen Datei
/usr/share/misc/magic.mgc oder aus den Dateien im
Verzeichnis
/usr/share/misc/magic, falls die
kompilierte Datei nicht existiert, gelesen. Zusätzlich werden die
Dateien
$HOME/.magic.mgc oder
$HOME/.magic gelesen, falls sie existieren, und
haben Vorrang vor der magischen Datei des Systems.
Falls eine Datei auf keine der Einträge in der magischen Datei passt,
dann wird die Datei untersucht, ob sie eine Textdatei zu sein scheint. ASCII,
ISO-8859-x, nicht-ISO 8-Bit erweiterte ASCII-Zeichensätze (wie diese
auf Macintosh und IBM-PC-Systemen verwandt werden), UTF-8-kodiertes Unicode,
UTF-16-kodiertes Unicode und EBCDIC-Zeichensätze können durch
verschiedene Bereiche und Sequenzen von Bytes, die darstellbaren Text in jedem
Satz formen, unterschieden werden. Falls eine Datei einen dieser Tests
besteht, wird ihr Zeichensatz berichtet. ASCII, ISO-8859-x, UTF-8 und
erweiterte ASCII-Dateien werden als »text« identifiziert, da sie
größtenteils auf fast jedem Terminal lesbar sein werden; UTF-16
und EBCDIC sind nur »character data«, da der Text einer
Übersetzung bedarf, bevor er lesbar ist. Zusätzlich wird
file versuchen, weitere Eigenschaften von
textartigen Dateien zu bestimmen. Falls die Zeilen durch Wagenrücklauf
(CR), Zeilenumbruch und Wagenrücklauf (CRLF) oder NEL anstatt des
UNIX-Standards Zeilenumbruch (LF) beendet werden, wird dies gemeldet. Dateien,
die eingebettete Maskiersequenzen oder Durchstreichungen enthalten, werden
auch identifiziert.
Sobald
file den in der textartigen Datei verwandten
Zeichensatz ermittelt hat, wird es versuchen, die Sprache, in der die Datei
geschrieben ist, zu ermitteln. Der Sprachtest sucht nach bestimmten
Zeichenketten (z.B.
<names.h>) die
irgendwo in den ersten Blöcken einer Datei auftauchen können.
Beispielsweise deutet das Schlüsselwort
.br an, dass die Datei
höchstwahrscheinlich eine
troff(1)
-Eingabedatei ist, sowie das Schlüsselwort
struct auf ein C-Programm hinweist. Diese Tests
sind weniger zuverlässig als die vorherigen zwei Gruppen, daher werden
sie als letztes durchgeführt. Die Sprachtestroutinen prüfen auf
einiges Vermischtes (wie
tar(1) -Archive,
JSON-Dateien).
Jede Datei, bei der keine der oben aufgeführten Zeichensätze
identifiziert werden kann, wird einfach als »data« gemeldet.
-
--apple
- Führt dazu, dass der Befehl
file den Dateityp und das
Erstellerkürzel ausgibt, wie dies von früheren
MacOS-Versionen verwandt wurde. Das Kürzel besteht aus acht
Buchstaben, wobei der erste den Dateityp, die nachfolgenden den Ersteller
beschreiben. Diese Option wirkt nur für Dateiformate korrekt,
für die eine Apple-artige Ausgabe definiert ist.
-
-b,
--brief
- Hängt keine Dateinamen vor Ausgabezeilen (knapper
Modus).
-
-C,
--compile
- Schreibt eine magic.mgc
Ausgabedatei, die eine vorverarbeitete Version der Magic-Datei oder des
Magic-Verzeichnisses enthält.
-
-c,
--checking-printout
- Führt zu einer Überprüfungsausgabe der
ausgewerteten Form der Magic-Datei. Dies wird normalerweise im
Zusammenspiel mit der Option -m verwandt, um
Fehler in einer neuen Magic-Datei zu finden, bevor diese installiert
wird.
- -d
- Gibt interne Fehlersuchinformationen auf Stderr aus.
- -E
- Gibt bei Dateisystemfehlern (z.B. Datei nicht gefunden)
eine Fehlermeldung aus und beendet das Programm, statt den Fehler als
reguläre Ausgabe zu handhaben (wie dies POSIX vorgibt) und
fortzufahren.
-
-e,
--exclude
Testname
- Schließt den Test namens
Testname aus der Liste der zur Bestimmung
des Dateityps durchgeführten Tests aus. Gültige Testnamen
sind:
- apptype
-
EMX
-Anwendungstyp (nur unter EMX).
- ascii
- Verschiedene Arten von Textdateien (dieser Test wird
versuchen, die Textkodierung, unabhängig von der Einstellung
der Option »encoding«, zu erraten).
- encoding
- Verschiedene Textkodierungen für weiche magische
Tests.
- tokens
- Zwecks Rückwärtskompatibilität
ignoriert.
- cdf
- Gibt Details zu »Compound Document Files«
aus.
- compress
- Prüft auf komprimierte Dateien und schaut
hinein.
- csv
- Prüft auf »Comma Separated
Value«-Dateien (durch Kommata getrennte Werte).
- elf
- Gibt ELF-Dateien-Details aus, vorausgesetzt, weiche
magische Tests sind aktiviert und die Elf-Magie wird gefunden.
- json
- Untersucht JSON- (RFC-7159)-Dateien durch deren
Auswertung auf Regeltreue.
- soft
- Verwendet magische Dateien.
- tar
- Untersucht TAR-Dateien durch Überprüfung
der Prüfsumme der 512-Byte-TAR-Kopfzeile. Durch
Ausschließen dieses Tests kann eine detailliertere
Inhaltsbeschreibung durch Verwendung der weichen magischen Methode
erhalten werden.
- text
- Ein Synonym für »ascii«.
-
--exclude-quiet
- Wie
--exclude,
ignoriert aber Tests, die file nicht kennt.
Dies ist zur Kompatibilität mit älteren Versionen von
file gedacht.
-
--extension
- Gibt eine Schrägstrich-getrennte Liste von
gültigen Erweiterungen für den gefundenen Dateityp aus.
-
-F,
--separator
Trenner
- Verwendet die angegebene Zeichenkette als Trenner zwischen
Dateiname und den zurückgegebenen Dateiergebnissen.
Standardmäßig »:«.
-
-f,
--files-from
Namensdatei
- Liest die Liste der zu prüfenden Dateien aus
Namensdatei (eine pro Zeile) vor der
Argumentenliste ein. Entweder Namensdatei
oder mindestens ein Dateinamenargument muss vorhanden sein; um die
Standardeingabe zu prüfen, verwenden Sie »-« als
Dateinamenargument. Bitte beachten Sie, dass Zeilenumbrüche in
Namensdatei entfernt werden und die
eingeschlossenen Dateinamen verarbeitet werden, wenn diese Option
angetroffen wird und bevor irgendeine Verarbeitung der weiteren Optionen
erfolgt. Dies ermöglicht es, mehrere Listen von Dateien mit
verschiedenen Befehlszeilenargumenten beim gleichen Aufruf von
file zu verarbeiten. Wenn Sie daher den
Trenner setzen wollen, müssen Sie dies tun, bevor Sie die
Dateiliste angeben, also “-F
@ -f
Namensdatei” statt
“-f
Namensdatei
-F
@”.
-
-h,
--no-dereference
- Diese Option führt dazu, dass Symlinks nicht gefolgt
wird (auf Systemen, die Symlinks unterstützen). Dies ist die
Vorgabe, falls die Umgebungsvariable
POSIXLY_CORRECT
nicht definiert
ist.
-
-i,
--mime
- Führt dazu, dass der Befehl
file den MIME-Typ statt der traditionellen
und menschenlesbaren Zeichenketten ausgibt. Daher könnte die
Ausgabe »text/plain; charset=us-ascii« statt »ASCII
text« lauten.
-
--mime-type,
--mime-encoding
- Wie -i, gibt aber nur das/die
angegebene(n) Element(e) aus.
-
-k,
--keep-going
- Stoppt nicht beim ersten Treffer, sondern fährt
fort. Nachfolgenden Treffern wird die Zeichenkette »"\012-
"« vorangestellt. (Falls Sie einen Zeilenumbruch
möchten, siehe die Option -r.) Das
magische Muster mit der höchsten Stärke (siehe die Option
-l) kommt zuerst.
-
-l,
--list
- Zeigt eine Liste von Mustern und ihren Stärken,
absteigend sortiert gemäß
magic(5) -Stärke, die zum Abgleich
verwandt wird, an (siehe auch die Option
-k).
-
-L,
--dereference
- Diese Option führt dazu, dass Symlinks gefolgt wird,
wie bei der gleichbenannten Option in ls(1)
(auf Systemen, die symbolische Links unterstützen). Dies ist die
Vorgabe, falls die Umgebungsvariable
POSIXLY_CORRECT
definiert ist.
-
-m,
--magic-file
magische_Dateien
- Gibt eine alternative Liste an Dateien und Verzeichnissen
an, die Magie enthalten. Dies kann ein einzelner Eintrag sein oder eine
durch Doppelpunkte getrennte Liste. Falls eine kompilierte magische_Datei
zusammen mit einer Datei oder einem Verzeichnis gefunden wird, wird diese
stattdessen verwandt.
-
-N,
--no-pad
- Füllt Dateinamen nicht auf, so dass sie an der
Ausgabe ausgerichtet sind.
-
-n,
--no-buffer
- Erzwingt, dass die Standardausgabe nach jeder
Dateiüberprüfung geschrieben wird. Dies ist nur
nützlich, wenn eine Liste von Dateien geprüft wird. Es ist
für den Einsatz in Programmen gedacht, die die Dateitypausgabe aus
einer Pipe möchten.
-
-p,
--preserve-date
- Versucht auf Systemen, die
utime(3) oder
utimes(2) unterstützen, die
Zugriffszeiten der analysierten Dateien zu erhalten, um vorzugeben, dass
file sie niemals eingelesen hat.
-
-P,
--parameter
Name=Wert
- Setzt verschiedene Parameterbegrenzungen.
Name |
Vorgabe |
Erklärung |
bytes |
1048576 |
maximale Anzahl an Byte, die aus einer Datei
gelesen werden sollen |
elf_notes |
256 |
maximal zu verarbeitende ELF-Anmerkungen |
elf_phnum |
2048 |
maximal zu verarbeitende
ELF-Programmabschnitte |
elf_shnum |
32768 |
maximal zu verarbeitende ELF-Abschnitte |
encoding |
65536 |
maximale Anzahl an Byte, die für die
Kodierungsauswertung verarbeitet werden sollen |
indir |
50 |
Rekursionsbegrenzung für indirekte
Magie |
name |
50 |
verwendet die Zählbegrenzung für
Name/Verwendung-Magie |
regex |
8192 |
Längenbegrenzung für Suchen mit
regulären Ausdrücken |
-
-r,
--raw
- Übersetzt nicht darstellbare Zeichen nicht in \ooo.
Normalerweise übersetzt file nicht
darstellbare Zeichen in ihre oktale Darstellung.
-
-s,
--special-files
- Normalerweise versucht file,
nur Dateien aus den Argumenten zu lesen und deren Typ zu bestimmen,
für die stat(2) meldet, dass sie
gewöhnliche Dateien seien. Dies verhindert Probleme, da das Lesen
von besonderen Dateien zu merkwürdigen Konsequenzen führen
kann. Durch Angabe der Option -s wird
file auch Dateien aus den Argumenten lesen,
die besondere Dateien (block- oder zeichenorientierte) sind. Dies ist
nützlich, um den Dateisystemtyp von Daten in rohen
Plattenpartitionen, die besondere blockorientierte Dateien sind, zu
bestimmen. Diese Option führt auch dazu, dass
file die durch
stat(2) berichtete Dateigröße
ignoriert, da es auf einigen Systemen die Größe Null
für rohe Plattenpartitionen meldet.
-
-S,
--no-sandbox
- Auf Systemen, auf denen Libseccomp
(https://github.com/seccomp/libseccomp)
verfügbar ist, deaktiviert die Option
-S das standardmäßig aktivierte
Sandboxing. Diese Option wird benötigt, damit
file externe Entpackprogramme
ausführen kann, d.h. wenn die Option
-z angegeben und die eingebauten
Entpackprogramme nicht verfügbar sind. Auf Systemen, auf denen
Sandboxing nicht verfügbar ist, hat dieser Schalter keine
Auswirkung.
Beachten Sie: Diese Debian-Version von file
wurde ohne Unterstützung für Seccomp gebaut. Daher hat diese
Option keine Auswirkung.
-
-v,
--version
- Gibt die Version des Programms aus und beendet sich.
-
-z,
--uncompress
- Versucht, in komprimierte Dateien zu schauen.
-
-Z,
--uncompress-noreport
- Versucht, in komprimierte Dateien zu schauen, berichtet
aber nur Informationen über den Inhalt und nicht die
Komprimierung.
-
-0,
--print0
- Gibt ein Nullbyte-Zeichen »\0« nach dem Ende
des Dateinamens aus. Gut zur Weiterverarbeitung mit
cut(1). Dies betrifft nicht den Trenner, der
weiterhin ausgegeben wird.
Falls diese Option mehr als einmal angegeben wird, dann gibt
file für jeden Eintrag nur den
Dateinamen, gefolgt von einem Nullbyte, gefolgt von einer Beschreibung
(oder ERROR:-Text), gefolgt von einem zweiten Nullbyte aus.
- --help
- Hilfe ausgeben und beenden.
Die Umgebungsvariable
MAGIC
kann zum Setzen
des Standard-Namens der magischen Datei verwandt werden. Falls diese Variable
gesetzt ist, dann wird
file nicht versuchen,
$HOME/.magic zu öffnen.
file fügt
“
.mgc” zu dem Wert dieser Variablen
hinzu, wo es sinnvoll ist. Die Umgebungsvariable
POSIXLY_CORRECT
steuert (auf Systemen, die
symbolische Links unterstützen), ob
file
versuchen wird, symbolischen Links zu folgen oder nicht. Falls gesetzt, folgt
file symbolischen Links, andernfalls nicht. Dies
wird auch durch die Optionen
-L und
-h gesteuert.
- /usr/share/misc/magic.mgc
- Kompilierte Vorgabeliste der Magie.
- /usr/share/misc/magic
- Verzeichnis, das die Vorgabe-Magie-Dateien
enthält.
file wird sich mit
0
beenden, falls die Aktion erfolgreich war
oder
>0
, falls ein Fehler angetroffen
wurde. Die folgenden Fehler führen zu Diagnosemeldungen, betreffen aber
nicht den Exit-Code des Programms (wie von POSIX verlangt), außer
-E wurde angegeben:
- Eine Datei konnnte nicht gefunden werden.
- Eine Datei konnte aufgrund unzureichender Rechte nicht
gelesen werden.
- Der Dateityp konnte nicht bestimmt werden.
$ file Datei.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 Datei.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
hexdump(1),
od(1),
strings(1),
magic(5)
Es wird davon ausgegangen, dass dieses Programm die
System-V-Schnittstellendefinition von FILE(CMD) übererfüllt,
soweit das aus der ungenauen Sprache dieser Definition überhaupt
erschlossen werden kann. Das Verhalten ist größtenteils
kompatibel zu dem des Programms gleichen Namens aus System V. Diese Version
kennt allerdings mehr Magie, daher wird es in vielen Fällen andere
(allerdings genauere) Ausgabe erstellen.
Der einzige deutliche Unterschied zwischen dieser Version und System V ist, dass
diese Version jeden Leerraum als Trenner betrachtet, so dass Leerzeichen in
Musterzeichenketten maskiert werden müssen. So würde zum
Beispiel
>10 string language impress (imPRESS data)
in einer bestehenden Magie-Datei wie folgt geändert werden müssen:
>10 string language\ impress (imPRESS data)
Falls eine Musterzeichenkette einen Rückwärtsschrägstrich
enthält, muss dieser zusätzlich maskiert werden. So würde
zum Beispiel
0 string \begindata Andrew Toolkit document
in einer bestehenden Magie-Datei wie folgt geändert werden müssen:
0 string \\begindata Andrew Toolkit document
SunOS von Sun Microsystems ab Version 3.2 enthält einen Befehl
file, der von dem aus System V abgeleitet ist,
aber Erweiterungen enthält. Diese Version unterscheidet sich
geringfügig von dem von Sun. Sie enthält die Erweiterung des
Operators »&«, der beispielsweise wie folgt verwandt wird:
>16 long&0x7fffffff >0 not stripped
Auf Systemen, auf denen Libseccomp
(
https://github.com/seccomp/libseccomp)
verfügbar ist, wird
file die Systemaufrufe
auf nur die für die Aktion des Programms notwendigen
einschränken. Diese Durchsetzung stellt keinen Sicherheitsvorteil dar,
wenn
file gebeten wird, Eingabedateien durch
Aufruf von externen Programmen mit der Option
-z
zu dekomprimieren. Um die Ausführung externer Dekomprimierer zu
aktivieren, müssen Sie Sandboxing mittels der Option
-S deaktivieren.
Die magischen Einträge für File wurden aus verschiedenen Quellen
gesammelt, hauptsächlich USENET, und verschiedene Autoren haben
beigetragen. Christos Zoulas (Adresse siehe unten) sammelt zusätzliche
oder korrigiert Einträge für File. Periodisch werden
zusammengeführte magische Einträge für File verteilt.
Die Reihenfolge der Einträge in der magischen Datei ist relevant.
Abhängig von dem von Ihnen verwandten System kann die Reihenfolge, in
der sie zusammengestellt wurde, inkorrekt sein.
Es gab einen Befehl
file in jedem
UNIX seit mindestens Research Version 4
(Datum der Handbuchseite: November 1973). Die System-V-Version führte
eine deutliche Änderung ein: die externe Liste von magischen Typen.
Dies verlangsamte das Programm etwas, machte es aber viel flexibler.
Dieses Programm, basierend auf der System-V-Version, wurde von Ian Darwin
⟨
[email protected]⟩ geschrieben, ohne den Quelltext von
irgendjemanden anzuschauen.
John Gilmore überarbeitete den Code umfangreich, er wurde dadurch besser
als in der ersten Version. Geoff Collyer fand eine Reihe von
Unzulänglichkeiten und stellte ein paar magische Einträge
für File bereit. Beiträge des »&«-Betreibers
Rob McMahon, ⟨
[email protected]⟩, 1989.
Guy Harris, ⟨
[email protected]⟩, nahm seit 1993 bis heute viele
Änderungen vor.
Hauptsächliche Entwicklung und Betreuung seit 1990 bis heute erfolgt
durch Christos Zoulas ⟨
[email protected]⟩.
Verändert durch Chris Lowth ⟨
[email protected]⟩, 2000: die
Option
-i gibt MIME-artige Zeichenketten aus,
verwendet eine alternative magische Datei und interne Logik.
Verändert durch Eric Fischer ⟨
[email protected]⟩, Juli 2000, um
Zeichencodes zu erkennen und zu versuchen, die Sprache von nicht-ASCII-Dateien
zu bestimmen.
Verändert durch Reuben Thomas ⟨
[email protected]⟩, 2007-2011, um
MIME-Unterstützung zu verbessern, MIME- und nicht-MIME-Magie
zusammenzuführen, für Magie sowohl Verzeichnisse als auch
Dateien zu unterstützen, viele Fehlerkorrekturen anzuwenden, zu
aktualisieren und eine Menge an Magie zu korrigieren, das Bausystem zu
verbessern, die Dokumentation zu verbessern und die Python-Anbindung in reinem
Python neu zu schreiben.
Die Liste an Beitragenden für das Verzeichnis »magic« (die
magischen Dateien) ist zu lang, um sie hier aufzunehmen. Sie wissen, wer sie
sind, vielen Dank! Viele Beitragende sind in den Quelldateien
aufgeführt.
Copyright (c) Ian F. Darwin, Toronto, Canada, 1986-1999. Abgedeckt vom normalen
Berkeley Software Distribution-Copyright; siehe die Datei COPYING in der
Quell-Distribution.
Die Dateien
tar.h und
is_tar.c stammen aus dem gemeinfreien
tar(1) -Programm von John Gilmore und unterliegen
nicht der obigen Lizenz.
Bitte senden Sie Fehlerberichte und -korrekturen (auf Englisch) an die
Fehlerdatenbank unter
https://bugs.astron.com/
oder die Mailingliste unter ⟨
[email protected]⟩ (besuchen Sie zum
Abonnieren
https://mailman.astron.com/mailman/listinfo/file).
Korrektur der Ausgabe, so dass nicht an allen Stellen
Überprüfungen auf die Schalter MIME und APPLE erfolgen
müssen und die eigentliche Ausgabe nur an einer Stelle erfolgt.
Dafür wird ein Design benötigt. Vorschlag: mögliche
Ausgaben in eine Liste schieben, dann den zuletzt geschobenen (hoffentlich den
konkretesten) Wert am Ende herausnehmen oder die Vorgabe nehmen, falls die
Liste leer ist. Dies sollte die Ausgabe nicht verlangsamen.
Die Handhabung von
MAGIC_CONTINUE
und die
Ausgabe von \012- zwischen Einträgen ist plump und kompliziert;
umschreiben und zentralisieren.
Ein Teil der Kodierungslogik ist in encoding.c hartkodiert und könnte in
die magischen Dateien verschoben werden, wenn wir eine !:charset-Notierung
hätten.
Weiter alle magischen Fehler beheben. Die Fehlerdatenbank von Debian ist eine
gute Quelle.
Speichern von beliebig langen Zeichenketten, beispielsweise für
%s-Muster, so dass sie ausgegeben werden können. Debian-Fehler #271672
korrigieren. Dies kann durch Zuweisung von Zeichenketten in eine
Zeichenkettensammlung am Ende der magischen Datei erfolgen und
anschließender Umwandlung aller Zeichenkettenzeiger in relative
Versätze aus der Zeichenkettensammlung.
Eine Sytax für relative Versätze nach der aktuellen Stufe
hinzfügen (Debian-Fehler #466037).
»file -ki« zum Laufen bringen, d.h. mehrere MIME-Typen zu
übergeben.
Eine ZIP-Bibliothek zu übergeben, so dass in Office2007-Dokumente
geschaut werden kann, um weitere Details über ihren Inhalt auszugeben.
Eine Option hinzuzufügen, um URLs für die Quellen der
Dateibeschreibungen auszugeben.
Skript-Suchen kombinieren und eine Möglichkeit hinzufügen,
ausführbare Namen auf MIME-Typen abzubilden (z.B. einen magischen Wert
für !:mime zu haben, der dazu führt, dass die enstehende
Zeichenkette aus einer Tabelle nachgeschlagen wird). Dies würde
vermeiden, die gleiche Magie mehrfach für jeden neuen
Skript-Interpreter hinzuzufügen.
Wenn ein Datei-Deskriptor verfügbar ist, kann der Puffer
übersprungen und angepasst werden, statt der momentan eingesetzten,
zusammengebastelten Pufferverwaltung.
»name« und »use« korrigieren, so dass sie bei der
Kompilierung auf Konsistenz prüfen (doppelte »name«,
»use«, die auf nicht definierte »name« zeigen).
»name« / »use« effizienter machen, indem eine
sortierte Liste von Namen erhalten wird. ^ besonders behandeln, um die
Bytereihenfolge im Auswerteteil umzustellen, so dass er nicht maskiert werden
muss und dies dokumentieren.
Falls der intern in der Datei angegebene Versatz die Puffergröße
überschreitet (Variable
HOWMANY
in
file.h), dann wird nicht zu dem Versatz gesprungen, sondern aufgegeben. Es
wäre besser, wenn die Pufferverwaltung greifen würde, sobald der
Dateideskriptor verfügbar ist, so dass ein Suchen innerhalb der Datei
möglich ist. Es muss allerdings Vorsicht walten gelassen werden, da
dies Leistungs- und daher Sicherheits-Auswirkungen hat, da dadurch alles
mögliches durch wiederholtes Suchen verlangsamt werden kann.
Es gibt jetzt Unterstützung für das Vorhalten getrennter Puffer
und dem Einsatz von Versätzen vom Ende der Datei, allerdings
benötigt die interne Pufferverwaltung weiterhin eine
Überarbeitung.
Sie können die neuste Version des ursprünglichen Autors mittels
anonymen FTP im Verzeichnis
/pub/file/file-X.YZ.tar.gz auf
ftp.astron.com erhalten.
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann
<
[email protected]> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die
GNU
General Public License Version 3 oder neuer bezüglich der
Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken
Sie bitte eine E-Mail an die Mailingliste der Übersetzer:
[email protected]