#!/usr/bin/perl # # 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 use strict; my @map = ( # defaults 'data', 'application/octet-stream', 'text', 'text/plain', # documents '^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', '^PDF document', 'application/pdf', '^BinHex binary text', 'application/mac-binhex40', '^Microsoft Word', 'application/msword', # fonts '^PostScript Type (1|42) font', 'application/x-postscript-font', 'font metrics', 'application/x-adobe-font-metrics', '^MS-Windows true type font', 'application/x-truetype-font', # archives '^Zip archive data', 'application/zip', '^gzip compressed data', 'application/x-gzip', # images '^Computer Graphics Metafile', 'image/cgm', '^GIF image data', 'image/gif', '^JPEG image data', 'image/jpeg', '^PC bitmap data', 'image/x-pcx', '^PNG image data', 'image/png', '^IFF data, ILBM', 'image/x-iff', '^TIFF image data', 'image/tiff', '^Targa image data', 'image/x-targa', '^RLE image data', 'image/x-rle', '^Kodak Photo CD image pack file', 'image/x-photo-cd', '^Netpbm PBM', 'image/x-portable-bitmap', '^Netpbm PGM', 'image/x-portable-graymap', '^Netpbm PPM', 'image/x-portable-pixmap', '^X pixmap image', 'image/x-xpixmap', # audio '^Sun/NeXT audio data', 'audio/basic', '^Standard MIDI data', 'audio/midi', '^MP3', 'audio/mpeg', '^RIFF .*, WAVE audio', 'audio/x-wav', '^IFF data, AIFF audio', 'audio/x-aiff', '^RealAudio', 'audio/x-pn-realaudio', '[Mm]odule( sound | )(data|file)', 'audio/x-mod', # video '^MPEG (video|system) stream data', 'video/mpeg', '^RIFF .*, AVI', 'video/x-msvideo', '^Microsoft ASF', 'application/vnd.ms-asf', '^Apple QuickTime movie', 'video/quicktime', '^FLI file', 'video/x-fli', '^FLC file', 'video/x-flc', '^IFF data, ANIM', 'video/x-anim', '^RealMedia', 'video/x-pn-realvideo', ); my ($t, $n); while (<>) { chop; s/^[^:]+: (.*)$/$1/; $n = $#map - 1; while ($n > -1 && !defined($t)) { $t = $map[$n + 1] if (/$map[$n]/); $n -= 2; } $t or $t = "application/octet-stream"; print "$t\n"; undef $t; } .