Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : [c] Filetypeerkennung ?!



Prick
05-08-2005, 22:43
Hallo,

habe mir ein Programm geschrieben, dass mir u.a. Files in einem Verzeichnis listet. Nun möchte ich zu allen Files auch noch den Typ angeben. Das ist in sofern problematisch, da ich nicht weiß, ob es eine lib gibt, die das für mich übernimmt. Oder bin ich gezwungen, für jeden einzelnen Typ selbst etwas zu programmieren, dass das File näher untersucht?! Wenn letzte Situation eintritt, wäre es nett, wenn jemand Dokus nennt, wie man einzelne Filetypes am besten erkennt. Die einzige Möglichkeit wird wahrscheinlich sein, zu jedem Typ das RFC zu lesen, oder?

Danke im Voraus,
h.d.

Joghurt
06-08-2005, 02:29
Sieh dir mal das Standardtool "file" an, das tut genau das, was du willst.

Prick
06-08-2005, 09:49
Ja, das kenne ich und habe es mir auch schon angeschaut. Die Frage, die sich mir stellt, ist ob z.B. Gnome- oder KDE-Programme die Verzeichnisse listen und daraufhin das File anhand des Filetypes mit einer Applikation zum Öffnen verknüpfen, ähnlich wie "file" arbeiten, oder ob es da einen "einfacheren" Weg gibt, das Problem zu lösen. Werde mir "file" aber nochmal genauer anschauen.

Danke
h.d.

Joghurt
06-08-2005, 14:30
GNOME und KDE schauen in der MIME-Datenbank nach.

/etc/mime.types und /etc/mime-magic

Prick
06-08-2005, 14:51
Ah, das klingt interessant. Wieder was gelernt. :-) Heißt das, sie öffnen das File, schauen, ob am Anfang ein "\x89PNG" steht und ordnen dem dann ein PNG-File zu?

Danke für die Hilfe

h.d.

anda_skoa
08-08-2005, 14:23
Ich denke MIME Magic wird im Normalfall nur benutzt, wenn die Endung nicht eindeutig ist oder nicht vorhanden ist.

MIME Magic ist ja auch nicht unbedingt 100%, besonders nicht bei allen Varianten von text/*

Ich vermute daß es zusätzlich zu MIME Datenbank auch eine Art Spezifikation gibt, wie man bei der Erkennung vorgehen sollte, wenn man das selber implementieren möchte.
Schau mal auf freedesktop.org nach, könnte ein Entwurf (Draft) sein.

Ciao,
_