1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
#! /usr/bin/env perl
# -*- PERL -*-
# $Id: 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;
|