diff options
Diffstat (limited to 'magic2mime')
-rwxr-xr-x | magic2mime | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/magic2mime b/magic2mime new file mode 100755 index 0000000..26f84d28 --- /dev/null +++ b/magic2mime @@ -0,0 +1,69 @@ +#! /usr/bin/env perl +# -*- PERL -*- +# $File: magic2mime,v 1.4 2006/11/25 18:36:10 christos Exp $ +# Copyright (c) 1996, 1997 vax@linkdead.paranoia.com (VaX#n8) +# +# Usage: echo 'your-file-output-here' | file_to_ctype.pl +# file -b files... | file_to_ctype.pl +# It acts like a filter, reading from STDIN and any files on the command +# line, printing to STDOUT. + +## refs +# http://www.faqs.org/faqs/mail/mime-faq/part1/index.html +# comp.mail.mime FAQ +# ftp://ftp.isi.edu/in-notes/iana/assignments/media-types/media-types +# assigned content-types +# ftp://ftp.uu.net/inet/rfc/rfc-index +# RFC index; search for MIME + +@mapping = +( + # defaults + 'data', 'application/octet-stream', + 'text', 'text/plain', + # more specific + '^Rich Text Format data', 'text/richtext', + '^HTML document text', 'text/html', + '^exported SGML document text', 'text/sgml', + 'mail text', 'message/rfc822', + 'news text', 'message/news', + '^PostScript document text', 'application/postscript', + '^BinHex binary text', 'application/mac-binhex40', + '^Zip archive data', 'application/zip', + '^Microsoft Word', 'application/msword', + '^PGP key', 'application/pgp-keys', + '^PGP encrypted', 'application/pgp-encrypted', + '^PGP armored data signature', 'application/pgp-signature', + '^JPEG image', 'image/jpeg', + '^GIF image', 'image/gif', + '^PNG image', 'image/png', + '^TIFF image', 'image/tiff', + 'Computer Graphics Metafile', 'image/cgf', + '^Sun/NeXT audio data', 'audio/basic', + '^MPEG', 'video/mpeg', + '^Apple QuickTime movie', 'video/quicktime', + '^DICOM medical imaging data', 'application/dicom', + # made up by me + '^bitmap', 'image/x-bitmap', + '^PC bitmap data, Windows 3.x format', 'image/x-msw3bmp', + '^FLI', 'video/x-fli', + '^FLC', 'video/x-flc', + 'AVI data', 'video/x-avi', + 'WAVE', 'audio/x-wav', + 'VOC', 'audio/x-voc', +); + +local($mimetype,$index,$regexp); +while (<>) + { + chop; + $index = $#mapping - 1; + while ($index > -1 && !defined($mimetype)) + { + $mimetype = $mapping[$index + 1] if (/$mapping[$index]/); + $index -= 2; + } + print "$mimetype\n"; + undef $mimetype; # hack + } +0; |